<?xml version="1.0"?>
<News hasArchived="true" page="8518" pageCount="10723" pageSize="10" timestamp="Tue, 14 Jul 2026 19:34:07 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8518">
<NewsItem contentIssues="true" id="32651" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32651">
<Title>2 New Plans to Upgrade Smartphones After a Year</Title>
<Body>
<![CDATA[
    <div class="html-content">AT&amp;T plans to announce on Tuesday a way for customers to upgrade phones sooner. T-Mobile unveiled a similar option last week.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fpersonaltech%2F2-new-plans-to-upgrade-smartphones-after-a-year.html%3Fpartner%3Drss%26emc%3Drss&amp;t=2+New+Plans+to+Upgrade+Smartphones+After+a+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fpersonaltech%2F2-new-plans-to-upgrade-smartphones-after-a-year.html%3Fpartner%3Drss%26emc%3Drss&amp;t=2+New+Plans+to+Upgrade+Smartphones+After+a+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fpersonaltech%2F2-new-plans-to-upgrade-smartphones-after-a-year.html%3Fpartner%3Drss%26emc%3Drss&amp;t=2+New+Plans+to+Upgrade+Smartphones+After+a+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fpersonaltech%2F2-new-plans-to-upgrade-smartphones-after-a-year.html%3Fpartner%3Drss%26emc%3Drss&amp;t=2+New+Plans+to+Upgrade+Smartphones+After+a+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fpersonaltech%2F2-new-plans-to-upgrade-smartphones-after-a-year.html%3Fpartner%3Drss%26emc%3Drss&amp;t=2+New+Plans+to+Upgrade+Smartphones+After+a+Year" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165666221800/u/0/f/640387/c/34625/s/2eb54d0c/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165666221800/u/0/f/640387/c/34625/s/2eb54d0c/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>AT&amp;T plans to announce on Tuesday a way for customers to upgrade phones sooner. T-Mobile unveiled a similar option last week.     </Summary>
<Website>http://www.nytimes.com/2013/07/16/technology/personaltech/2-new-plans-to-upgrade-smartphones-after-a-year.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32651/guest@my.umbc.edu/26f9edc4461a4fdf9bb63492ee3d8740/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>at-and-t-inc-t-nyse</Tag>
<Tag>cellular-telephones</Tag>
<Tag>customer-relations</Tag>
<Tag>new</Tag>
<Tag>smartphones</Tag>
<Tag>sprint-nextel-corporation-s-nyse</Tag>
<Tag>t-mobile</Tag>
<Tag>technology</Tag>
<Tag>verizon-communications-inc-vz-nyse</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 16 Jul 2013 00:01:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="32650" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32650">
<Title>&#8216;Do Not Track&#8217; Rules Come a Step Closer to an Agreement</Title>
<Body>
<![CDATA[
    <div class="html-content">A working group of an Internet standards body has decided that Web users should be able to decline custom-targeted advertising, but hurdles remain before a final agreement can be reached.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fdo-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html%3Fpartner%3Drss%26emc%3Drss&amp;t=%E2%80%98Do+Not+Track%E2%80%99+Rules+Come+a+Step+Closer+to+an+Agreement" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fdo-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html%3Fpartner%3Drss%26emc%3Drss&amp;t=%E2%80%98Do+Not+Track%E2%80%99+Rules+Come+a+Step+Closer+to+an+Agreement" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fdo-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html%3Fpartner%3Drss%26emc%3Drss&amp;t=%E2%80%98Do+Not+Track%E2%80%99+Rules+Come+a+Step+Closer+to+an+Agreement" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fdo-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html%3Fpartner%3Drss%26emc%3Drss&amp;t=%E2%80%98Do+Not+Track%E2%80%99+Rules+Come+a+Step+Closer+to+an+Agreement" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Ftechnology%2Fdo-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html%3Fpartner%3Drss%26emc%3Drss&amp;t=%E2%80%98Do+Not+Track%E2%80%99+Rules+Come+a+Step+Closer+to+an+Agreement" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165667185677/u/0/f/640387/c/34625/s/2eb46d3d/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165667185677/u/0/f/640387/c/34625/s/2eb46d3d/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>A working group of an Internet standards body has decided that Web users should be able to decline custom-targeted advertising, but hurdles remain before a final agreement can be reached.     </Summary>
<Website>http://www.nytimes.com/2013/07/16/technology/do-not-track-rules-for-advertising-to-web-users-come-a-step-closer-to-an-agreement.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32650/guest@my.umbc.edu/a5034d50998cd71e029ce8fa3f302983/api/pixel</TrackingUrl>
<Tag>computers-and-the-internet</Tag>
<Tag>digital-advertising-alliance</Tag>
<Tag>forrester-research-inc-forr-nasdaq</Tag>
<Tag>intel-corporation-intc-nasdaq</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>new</Tag>
<Tag>online-advertising</Tag>
<Tag>privacy</Tag>
<Tag>swire-peter-p</Tag>
<Tag>technology</Tag>
<Tag>world-wide-web-consortium</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 22:30:13 -0400</PostedAt>
<EditAt>Mon, 15 Jul 2013 22:30:13 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="32649" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32649">
<Title>Q&amp;A: Sharing Files With Mac and iPad</Title>
<Body>
<![CDATA[
    <div class="html-content">Tips for transferring a Word file between a laptop and iPad, and how to reduce e-mail from Twitter.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F18%2Ftechnology%2Fpersonaltech%2Fsharing-files-with-mac-and-ipad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Sharing+Files+With+Mac+and+iPad" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F18%2Ftechnology%2Fpersonaltech%2Fsharing-files-with-mac-and-ipad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Sharing+Files+With+Mac+and+iPad" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F18%2Ftechnology%2Fpersonaltech%2Fsharing-files-with-mac-and-ipad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Sharing+Files+With+Mac+and+iPad" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F18%2Ftechnology%2Fpersonaltech%2Fsharing-files-with-mac-and-ipad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Sharing+Files+With+Mac+and+iPad" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F18%2Ftechnology%2Fpersonaltech%2Fsharing-files-with-mac-and-ipad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Sharing+Files+With+Mac+and+iPad" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165666072152/u/0/f/640387/c/34625/s/2eb49fe9/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165666072152/u/0/f/640387/c/34625/s/2eb49fe9/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Tips for transferring a Word file between a laptop and iPad, and how to reduce e-mail from Twitter.     </Summary>
<Website>http://www.nytimes.com/2013/07/18/technology/personaltech/sharing-files-with-mac-and-ipad.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32649/guest@my.umbc.edu/25e3babb952b713d3258371f14d7033d/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>cloud-computing</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>icloud</Tag>
<Tag>ipad</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>twitter</Tag>
<Tag>weddings-and-engagements</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 21:19:38 -0400</PostedAt>
<EditAt>Wed, 17 Jul 2013 18:54:50 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="32648" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32648">
<Title>Merkel Urges Europe to Tighten Internet Safeguards</Title>
<Body>
<![CDATA[
    <div class="html-content">The remarks by Germany’s chancellor, Angela Merkel, reflected the anger in Europe over accounts of government surveillance by the United States National Security Agency, leaked by Edward J. Snowden.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Fworld%2Feurope%2Fmerkel-urges-europe-to-tighten-internet-safeguards.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Merkel+Urges+Europe+to+Tighten+Internet+Safeguards" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Fworld%2Feurope%2Fmerkel-urges-europe-to-tighten-internet-safeguards.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Merkel+Urges+Europe+to+Tighten+Internet+Safeguards" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Fworld%2Feurope%2Fmerkel-urges-europe-to-tighten-internet-safeguards.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Merkel+Urges+Europe+to+Tighten+Internet+Safeguards" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Fworld%2Feurope%2Fmerkel-urges-europe-to-tighten-internet-safeguards.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Merkel+Urges+Europe+to+Tighten+Internet+Safeguards" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F07%2F16%2Fworld%2Feurope%2Fmerkel-urges-europe-to-tighten-internet-safeguards.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Merkel+Urges+Europe+to+Tighten+Internet+Safeguards" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165666218661/u/0/f/640387/c/34625/s/2eb409d3/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165666218661/u/0/f/640387/c/34625/s/2eb409d3/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The remarks by Germany’s chancellor, Angela Merkel, reflected the anger in Europe over accounts of government surveillance by the United States National Security Agency, leaked by Edward J....</Summary>
<Website>http://www.nytimes.com/2013/07/16/world/europe/merkel-urges-europe-to-tighten-internet-safeguards.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32648/guest@my.umbc.edu/92e39e9afefeb390f17276ccaed6f142/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>europe</Tag>
<Tag>european-union</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>germany</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>merkel-angela</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>national-security-agency</Tag>
<Tag>new</Tag>
<Tag>privacy</Tag>
<Tag>reding-viviane</Tag>
<Tag>snowden-edward-j</Tag>
<Tag>surveillance-of-citizens-by-government</Tag>
<Tag>technology</Tag>
<Tag>yahoo-inc-yhoo-nasdaq</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 21:08:15 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="32670" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32670">
<Title>Bits Blog: Musk to Unveil Designs for &#8216;Hyperloop&#8217; High-Speed Train</Title>
<Body>
<![CDATA[
    <div class="html-content">Elon Musk, a serial entrepreneur and chairman of Tesla Motors, says he will unveil on Aug. 12 the design for a cross between a train and a plane that he calls the “Hyperloop.”<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F15%2Felon-musk-to-unveil-designs-for-hyperloop-high-speed-train%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Musk+to+Unveil+Designs+for+%E2%80%98Hyperloop%E2%80%99+High-Speed+Train" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F15%2Felon-musk-to-unveil-designs-for-hyperloop-high-speed-train%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Musk+to+Unveil+Designs+for+%E2%80%98Hyperloop%E2%80%99+High-Speed+Train" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F15%2Felon-musk-to-unveil-designs-for-hyperloop-high-speed-train%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Musk+to+Unveil+Designs+for+%E2%80%98Hyperloop%E2%80%99+High-Speed+Train" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F15%2Felon-musk-to-unveil-designs-for-hyperloop-high-speed-train%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Musk+to+Unveil+Designs+for+%E2%80%98Hyperloop%E2%80%99+High-Speed+Train" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F07%2F15%2Felon-musk-to-unveil-designs-for-hyperloop-high-speed-train%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Musk+to+Unveil+Designs+for+%E2%80%98Hyperloop%E2%80%99+High-Speed+Train" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    </div>
]]>
</Body>
<Summary>Elon Musk, a serial entrepreneur and chairman of Tesla Motors, says he will unveil on Aug. 12 the design for a cross between a train and a plane that he calls the “Hyperloop.”     </Summary>
<Website>http://bits.blogs.nytimes.com/2013/07/15/elon-musk-to-unveil-designs-for-hyperloop-high-speed-train/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32670/guest@my.umbc.edu/2d08e9a865b7aa58290c2322d4eb0252/api/pixel</TrackingUrl>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 19:33:50 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123187" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123187">
<Title>Hydrologist Claire Welty, CUERE, takes NBC Learn on a tour of Baltimore&#8217;s urban streams, The Baltimore Sun</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>“NBC Learn, an educational division of the television network, came to Baltimore recently to report on how the physical alteration of streams in urban areas makes it that much harder for them to handle polluted storm-water runoff. It highlights research on area streams that’s being led by Claire Welty, a hydrologist at University of Maryland Baltimore County,” writes Tim Wheeler of the <em>Baltimore Sun</em>.</p>
    <p>Welty, the Director, Center for Urban Environmental Research and Education (CUERE) and professor of chemical, biochemical, and environmental engineering takes NBC Learn on a tour of Baltimore’s streams.</p>
    <p>“With NBC correspondent Anne Thompson narrating, Welty shows and tells how the loss of vegetation along stream banks and their channeling through concrete culverts deprives them of natural ability to filter out the pollution that causes algae blooms locally and dead zones far downstream in the Chesapeake Bay. The culprits are nutrients – notably nitrates from fertilizer, animal waste and even fallout from air pollution – washed off city streets, parking lots and yards whenever it rains,” continues Wheeler.</p>
    <p><a href="http://science360.gov/obj/tkn-video/f535d962-4086-4e01-8e0f-2a57f810738b/sustainability-water-baltimores-urban-streams" rel="nofollow external" class="bo">Watch the video</a><br>
    <a href="http://articles.baltimoresun.com/2013-07-01/features/bal-bmg-nbc-shows-why-urban-streams-need-a-stormwater-fix-20130701_1_streams-claire-welty-storm-water" rel="nofollow external" class="bo">Read the story</a></p>
    </div>
]]>
</Body>
<Summary>“NBC Learn, an educational division of the television network, came to Baltimore recently to report on how the physical alteration of streams in urban areas makes it that much harder for them to...</Summary>
<Website>https://umbc.edu/stories/hydrologist-claire-welty-cuere-takes-nbc-learn-on-a-tour-of-baltimores-urban-streams-the-baltimore-sun/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123187/guest@my.umbc.edu/79dbd99641df4aba43ae02104d68077e/api/pixel</TrackingUrl>
<Tag>science-and-technology</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 18:46:24 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="32851" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32851">
<Title>Jottn - Todo List</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>This is Gallery image</p>
    <p><img alt="feature" height="305" src="/imagesvr_ce/8096/071713.png" width="509" style="max-width: 100%; height: auto;"></p>
    </div>
]]>
</Body>
<Summary>This is Gallery image</Summary>
<Website>http://www.htmlgoodies.com/HTML5/gallery/jottn-todo-list-130715153039.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32851/guest@my.umbc.edu/f9fd82aa9e609ae54fd63da3bec92b2e/api/pixel</TrackingUrl>
<Tag>html</Tag>
<Tag>htmlgoodies</Tag>
<Tag>learning</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 18:28:09 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="32647" important="false" status="posted" url="https://my3.my.umbc.edu/posts/32647">
<Title>Building Apps With the Yeoman Workflow</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=33254&amp;c=839470030" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=33254&amp;c=839470030" alt="" style="max-width: 100%; height: auto;"></a><h2>What Is Yeoman?</h2>
    <p>Trick question. It’s not a thing. It’s this guy:</p>
    <p></p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/yo.png" alt="yo" width="595" height="681" style="max-width: 100%; height: auto;"><br> <p>Basically, he wears a top hat, lives in your computer, and waits for you to tell him what kind of application you wish to create. As an example, scaffolding a web application would look something like this:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/yo-webapp.png" alt="yo-webapp" width="595" height="445" style="max-width: 100%; height: auto;"><br> <p>The first thing that comes to mind is OMG so dreamy. Second, thanks, bro.</p>
    <p>All we did was tell him what we wanted and he replied with specific questions to give us even more control.</p>
    <p>Let’s go back a step, though. Not every new computer comes with a Yeoman pre-installed. He lives in the NPM package repository. You only have to ask for him once, then he packs up and moves into your hard drive. <em>Make sure you clean up, he likes new and shiny things.</em></p>
    <p>He’s a person with feelings and opinions, but he’s very easy to work with. If you think he’s too opinionated, he can be easily convinced.</p>
    <p>Let’s take a second to break apart what that <code>yo webapp</code> command, from the previous screenshot really did.</p>
    <h3><code>yo</code></h3>
    <p>This is an OS X, Linux, and Windows friendly system-wide command that scours your hard drive for any installed “generators,” then gives them control based on the next argument:</p>
    <h3><code>webapp</code></h3>
    <p>This is actually a separate plug-in, or “generator,” called <code>generator-webapp</code>. Yeoman recognizes other <code>generator-____</code> Node modules, which opens the door for using Backbone, AngularJS, and countless other you-name-it generators.</p>
    <p>Something important to take away from this is, it’s the <code>generator-webapp</code> module that prompts us with questions. The same goes for any other generators we install. They are maintained by the community, not necessarily the Yeoman team members themselves.</p>
    <p>By using Yeoman, you’re not saying “I want to do things your way, master. <em>bow</em> <em>bow</em>,” without having any control. It’s actually quite the opposite. What you’re really saying is, “I want to make an application that follows best practices that have been discovered by frequent users and contributors of the web development community.”</p>
    <p>Seriously, you have to say it just like that, or it won’t work.</p>
    <p>Should you prefer to do something differently than what he gives you, you simply change the code that was generated for you, or even go to the source of the “generator” itself, and send in your contribution.</p>
    <hr>
    <h2>Friendship</h2>
    <p>Our buddy, yo has some buddies of his own, and thinks you’ll all get along over endless tea and smiles. If you haven’t heard of <a href="http://gruntjs.com" rel="nofollow external" class="bo">Grunt</a> or <a href="http://bower.io" rel="nofollow external" class="bo">Bower</a>, here’s a quick summary of what these give us:</p>
    <h3>Grunt</h3>
    <p>Grunt is a JavaScript-based task runner, that does the dirty stuff. Like <code>yo</code>, it also provides a base set of functionality, then allows the community to share their own plug-ins, or “tasks” that help accomplish common things. When you scaffold your application with <code>yo webapp</code>, Grunt and some hand-picked tasks will come along, which accomplish things like running your website in a local development environment, concatenating and minifying your code, optimizing your images, and much more. Tasks are run through the command line, by typing <code>grunt server</code>, <code>grunt build</code>, <code>grunt test</code>, and many more.</p>
    <p>Tasks are defined and customized in a <code>Gruntfile.js</code> file, which lives in the root directory of your project. Check it out to see what Yeoman set up for you.</p>
    <h3>Bower</h3>
    <p>Nobody likes going to GitHub or random developers’ sites to download a .zip of a JavaScript tool. Like when fetching a Node package with <code>npm install ___</code>, Bower lets you say <code>bower install ___</code>. The component is then saved in a directory of your choosing, generally, <code>app/bower_components/</code> for Yeoman-generated apps. Assuming you wanted jQuery, you would run the <code>bower install query</code> command, then include the relevant file inside of your HTML file. In our case, <code>&lt;script src="bower_components/jquery/jquery.js"&gt;&lt;/script&gt;</code></p>
    <hr>
    <h2>A Typical Application</h2>
    <p>Let’s get wild. It’s time to create an app.</p>
    <p>Real quick though, find your nearest terminal and make sure you have <code>yo</code> installed globally:</p>
    <pre>$ npm install -g yo</pre>
    <p>To generate a web app, you’ll also need <code>generator-webapp</code>:</p>
    <pre>$ npm install -g generator-webapp</pre>
    <p>Create a folder we can play around in, then run:</p>
    <pre>$ yo webapp</pre>
    <p>Here’s what should have happened:</p>
    <ul><li>A whole buncha stuff.</li></ul>
    <p>Did it? Good!</p>
    <p>To prevent you from scrolling up through all of the text that was just spit out at you, here’s an overview:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/yo-webapp-long.png" alt="yo-webapp-long" width="595" height="764" style="max-width: 100%; height: auto;"><br> <p>The new web application was scaffolded and your Bower components and NPM packages were automatically installed.</p>
    <p>Open all this new stuff in your favorite editor, and we’ll look over what we have.</p>
    <pre>├─ app/&#x000A;    │  ├─ images/&#x000A;    │  │  ├─ glyphicons-halflings.png&#x000A;    │  │  └─ glyphicons-halflings-white.png&#x000A;    │  ├─ scripts/&#x000A;    │  │  ├─ vendor/&#x000A;    │  │  │  └─ bootstrap.js&#x000A;    │  │  ├─ app.js&#x000A;    │  │  ├─ hello.coffee&#x000A;    │  │  └─ main.js&#x000A;    │  ├─ styles/&#x000A;    │  │  └─ main.css&#x000A;    │  ├─ .htaccess&#x000A;    │  ├─ 404.html&#x000A;    │  ├─ favicon.ico&#x000A;    │  ├─ index.html&#x000A;    │  └─ robots.txt&#x000A;    │&#x000A;    ├─ node_modules/&#x000A;    │  ├─ so/&#x000A;    │  ├─ many/&#x000A;    │  └─ packages/&#x000A;    │&#x000A;    ├─ test/&#x000A;    │  ├─ spec/&#x000A;    │  │  └─ test.js&#x000A;    │  ├─ .bowerrc&#x000A;    │  ├─ bower.json&#x000A;    │  └─ index.html&#x000A;    │&#x000A;    ├─ .bowerrc&#x000A;    ├─ .editorconfig&#x000A;    ├─ .gitattributes&#x000A;    ├─ .gitignore&#x000A;    ├─ .jshintrc&#x000A;    ├─ bower.json&#x000A;    ├─ Gruntfile.js&#x000A;    └─ package.json&#x000A;    </pre>
    <p>If you take anything away from this article, let it be the beautiful file/folder text representation above. That just took a whole Mountain Dew of my time.</p>
    <p>Back on track. What you’re looking at is the most common application structure a Yeoman generator will produce.</p>
    <ul>
    <li>
    <code>app/</code> is where your pure, non-compiled, non-minified source code lives.</li>
    <li>
    <code>app/scripts/</code> is where your JavaScript goes. You’re free to create sub-directories and even use CoffeeScript if that’s your cup of tea. That didn’t make sense. Again. You’re free to use TeaScript if that’s your cup of coffee. Nope.</li>
    <li>
    <code>app/styles/</code> is where your CSS goes. Again, sub-directories, LESS, Sass, whatevs.</li>
    <li>
    <code>app/index.html</code> is the non-minified version of <code>index.html</code> that will eventually be squashed and delivered to the client. More on that later.</li>
    <li>
    <code>Gruntfile.js</code> has all of the build, server, and test tasks defined.</li>
    </ul>
    <p>At this point, <code>yo</code> has done his job. He’s given you everything you need to launch a production-ready web application. Let’s now shift our focus to what Grunt tasks he’s pre-configured for us.</p>
    <h3><code>grunt build</code></h3>
    <p>Running <code>grunt build</code> takes your <code>app/</code> source code files and turns them into a distributable application, which ends up in <code>dist/</code>.</p>
    <p>That <code>dist/</code> folder is what you feed to your server. <code>dist/</code> will have it’s own <code>index.html</code>, with references to minified and concatenated <code>dist/scripts</code> and <code>dist/styles</code>, and optimized <code>dist/images</code>. Your users will appreciate this. Your phone-card, dial-up users will <strong>really</strong> appreciate this.</p>
    <p>Behind the scenes, <code>grunt build</code> is a task that runs several sub-tasks. One of those is <a href="https://github.com/yeoman/grunt-usemin" rel="nofollow external" class="bo"><code>grunt-usemin</code></a>, which looks for blocks inside of your <code>app/index.html</code>, like this:</p>
    <p><code>app/index.html</code></p>
    <pre>&lt;!-- build:js scripts/main.js --&gt;&#x000A;    &lt;script src="bower_components/jquery/jquery.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/main.js"&gt;&lt;/script&gt;&#x000A;    &lt;!-- endbuild --&gt;&#x000A;    </pre>
    <p>After your <code>grunt build</code> task completes, you will end up with this:</p>
    <p><code>dist/index.html</code></p>
    <pre>&lt;script src="scripts/c155266f.main.js"&gt;&lt;/script&gt;&#x000A;    </pre>
    <p>It sucked those scripts up, concatenated, minified, and even prefixed them with unique hashes to prevent browsers from caching outdated versions. Quite powerful.</p>
    <p>That’s one of the shining features about using Yeoman. Instead of manually defining what you want your build process to do each time you create an application, you can just place some trust in Yo and your chosen generator. Together, they’ll wire you up with everything you need to launch a production-ready application.</p>
    <h3><code>grunt server</code></h3>
    <p>Now that you’ve seen what type of work <code>grunt build</code> will do when your application is complete, you should probably start working on your application! We’ll create one together in just a sec, but first let’s see what kind of workflow we’ll have. Like <code>grunt build</code>, <code>grunt server</code> uses several other Grunt tasks to make development as easy as it can be.</p>
    <p>Try it out:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/yo-webapp-grunt-server.png" alt="yo-webapp-grunt-server" width="595" height="528" style="max-width: 100%; height: auto;"><br> <p>The aforementioned “several other Grunt tasks” are:</p>
    <ul>
    <li>
    <code>clean:</code> Yeoman stores some stuff in a <code>.tmp</code> folder. That will be wiped out.</li>
    <li>
    <code>coffee:</code> Compiles your CoffeeScript files from <code>app/scripts</code>.</li>
    <li>
    <code>compass:</code> Compiles your Sass files from <code>app/styles</code>.</li>
    <li>
    <code>connect:</code> Creates a local server, watches for changes to your source files, then triggers a reload in your browser.</li>
    <li>
    <code>open:</code> Opens the server instance, typically <code>localhost:9000</code> in your browser.</li>
    </ul>
    <p>Make an edit or two in the source files to see the change reflected in the browser. Like I said above, this is about as easy as it can be. It just works.</p>
    <hr>
    <h2>Let’s App It Up!</h2>
    <p>I of course meant appetizers. Grab some cheese sticks, then meet me in a little bit.</p>
    <p><em>Wash your hands!</em></p>
    <hr>
    <h2>Let’s Create an Application</h2>
    <p>To get a feel for some other Yeoman generators, let’s try out Backbone. We’ll create a simple To Do app, use Bower for our dependencies, and introduce you to a real-life workflow with Yeoman.</p>
    <p><code>$ Sound good? (Y/n)</code></p>
    <p>I’ll assume you entered “Y”. We ride! But first:</p>
    <pre># install the Backbone generator:&#x000A;    $ npm install -g generator-backbone&#x000A;    &#x000A;    # make another play directory, then do these things:&#x000A;    $ yo backbone&#x000A;    &#x000A;         _-----_&#x000A;        |       |&#x000A;        |--(o)--|   .--------------------------.&#x000A;       `---------´  |    Welcome to Yeoman,    |&#x000A;        ( _´U`_ )   |   ladies and gentlemen!  |&#x000A;        /___A___\   '__________________________'&#x000A;         |  ~  |&#x000A;       __'.___.'__&#x000A;     ´   `  |° ´ Y `&#x000A;    &#x000A;    Out of the box I include HTML5 Boilerplate, jQuery, Backbone.js and Modernizr.&#x000A;    &#x000A;    Would you like to include Twitter Bootstrap for Sass? (y/N) Yes&#x000A;    Would you like to include RequireJS (for AMD support)? (y/N) No&#x000A;    </pre>
    <p>Open the new app in your editor. Things should feel quite familiar after our experience with the web app generator. You still have an <code>app</code> directory, with <code>scripts/</code>, <code>styles/</code> and an <code>index.html</code>.</p>
    <p>Before we start editing files, run:</p>
    <pre>$ grunt server</pre>
    <p>As we talked about earlier, this starts the server, sets up watches on our files, blah blah yipsie-doodle. Your browser should open, and you should be greeted with:</p>
    <h3>‘Allo, ‘Allo!</h3>
    <p>Well, shoot, we have to keep that. It’s just so nice. However, let’s clear out the other stuff.</p>
    <p><code>index.html</code></p>
    <pre>&lt;div class="container"&gt;&#x000A;        &lt;div class="hero-unit"&gt;&#x000A;            &lt;h1&gt;'Allo, 'Allo!&lt;/h1&gt;&#x000A;            &lt;section id="todo-app"&gt;&#x000A;                &lt;!-- Where our To Do app will go --&gt;&#x000A;            &lt;/section&gt;&#x000A;        &lt;/div&gt;&#x000A;    &lt;/div&gt;&#x000A;    </pre>
    <p>When you save, your browser will refresh, and there we have it! Just a simple, warm “‘Allo, ‘Allo”.</p>
    <p>Let’s get ourselves a game plan. We know we’re going to create a To Do app, but what might that look like? Will we need any other libraries to help us?</p>
    <p>Hmm.</p>
    <p>It’s been at least 4 seconds, and I haven’t heard any answers.</p>
    <p>Alright, I’m gonna grab another Dew after that file tree drank my last one. I’ll let you know if I think of anything.</p>
    <hr>
    <h2>To Do: Set Up Our File Structure</h2>
    <p>B3. A terrible slot in a vending machine for a carbonated drink. Fizz, foam, disaster.</p>
    <p>While I was in the bathroom washing my hands, I had a vision.</p>
    <pre>[ Add a New To Do ] ← input&#x000A;    &#x000A;    checkbox&#x000A;    - clicking will draw a line through the title of the to do item&#x000A;     ↓&#x000A;    [x] To Do Item #1&#x000A;    [ ] To Do Item #2&#x000A;        ↑ title&#x000A;          - double clicking will trigger an "edit" mode&#x000A;    </pre>
    <p>Or…</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/vision-big.png" alt="vision-big" width="600" height="473" style="max-width: 100%; height: auto;"><br> <p>Let’s set ourselves up with a structure that will bring this vision to life.</p>
    <p><code>generator-backbone</code> came with some secret weapons: sub-generators. <code>yo backbone</code> scaffolded our application, but flip back to your terminal and check out what these guys can do:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/todo-generate-models.png" alt="todo-generate-models" width="600" height="352" style="max-width: 100%; height: auto;"><br> <p>Check out your index.html:</p>
    <pre>&lt;!-- build:js scripts/main.js --&gt;&#x000A;    &lt;script src="scripts/main.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/templates.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/collections/todos-collection.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/models/todo-model.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/views/todos-view.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="scripts/views/todo-view.js"&gt;&lt;/script&gt;&#x000A;    &lt;!-- endbuild --&gt;&#x000A;    </pre>
    <p>How ’bout that! It not only created and placed files in relevant directories, it even included them in your HTML for you.</p>
    <p>I’ve created a repository for our To Do application — <a href="https://github.com/addyosmani/yeoman-examples/tree/master/backbone-localStorage-todos" rel="nofollow external" class="bo">go check it out</a>. We’ll take a glance at the files together, but please refer to the repository to get the full code.</p>
    <h3><code>scripts/main.js</code></h3>
    <pre>/*global backboneApp, $*/&#x000A;    &#x000A;    window.backboneApp = {&#x000A;        Models: {},&#x000A;        Collections: {},&#x000A;        Views: {},&#x000A;        Routers: {},&#x000A;        init: function () {&#x000A;            new this.Views.TodosView({&#x000A;                collection: new this.Collections.TodosCollection()&#x000A;            });&#x000A;        }&#x000A;    };&#x000A;    &#x000A;    $(document).ready(function () {&#x000A;        backboneApp.init();&#x000A;    });&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>The Backbone generator is establishing some good practices you can use right out of the box. It took the name of your directory, in my case “backboneApp”, and exposed an object literal to hold the Models, Collections, and other Backbone objects we may create.</p>
    <p>The generator also incorporates <a href="http://www.jshint.com" rel="nofollow external" class="bo">JSHint</a> into your app’s build process, making sure your code is of the highest, most consistent quality. You are encouraged to customize your preferences inside the <code>.jshintrc</code> file in the root of your project’s directory.</p>
    <p>Finally, <code>$(document).ready</code> will call <code>backboneApp.init</code>, which creates a <code>TodosCollection</code>, then passes it into a <code>TodosView</code>. I’ll go over these in more detail soon.</p>
    <h3><code>scripts/collections/todos-collection.js</code></h3>
    <pre>/*global backboneApp, Backbone*/&#x000A;    &#x000A;    backboneApp.Collections.TodosCollection = Backbone.Collection.extend({&#x000A;    &#x000A;        localStorage: new Backbone.LocalStorage('backbone-generator-todos'),&#x000A;    &#x000A;        initialize: function () {&#x000A;            this.model = backboneApp.Models.TodoModel;&#x000A;        }&#x000A;    &#x000A;    });&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>If we want our To Do app to be somewhat usable, we have to store our To Do items somewhere. There’s a handy Backbone adapter you may be familiar with called Backbone.LocalStorage. It will intercept Backbone’s calls to the default remote backend and use your browser’s <code>window.localStorage</code> instead.</p>
    <p>We know we’ll need the Backbone.LocalStorage adapter, but where should we go to get it? Idea! Idea!</p>
    <p>We haven’t made much use of Bower directly. When our application was scaffolded, Bower was used behind the scenes to grab Modernizr, Twitter Bootstrap, jQuery, Underscore, and Backbone. But, what if we want to add in another JavaScript dependency?</p>
    <p>Go back to your favorite terminal and try this:</p>
    <pre>$ bower search backbone</pre> <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/bower-search-backbone.png" alt="bower-search-backbone" width="596" height="768" style="max-width: 100%; height: auto;"><br> <p>Ok, wow. That’s… a lot. Maybe we should narrow that down.</p>
    <pre>$ bower search backbone.localstorage&#x000A;    Search results:&#x000A;    &#x000A;        backbone.localStorage <a href="git://github.com/jeromegn/Backbone.localStorage.git">git://github.com/jeromegn/Backbone.localStorage.git</a>&#x000A;    </pre>
    <p>There we go. Now we just have to install it.</p>
    <pre>$ bower install backbone.localStorage --save&#x000A;    bower cloning <a href="git://github.com/jeromegn/Backbone.localStorage.git">git://github.com/jeromegn/Backbone.localStorage.git</a>&#x000A;    bower cached <a href="git://github.com/jeromegn/Backbone.localStorage.git">git://github.com/jeromegn/Backbone.localStorage.git</a>&#x000A;    bower fetching backbone.localStorage&#x000A;    bower checking out backbone.localStorage#v1.1.4&#x000A;    bower installing backbone.localStorage#v1.1.4&#x000A;    </pre>
    <p>When working with multiple developers, it can be troublesome assuring everyone has the correct dependencies and matching versions. By using <code>--save</code> above, we are telling Bower to remember this new dependency, then write about it in our <code>bower.json</code> file. When another developer clones your project, they just have to run <code>bower install</code> to download every dependency, keeping everyone in sync. That’s why <code>app/bower_components</code> is listed in your <code>.gitignore</code> file. Gone are the days of bloated repositories!</p>
    <p>Now that Bower has <em>awesomed</em> all over our application, go into <code>app/index.html</code> and update the <code>scripts/vendor.js</code> comment block:</p>
    <pre>&lt;!-- build:js scripts/vendor.js --&gt;&#x000A;    &lt;script src="bower_components/jquery/jquery.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="bower_components/underscore/underscore.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="bower_components/backbone/backbone.js"&gt;&lt;/script&gt;&#x000A;    &lt;script src="bower_components/backbone.localStorage/backbone.localStorage.js"&gt;&lt;/script&gt;&#x000A;    &lt;!-- endbuild --&gt;&#x000A;    </pre>
    <p>When you save the file, your browser will refresh and you’ll have the new library ready to use. More specifically, <code>TodosCollection</code> will have it ready to use.</p>
    <h3><code>scripts/collections/todo-model.js</code></h3>
    <pre>/*global backboneApp, Backbone*/&#x000A;    &#x000A;    backboneApp.Models.TodoModel = Backbone.Model.extend({&#x000A;    &#x000A;        defaults: {&#x000A;            title: '',&#x000A;            completed: false&#x000A;        },&#x000A;    &#x000A;        toggle: function () {&#x000A;            this.save({&#x000A;                completed: !this.get('completed')&#x000A;            });&#x000A;        }&#x000A;    &#x000A;    });&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>This is a pretty basic Backbone Model. We set some default properties for our To Do items and define a <code>toggle</code> function, simply used to switch between a “Complete” or “Incomplete” state.</p>
    <h3><code>scripts/views/todos-view.js</code></h3>
    <pre>/*global backboneApp, Backbone, JST*/&#x000A;    &#x000A;    backboneApp.Views.TodosView = Backbone.View.extend({&#x000A;    &#x000A;        el: '#todo-app',&#x000A;    &#x000A;        template: JST['app/scripts/templates/todos.ejs'],&#x000A;    &#x000A;        events: { /* ... */ },&#x000A;    &#x000A;        initialize: function () { /* ... */ },&#x000A;    &#x000A;        render: function () { /* ... */ },&#x000A;    &#x000A;        createTodo: function () { /* ... */ },&#x000A;    &#x000A;        addTodoItem: function () { /* ... */ },&#x000A;    &#x000A;        addAllTodoItems: function () { /* ... */ }&#x000A;    &#x000A;    });&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>This is our most robust Backbone View, so to see the definitions to these various properties and methods, please refer to the <a href="https://github.com/addyosmani/yeoman-examples/tree/master/backbone-localStorage-todos" rel="nofollow external" class="bo">repository</a>.</p>
    <p>However, here are a couple key things:</p>
    <pre>el: '#todo-app'</pre>
    <p>This selector matches that <code>&lt;section id="todo-app"&gt;&lt;/section&gt;</code> element we created in our <code>index.html</code> file. This will be our primary View.</p>
    <pre>template: JST['app/scripts/templates/todos.ejs']</pre>
    <p>This little JST thing snuck in when we said <code>yo backbone:view ____</code>. When our View’s JavaScript file was created, the Backbone sub-generator created a matching template file for us: <code>app/scripts/templates/todos.ejs</code>.</p>
    <p>These <code>.ejs</code> template files will define our Views’ HTML. When we run our app with <code>grunt server</code> or <code>grunt build</code>, our template files will be crushed together into a JavaScript object, <code>JST</code>. When our view file says <code>template: JST['path/to/view/template.ejs']</code>, this is referring to that object.</p>
    <h3><code>scripts/templates/todos.ejs</code></h3>
    <pre>&lt;form class="input-append"&gt;&#x000A;        &lt;input type="text" id="new-todo" placeholder="What do you need to do today?"&gt;&#x000A;        &lt;input type="submit" class="btn" value="Submit"&gt;&#x000A;    &lt;/form&gt;&#x000A;    &lt;ul&gt;&#x000A;        &lt;!-- Where our To Do items will go --&gt;&#x000A;    &lt;/ul&gt;&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>Because we answered “Yes” to including Twitter Bootstrap for Sass when we scaffolded our application, I’ve added a couple of class names to pretty up our app. Feel free to style to your heart’s content in the <code>styles/main.scss</code> file.</p>
    <h3><code>styles/main.scss</code></h3>
    <pre>@import 'sass-bootstrap/lib/bootstrap';&#x000A;    &#x000A;    .hero-unit {&#x000A;        margin: 50px auto 0 auto;&#x000A;        width: 300px;&#x000A;    }&#x000A;    &#x000A;    form {&#x000A;        margin-top: 10px;&#x000A;    }&#x000A;    &#x000A;    ul,&#x000A;    li form {&#x000A;        margin: 0;&#x000A;        padding: 0;&#x000A;    }&#x000A;    &#x000A;    ul {&#x000A;        list-style: none;&#x000A;    }&#x000A;    &#x000A;    li form {&#x000A;        display: none;&#x000A;    }&#x000A;    &#x000A;    .editing {&#x000A;        span {&#x000A;            display: none;&#x000A;        }&#x000A;    &#x000A;        form {&#x000A;            display: inline-block;&#x000A;        }&#x000A;    }&#x000A;    &#x000A;    input:checked ~ span {&#x000A;        text-decoration: line-through;&#x000A;    }&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>Sass is pretty cool.</p>
    <p>Also, it’s pretty cool that the browser still reloads when you make a change to your Sass files. If you’ve used Sass before, you know it can be a hassle to get a productive development environment set up quickly. Out of the Yeoman box, you’re editing, watching, and reloading with none of the aforementioned hassle. Smiley face.</p>
    <h3><code>scripts/views/todo-view.js</code></h3>
    <pre>/*global backboneApp, Backbone, JST*/&#x000A;    &#x000A;    backboneApp.Views.TodoView = Backbone.View.extend({&#x000A;    &#x000A;        tagName: 'li',&#x000A;    &#x000A;        template: JST['app/scripts/templates/todo.ejs'],&#x000A;    &#x000A;        events: {&#x000A;            'click input[type="checkbox"]': 'toggle',&#x000A;            'dblclick span': 'toggleEdit',&#x000A;            'submit form': 'toggleEdit'&#x000A;        },&#x000A;    &#x000A;        initialize: function () { /* ... */ },&#x000A;    &#x000A;        render: function () { /* ... */ },&#x000A;    &#x000A;        toggle: function () { /* ... */ },&#x000A;    &#x000A;        toggleEdit: function () { /* ... */ }&#x000A;    &#x000A;    });&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>This <code>TodoView</code> will represent an individual item. It will be an <code>&lt;li&gt;</code> with some custom functionality handling click, double click, and submit events, enabling a user to edit and save a To Do item.</p>
    <h3><code>scripts/templates/todo.ejs</code></h3>
    <pre>&lt;input type="checkbox" &lt;% if (completed) { %&gt;checked&lt;% } %&gt;&gt;&#x000A;    &lt;form&gt;&#x000A;        &lt;input type="text" value="&lt;%= title %&gt;"&gt;&#x000A;    &lt;/form&gt;&#x000A;    &lt;span&gt;&#x000A;        &lt;%= title %&gt;&#x000A;    &lt;/span&gt;&#x000A;    </pre>
    <h4>Thoughts</h4>
    <p>Simple enough. We’re using some basic Underscore templating to spit out values and toggle a <code>checked</code> state on our checkbox.</p>
    <hr>
    <h2>To Do: Do It Again</h2>
    <p>Our To Do application is actually done! It’s quite basic in functionality, but you should have a sense of how natural it is to develop an application using Yeoman and his Generator buddies. And even though the functionality is basic, none of the techniques we used to get here were “basic.” We’re using smart, efficient libraries (Sass, Backbone, Underscore) with a finely-tuned development process (Grunt, LiveReload, Compass), and it took us only a few terminal commands.</p>
    <p>If you’re like me, you probably want to stop with the To Do stuff and start making your own applications. If you want to go play around, go for it! When you’re done generating like a crazy person, come back and let’s ship our To Do app.</p>
    <hr>
    <h2>To Do: Ship It</h2>
    <p>Let’s put this thing in the water and see if she floats! Do NOT put your computer in the water. Wait, would a MacBook Air float? No, probably not. Hmm…</p>
    <p>That was a dangerous paragraph. Let’s just get our app ready for production, safe and dry.</p>
    <p><code>grunt server</code> has been amazing, but it’s time to meet his brother, <code>grunt build</code>. We talked about him a bit earlier, but let’s go over a few more details.</p>
    <p>Here is what the <code>grunt build</code> task is defined as in your <code>Gruntfile.js</code>:</p>
    <pre>grunt.registerTask('build', [&#x000A;        'clean:dist',    // Clears out your .tmp/ and dist/ folders&#x000A;        'coffee',        // Compiles your CoffeeScript files (if any)&#x000A;        'createDefaultTemplate', // Creates a JS file that sets up your JST object&#x000A;        'jst',           // Compiles your `scripts/templates/` files&#x000A;        'compass:dist',  // Compiles your Sassiness&#x000A;        'useminPrepare', // Looks for those &lt;!-- special blocks --&gt; in your HTML&#x000A;        'imagemin',      // Optimizes your images!&#x000A;        'htmlmin',       // Minifies your HTML files&#x000A;        'concat',        // Task used to concatenate your JS and CSS&#x000A;        'cssmin',        // Minifies your CSS files&#x000A;        'uglify',        // Task used to minify your JS&#x000A;        'copy',          // Copies files from .tmp/ and app/ into dist/&#x000A;        'rev',           // Creates unique hashes and re-names your new JS/CSS files&#x000A;        'usemin'         // Updates the references in your HTML with the new files&#x000A;    ]);&#x000A;    </pre>
    <p>So, that thing is pretty legit. All of these tasks are defined inside of <code>Gruntfile.js</code>, so feel free to poke and tweak around to customize your application’s build. It’s highly likely you won’t need to do any customization at all, but it’s there if you need to.</p>
    <p>Oh, one other thing. <code>grunt build</code> is actually wrapped inside of another task.</p>
    <h3><code>grunt</code></h3>
    <p>Simply running <code>grunt</code> will execute the <code>default</code> task:</p>
    <pre>grunt.registerTask('default', [&#x000A;        'jshint',&#x000A;        'test',&#x000A;        'build'&#x000A;    ]);</pre>
    <p>Those first two tasks, <code>jshint</code> and <code>test</code> are easy to overlook when rushing an app out the door, but are very important.</p>
    <h3>JSHint</h3>
    <p>The <code>jshint</code> task will consult with your <code>.jshintrc</code> file to learn your preferences, then scan through all of your JS files to make sure your rules are abided by. To get the full run down of your options with JSHint, check <a href="http://www.jshint.com/docs/#options" rel="nofollow external" class="bo">the JSHint documentation</a>.</p>
    <h3>Test</h3>
    <p>The <code>test</code> task looks like this:</p>
    <pre>grunt.registerTask('test', [&#x000A;        'clean:server',&#x000A;        'coffee',&#x000A;        'createDefaultTemplate',&#x000A;        'jst',&#x000A;        'compass',&#x000A;        'connect:test',&#x000A;        'mocha'&#x000A;    ]);</pre>
    <p>It basically does enough to create and serve your application for your test framework, Mocha, to execute your tests.</p>
    <p>Oh crap, tests.</p>
    <p>Next door to your <code>app/</code> and <code>dist/</code> directories, this little <code>test/</code> buckaroo has been waiting for our attention. Aww.</p>
    <p>If you open that up, you’ll see <code>test/</code> has its own <code>bower.json</code> and <code>index.html</code>, as well as a <code>spec/</code> directory. Your tests will have some dependencies of their own, the <a href="http://chaijs.com" rel="nofollow external" class="bo">Chai Assertion Library</a> and <a href="http://visionmedia.github.io/mocha" rel="nofollow external" class="bo">Mocha testing framework</a>.</p>
    <p>Expand that <code>spec/</code> directory and you’ll see a <code>test.js</code> file that looks something like this:</p>
    <pre>/*global describe, it */&#x000A;    'use strict';&#x000A;    &#x000A;    (function () {&#x000A;        describe('Give it some context', function () {&#x000A;            describe('maybe a bit more context here', function () {&#x000A;                it('should run here few assertions', function () {&#x000A;    &#x000A;                });&#x000A;            });&#x000A;        });&#x000A;    })();&#x000A;    </pre>
    <p>Ok, looks like we could use <a href="https://github.com/yeoman/generator-backbone/pulls" rel="nofollow external" class="bo">a pull request</a> to correct some grammar. Anybody?</p>
    <p>If you haven’t written your own tests before, you’ll see terms like <code>describe</code>, <code>it</code>, <code>before</code>, <code>beforeEach</code>, <code>after</code>, and <code>afterEach</code> pop up. <code>describe</code> is a wrapper for a group of related tests, <code>____Each</code> are optional functions that will execute <code>before</code> or <code>after</code> your test(s), and each <code>it</code> is a specific test.</p>
    <p>Try running a <code>grunt test</code> to see all the magic unfold.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/todo-grunt-test.png" alt="todo-grunt-test" width="595" height="603" style="max-width: 100%; height: auto;"><br> <p>You should play around and see if you can write some tests for our To Do application. A few ideas for test cases might be:</p>
    <ul>
    <li>Does creating a new To Do item get saved in localStorage?</li>
    <li>Does a new To Do item’s title get trimmed (removing extra whitespace)?</li>
    <li>When editing a To Do item, does deleting the title, then saving remove the To Do item from localStorage?</li>
    </ul>
    <p>There’s only one more thing to do.</p>
    <h3>Press Enter</h3>
    <pre>$ grunt</pre>
    <p>You should see our favorite words: <code>Done, without errors.</code></p>
    <hr>
    <h2>Finding Yeoman</h2>
    <p>Yeoman is still quite young; he just turned one! Things are pretty great now and they’re only going to get better. However, like all one year olds, Yeoman is still learning to walk without falling, and talk without drooling. You just might run into a bug or two. In times like these, think of him like your cute little nephew. He needs positive role models in his life, so help him learn!</p>
    <p>That got real children’s book-y, real fast. I’ll grow it up a little: there are bugs and we need your help to squash the doody out of them (I said “a little”). Even if it’s not a bug, but you’re like, “I know a MUCH faster Grunt plug-in this generator could use,” report it to the appropriate generator’s issue tracker.</p>
    <p>If you want to learn some more about Yeoman or just get to know the team, you’ll find us peppered all over the following sites.</p>
    <ul>
    <li><a href="http://yeoman.io" rel="nofollow external" class="bo">yeoman.io</a></li>
    <li><a href="http://yeoman.io/gettingstarted.html" rel="nofollow external" class="bo">Getting Started Guide</a></li>
    <li><a href="http://twitter.com/yeoman" rel="nofollow external" class="bo">@yeoman on Twitter</a></li>
    <li><a href="https://plus.google.com/101063139999404044459" rel="nofollow external" class="bo">+Yeoman on Google+</a></li>
    </ul>
    <p>If you’re just plain stuck, try one of the following resources for a helping hand.</p>
    <ul>
    <li><a href="http://stackoverflow.com/questions/tagged/yeoman" rel="nofollow external" class="bo">StackOverflow</a></li>
    <li><a href="http://webchat.freenode.net/?channels=yeoman" rel="nofollow external" class="bo">#yeoman on IRC</a></li>
    </ul>
    <p>Yeoman is just one piece of the entire stack— <a href="http://npmjs.org" rel="nofollow external" class="bo">NPM</a>, <a href="http://nodejs.org" rel="nofollow external" class="bo">Node</a>, <a href="http://gruntjs.com" rel="nofollow external" class="bo">Grunt</a>, and <a href="http://bower.io" rel="nofollow external" class="bo">Bower</a>. It can be intimidating if you’re unfamiliar with these, but it is crucial not to fear the curve! Learning will need to happen, and like always, it will probably need to happen the hard way before it really sticks.</p>
    <p>Psst, if you’re using <code>sudo</code> before every command, run, don’t walk, to <a href="https://gist.github.com/isaacs/579814" rel="nofollow external" class="bo">Node and NPM in 30 Seconds</a>. There, you’ll find several scripts you can run to give control back to your user account. It will also help you install Node and NPM if you’re starting from scratch.</p>
    <hr>
    <h2>Yo’ Next Application – Will You Yo?</h2>
    <p>Like all tools, I believe Yeoman is something every developer should try. If you give it a shot and find it’s not suitable for your task, I and the rest of the team would love to hear why. If you need a buddy to help you with your project, come find me. I’m always available around the links above, or just ping me on Twitter. I’m <a href="http://twitter.com/stephenplusplus" rel="nofollow external" class="bo">@stephenplusplus</a> or Stephen Sawchuk.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/07/me.jpg" alt="me" width="600" height="600" style="max-width: 100%; height: auto;"><br> <p>Nice to meet you.</p>
    </div>
]]>
</Body>
<Summary>What Is Yeoman?  Trick question. It’s not a thing. It’s this guy:       Basically, he wears a top hat, lives in your computer, and waits for you to tell him what kind of application you wish to...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/Oh5sYujC6DQ/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/32647/guest@my.umbc.edu/dac75e942e255f7a14291a8cbea0db8e/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tools-and-tips</Tag>
<Tag>tutorials</Tag>
<Tag>wed</Tag>
<Tag>yeoman</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 18:04:09 -0400</PostedAt>
<EditAt>Mon, 15 Jul 2013 18:04:09 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="110095" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110095">
<Title>Hydrologist Claire Welty, CUERE, takes NBC Learn on a tour of Baltimore&#8217;s urban streams, The Baltimore Sun</Title>
<Body>
<![CDATA[
    <div class="html-content">“NBC Learn, an educational division of the television network, came to Baltimore recently to report on how the physical alteration of streams in urban areas makes it that much harder for them to handle polluted storm-water runoff. It highlights research on area streams that’s being led by Claire Welty, a hydrologist at University of Maryland Baltimore County,” writes Tim Wheeler of the Baltimore Sun. Welty, the Director, Center for Urban Environmental Research and Education (CUERE) and professor of chemical, biochemical, and environmental engineering takes NBC Learn on a tour of Baltimore’s streams. “With NBC correspondent Anne Thompson narrating, Welty shows …</div>
]]>
</Body>
<Summary>“NBC Learn, an educational division of the television network, came to Baltimore recently to report on how the physical alteration of streams in urban areas makes it that much harder for them to...</Summary>
<Website>https://news.umbc.edu/hydrologist-claire-welty-cuere-takes-nbc-learn-on-a-tour-of-baltimores-urban-streams-the-baltimore-sun/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110095/guest@my.umbc.edu/07f41d7a14a08b832e42979ef6f15c1a/api/pixel</TrackingUrl>
<Tag>science-and-technology</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 14:46:24 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123188" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123188">
<Title>Robert Deluty, Graduate School, Interviewed for Boloji.com</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="Robert Deluty, UMBC" src="http://www.umbc.edu/psyc/personal/deluty/robert.gif" width="174" height="252" style="max-width: 100%; height: auto;">In an interview with Boloji.com, one of India’s most popular e-magazines, UMBC’s Robert Deluty revealed the origins of his transformation into a poet and shared a few select pieces spanning more than 20 years.</p>
    <p>According to Dr. Deluty, associate dean of the graduate school, he did not discover his talent for writing poetry until he was in his late 30’s when he adapted a “long-winded, self-righteous, and boring” essay into his first published poem expressing his views on entitlement. It was published in <em>The Baltimore Evening Sun</em> newspaper.</p>
    <p>Surprisingly, however, it was his 30-plus years as a psychology professor and practicing clinician that drew him to pursue poetry. “When I provide therapy as a psychologist and when I write poetry, my goals are typically the same: to connect with my audience, to relieve burdens, and to promote greater awareness and insight,” said Deluty.</p>
    <p>Deluty’s poems and essays have been published in newspapers, journals, and anthologies such as <em>The Wall Street Journal</em>, <em>Modern Haiku</em>, <em>Psychiatric Times</em> and the <em>Journal of Poetry Therapy</em>. His 42<sup>nd</sup> book, <em>Saluting from the Shore</em>, will be published in August 2013.</p>
    <p><a title="An Interview with Dr. Robert H. Deluty" href="http://www.boloji.com/index.cfm?md=Content&amp;sd=Articles&amp;ArticleID=14660" rel="nofollow external" class="bo">Read the full interview »</a></p>
    </div>
]]>
</Body>
<Summary>In an interview with Boloji.com, one of India’s most popular e-magazines, UMBC’s Robert Deluty revealed the origins of his transformation into a poet and shared a few select pieces spanning more...</Summary>
<Website>https://umbc.edu/stories/robert-deluty-graduate-school-interviewed-for-boloji-com/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123188/guest@my.umbc.edu/18c2b4fc36577db5d5f7fd7b369108ac/api/pixel</TrackingUrl>
<Tag>admin</Tag>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 15 Jul 2013 14:33:26 -0400</PostedAt>
</NewsItem>

</News>
