<?xml version="1.0"?>
<News hasArchived="true" page="8657" pageCount="10721" pageSize="10" timestamp="Fri, 10 Jul 2026 10:34:32 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8657">
<NewsItem contentIssues="false" id="30842" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30842">
<Title>UMBC Athletics Matches Best-Ever Finish With Third-Place Standing in America East Commissioner's Cup Race</Title>
<Body>
<![CDATA[
    <div class="html-content">Portland, Maine- The UMBC athletic program matched its best-ever finish by placing third in the race for the America East Conference's Stuart P. Haskell, Jr. Commissioner's Cup, the league announced this evening at its annual awards dinner. The Retrievers' 19-sport program also finished third in 2007-08 and 2010-11 and bested last year's fourth-place finish. UMBC has finished in the top four of the league in six of the last eight seasons.</div>
]]>
</Body>
<Summary>Portland, Maine- The UMBC athletic program matched its best-ever finish by placing third in the race for the America East Conference's Stuart P. Haskell, Jr. Commissioner's Cup, the league...</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=8040</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30842/guest@my.umbc.edu/49ef8edd08e4041237c0c91b91ee80a1/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 05 Jun 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30838" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30838">
<Title>Bloomberg Begins Fund to Invest in Start-Ups</Title>
<Body>
<![CDATA[
    <div class="html-content">Bloomberg Beta is the first time that Bloomberg L.P. will reap profits from investments in some of the technology companies that its news operation covers.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F05%2Ftechnology%2Fbloomberg-begins-fund-to-invest-in-start-ups.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Bloomberg+Begins+Fund+to+Invest+in+Start-Ups" 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%2F06%2F05%2Ftechnology%2Fbloomberg-begins-fund-to-invest-in-start-ups.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Bloomberg+Begins+Fund+to+Invest+in+Start-Ups" 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%2F06%2F05%2Ftechnology%2Fbloomberg-begins-fund-to-invest-in-start-ups.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Bloomberg+Begins+Fund+to+Invest+in+Start-Ups" 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%2F06%2F05%2Ftechnology%2Fbloomberg-begins-fund-to-invest-in-start-ups.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Bloomberg+Begins+Fund+to+Invest+in+Start-Ups" 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%2F06%2F05%2Ftechnology%2Fbloomberg-begins-fund-to-invest-in-start-ups.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Bloomberg+Begins+Fund+to+Invest+in+Start-Ups" 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>Bloomberg Beta is the first time that Bloomberg L.P. will reap profits from investments in some of the technology companies that its news operation covers.     </Summary>
<Website>http://www.nytimes.com/2013/06/05/technology/bloomberg-begins-fund-to-invest-in-start-ups.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30838/guest@my.umbc.edu/d26b11416e8df211f79b53621b0377d6/api/pixel</TrackingUrl>
<Tag>aol-inc-aol-nyse</Tag>
<Tag>bloomberg-beta</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>goldman-sachs-group-inc-gs-nyse</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>new</Tag>
<Tag>new-york-times-company-nyt-nyse</Tag>
<Tag>news-and-news-media</Tag>
<Tag>news-corporation-nwsa-nasdaq</Tag>
<Tag>start-ups</Tag>
<Tag>techcrunch</Tag>
<Tag>technology</Tag>
<Tag>venture-capital</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>Wed, 05 Jun 2013 00:01:19 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="30829" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30829">
<Title>As Data Floods In, Massive Open Online Courses Evolve</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>As online education companies track students’ behavior and experiment with different delivery methods, assumptions about effectiveness are being challenged.</p>
    <p>In 2012, education startups attracted millions of students—and a surge of interest from universities and the media—by offering massive open online courses, or MOOCs. Now some core features of these wildly popular courses are being dissected, enabling the course providers to do some learning of their own. As these companies analyze user data and experiment with different features, they are exploring how to customize students’ learning experiences, and they are amassing a stock of pedagogical tricks to help more students finish their courses.</p>
    </div>
]]>
</Body>
<Summary>As online education companies track students’ behavior and experiment with different delivery methods, assumptions about effectiveness are being challenged.  In 2012, education startups attracted...</Summary>
<Website>http://www.technologyreview.com/news/515396/as-data-floods-in-massive-open-online-courses-evolve/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30829/guest@my.umbc.edu/278816ba483bb05743eb8bbd4a7745d7/api/pixel</TrackingUrl>
<Tag>development</Tag>
<Tag>internet</Tag>
<Tag>mit</Tag>
<Tag>technology</Tag>
<Tag>web</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>Wed, 05 Jun 2013 00:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="30827" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30827">
<Title>Google Investing in New HTML5 Development Tool for Advertisers</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>The Google Web Designer, Google’s new service designed to aid digital advertisers with connecting to consumers across multiple displays, regardless of the device.</p></div>
]]>
</Body>
<Summary>The Google Web Designer, Google’s new service designed to aid digital advertisers with connecting to consumers across multiple displays, regardless of the device.</Summary>
<Website>http://www.htmlgoodies.com/daily_news/google-investing-in-new-html5-development-tool-for-advertisers.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30827/guest@my.umbc.edu/a379ed9cfeb8f5ac1031b69d7a90157f/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>Tue, 04 Jun 2013 23:17:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30826" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30826">
<Title>Apple Violates Samsung Patent, U.S. Trade Panel Says</Title>
<Body>
<![CDATA[
    <div class="html-content">The United States International Trade Commission, which ruled a patent had been violated, said it was issuing a ban for a some devices on AT&amp;T’s network.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F05%2Ftechnology%2Fapple-violates-samsung-patent-us-trade-panel-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Apple+Violates+Samsung+Patent%2C+U.S.+Trade+Panel+Says" 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%2F06%2F05%2Ftechnology%2Fapple-violates-samsung-patent-us-trade-panel-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Apple+Violates+Samsung+Patent%2C+U.S.+Trade+Panel+Says" 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%2F06%2F05%2Ftechnology%2Fapple-violates-samsung-patent-us-trade-panel-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Apple+Violates+Samsung+Patent%2C+U.S.+Trade+Panel+Says" 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%2F06%2F05%2Ftechnology%2Fapple-violates-samsung-patent-us-trade-panel-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Apple+Violates+Samsung+Patent%2C+U.S.+Trade+Panel+Says" 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%2F06%2F05%2Ftechnology%2Fapple-violates-samsung-patent-us-trade-panel-says.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Apple+Violates+Samsung+Patent%2C+U.S.+Trade+Panel+Says" 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/165664667193/u/0/f/640387/c/34625/s/2cd94567/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165664667193/u/0/f/640387/c/34625/s/2cd94567/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The United States International Trade Commission, which ruled a patent had been violated, said it was issuing a ban for a some devices on AT&amp;T’s network.     </Summary>
<Website>http://www.nytimes.com/2013/06/05/technology/apple-violates-samsung-patent-us-trade-panel-says.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30826/guest@my.umbc.edu/60db92dfc94295c4d93afefee5a225bc/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>at-and-t-inc-t-nyse</Tag>
<Tag>gartner-inc-it-nyse</Tag>
<Tag>inventions-and-patents</Tag>
<Tag>new</Tag>
<Tag>samsung-electronics-co</Tag>
<Tag>smartphones</Tag>
<Tag>technology</Tag>
<Tag>united-states-international-trade-commission</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, 04 Jun 2013 22:15:20 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30839" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30839">
<Title>As Vandals Take to National Parks, Some Point to Social Media</Title>
<Body>
<![CDATA[
    <div class="html-content">Park personnel say there is reason to believe that a spike in vandalism and graffiti that has found its way into the wilderness coincides with the rise of social media.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F05%2Fus%2Fas-vandals-take-to-national-parks-some-point-to-social-media.html%3Fpartner%3Drss%26emc%3Drss&amp;t=As+Vandals+Take+to+National+Parks%2C+Some+Point+to+Social+Media" 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%2F06%2F05%2Fus%2Fas-vandals-take-to-national-parks-some-point-to-social-media.html%3Fpartner%3Drss%26emc%3Drss&amp;t=As+Vandals+Take+to+National+Parks%2C+Some+Point+to+Social+Media" 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%2F06%2F05%2Fus%2Fas-vandals-take-to-national-parks-some-point-to-social-media.html%3Fpartner%3Drss%26emc%3Drss&amp;t=As+Vandals+Take+to+National+Parks%2C+Some+Point+to+Social+Media" 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%2F06%2F05%2Fus%2Fas-vandals-take-to-national-parks-some-point-to-social-media.html%3Fpartner%3Drss%26emc%3Drss&amp;t=As+Vandals+Take+to+National+Parks%2C+Some+Point+to+Social+Media" 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%2F06%2F05%2Fus%2Fas-vandals-take-to-national-parks-some-point-to-social-media.html%3Fpartner%3Drss%26emc%3Drss&amp;t=As+Vandals+Take+to+National+Parks%2C+Some+Point+to+Social+Media" 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>Park personnel say there is reason to believe that a spike in vandalism and graffiti that has found its way into the wilderness coincides with the rise of social media.     </Summary>
<Website>http://www.nytimes.com/2013/06/05/us/as-vandals-take-to-national-parks-some-point-to-social-media.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30839/guest@my.umbc.edu/a79897b381252ee8d2d1ad5d16f40c31/api/pixel</TrackingUrl>
<Tag>arizona</Tag>
<Tag>california</Tag>
<Tag>colorado</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>graffiti</Tag>
<Tag>joshua-tree-national-park</Tag>
<Tag>national-parks-monuments-and-seashores</Tag>
<Tag>new</Tag>
<Tag>rocky-mountain-national-park</Tag>
<Tag>social-networking-internet</Tag>
<Tag>technology</Tag>
<Tag>vandalism</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, 04 Jun 2013 21:43:42 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30825" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30825">
<Title>MS Defense: Nimbus: Scalable, Distributed, In-Memory Data Storage 6/6</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="" height="308" src="http://www.csee.umbc.edu/wp-content/uploads/2013/06/Yahoo-hadoop-cluster_OSCON_2007.jpg" width="700" style="max-width: 100%; height: auto;"></p>
    <p><span>MS Defense</span></p>
    <p><strong><span>Nimbus: Scalable, Distributed, In-Memory Data Storage</span></strong></p>
    <p><span>Adam Shook</span></p>
    <p><span>1:30pm Thursday, 6 June 2013, 325b ITE, UMBC</span></p>
    <p>The Apache Hadoop project provides a framework for reliable, scalable, distributed computing. The storage layer of Hadoop, called the Hadoop Distributed File System (HDFS), is an append-only distributed file system designed for commodity hardware. The append-only nature of the file system limits the ability for applications to have random reads and writes of data. This was addressed by Apache HBase and Apache Accumulo, which both allow for quick random access to a highly scalable key/value store.</p>
    <p>However, these projects still require data to be read from the local disk of the server, and therefore cannot handle the type of I/O throughput that many applications require. This limits the potential for "hot" data sets that cannot be stored in memory of one machine, but do not need the scalability of HBase, i.e. the ones that can be sharded and stored in memory on dozens of machines. These data sets are often referenced by many applications and can be dozens of gigabytes in size.</p>
    <p>Nimbus is a project designed for Hadoop to expose distributed in-memory data structures, backed by the reliability of HDFS. By executing a series of I/O benchmarks against HBase, Nimbus's architecture and implementation are validated by demonstrating the performance advantage over HBase, allowing for high-throughput data fetch operations. The overall architecture and design of each component are discussed to validate Nimbus's design goals, as well as a description of relevant use cases and future work for the project.</p>
    <p>Committee: Drs. Tim Finin (chair), Anupam Joshi and Konstantinos Kalpakis</p>
    </div>
]]>
</Body>
<Summary>MS Defense   Nimbus: Scalable, Distributed, In-Memory Data Storage   Adam Shook   1:30pm Thursday, 6 June 2013, 325b ITE, UMBC   The Apache Hadoop project provides a framework for reliable,...</Summary>
<Website>http://www.csee.umbc.edu/2013/06/ms-defense-nimbus-scalable-distributed-in-memory-data-storage-66/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30825/guest@my.umbc.edu/76921cd930668e609d483b99fda5d1fc/api/pixel</TrackingUrl>
<Tag>computer-science</Tag>
<Tag>defense</Tag>
<Tag>news</Tag>
<Tag>research</Tag>
<Tag>talks</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 04 Jun 2013 21:39:06 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="123270" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123270">
<Title>Rugby Alums Give Back With &#8220;Day of Service&#8221;</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <img width="150" height="150" src="https://umbc.edu/wp-content/uploads/2013/06/rugby1-150x150.jpg" alt="" style="max-width: 100%; height: auto;"><p>UMBC Rugby players past and present joined together for the first <strong>UMBC Rugby Day of Service</strong>, partnering with Habitat for Humanity of the Chesapeake and Habitat for Humanity Sandtown to demolish and clean up one site, and to build a new home on another.  Close to 30 players from the men’s and women’s club participated.</p>
    <p>“As an organization, we were looking for an event that would allow us to bring all of the teams together, past and present, to do something positive in the greater Baltimore community,” said <strong>Tracy Williams, Jr. ’06</strong>, who helped organize the event and who hopes to make this an annual event.  “We were able to leverage our extensive alumni and current player network to make a long lasting difference in the lives of families in need.”</p>
    <a href="/wp-content/uploads/2013/06/rugby1.jpg" rel="nofollow external" class="bo"><img alt="Back Row L-R: Tyler Tippett, Colin McGrath, Jeremy Boyer '07, Karl Shuey, Robert Duvall '06, Richie Campbell, Brendan McQueeny, Amha Sertsu. Front Row:  Joe Letts, Hieu Truong '05, Candice Simmons, Jasmine Cashin, Allie Alton, Soheyl Soltani-Nia,  Matt Zvitkovitz, Jackson Sparrow Drury " src="/wp-content/uploads/2013/06/rugby1.jpg?w=640" width="640" height="424" style="max-width: 100%; height: auto;"></a>Sandtown Habitat: Back Row L-R: Tyler Tippett, Colin McGrath, Jeremy Boyer ’07, Karl Shuey, Robert Duvall ’06, Richie Campbell, Brendan McQueeny, Amha Sertsu. Front Row: Joe Letts, Hieu Truong ’05, Candice Simmons, Jasmine Cashin, Allie Alton, Soheyl Soltani-Nia, Matt Zvitkovitz, Jackson Sparrow Drury
    <a href="/wp-content/uploads/2013/06/rugby2.jpg" rel="nofollow external" class="bo"><img alt="Habitat Chesapeake: Back Row L-R: Mikhail Hershfield, Joe Bieberich '12, James Park, Arya Koolaee, Tracy Williams '06, Phillip Zwaig. Front Row: Andrew Gaither '94, James Nardei, Josh Herring '08,'11, Ricky Raccoon, Erik Anderson" src="/wp-content/uploads/2013/06/rugby2.jpg?w=640" width="640" height="480" style="max-width: 100%; height: auto;"></a>Habitat Chesapeake: Back Row L-R: Mikhail Hershfield, Joe Bieberich ’12, James Park, Arya Koolaee, Tracy Williams ’06, Phillip Zwaig. Front Row: Andrew Gaither ’94, James Nardei, Josh Herring ’08,’11, Ricky Raccoon, Erik Anderson</div>
]]>
</Body>
<Summary>UMBC Rugby players past and present joined together for the first UMBC Rugby Day of Service, partnering with Habitat for Humanity of the Chesapeake and Habitat for Humanity Sandtown to demolish...</Summary>
<Website>https://umbc.edu/stories/rugby-alums-give-back-with-day-of-service/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123270/guest@my.umbc.edu/034ba553932a102bc1d5e6daefb6a897/api/pixel</TrackingUrl>
<Tag>alumni</Tag>
<Tag>habitat-for-humanity</Tag>
<Tag>umbc-rugby</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>Tue, 04 Jun 2013 21:22:40 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30822" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30822">
<Title>Lei Jun Builds His Xiaomi Empire by Aping Apple and Steve Jobs</Title>
<Body>
<![CDATA[
    <div class="html-content">Led by Lei Jun, Xiaomi sold $2 billion in handsets in China last year, and he has carefully cultivated an image in the Steve Jobs mold.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F05%2Fbusiness%2Fglobal%2Fin-china-an-empire-built-by-aping-apple.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Lei+Jun+Builds+His+Xiaomi+Empire+by+Aping+Apple+and+Steve+Jobs" 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%2F06%2F05%2Fbusiness%2Fglobal%2Fin-china-an-empire-built-by-aping-apple.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Lei+Jun+Builds+His+Xiaomi+Empire+by+Aping+Apple+and+Steve+Jobs" 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%2F06%2F05%2Fbusiness%2Fglobal%2Fin-china-an-empire-built-by-aping-apple.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Lei+Jun+Builds+His+Xiaomi+Empire+by+Aping+Apple+and+Steve+Jobs" 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%2F06%2F05%2Fbusiness%2Fglobal%2Fin-china-an-empire-built-by-aping-apple.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Lei+Jun+Builds+His+Xiaomi+Empire+by+Aping+Apple+and+Steve+Jobs" 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%2F06%2F05%2Fbusiness%2Fglobal%2Fin-china-an-empire-built-by-aping-apple.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Lei+Jun+Builds+His+Xiaomi+Empire+by+Aping+Apple+and+Steve+Jobs" 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>Led by Lei Jun, Xiaomi sold $2 billion in handsets in China last year, and he has carefully cultivated an image in the Steve Jobs mold.     </Summary>
<Website>http://www.nytimes.com/2013/06/05/business/global/in-china-an-empire-built-by-aping-apple.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30822/guest@my.umbc.edu/a0fd8de048b8d5e0162d5032054ae1d1/api/pixel</TrackingUrl>
<Tag>amazon-com-inc-amzn-nasdaq</Tag>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>broadcom-corporation-brcm-nasdaq</Tag>
<Tag>china</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>gartner-inc-it-nyse</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>groupon-inc-grpn-nasdaq</Tag>
<Tag>jobs-steven-p</Tag>
<Tag>jun-lei</Tag>
<Tag>lenovo-group-lnvgy-nqb</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>new</Tag>
<Tag>qualcomm-inc-qcom-nasdaq</Tag>
<Tag>smartphones</Tag>
<Tag>technology</Tag>
<Tag>xiaomi-tech</Tag>
<Tag>york</Tag>
<Tag>zynga-inc-znga-nasdaq</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, 04 Jun 2013 20:32:40 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30821" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30821">
<Title>Creating a Multi-Page Site with Meteor</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31849&amp;c=1332665421" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31849&amp;c=1332665421" alt="" style="max-width: 100%; height: auto;"></a><p>As with any web application, creating multi-page sites requires a specialized set of tools. In this article, we’ll take a look at developing a library that not only can differentiate between the different URIs, but one that takes advantage of <a href="http://meteor.com/" rel="nofollow external" class="bo">Meteor’s</a> core features.</p>
    <p></p>
    <hr>
    <h2>Intended Library Features</h2>
    <p>Whenever I have to develop a specific and focused library like this, I like to start with the outcome of, how do I want this to work?</p>
    <p>So, we can begin by writing down some of the features that we’d like it to have:</p>
    <ul>
    <li>The ability to load different pages according to the URI</li>
    <li>Reading parameters from the URI (placeholders)</li>
    <li>Keeping the pages dynamic as per the Meteor standard</li>
    </ul>
    <p>That looks pretty good. Now after looking over these features, you may think they are pretty similar to a ‘router’ type of library and I agree. So, let’s take a look at how our ‘router’ library would work in action:</p>
    <pre>Router.addRoute('/home', 'homeTemplate');&#x000A;    Router.addRoute('/user/:username', 'profileTemplate');&#x000A;    Router.addRoute('/contact', 'contactTemplate');&#x000A;    &#x000A;    Router.run();&#x000A;    </pre>
    <p>In design, you have concepts like ‘form-follows-function’, which uses the idea of laying out everything first, and designing it later.</p>
    <p>In code, I often find the opposite is more helpful. We as developers, can work in many directions and having a working example of what the design should look like, keeps us focused and efficient.</p>
    <p>Now that I know what I want to do, it’s just a matter of implementing it. So, let’s take another look at our features that we wrote above; we want to be able to add routes, and have Meteor render the given template partial. Of course, Meteor’s views work off of handlebar’s templates by default, so I’ve made the decision to make this the denomination of our router.</p>
    <h3>The Breakdown</h3>
    <p>Next, let’s break down the project into different sections so that we know what features we need to work on.</p>
    <ul>
    <li>We’ll start by getting the current page’s URI, as we need to match the routes against something. This can be done, easily enough, using the <code>window.location.pathname</code> variable, provided by the browser.</li>
    <li>Next, we need the ability to add routes. This also, is pretty simple now that we have done some example code; we will have a function named <code>addRoute</code> which will accept a route pattern and a template name. This function will then have to store all of these route objects inside some kind of array.</li>
    <li>With the current URI and an array of routes stored, we will need some kind of method to see if they match.</li>
    <li>And last, but not least, we will need to take a matched route and display its attached template.</li>
    </ul>
    <p>Hopefully, you can see that by laying out the requirements, it really helps to streamline the planning stage. We are now ready to jump in.</p>
    <hr>
    <h2>Setting Up</h2>
    <p>To get started, let’s create a new Meteor project, I am going to name mine ‘<code>routerdemo</code>‘. Now inside, we’ll create a folder named ‘<code>lib</code>‘ inside another folder named ‘<code>client</code>‘:</p>
    <pre>meteor create routerdemo&#x000A;    cd routerdemo&#x000A;    mkdir -p client/lib&#x000A;    </pre>
    <p>Next, create a file named ‘<code>router.js</code>‘ inside the newly created <code>lib</code> folder. The reason we are sticking it in ‘<code>client</code>‘, is because the server doesn’t have access to the <code>window.location.pathname</code> variable and as such, won’t work with our router. Putting stuff inside a folder named ‘<code>client</code>‘ assures they will only be run on the client-side.</p>
    <p>Now inside the <code>router.js</code> file you just made, let’s put in some scaffolding:</p>
    <pre>//////////////////////////&#x000A;    // Router&#x000A;    //////////////////////////&#x000A;    &#x000A;    Router = {&#x000A;    	uri: /*Current URL*/,&#x000A;    	routes: [],&#x000A;    	&#x000A;    	addRoute: /* function to add a route */,&#x000A;    	getMatchingRoute: /* function to get matching route */,&#x000A;    	run: /* function to display the matched route's template */&#x000A;    };&#x000A;    </pre>
    <p>I think that’s a pretty good scaffold, I even filled in the code for the routes array, and added some comments (progress!). Now to further develop our library, we need to discuss how we are going to match these routes together.</p>
    <hr>
    <h2>Matching Routes</h2>
    <p>This is not as simple as <code>currentRoute === route</code>, as we’re dealing with dynamic placeholders. We want a route for ‘<code>/user/:id</code>‘ to match a URI of ‘<code>/user/42</code>‘ and so on.</p>
    <p>To do this, we are going to have to split the URI up and do a little more in-depth analysis. Now some people might be thinking to use a regex, but, that’s a little over the top if you ask me. A much simpler approach would be to split the segments up and make sure the two routes have the same number of segments, and also ensure that the parts of the route which aren’t placeholders, match up.</p>
    <p>This can easily be achieved by splitting the URI where ever there’s a forward slash (‘/’), using the <code>.split</code> method. So our first check would ensure that the two routes have the same number of segments.</p>
    <p>If the route is ‘<code>/user/:id</code>‘ and we get a URI of ‘<code>/profile/42/foo/bar</code>‘, we don’t even need to do any further checking, one has two segments and the other has four, so that seems like a good primary check. The next thing we can do is filter through the lists and make sure each piece that isn’t a placeholder matches up. If these two checks are true, we know the route matches.</p>
    <h3>Setting the URI Variable</h3>
    <p>So let’s get started with setting the <code>uri</code> variable:</p>
    <pre>uri: _.compact(window.location.pathname.split("/")),&#x000A;    </pre>
    <p>In the above code, we’re splitting the array on forward slashes, and turning the string into an array of segments. Then we’re using Underscore’s <code>compact</code> function to remove any empty items from the list, these could be caused by a forward slash at the beginning or by someone using two forward slashes by mistake. By doing this, it makes our system much more forgiving.</p>
    <h3>Adding Routes</h3>
    <p>Next, we need to create the function to add a route, this is a fairly similar process, but because we are going to be matching the placeholders later, we are going to store not just the segments and the template name, but the indexes for the placeholders as well.</p>
    <p>Here’s the completed function:</p>
    <pre>addRoute: function(route, template) {&#x000A;    	var segments =  _.compact(route.split("/"));&#x000A;    	&#x000A;    	var placeholders = _.reduce(segments, function(currentArr, piece, index) {&#x000A;    		if (piece.substr(0, 1) === ":") {&#x000A;    			currentArr.push(index);&#x000A;    			segments[index] = piece.substr(1);&#x000A;    		}&#x000A;    		return currentArr;&#x000A;    	}, []);&#x000A;    	&#x000A;    	this.routes.push({&#x000A;    		route: segments,&#x000A;    		template: template,&#x000A;    		placeholderIndexes: placeholders&#x000A;    	});&#x000A;    },&#x000A;    </pre>
    <p>We start by splitting up the route into segments, just like we did for the URI, but this time we also need to store the indexes of the placeholders for future reference, using Underscore’s <code>reduce</code> method.</p>
    <p>For the unaware, the <code>reduce</code> function is similar to the <code>each</code> method, it also cycles through all the elements of a list, the difference being, it passes whatever each iteration returns to the next item, ultimately returning the results to the given variable. We are starting with a blank array (the 3rd parameter) and we are adding each index as we find them and passing that array along until finally, it’s returned back to the <code>placeholders</code> variable.</p>
    <p>The next thing you’ll see going on in here, is that we are renaming the segments that are placeholders and removing the colon. We do this purely for aesthetic reasons and later on, it will make it easier to reference in the templates.</p>
    <p>Finally, we push the new data to our routes array, which we created earlier.</p>
    <h3>Matching a Route to a URI</h3>
    <p>The next step is to filter through the list and look for a route that matches the current URI.</p>
    <p>Here is the complete function:</p>
    <pre>getMatchingRoute: function(){&#x000A;         for (var i in this.routes) {&#x000A;             var route = this.routes[i];&#x000A;             var data = {};&#x000A;    &#x000A;             if (route.segments.length === this.uri.length) {&#x000A;                 var match = _.every(route.segments, function(seg, i){&#x000A;                      if (_.contains(route.placeholderIndexes, i)) {&#x000A;                           data[seg] = this.uri[i];&#x000A;                           return true;&#x000A;                      } else {&#x000A;                           return seg === this.uri[i];&#x000A;                      }&#x000A;                 }, this);&#x000A;    &#x000A;                 if (match) {&#x000A;                      return {&#x000A;                          data: data,&#x000A;                          template: route.template&#x000A;                      }&#x000A;                 }&#x000A;            }&#x000A;        }&#x000A;        //no matches (add 404 or default template maybe?)&#x000A;        return false;&#x000A;    },&#x000A;    </pre>
    <p>We are doing quite a few things here, so let’s walk through it. We begin by cycling through the array of routes, and we assign the current route to a variable, along with an empty data object to store the placeholders.</p>
    <p>Next, we do the initial check of making sure the two routes have the same number of segments, otherwise, we just cycle on to the next route. If they do have the same number of components, we have to check whether the segments match, this can be done using Underscore’s ‘<code>_.every</code>‘ function. This function is again like the ‘<code>_.each</code>‘ method, except that it returns a boolean. The way it works is it will run the function for each item in the array, if they all return true, the function will return true, otherwise it will return false, so it’s perfect for doing things like this where we need to verify each segment.</p>
    <p>Now the check that we are performing is pretty easy, if it’s a placeholder, then it automatically fits, as a placeholder can be equal to any value. If it isn’t a placeholder, we just make sure the two segments match, pretty simple.</p>
    <p>In order to check whether or not this is a placeholder, we pass the current segments index (stored in ‘<code>i</code>‘) to Underscore’s <code>_.contains</code> function, which will check its value.</p>
    <p>Now you may be wondering what the first line inside this ‘<code>if</code>‘ statement is doing, well, it’s storing the segment in the data array under the given placeholder name. So, say for example you had a route of ‘<code>/user/:name</code>‘ and the current URI is ‘<code>/user/bob</code>‘, then this line will add a property to the data object called ‘<code>name</code>‘ and pass it a value of <code>bob</code>.</p>
    <p>The rest is fairly obvious, we pass true or false, depending on the circumstances, and the result gets stored in ‘<code>match</code>‘. If match is true, we return the data along with the templates name, and if there was no match, we return false. And that’s it for our <code>getMatchingRoute</code> method.</p>
    <p>So far, we can get the current URI, we can add routes, and we can find a matching route, the only thing left is to display the correct route, and for this we need to write the ‘<code>run</code>‘ method.</p>
    <hr>
    <h2>Displaying the Template</h2>
    <p>Meteor uses handlebars for templates and stores all the templates in a variable, appropriately named, ‘<code>Template</code>‘. Now, if you are familiar with handlebars then you know these templates are just functions, and by calling them (optionally passing in some data) we get back the template’s HTML.</p>
    <p>Now, calling these functions to get the template’s HTML would work fine, but it isn’t very Meteor-like, as what we’d end up with is just a normal static website. Luckily, adding in the dynamic behavior is easier than you might think, all we need to do is wrap the function call in a ‘<code>Meteor.render</code>‘ call. Putting it inside this function will make it react to changes in the data and keep it ‘live’.</p>
    <h3>The Run Method</h3>
    <p>Because of this, running the router is very simple, let’s create the run method:</p>
    <pre>run: function(){&#x000A;        var route = this.getMatchingRoute();&#x000A;        if (route) {&#x000A;            var fragment = Meteor.render(function() {&#x000A;                if (Template[route.template] !== undefined) {&#x000A;                     return Template[route.template](route.data);&#x000A;                }&#x000A;            });&#x000A;    &#x000A;            document.body.appendChild(fragment);&#x000A;        } else {&#x000A;            //404&#x000A;        }&#x000A;    }&#x000A;    </pre>
    <p>We start by getting the matched route, using the <code>getMatchingRoute</code> function which we just wrote, we then make sure there is a match, and finally we use an <code>else</code> statement to handle displaying a 404.</p>
    <p>Inside the if statement, we call <code>Meteor.render</code> and inside, we check and call the returned template, passing with it the data from the placeholders. This function will return an HTML fragment, which we can then just append to the document’s body.</p>
    <p>So with about 60 lines of code, we’ve completed our router.</p>
    <h3>Testing It Out</h3>
    <p>The next step is to test it. I’m going to use the same code that we wrote earlier when we planned out this project, as it will be a good measure of whether we accomplished, what we wanted to accomplish. Let’s add a file named <code>main.js</code> inside the <code>client</code> folder and add in the following:</p>
    <pre>Meteor.startup(function(){&#x000A;        Router.addRoute('/home', 'homeTemplate');&#x000A;        Router.addRoute('/user/:username', 'profileTemplate');&#x000A;        Router.addRoute('/contact', 'contactTemplate');&#x000A;    &#x000A;        Router.run();&#x000A;    });&#x000A;    </pre>
    <p>In the above code, we first need to make sure our templates and body will be available before we try working with our Router. We do this by wrapping all of our code inside of the <code>Meteor.startup</code> method call. This will ensure everything is ready, and inside of the <code>startup</code> method, we can then add our routes and run the router.</p>
    <h3>Creating Our Templates</h3>
    <p>Now let’s create a couple of templates, this can be done anywhere, you can create a subfolder inside the <code>client</code> folder named templates and create a separate HTML file for each, but since these will be short templates and just for example purposes, I am going to put them together inside a file named ‘<code>templates.html</code>‘ inside the ‘<code>client</code>‘ folder:</p>
    <pre>&lt;template name="homeTemplate"&gt;&#x000A;        &lt;h1&gt;This is the Home Page&lt;/h1&gt;&#x000A;    &lt;/template&gt;&#x000A;    &#x000A;    &lt;template name="profileTemplate"&gt;&#x000A;        &lt;h1&gt;Profile Page&lt;/h1&gt;&#x000A;        &lt;p&gt;Welcome back {{username}}&lt;/p&gt;&#x000A;    &lt;/template&gt;&#x000A;    &#x000A;    &lt;template name="contactTemplate"&gt;&#x000A;        &lt;h1&gt;Contact Page&lt;/h1&gt;&#x000A;        &lt;p&gt;Contact me on twitter at {{twitterName}}&lt;/p&gt;&#x000A;    &lt;/template&gt;&#x000A;    </pre>
    <p>The first template is pretty basic, it just contains a little HTML code for the home page’s heading. The second template is very similar to the first template, but this time we use the <code>username</code> route parameter. Now the last template also uses a placeholder, but its route doesn’t have the <code>twitterName</code> segment. This is because standard Meteor placeholders will still work, and work reactively.</p>
    <p>Back inside the <code>client</code> folder, let’s now create a file named ‘<code>templates.js</code>‘, to declare the contact placeholder.</p>
    <pre>Template.contactTemplate.twitterName = function (){&#x000A;        Session.setDefault('twitter_name', '@gabrielmanricks');&#x000A;        return Session.get('twitter_name');&#x000A;    }&#x000A;    </pre>
    <p>You could have just returned a string, but I wanted to demonstrate that everything is still reactive. The last step is to delete the default html and js files from the root directory (in my case they are named routerdemo.html and routerdemo.js) With that done, start the Meteor server and navigate to the given routes.</p>
    <p>Try going to ‘<code>/home</code>‘ or ‘<code>user/gmanricks</code>‘ or ‘<code>/contact</code>‘ and they should all work for you as expected. Another thing is, since we stored the twitter name in Session, we can just open up the browser’s console on the contact page and enter:</p>
    <pre>Session.set('twitter_name', '@nettuts');&#x000A;    </pre>
    <p>And you will see that the page will update in real time!</p>
    <hr>
    <h2>Summary</h2>
    <p>In this article, we built a basic router library, while still giving it a Meteor twist. We covered a lot of the core concepts and as it turns out, a lot of Underscore concepts as well.</p>
    <p>In the end, I hope I got the message across that there is no real “magic” going on here. It’s really all about implementing what you need, as opposed to what you can.</p>
    <p>Thank you for reading, I hope you’ve enjoyed it. Like always, if you have any questions you can leave them below or ask me on the NetTuts IRC or on my Twitter.</p>
    <div> <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/05/3428OSMeteorBook.png" alt="Meteor Starter Book" style="max-width: 100%; height: auto;"><p><strong>Note:</strong> If you are interested in learning more about Meteor, I have just released my new book, which details the process of building an app from its conception &amp; planning to securing &amp; deploying. You can pick-up the book in both  ebook format as well as softcover from <a href="http://www.amazon.com/dp/1782163425/" rel="nofollow external" class="bo">Amazon</a>.</p>
    </div>
    </div>
]]>
</Body>
<Summary>As with any web application, creating multi-page sites requires a specialized set of tools. In this article, we’ll take a look at developing a library that not only can differentiate between the...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/g6b58NjbHtI/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30821/guest@my.umbc.edu/615eb9ae904752279adc1837c6d0b730/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>meteor</Tag>
<Tag>multi-page-site</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tutorials</Tag>
<Tag>wed</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, 04 Jun 2013 20:12:05 -0400</PostedAt>
<EditAt>Tue, 04 Jun 2013 20:12:05 -0400</EditAt>
</NewsItem>

</News>
