<?xml version="1.0"?>
<News hasArchived="true" page="8388" pageCount="10728" pageSize="10" timestamp="Mon, 20 Jul 2026 23:20:34 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8388">
<NewsItem contentIssues="false" id="34631" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34631">
<Title>Men's Soccer Wraps Up Preseason With 1-0 Win over American</Title>
<Body>
<![CDATA[
    <div class="html-content">BALTIMORE- Junior Geaton Caltabiano (Lothian, Md./Mount St. Joseph) scored four minutes into the contest and the UMBC defense made the goal stand up as the Retrievers blanked American, 1-0, in their final preseason tune-up on August 23 at Retriever Soccer Park. UMBC opens the regular season by welcoming Seattle University to Retriever Soccer Park on Fri., Aug. 30 at 7:00 p.m.</div>
]]>
</Body>
<Summary>BALTIMORE- Junior Geaton Caltabiano (Lothian, Md./Mount St. Joseph) scored four minutes into the contest and the UMBC defense made the goal stand up as the Retrievers blanked American, 1-0, in...</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=8084</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34631/guest@my.umbc.edu/23507051789134c9f7bf386f2b8aae86/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>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 24 Aug 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34626" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34626">
<Title>Questions for Microsoft as It Nears a Crossroad</Title>
<Body>
<![CDATA[
    <div class="html-content">Few obvious candidates to replace Steven A. Ballmer as chief have emerged, but his succession was never going to follow the typical business playbook.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F24%2Ftechnology%2Fquestions-for-microsoft-as-it-nears-a-crossroad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Questions+for+Microsoft+as+It+Nears+a+Crossroad" 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%2F08%2F24%2Ftechnology%2Fquestions-for-microsoft-as-it-nears-a-crossroad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Questions+for+Microsoft+as+It+Nears+a+Crossroad" 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%2F08%2F24%2Ftechnology%2Fquestions-for-microsoft-as-it-nears-a-crossroad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Questions+for+Microsoft+as+It+Nears+a+Crossroad" 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%2F08%2F24%2Ftechnology%2Fquestions-for-microsoft-as-it-nears-a-crossroad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Questions+for+Microsoft+as+It+Nears+a+Crossroad" 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%2F08%2F24%2Ftechnology%2Fquestions-for-microsoft-as-it-nears-a-crossroad.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Questions+for+Microsoft+as+It+Nears+a+Crossroad" 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/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/sc/15/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608273851/u/0/f/640387/c/34625/s/3054904f/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Few obvious candidates to replace Steven A. Ballmer as chief have emerged, but his succession was never going to follow the typical business playbook.      </Summary>
<Website>http://www.nytimes.com/2013/08/24/technology/questions-for-microsoft-as-it-nears-a-crossroad.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34626/guest@my.umbc.edu/ef234909fd9adbf5e7b728f850d6d547/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>appointments-and-executive-changes</Tag>
<Tag>ballmer-steven-a</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>international-business-machines-corporation-ibm-nyse</Tag>
<Tag>juniper-networks-inc-jnpr-nyse</Tag>
<Tag>microsoft-corporation-msft-nasdaq</Tag>
<Tag>netflix-inc-nflx-nasdaq</Tag>
<Tag>new</Tag>
<Tag>nokia-oyj-nok-nyse</Tag>
<Tag>t-mobile-us-inc-tmus-nyse</Tag>
<Tag>technology</Tag>
<Tag>vmware-inc-vmw-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>Fri, 23 Aug 2013 21:21:47 -0400</PostedAt>
<EditAt>Mon, 26 Aug 2013 21:26:54 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="34627" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34627">
<Title>Bits Blog: Apple and Microsoft, Then and Now</Title>
<Body>
<![CDATA[
    <div class="html-content">Under Steven A. Ballmer’s leadership for the last 13 years, Microsoft has struggled to transition from a PC-driven company, to a mobile-centric one. Apple, once its biggest competitor, has done the complete opposite.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F08%2F23%2Fapple-and-microsoft-then-and-now%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Apple+and+Microsoft%2C+Then+and+Now" 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%2F08%2F23%2Fapple-and-microsoft-then-and-now%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Apple+and+Microsoft%2C+Then+and+Now" 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%2F08%2F23%2Fapple-and-microsoft-then-and-now%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Apple+and+Microsoft%2C+Then+and+Now" 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%2F08%2F23%2Fapple-and-microsoft-then-and-now%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Apple+and+Microsoft%2C+Then+and+Now" 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%2F08%2F23%2Fapple-and-microsoft-then-and-now%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+Apple+and+Microsoft%2C+Then+and+Now" 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/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/sc/15/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608198848/u/0/f/640387/c/34625/s/3054935d/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Under Steven A. Ballmer’s leadership for the last 13 years, Microsoft has struggled to transition from a PC-driven company, to a mobile-centric one. Apple, once its biggest competitor, has done...</Summary>
<Website>http://bits.blogs.nytimes.com/2013/08/23/apple-and-microsoft-then-and-now/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34627/guest@my.umbc.edu/2f642c6b984a0acdfe9933c2657c19eb/api/pixel</TrackingUrl>
<Tag>apple-inc</Tag>
<Tag>ballmer-steven-a</Tag>
<Tag>gates-bill</Tag>
<Tag>internet</Tag>
<Tag>jobs-steven-p</Tag>
<Tag>microsoft-corporation</Tag>
<Tag>mobile</Tag>
<Tag>new</Tag>
<Tag>tablet-computers</Tag>
<Tag>technology</Tag>
<Tag>xbox-video-game-system</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>Fri, 23 Aug 2013 21:19:16 -0400</PostedAt>
<EditAt>Mon, 26 Aug 2013 16:05:26 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="34623" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34623">
<Title>Got Conflict? (Follow-up from the Conflict Resolution talk.)</Title>
<Tagline>Stephanie Lazarus' presentation, Aug. 23, Teaching Seminar</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <p><strong><span><em>Courtesy of Stephanie Lazarus, UMBC’s Office of
    Human Relations</em></span></strong></p>
    <p><span>Got
    conflict?</span></p>
    
    <p><strong><span>                            </span></strong></p>
    
    <p><span>Know your role, purpose, and context</span></p>
    
    <p><span>Be present, provide your undivided
    attention, or create a space where you can</span></p>
    
    <p><strong><span>Strategies:
    </span></strong></p>
    
    <p><strong><span>Collaborate
    – is there a way this can create a win-win situation for both of us?</span></strong></p>
    
    <p><strong><span>Compromising
    - </span></strong></p>
    
    <p><strong><span>Accommodate
    – often used with students who have a disability</span></strong></p>
    
    <p><strong><span>Avoiding
    - Referring</span></strong></p>
    
    <p><strong><span>Competing/Forcing</span></strong></p>
    
    <p><strong><span> </span></strong></p>
    
    <p><strong><span>Developing Your Personal Conflict
    Toolbox:</span></strong></p>
    
    <p><span> </span></p>
    
    <p><span>Preventing Sexual
    Harassment Online <strong><em>Training</em></strong> (when registering, select the department that you are
    working with, not your major): </span><a href="http://training.newmedialearning.com/psh/umbc/" rel="nofollow external" class="bo"><span>http://training.newmedialearning.com/psh/umbc/</span></a><span></span></p>
    
    <p><span> </span></p>
    
    <p><span>The Wellness
    Initiative Resources : </span><a href="http://www.umbc.edu/wellness/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/wellness/</span></a><span> </span></p>
    
    <p><span>Relationship
    Practice Archive: </span><a href="http://www.umbc.edu/wellness/relationships.html" rel="nofollow external" class="bo"><span>http://www.umbc.edu/wellness/relationships.html</span></a><span></span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Conflict
    Consultation and Referral:</span></strong></p>
    
    <p><strong><span>Center
    for Mediation and Conflict Resolution: </span></strong></p>
    
    <p><strong><em><span>Mediation, Conflict
    Coaching, Conferencing/Restorative Justice, Facilitation, and Conciliation </span></em></strong></p>
    
    <p><span>Administration 902
    phone: 410-455-8624, <a href="mailto:cmcr904@umbc.edu">cmcr904@umbc.edu</a></span></p>
    
    <p><a href="http://www.umbc.edu/humanrelations/cmcr/index.html" rel="nofollow external" class="bo"><span>http://www.umbc.edu/humanrelations/cmcr/index.html</span></a><span></span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Office
    of Human Relations Programs </span></strong><span>Administration
    902-903, </span></p>
    
    <p><a href="http://www.umbc.edu/humanrelations/index.html" rel="nofollow external" class="bo"><span>http://www.umbc.edu/humanrelations/index.html</span></a><span></span></p>
    
    <p><span>Questions or concerns related to race, color, national
    origin, ancestry, ethnic background, genetics, disability, age, sex, gender
    identity and expression, marital status, sexual orientation, religion, creed,
    and/or veteran status</span><span></span></p>
    
    <p><span>Stephanie Lazarus phone:
    410-455-5745 </span><a href="mailto:slazar@umbc.edu" rel="nofollow external" class="bo"><span>slazar@umbc.edu</span></a><u><span></span></u></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Referral partners</span></strong></p>
    
    <p><em><span> </span></em></p>
    
    <p><strong><span>Student
    Judicial Programs: </span></strong><a href="http://www.umbc.edu/sjp/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/sjp/</span></a><span></span></p>
    
    <p><span>Student Development
    and Success Center, Room 118, phone 410-455-2458</span></p>
    
    <p><em><span>Student
    Code of Conduct:</span></em><a href="http://www.umbc.edu/sjp/articles/code.html" rel="nofollow external" class="bo"><span>http://www.umbc.edu/sjp/articles/code.html</span></a><span></span></p>
    
    <p><em><span> </span></em></p>
    
    <p><strong><em><span>Sexual Assault and
    Relationship Violence Response:</span></em></strong><span>
    Voices Against Violence Program: </span><a href="http://www.umbc.edu/vav/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/vav/</span></a><span></span></p>
    
    <p><em><span> </span></em></p>
    
    <p><strong><em><span>Safety=Credible
    threats of violence for harm to self or others:</span></em></strong><span> UMBC Police: 410-455-5555 or 911</span></p>
    
    <p><span> </span></p>
    
    <p><strong><em><span>Student Resource:
    University Counseling Services</span></em></strong><strong><span>:</span></strong><span> 410-455-2472 </span><a href="http://www.umbc.edu/counseling/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/counseling/</span></a><span></span></p>
    
    <p><em><span> </span></em></p>
    
    <p><strong><em><span>Student Resource:
    University Health Services</span></em></strong><strong><span>:</span></strong><span> 410-455-2542 </span><a href="http://www.umbc.edu/uhs/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/uhs/</span></a><span></span></p>
    
    <p><em><span> </span></em></p>
    
    <p><strong><em><span>Student Resource:
    Student Disability Accommodation:</span></em></strong><strong><span> Student Support
    Services:</span></strong><span>
    410-455-2459 </span><a href="http://www.umbc.edu/sss/flash_pages/sss_disab1.htm" rel="nofollow external" class="bo"><span>http://www.umbc.edu/sss/</span></a><span><span> </span></span></p>
    
    <p><span> </span></p>
    
    <p><em><span>UMBC
    Policy Website:</span></em><a href="http://www.umbc.edu/policies/" rel="nofollow external" class="bo"><span>http://www.umbc.edu/policies/</span></a><span></span></p>
    </div>
]]>
</Body>
<Summary>Courtesy of Stephanie Lazarus, UMBC’s Office of Human Relations  Got conflict?                                    Know your role, purpose, and context    Be present, provide your undivided...</Summary>
<Website>http://umbc.edu/ogc/hr/index.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34623/guest@my.umbc.edu/28591dd0db6c264f1751779022a2272e/api/pixel</TrackingUrl>
<Tag>human</Tag>
<Tag>lazarus</Tag>
<Tag>prof-it</Tag>
<Tag>promise</Tag>
<Tag>relations</Tag>
<Tag>stephanie</Tag>
<Group token="gspd">Grad Student &amp;amp; Postdoc Development </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/gspd</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xsmall.png?1781730740</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/original.png?1781730740</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xxlarge.png?1781730740</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xlarge.png?1781730740</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/large.png?1781730740</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/medium.png?1781730740</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/small.png?1781730740</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xsmall.png?1781730740</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xxsmall.png?1781730740</AvatarUrl>
<Sponsor>PROMISE @ UMBC: Graduate Student Development</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/xxlarge.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/xlarge.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/large.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/medium.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/small.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/xsmall.jpg?1377300431</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/034/623/110717adf61f48167e0344209397ee49/xxsmall.jpg?1377300431</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 23 Aug 2013 19:29:43 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="34620" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34620">
<Title>Rec Swim Schedule Update</Title>
<Tagline>Rec Swim Schedule Update</Tagline>
<Body>
<![CDATA[
    <div class="html-content">All UMBC Students, Faculty, Staff, and RAC Members:<br><br>The pool will be <u><strong>CLOSED</strong></u> <strong>Saturday, August 24th through Monday, August 26th</strong>. <br><br>Below is the Rec Swim Schedule for the remainder of the month:<br><br><strong>Tuesday, August 27th.........................11am-1pm<br>Wednesday, August 28th....................11am-1pm<br>Thursday, August 29th........................7:45am-9am; 11am-1pm; 7:30pm-9pm<br>Friday, August 30th............................7:45am-9am; 11am-1pm; 7:30pm-9pm<br>Saturday, August 31st........................12pm-6pm<br></strong><br>Thank you for your patience and cooperation!<br><br>--<br>RAC Staff<br>
    </div>
]]>
</Body>
<Summary>All UMBC Students, Faculty, Staff, and RAC Members:  The pool will be CLOSED Saturday, August 24th through Monday, August 26th.   Below is the Rec Swim Schedule for the remainder of the month:...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34620/guest@my.umbc.edu/f163fc254f1b16cbf527fafda8cfe5f8/api/pixel</TrackingUrl>
<Group token="recsports">Recreation at the RAC</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/recsports</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xsmall.png?1661189624</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/original.png?1661189624</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xxlarge.png?1661189624</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xlarge.png?1661189624</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/large.png?1661189624</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/medium.png?1661189624</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/small.png?1661189624</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xsmall.png?1661189624</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/257/f9c91c92f9b48ff33e640906e80bc588/xxsmall.png?1661189624</AvatarUrl>
<Sponsor>Recreation at the RAC</Sponsor>
<PawCount>0</PawCount>
<CommentCount>1</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 23 Aug 2013 18:56:02 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34619" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34619">
<Title>Building Ribbit in Scala</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34302&amp;c=1124442999" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=34302&amp;c=1124442999" alt="" style="max-width: 100%; height: auto;"></a><p>In this tutorial we will implement the Ribbit application in Scala. We’ll be covering how to install the <a href="http://www.playframework.com/download" rel="nofollow external" class="bo">Play web framework</a>, a <a href="http://plugins.netbeans.org/plugin/47637/" rel="nofollow external" class="bo">NetBeans plugin</a> for it, and finally the code in Scala. If you are new to Scala, <a href="http://net.tutsplus.com/tutorials/scala-tutorials/from-zero-to-hello-world-in-scala/" rel="nofollow external" class="bo">check out this previous tutorial</a> which will help you set up your environment and provides you with a general platform that you can build upon.</p>
    <p>Even though the essence of Ribbit is to create/send/read Ribbits (our version of tweets), we will spend a large part of this tutorial explaining how Play works, authentication, and persistence. After these are in place, the rest becomes much easier. We will also implement ribbit creation, submission and listing out all ribbits. Following someone, advanced user settings, and direct messages will be an extra assignment for you to complete on your own. I am sure if you manage to follow along with this tutorial and create Ribbit as explained below, these three functionalities will be easily accomplished as homework.</p>
    <p></p>
    <hr>
    <h2>Download and Install Play</h2>
    <p>There are quite a few web frameworks for Scala. Some are purely functional and a few are somewhat MVC-ish. I’ve chosen Play for this example because it resembles an MVC architecture and it should be more familiar to people used to these kinds of frameworks. Additionally, it is one of the best and most recommended web frameworks for Scala.</p>
    <p>So, go ahead and <a href="http://www.playframework.com/download" rel="nofollow external" class="bo">download Play for Scala</a>. Please note this tutorial was written when the latest stable version was 2.1.1, you may need to adapt the content below for newer versions.</p>
    <p>Installing Play is as simple as extracting the archive into a folder with both read and write permissions and then adding the path to the “play” executable to your <code>PATH</code>. At the time of writing this article, the only requirement for Play is Java 6.</p>
    <hr>
    <h2>Installing the Play Plugin for NetBeans</h2>
    <p>There is a very nice plugin for NetBeans which will make your life easier while working with Play. It allows you to create and manage Play projects directly from NetBeans. Go ahead and download the Play plugin for NetBeans from <a href="http://plugins.netbeans.org/plugin/47637/" rel="nofollow external" class="bo">the official plugin page</a>. After you have the <code>.nbm</code> file downloaded, just add it to NetBeans using its plugin manager.</p>
    <p>Next, you’ll need to specify the path to the “play” executable for your NetBeans plugin. Go to <strong>Tools / Options / Miscellaneous / Play</strong>. Browse to where you extracted Play’s archive, until you can find the executable itself. Here’s what it looked like for me:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/NetBeansPlayHomeSettings.png" alt="NetBeansPlayHomeSettings" width="600" height="197" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>Creating the Project</h2>
    <p>In NetBeans select <strong>File / New Project</strong> and choose <strong>Play / Simple Scala Application</strong>.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/NetBeansNewPlayScalaApplication.png" alt="NetBeansNewPlayScalaApplication" width="600" height="411" style="max-width: 100%; height: auto;"><br> <p>Then specify the folder you want your project to reside in. NetBeans will generate basic settings and a directory structure for you.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/NetBeansInitialPlayProject.png" alt="NetBeansInitialPlayProject" width="245" height="290" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>Configuration for Building the Project</h2>
    <p>Before you can run your project, you have to make sure the correct SBT version is being used. By default version 0.11.3 is required, but I have 0.12.2 installed. You may have another version. So switch to the <strong>“Files”</strong> view in NetBeans and locate the <strong>Play</strong> project you created. If you are not using NetBeans just use your favorite file manager to find the project’s folder. You will find there, in the <strong>“project”</strong> subfolder a file called <code>"build.properties"</code>. Edit it and change the <code>sbt.version</code> to the correct value. If you don’t have SBT installed, please review the tutorial I mentioned in the introduction to this article. It explains all the details on how to install SBT.</p>
    <p>If you have recently updated SBT, don’t forget to republish the NetBeans SBT plugin locally. Go to your <strong>“nbsbt”</strong> folder and run these commands:</p>
    <pre>rm -r ~/.ivy2/local/org.netbeans.nbsbt&#x000A;    sbt clean compile publish-local</pre>
    <p>This will also solve any errors telling you that SBT can’t find the NetBeans plugin or that an incompatible binary type was detected.</p>
    <p>However, Play has a little bug, and can not use the user’s <code>~/.ivy2</code> repository. Instead, it uses its own local repositories. There are several workarounds that you can find on the Internet, the easiest one I’ve found, is to just create a symbolic link in Play’s folder <code>/ repository/local</code> that points to <code>~/ivy2/local/org.netbeans.nbsbt</code>.</p>
    <p>In the same directory, in the <code>plugins.sbt</code> file, make sure the proper Play version is set at this line:</p>
    <pre>// Use the Play sbt plugin for Play projects&#x000A;    addSbtPlugin("play" % "sbt-plugin" % "2.1.1")</pre>
    <p>Finally, in the same directory, in the file called <code>Build.scala</code>, make sure the application’s name has no white spaces. If you specified your project with white spaces in its name, this will be wrongly set.</p>
    <pre>val appName         = "RibbitInScala"</pre>
    <p>Afterwards, you should be able to right click on the <strong>Ribbit in Scala</strong> project in the <strong>“Projects”</strong> view and successfully execute <strong>“Build”</strong>. Building the project for the first time will take a little while to complete. You should see the progress in an SBT window in NetBeans. Subsequent builds should take only a few seconds.</p>
    <p>Finally, we can run our project. Just right click on it and select <strong>“Run”</strong>. In NetBeans’ output window, you will see instructions on how to access your project. If all goes well, these should be the last lines in that log:</p>
    <pre>[info] Done updating.&#x000A;    --- (Running the application from SBT, auto-reloading is enabled) ---&#x000A;    &#x000A;    [info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000&#x000A;    &#x000A;    (Server started, use Ctrl+D to stop and go back to the console...)</pre>
    <p>We can now see our application running on localhost’s port 9000.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/PlayWelcome.png" alt="PlayWelcome" width="600" height="340" style="max-width: 100%; height: auto;"><br> <p>This is the default Play welcome screen. It is like this because we have not yet implemented any actual application code. If you see this, you are up and running and ready for the next section. Congratulations.</p>
    <hr>
    <h2>Basic Play Configuration</h2>
    <p>Play is very similar to other MVC web frameworks, so I won’t go into great detail about its inner workings. In this section, let’s just create a simple “Hello World” view and controller, which will be shown using a default route, so that we can get accustomed with Play’s architecture.</p>
    <p>In the <code>Configuration/routes</code> file, you can see that every call to the root (/) is redirected to the Application controller.</p>
    <pre>GET	/	controllers.Application.index</pre>
    <p>In controllers, you will find <code>Application.scala</code>. The code in this file will render the <code>"index"</code> template from views.</p>
    <pre>def index = Action {&#x000A;        Ok(views.html.index("Your new application is ready."))&#x000A;      }</pre>
    <p>In the <code>views</code> folder, there are a couple of files: <code>index.scala.html</code> and <code>main.scala.html</code>. The first one will call the second one to show you the content. In the second one, there is an HTML structure, CSS inclusions, JavaScript library inclusions and a few other things. Feel free to play around with these files, but explaining the content in them is however not the concern of this article.</p>
    <p>In <code>Application.scala</code> change the parameter being passed into <code>index()</code> to <code>"Hello World"</code>.</p>
    <pre>Ok(views.html.index("Hello World"))</pre>
    <p>Then modify index.scala.html to display it.</p>
    <pre>@(message: String)&#x000A;    &#x000A;    @main("Our first content") {&#x000A;    	&lt;p&gt;@message&lt;/p&gt;&#x000A;    }</pre>
    <p>The first line in a template file is the function signature. <code>(message: String)</code> means this view is getting a single parameter called <code>"message"</code> of the type <code>String</code>. Then comes <code>@main</code>, a function that returns a paragraph HTML tag with the message contained inside of it. But for all of this to work we need <code>main.scala.html</code> also. This has a different signature. The first parameter which is the title (check your browser’s tab / title) and the other one is the content. <code>"Our first content"</code> will be the title and the return value of main will be the content.</p>
    <pre>@(title: String)(content: Html)</pre>
    <p><code>title</code> is a String and <code>content</code> must be HTML. The rest of the <code>main.scala.html</code> file is self-explanatory. After a refresh in your browser, you will see <strong>“Hello World”</strong> instead of the previous documentation and welcome screen.</p>
    <p>If you want to learn more about Play’s inner workings check out the <a href="http://www.playframework.com/documentation/2.1.1/Home" rel="nofollow external" class="bo">official documentation</a>.</p>
    <hr>
    <h2>Creating the Home Page and Login Screen</h2>
    <p>As usual with these Ribbit tutorials, we will work with the following <a href="http://d2o0t5hpnwv4c1.cloudfront.net/2170_ribbit/layout.zip" rel="nofollow external" class="bo">resources</a> introduced in <a href="http://net.tutsplus.com/tutorials/html-css-techniques/build-a-twitter-clone-from-scratch-the-design/" rel="nofollow external" class="bo">“The Design”</a> article. So, go ahead and download the layout.zip file and extract it. We will refer to this folder as <code>"LAYOUT_HOME"</code>.</p>
    <h3>Getting the Files</h3>
    <p>We need less.js in our Play project, so copy it from <code>LAYOUT_HOME</code> into our project’s <code>"public/javascripts"</code> folder. Then copy <code>style.less</code> from <code>LAYOUT_HOME</code> to our project’s <code>"public/Stylesheets"</code> folder. Continue with copying <code>LAYOUT_HOME/gfx/frog.jpg</code>, <code>logo-nettuts.png</code> and <code>logo.png</code> to our project’s <code>"public/images"</code> folder.</p>
    <h3>Preparing the Views</h3>
    <p>At this point we don’t care about authentication and form generation. We will just take and adapt the HTML code from <code>LAYOUT_HOME/home.html</code> so that we have something visual to work with.</p>
    <p>The HTML skeleton of our Ribbit app will reside in the view called <code>main.scala.html</code>. You actually already have this view generated, as we’ve seen it in the previous section, now just modify it like so:</p>
    <pre>@(title: String)(content: Html)&#x000A;    &#x000A;    &lt;!DOCTYPE html&gt;&#x000A;    &#x000A;    &lt;html&gt;&#x000A;        &lt;head&gt;&#x000A;            &lt;title&gt;@title&lt;/title&gt;&#x000A;            &lt;link rel="stylesheet" media="screen" href='@routes.Assets.at("stylesheets/main.css")'&gt;&#x000A;    		&lt;link rel="stylesheet/less"  media="screen" href='@routes.Assets.at("stylesheets/style.less")'&gt;&#x000A;            &lt;link rel="shortcut icon" type="image/png" href='@routes.Assets.at("images/favicon.png")'&gt;&#x000A;            &lt;script src='@routes.Assets.at("javascripts/jquery-1.7.1.min.js")' type="text/javascript"&gt;&lt;/script&gt;&#x000A;            &lt;script src='@routes.Assets.at("javascripts/less.js")' type="text/javascript"&gt;&lt;/script&gt;&#x000A;        &lt;/head&gt;&#x000A;        &lt;body&gt;&#x000A;    		&lt;header&gt;&#x000A;    			&lt;div class="wrapper"&gt;&#x000A;    				&lt;img src='@routes.Assets.at("images/logo.png")'&gt;&#x000A;    				&lt;span&gt;Twitter Clone&lt;/span&gt;&#x000A;    				&lt;form&gt;&#x000A;    					&lt;input name="email" type="text"&gt;&#x000A;    					&lt;input name="password" type="password"&gt;&#x000A;    				&lt;/form&gt;&#x000A;    			&lt;/div&gt;&#x000A;    		&lt;/header&gt;&#x000A;            @content&#x000A;    		&lt;footer&gt;&#x000A;    			&lt;div class="wrapper"&gt;&#x000A;    				Ribbit - A Twitter Clone Tutorial&lt;img src='@routes.Assets.at("images/logo-nettuts.png")'&gt;&#x000A;    			&lt;/div&gt;&#x000A;    		&lt;/footer&gt;&#x000A;        &lt;/body&gt;&#x000A;    &lt;/html&gt;</pre>
    <p>As you can see the code now references the <code>"style.less"</code> file we introduced and the <code>"less.js"</code> JavaScript and all paths to images were also updated to use Play’s <code>'@routes.Assets.at(...)'</code> syntax. To avoid confusing the editors with double quotes inside double quoted HTML tags, I’ve chosen to single quote the HTML tags that are using Play variables or methods.</p>
    <p>The next file we need to update is our <code>index.scala.html</code> view. This is the index file providing the content for the main page. What we return from this will be inserted into <code>main.scala.html</code> at the line where <code>"@content"</code> is specified.</p>
    <pre>@(message: String)&#x000A;    &#x000A;    @main("Ribbit in Scala &amp; Play") {&#x000A;    &#x000A;    &lt;div id="content"&gt;&#x000A;    	&lt;div class="wrapper"&gt;&#x000A;    		&lt;img src='@routes.Assets.at("images/frog.jpg")'&gt;&#x000A;    		&lt;div class="panel right"&gt;&#x000A;    			&lt;h1&gt;New to Ribbit?&lt;/h1&gt;&#x000A;    			&lt;p&gt;&#x000A;    			&lt;form&gt;&#x000A;    				&lt;input name="email" type="text"&gt;&#x000A;    				&lt;input name="password" type="text"&gt;&#x000A;    				&lt;input name="password2" type="password"&gt;&#x000A;    				&lt;input type="submit" value="Create Account"&gt;&#x000A;    			&lt;/form&gt;&#x000A;    		&lt;/div&gt;&#x000A;    	&lt;/div&gt;&#x000A;    &lt;/div&gt;&#x000A;    &#x000A;    }</pre>
    <p>In this case we just changed the title that is passed to <code>main</code> and returned plain old HTML code.</p>
    <p>Now, if you run your project and access <a href="http://localhost:9000" rel="nofollow external" class="bo">http://localhost:9000</a> you should see an almost working home page for Ribbit.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/RibbitFirstAttempt.png" alt="RibbitFirstAttempt" width="600" height="463" style="max-width: 100%; height: auto;"><br> <p>It’s not yet perfect, but we have styled forms and all images are correctly referenced.</p>
    <h3>Correcting the Stylesheets</h3>
    <p>Now we have to check and update our <code>style.less</code> file to use the backgrounds and other things from our <code>image</code> directory. Of course, the first thing will be to copy the rest of the files from <code>LAYOUT_HOME/gfx</code> to our project’s <code>"public/images"</code> folder.</p>
    <p>Play with Scala, supports LESS right out of the box. To use this feature we first need to drop <code>less.js</code> from our views and transform our <code>style.less</code> stylesheet into a Play asset. Start by just deleting the following line from <code>main.scala.html</code>:</p>
    <pre>&lt;script src='@routes.Assets.at("javascripts/less.js")' type="text/javascript"&gt;&lt;/script&gt;</pre>
    <p>Now, if you refresh your project’s page in the browser, it will look ugly and unstyled.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/RibbitUnstyled.png" alt="RibbitUnstyled" width="600" height="607" style="max-width: 100%; height: auto;"><br> <p>Then move <code>"style.less"</code> from the project’s <code>"public/Stylesheets"</code> folder into the <code>"app/assets/stylesheets"</code> folder. Create it, if needed. Rename <code>"style.less"</code> into <code>"main.less"</code>. Play will automatically compile it into <code>"public/Stylesheets/main.css"</code> and we can delete the reference to <code>"style.less"</code> from <code>main.scala.html</code>.</p>
    <p>Refresh your browser window again and make sure nothing is cached. You may need to stop and run your Play project again for the effects to take place. If all goes well, you should see a page similar to how it looked like initially. There may be some slight differences, but don’t worry, we will fix them in a minute.</p>
    <p>Here is how the <code>"head"</code> part of your <code>main.scala.html</code> file should look like now.</p>
    <pre>&lt;head&gt;&#x000A;    	&lt;title&gt;@title&lt;/title&gt;&#x000A;    	&lt;link rel="stylesheet" media="screen" href='@routes.Assets.at("stylesheets/main.css")'&gt;&#x000A;    	&lt;link rel="shortcut icon" type="image/png" href='@routes.Assets.at("images/favicon.png")'&gt;&#x000A;    	&lt;script src='@routes.Assets.at("javascripts/jquery-1.7.1.min.js")' type="text/javascript"&gt;&lt;/script&gt;&#x000A;    &lt;/head&gt;</pre>
    <p>Finally, edit <code>"main.less"</code> and replace all <code>"gfx/"</code> folder specifications for images with <code>"/assets/images/"</code>. You may need to fix a couple widths and heights also, because the less file may be compiled differently than the JavaScript version. Afterwards, here is what we end up with:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/RibbitIndexStyled.png" alt="RibbitIndexStyled" width="600" height="500" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>User Management</h2>
    <h3>Play’s Built-in Authentication Functions</h3>
    <p>For our example, we will simply use Play’s built-in authentication mechanisms. These are pretty good and quite complex, so we will only take what is absolutely needed for us. In <code>Application.scala</code> we will define a form and some actions for authentication.</p>
    <pre>package controllers&#x000A;    &#x000A;    import play.api._&#x000A;    import play.api.mvc._&#x000A;    import play.api.data._&#x000A;    import play.api.data.Forms._&#x000A;    &#x000A;    import models._&#x000A;    import views._&#x000A;    &#x000A;    object Application extends Controller {&#x000A;    &#x000A;    	val loginForm = Form(&#x000A;    		tuple(&#x000A;    			"email" -&gt; text,&#x000A;    			"password" -&gt; text&#x000A;    		) verifying ("Invalid email or password", result =&gt; result match {&#x000A;    				case (email, password) =&gt; check(email, password)&#x000A;    			})&#x000A;    	)&#x000A;    &#x000A;    	def check(username: String, password: String) = {&#x000A;    		(username == "<a href="mailto:john.doe@gmail.com">john.doe@gmail.com</a>" &amp;&amp; password == "123")&#x000A;    	}&#x000A;    &#x000A;    	def index = Action { implicit request =&gt;&#x000A;    		Ok(html.index(loginForm))&#x000A;    	}&#x000A;    &#x000A;    	def authenticate = Action { implicit request =&gt;&#x000A;    		loginForm.bindFromRequest.fold(&#x000A;    			formWithErrors =&gt; BadRequest(html.index(formWithErrors)),&#x000A;    			user =&gt; Redirect(routes.Application.public).withSession("email" -&gt; user._1)&#x000A;    		)&#x000A;    	}&#x000A;    &#x000A;    	def logout = Action {&#x000A;    		Redirect(routes.Application.index).withNewSession.flashing(&#x000A;    			"success" -&gt; "You've been logged out"&#x000A;    		)&#x000A;    	}&#x000A;    &#x000A;    	def public = Action { implicit request =&gt;&#x000A;    		Ok(html.public("Logged in")("John Doe"))&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p><code>loginForm</code> is a value we will use to authenticate our user. This form will be used in the <code>index.scala.html</code> view and it will call the authenticate action on our controller (we will study the view in a moment). The validation on the form will kick in and the pattern match will force a call to the <code>"check"</code> method. For the time being, <code>check</code> only returns a true or false value for the hard-coded user, <a href="mailto:john.doe@gmail.com">john.doe@gmail.com</a> and password 123.</p>
    <p>The <code>index</code> function renders the <code>index</code> view with the loginForm sent in as parameter. We need this to be shown on our home page.</p>
    <p>The <code>authenticate</code> function binds to the form: if there are any errors, it goes back to the index page or if it was successful, it will render a view called <code>"public"</code> with the session for that view, populated with the user’s email. This is a very important step because if you omit the <code>".withSession"</code> call, even though your user is authenticated, you will have no way of knowing which user was logged in.</p>
    <p>Finally, <code>logout</code> clears up the session while the <code>public</code> function renders the <code>public</code> view, at this point with just the hard-coded user name “John Doe”.</p>
    <h3>Update Routes</h3>
    <p>In the previous section we created several new actions for our controller. We now have to update our routes to accommodate these new actions:</p>
    <pre># Routes&#x000A;    # This file defines all application routes (Higher priority routes first)&#x000A;    # ~~~~&#x000A;    &#x000A;    # Home page&#x000A;    GET     /                           controllers.Application.index&#x000A;    &#x000A;    # Authentication&#x000A;    POST    /login                      controllers.Application.authenticate&#x000A;    GET     /logout                     controllers.Application.logout&#x000A;    &#x000A;    # Message&#x000A;    GET     /public						controllers.Application.public&#x000A;    &#x000A;    # Map static resources from the /public folder to the /assets URL path&#x000A;    GET     /assets/*file               controllers.Assets.at(path="/public", file)</pre>
    <p>We added definitions for login, logout, public and of course for the authenticate action called from the form. This is enough for the time being.</p>
    <h3>Add the Login Form to the Header</h3>
    <p>We now have a controller and route actions, next we’ll update our views. The first one to take care of is <code>main.scala.html</code>. We will have to update the “header” part so that it will display a form, from the controller, instead of the two built-in inputs.</p>
    <pre>&lt;header&gt;&#x000A;    	&lt;div class="wrapper"&gt;&#x000A;    		&lt;img src='@routes.Assets.at("images/logo.png")'&gt;&#x000A;    		&lt;span&gt;Twitter Clone&lt;/span&gt;&#x000A;    		@loginForm&#x000A;    	&lt;/div&gt;&#x000A;    &lt;/header&gt;</pre>
    <p><code>@loginForm</code> has to be specified as a parameter, so the first line of the file becomes:</p>
    <pre>@(title: String)(loginForm: Html)(content: Html)</pre>
    <p>Now we will build the form’s content in the <code>index.scala.html</code> view and pass it to <code>main</code>.</p>
    <pre>@(form: Form[(String,String)])(implicit flash: Flash)&#x000A;    &#x000A;    @main("Welcome to Ribbit in Scala") {&#x000A;    	@helper.form(routes.Application.authenticate) {&#x000A;    		&lt;input type="email" name="email" placeholder="Email" id="email" value='@form("email").value'&gt;&#x000A;    		&lt;input type="password" name="password" id="password" placeholder="Password"&gt;&#x000A;    	}&#x000A;    } {&#x000A;    &lt;div id="content"&gt;&#x000A;    	&lt;div class="wrapper"&gt;&#x000A;    		&lt;img src='@routes.Assets.at("images/frog.jpg")'&gt;&#x000A;    		&lt;div class="panel right"&gt;&#x000A;    			&lt;h1&gt;New to Ribbit?&lt;/h1&gt;&#x000A;    			&lt;p&gt;&#x000A;    			&lt;form&gt;&#x000A;    				&lt;input name="email" type="text"&gt;&#x000A;    				&lt;input name="password" type="text"&gt;&#x000A;    				&lt;input name="password2" type="password"&gt;&#x000A;    				&lt;input type="submit" value="Create Account"&gt;&#x000A;    			&lt;/form&gt;&#x000A;    		&lt;/div&gt;&#x000A;    	&lt;/div&gt;&#x000A;    &#x000A;    &lt;/div&gt;&#x000A;    }</pre>
    <p>One important piece of code in this view is: <code>@helper.form(routes.Application.authenticate)</code>. This is how we call <code>authenticate</code> on our Application controller from the form.</p>
    <h3>Create a Public View</h3>
    <p>Finally, create the <code>public.scala.html</code> view so we have a destination to redirect to in case of a successful login. This will be mostly empty at this point.</p>
    <pre>@(title: String)(user: String)&#x000A;    &#x000A;    @main("Public Tweets") {&#x000A;    	&lt;a id='btnLogOut' href="@routes.Application.logout" class="logout"&gt;logout&lt;/a&gt;&#x000A;    } {&#x000A;    &#x000A;    	&lt;div&gt;@user&lt;/div&gt;&#x000A;    &#x000A;    }</pre>
    <hr>
    <h2>Getting a Slick Database Backend</h2>
    <p>Scala database backends are very cool, because they provide a syntax which hides SQL or other data languages and they map their functionality directly as Scala classes. You may think of them like ORM libraries, but implemented in a much more optimal way. Our database backend of choice is called Slick. Installing it will be as simple as adding it as a dependency in our <code>build.scala</code>.</p>
    <pre>"com.typesafe.slick" %% "slick" % "1.0.1",&#x000A;    "com.h2database" % "h2" % "1.3.166"</pre>
    <p>The first line is the Slick library, while H2 is the database that we will use. H2 is the equivalent of MySQL or Postgres or whatever your favorite database server may be. Of course, these lines go into the <code>appDependencies</code> definition.</p>
    <pre>val appDependencies = Seq(&#x000A;    	"org.mindrot" % "jbcrypt" % "0.3m",&#x000A;    	"com.typesafe.slick" %% "slick" % "1.0.1",&#x000A;    	"com.h2database" % "h2" % "1.3.166"&#x000A;    )</pre>
    <hr>
    <h2>Accounts, Databases and Authentication</h2>
    <h3>Managing Accounts With a Model</h3>
    <p>It’s now time to make our application actually do some kind of authentication. We will introduce a model called Account. Create a file called <code>Account.scala</code> in your <code>source packages / models</code> folder. You may have to create the <code>models</code> folder if it’s missing.</p>
    <p>The Account model will be responsible for user management. It will connect to the database and find our John Doe user, authenticate him, and provide other useful search methods for us. Here’s what our model looks like:</p>
    <pre>package models&#x000A;    &#x000A;    import org.mindrot.jbcrypt.BCrypt&#x000A;    import scala.slick.driver.H2Driver.simple._&#x000A;    import Database.threadLocalSession&#x000A;    &#x000A;    case class Account(id: Int, email: String, password: String, name: String)&#x000A;    &#x000A;    object Account {&#x000A;    &#x000A;    	object Users extends Table[(Int, String, String, String)]("USERS"){&#x000A;    		def id = column[Int]("ID", O.PrimaryKey)&#x000A;    		def email = column[String]("EMAIL")&#x000A;    		def password = column[String]("PASSWORD")&#x000A;    		def name = column[String]("NAME")&#x000A;    &#x000A;    		def * = id ~ email ~ password ~ name&#x000A;    	}&#x000A;    &#x000A;    	def authenticate(email: String, password: String): Option[Account] = {&#x000A;    		findByEmail(email).filter { account =&gt; BCrypt.checkpw(password, account.password) }&#x000A;    	}&#x000A;    &#x000A;    	def findByEmail(email: String): Option[Account] = findBy("email", email)&#x000A;    &#x000A;    	def findById(id: Int): Option[Account] = findBy("id", id.toString)&#x000A;    &#x000A;    	def findAll(): Seq[Account] = findById(1).toSeq&#x000A;    &#x000A;    	def findBy(field: String, value: String): Option[Account] = {&#x000A;    		val user = Database.forURL("jdbc:h2:mem:users", driver = "org.h2.Driver") withSession {&#x000A;    			Users.ddl.create&#x000A;    			Users.insert(1, "<a href="mailto:John.Doe@gmail.com">John.Doe@gmail.com</a>", BCrypt.hashpw("123", BCrypt.gensalt()), "John Doe")&#x000A;    			val foundUsers = field match {&#x000A;    				case "email" =&gt; for {&#x000A;    						u &lt;- Users if u.email.toLowerCase === value.toLowerCase&#x000A;    					} yield(u)&#x000A;    				case "id" =&gt; for {&#x000A;    						u &lt;- Users if u.id === value.toInt&#x000A;    					} yield(u)&#x000A;    			}&#x000A;    &#x000A;    			foundUsers.firstOption&#x000A;    		}&#x000A;    &#x000A;    		user map {&#x000A;    			case (id, email, password, name) =&gt; new Account(id, email, password, name)&#x000A;    		}&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    &#x000A;    class NullAccount(id: Int = -1, email: String = "not@set", password: String = "", name: String = "Unknown")&#x000A;    extends Account(id: Int, email: String, password: String, name: String)  {&#x000A;    }</pre>
    <p>Well, it’s pretty long, allow me to explain it line-by-line.</p>
    <ul>
    <li>Line 1 – the package for this file has to be “models”</li>
    <li>Lines 3-5 – import encryption, database driver and session libraries</li>
    <li>Lines 7-8 – we define a class Account and an object for it with constructor parameters</li>
    <li>Lines 11-15 – we define a User object that extends Table. This is a link between Scala and our database. In it, we have all the parameters that characterize a user.</li>
    <li>Lines 20-22 – define a function called <code>"authenticate"</code>. This will be called from the Application controller’s form instead of “check”. It will return an optional Account object. It may return None if the user is not found or the authentication fails. The logic in this class calls another method defined below which returns an Account for an email and then checks if the account’s password matches what we typed in the form. At this point we also introduced encryption for the password.</li>
    <li>Lines 24-26 – two functions for finding a user by email and by id. We may not need the <code>findById</code> but I’ve put it in here for exemplification.</li>
    <li>Line 28 – will find all of the users. At this point though, it is not yet implemented, we just return a user with id 1 as a sequence.</li>
    <li>Lines 30-49 – is where most of our logic is contained. <code>findBy</code> is a method that connects to an H2 database residing in memory. This is a temporary DB and we will just insert John Doe into it. File persistence will come a little later. Next, the <code>findBy</code> method finds all of the users from the DB, based on ID or email, depending on the parameter specified. Finally, it returns an <code>Option[Account]</code>.</li>
    <li>Lines 53-55 – we define a null version of Account. Just in case we end up on the public page with an unknown, but authenticated user, we don’t want our view to break.</li>
    </ul>
    <h3>Connecting the Application Controller to Accounts</h3>
    <p>Now that Account can authenticate our user, we can get rid of the <code>"check"</code> function in the Application controller and change our form into this:</p>
    <pre>val loginForm = Form(&#x000A;    	tuple(&#x000A;    		"email" -&gt; text,&#x000A;    		"password" -&gt; text&#x000A;    	) verifying ("Invalid email or password", result =&gt; result match {&#x000A;    			case (email, password) =&gt; Account.authenticate(email, password).isDefined&#x000A;    		})&#x000A;    )</pre>
    <p>Instead of calling <code>check</code> we will call <code>Account.authenticate</code> and check if the returned value is defined, as in the case of a failure, it can return <code>None</code>.</p>
    <pre>def public = Action { implicit request =&gt;&#x000A;    	def getLoggedInEmail = request.session.get("email") match {&#x000A;    		case Some(email) =&gt; email&#x000A;    		case None =&gt; ""&#x000A;    	}&#x000A;    	def getUserFromOption(user: Option[Account]) = user match {&#x000A;    		case Some(account) =&gt; account&#x000A;    		case None =&gt; new NullAccount&#x000A;    	}&#x000A;    	val user = getUserFromOption(Account.findByEmail(getLoggedInEmail))&#x000A;    	Ok(html.public("Logged in")(user))&#x000A;    }</pre>
    <p>The public function has to be updated as well to get a user account by the email address, kept in the session.</p>
    <h3>Update the View</h3>
    <p>The <code>public.scala.html</code> view has to be updated in order to get a parameter of type Account and be able to obtain all user information from it.</p>
    <pre>@(title: String)(user: Account)&#x000A;    &#x000A;    @main("Public Tweets") {&#x000A;    	&lt;a id='btnLogOut' href="@routes.Application.logout" class="logout"&gt;logout&lt;/a&gt;&#x000A;    } {&#x000A;    &#x000A;    	&lt;div&gt;@user.name&lt;/div&gt;&#x000A;    &#x000A;    }</pre>
    <p>Here, we just output user’s name at this point.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/AuthJohnDoe.png" alt="AuthJohnDoe" width="600" height="107" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>Creating Users and Using Real Persistence for Them</h2>
    <p>Now that we have authentication with our database working, it’s time to make the database persistent. It is also a good time to implement user creation. We will again be forced to rethink parts of our actual design. In previous sections we started our reasoning and development with the business logic (the code in <code>Applications.scala</code> and in <code>Account.scala</code>) and worked our way up to the views. I propose we take a reverse approach this time, so that you can see an example where we start with <code>index.scala.html</code>, our view, and develop step by step toward the functionality that we want, ending with <code>Account.scala</code>.</p>
    <h3>Writing a Play Form for Account Creation</h3>
    <p>We have to modify <code>index.scala.html</code> so that our second form, for the user creation, will also be created using Play’s helpers, so that this code:</p>
    <pre>&lt;p&gt;&#x000A;    &lt;form&gt;&#x000A;    	&lt;input name="email" type="text"&gt;&#x000A;    	&lt;input name="password" type="text"&gt;&#x000A;    	&lt;input name="password2" type="password"&gt;&#x000A;    	&lt;input type="submit" value="Create Account"&gt;&#x000A;    &lt;/form&gt;</pre>
    <p>Becomes this, instead:</p>
    <pre>@helper.form(routes.Application.createAccount) {&#x000A;    	&lt;input type="text" name="name" placeholder="Full Name" id="name" value='@createForm("name").value'&gt;&#x000A;    	&lt;input type="email" name="email" placeholder="Email" id="email" value='@createForm("email").value'&gt;&#x000A;    	&lt;input type="password" name="password" id="password" placeholder="Password"&gt;&#x000A;    	&lt;input type="password" name="confirm" id="password2" placeholder="Confirm Password"&gt;&#x000A;    	&lt;input type="submit" value="Create Account"&gt;&#x000A;    }</pre>
    <p>In this code, there are two essential pieces:</p>
    <ol>
    <li>
    <code>@createForm("...").value</code> – which is a form that we will send in from the controller. This also requires us to change the signature of our view (see below).</li>
    <li>
    <code>routes.Application.createAccount</code> – which is the action that we will create in our controller. This requires us to update our routes and of course the Application controller.</li>
    </ol>
    <p>The view’s signature becomes:</p>
    <pre>@(loginForm: Form[(String,String)], createForm: Form[(String, String, String, String)])(implicit flash: Flash)</pre>
    <p>As you can see, we are now always getting two forms. To better differentiate them, we also updated the name of the previous variable to <code>"loginForm"</code>, so we have to update the input for login as well.</p>
    <pre>&lt;input type="email" name="email" placeholder="Email" id="email" value='@loginForm("email").value'&gt;</pre>
    <p>We also had to update <code>main.less</code> to accommodate the extra input, but these small marginal adjustments here-and-there are not that relevant.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/RibbitLoginWithNewCreateForm.png" alt="RibbitLoginWithNewCreateForm" width="600" height="526" style="max-width: 100%; height: auto;"><br> <h3>Adding the New Route</h3>
    <p>This is easy, just one more line in the <code>"routes"</code> file.</p>
    <pre># User Creation&#x000A;    POST /create						controllers.Application.createAccount</pre>
    <h3>Adding in New Controller Functionality</h3>
    <p>First, add a new form for creating a user:</p>
    <pre>val createForm = Form(&#x000A;    	tuple(&#x000A;    		"name" -&gt; text,&#x000A;    		"email" -&gt; text,&#x000A;    		"password" -&gt; text,&#x000A;    		"confirm" -&gt; text&#x000A;    	) verifying ("Invalid email or password", result =&gt; result match {&#x000A;    			case (name, email, password, confirm) =&gt; Account.create(name, email, password, confirm).isDefined&#x000A;    		})&#x000A;    )</pre>
    <p>This is where we define the four fields that we’ll need. Then in the case where we call <code>Account.create(...).isDefined</code>, this will force us to write a <code>"create"</code> function in our Account model.</p>
    <p>Next, we need to define the <code>"createAccount"</code> action:</p>
    <pre>def createAccount = Action { implicit request =&gt;&#x000A;    	createForm.bindFromRequest.fold(&#x000A;    		formWithErrors =&gt; BadRequest(html.index(loginForm,formWithErrors)),&#x000A;    		user =&gt; Redirect(routes.Application.public).withSession("email" -&gt; user._2)&#x000A;    	)&#x000A;    }</pre>
    <p>For this action, on failure, we will redirect to the index page and send in the <code>loginForm</code> plus our <code>formWithErrors</code>. This will help keep the user’s filled in form data present, after a form submission. On success, we will just go to the “public” page, as we do when the authentication succeeds. We will also set and pass the email through the session.</p>
    <p>Finally, we need to adjust all the other calls to the <code>index</code> view to take both forms as parameters:</p>
    <pre>def index = Action { implicit request =&gt;&#x000A;    	Ok(html.index(loginForm, createForm))&#x000A;    }&#x000A;    &#x000A;    def authenticate = Action { implicit request =&gt;&#x000A;    	loginForm.bindFromRequest.fold(&#x000A;    		formWithErrors =&gt; BadRequest(html.index(formWithErrors, createForm)),&#x000A;    		user =&gt; Redirect(routes.Application.public).withSession("email" -&gt; user._1)&#x000A;    	)&#x000A;    }</pre>
    <h3>Creating the Account in the Database</h3>
    <p>Up until now, all of our code for user creation was just to support the framework: views, routes, controller actions, forms. Now it’s time for some serious business. We will need to change <code>Account.scala</code> quite a bit, so below is the code for the changed version and then afterwards, the explanation.</p>
    <pre>package models&#x000A;    &#x000A;    import org.mindrot.jbcrypt.BCrypt&#x000A;    import scala.slick.driver.H2Driver.simple._&#x000A;    import Database.threadLocalSession&#x000A;    &#x000A;    case class Account(email: String, password: String, name: String)&#x000A;    &#x000A;    object Account {&#x000A;    &#x000A;    	object User extends Table[(String, String, String)]("USERS"){&#x000A;    		def email = column[String]("EMAIL", O.PrimaryKey)&#x000A;    		def password = column[String]("PASSWORD")&#x000A;    		def name = column[String]("NAME")&#x000A;    &#x000A;    		def * = email ~ password ~ name&#x000A;    	}&#x000A;    &#x000A;    	def authenticate(email: String, password: String): Option[Account] = {&#x000A;    		findByEmail(email).filter { account =&gt; BCrypt.checkpw(password, account.password) }&#x000A;    	}&#x000A;    &#x000A;    	def create(name: String, email: String, password: String, confirm: String): Option[Account] = {&#x000A;    		if (password != confirm) None&#x000A;    		else {&#x000A;    			Database.forURL("jdbc:h2:users", driver = "org.h2.Driver") withSession {&#x000A;    				try {&#x000A;    					User.ddl.create&#x000A;    				} catch {&#x000A;    					case e: org.h2.jdbc.JdbcSQLException =&gt; println("Skipping table createion. It already exists.")&#x000A;    				}&#x000A;    				User.insert(email, BCrypt.hashpw(password, BCrypt.gensalt()), name)&#x000A;    			}&#x000A;    			findByEmail(email)&#x000A;    		}&#x000A;    	}&#x000A;    &#x000A;    	def findByEmail(email: String): Option[Account] = findBy("email", email)&#x000A;    &#x000A;    	def findByName(name: String): Option[Account] = findBy("name", name)&#x000A;    &#x000A;    	def findAll(): Seq[Account] = findByName("John Doe").toSeq&#x000A;    &#x000A;    	def findBy(field: String, value: String): Option[Account] = {&#x000A;    		val user = Database.forURL("jdbc:h2:users", driver = "org.h2.Driver") withSession {&#x000A;    			val foundUser = field match {&#x000A;    				case "email" =&gt; for {&#x000A;    						u &lt;- User if u.email.toLowerCase === value.toLowerCase&#x000A;    					} yield(u)&#x000A;    				case "name" =&gt; for {&#x000A;    						u &lt;- User if u.name.toLowerCase === value.toLowerCase&#x000A;    					} yield(u)&#x000A;    			}&#x000A;    &#x000A;    			foundUser.firstOption&#x000A;    		}&#x000A;    &#x000A;    		user map {&#x000A;    			case (email, password, name) =&gt; new Account(email, password, name)&#x000A;    		}&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    &#x000A;    class NullAccount(email: String = "not@set", password: String = "", name: String = "Unknown")&#x000A;    extends Account(email: String, password: String, name: String)  {&#x000A;    }</pre>
    <p>Here’s what we’ve done:</p>
    <ul>
    <li>We dropped the <code>"id"</code> for the user, as the <code>email</code> address is just as good as an <code>id</code> and we can use it for the unique key. This also led to changes in the Account’s signature, in NullAccount, and in the User’s signature. Users was renamed to User and now has only three fields: email, password, and name.</li>
    <li>Because we removed the <code>"id"</code>, we also changed the function <code>"findBy"</code>. Now it can search by name and email and not by id.</li>
    <li>To implement real persistence, we dropped the “mem” specification from the database connection. This makes “USERS” a real table residing in a database file called <code>"users"</code>.</li>
    <li>Finally, we added a create method to add the new user to the database. In its logic, it tries to create the table and in case it already exists, it catches the exception and just writes a nice message to the console. Check your NetBeans’ Output console, the one that opens when you select <strong>“Run”</strong> on the project. The rest of the code should be fairly obvious, insert the new user into the database and then look it up and return it with the already existing function <code>"findByEmail"</code>.</li>
    </ul>
    <p>We are done. You can now create users. Have fun with them!</p>
    <hr>
    <h2>Post a Ribbit</h2>
    <p>Now that we are more familiar with Play, Slick and Scala, the rest of the program is quite easy to build. We will, however, implement both posting ribbits and showing all ribbits. This is also the final state of the attached source code, so I will only mention the most interesting parts here.</p>
    <p>To create Ribbits we have to modify our public view. As a first step, you can take the code from the layout ribbit tutorial we used at the beginning and start changing it where needed. First, we need a form generated by Play instead of the hardcoded one.</p>
    <pre>&lt;div class="panel right"&gt;&#x000A;    	&lt;h1&gt;Create a Ribbit&lt;/h1&gt;&#x000A;    	&lt;p&gt;&#x000A;    		@helper.form(routes.Ribbits.createRibbit) {&#x000A;    		&lt;textarea type="text" name="ribbit" placeholder="Your Ribbit here..." id="ribbit" class="ribbitText" value='@createForm("name").value' &gt;&lt;/textarea&gt;&#x000A;    		&lt;input type="submit" value="Ribbit!"&gt;&#x000A;    		}&#x000A;    &#x000A;    	&lt;/p&gt;&#x000A;    &lt;/div&gt;</pre>
    <p>Don’t forget to update the view’s signature as well.</p>
    <p>Then we create a new controller, called Ribbits. We can now move the <code>"public"</code> function here, update our Application controller and our views to call <code>Ribbits.public</code> instead of <code>Application.public</code>. We then add a <code>"createRibbit"</code> function in the new controller, together with our form.</p>
    <pre>package controllers&#x000A;    &#x000A;    [...] // many omitted imports&#x000A;    &#x000A;    object Ribbits extends Controller {&#x000A;    &#x000A;    	def createForm (session: Session) = Form(&#x000A;    		single("ribbit" -&gt; text) verifying ("Could not add Ribbit. Sorry.", result =&gt; result match {&#x000A;    				case (ribbit) =&gt; RibbitRepository.create(ribbit, session.get("email"))._1.equals(ribbit)&#x000A;    			})&#x000A;    	)&#x000A;    &#x000A;    	def getLoggedInUser(session: Session): Account = {&#x000A;    		def getLoggedInEmail = session.get("email") match {&#x000A;    			case Some(email) =&gt; email&#x000A;    			case None =&gt; ""&#x000A;    		}&#x000A;    		def getUserFromOption(user: Option[Account]): Account = user match {&#x000A;    			case Some(account) =&gt; account&#x000A;    			case None =&gt; new NullAccount&#x000A;    		}&#x000A;    		getUserFromOption(Account.findByEmail(getLoggedInEmail))&#x000A;    	}&#x000A;    &#x000A;    	def public = Action { implicit request =&gt;&#x000A;    		val user = getLoggedInUser(request.session)&#x000A;    		Ok(html.public("Logged in")(user)(createForm(request.session))(RibbitRepository.findAll))&#x000A;    	}&#x000A;    &#x000A;    	def createRibbit = Action { implicit request =&gt;&#x000A;    		createForm(request.session).bindFromRequest.fold(&#x000A;    			formWithErrors =&gt; BadRequest(html.public("Logged in")(getLoggedInUser(request.session))(formWithErrors)(RibbitRepository.findAll)),&#x000A;    			ribbit =&gt; Redirect(routes.Ribbits.public)&#x000A;    		)&#x000A;    	}&#x000A;    }</pre>
    <p>Then we create a new model, RibbitRepository. It will be responsible for creating and listing out all ribbits.</p>
    <pre>def create(content: String, sender: Option[String]): (String,String,String,String) = {&#x000A;    	Database.forURL("jdbc:h2:ribbits", driver = "org.h2.Driver") withSession {&#x000A;    		try {&#x000A;    			Ribbit.ddl.create&#x000A;    		} catch {&#x000A;    			case e: org.h2.jdbc.JdbcSQLException =&gt; println("Skipping table createion. It already exists.")&#x000A;    		}&#x000A;    &#x000A;    		def senderEmail = sender match {&#x000A;    			case Some(email) =&gt; email&#x000A;    			case None =&gt; "<a href="mailto:Unknown@email.address">Unknown@email.address</a>"&#x000A;    		}&#x000A;    &#x000A;    		Ribbit.insert(content, senderEmail, new SimpleDateFormat("yyyy-MM-dd HH:mm").format(Calendar.getInstance.getTime))&#x000A;    	}&#x000A;    	findAll().last&#x000A;    }</pre>
    <p>We also modified our database, I just called it <code>"ribbits"</code> and both the <code>"Ribbits"</code> and the <code>"Users"</code> are in this database. A ribbit will have some content, a sender’s email and a timestamp.</p>
    <hr>
    <h2>View All Ribbits</h2>
    <p>Finally, we updated our view to loop over all ribbits provided by the <code>findAll</code> function of the RibbitRepository model.</p>
    <pre>def findAll(): Seq[(String,String,String,String)] = {&#x000A;    	val allRibbits = Database.forURL("jdbc:h2:ribbits", driver = "org.h2.Driver") withSession {&#x000A;    		try {&#x000A;    			Ribbit.ddl.create&#x000A;    		} catch {&#x000A;    			case e: org.h2.jdbc.JdbcSQLException =&gt; println("Skipping table createion. It already exists.")&#x000A;    		}&#x000A;    &#x000A;    		val foundRibbits = for {&#x000A;    			r &lt;- Ribbit&#x000A;    			u &lt;- User if u.email.toLowerCase === r.sender.toLowerCase&#x000A;    		} yield((r.content, r.sender, r.dateTime, u.name))&#x000A;    		foundRibbits.list&#x000A;    	}&#x000A;    	allRibbits&#x000A;    }</pre>
    <p>This same method is also called on ribbit creation, so that the list is refreshed after a submission. The view simply does a map on the sequence and outputs the content.</p>
    <pre>&lt;div id="ribbits" class="panel left"&gt;&#x000A;    	&lt;h1&gt;Public Ribbits&lt;/h1&gt;&#x000A;    &#x000A;    	@ribbits.map { ribbit =&gt;&#x000A;    &#x000A;    	&lt;div class="ribbitWrapper"&gt;&#x000A;    		&lt;img class="avatar" src='@routes.Assets.at("images/user1.png")'&gt;&#x000A;    		&lt;span class="name"&gt;@ribbit._4&lt;/span&gt; @ribbit._2 &lt;span class="time"&gt;@ribbit._3&lt;/span&gt;&#x000A;    		&lt;p&gt;&#x000A;    			@ribbit._1&#x000A;    		&lt;/p&gt;&#x000A;    	&lt;/div&gt;&#x000A;    &#x000A;    	}&#x000A;    &#x000A;    &lt;/div&gt;</pre>
    <p>And here’s what the final version of the signature for the view should look like:</p>
    <pre>@(title: String)(user: Account)(createForm: Form[String])(ribbits: Seq[(String,String,String,String)])&#x000A;    </pre>
    <p>Notice that we did not use <code>"user"</code> in the view, but we could have, so I decided to leave it in there just in case you wish to modify this code and use it however you please.</p>
    <p>And here is the finished app in action.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/08/RibbitFinished.png" alt="RibbitFinished" width="600" height="527" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>Final Thoughts</h2>
    <p>So I think now is a good time to end this tutorial. Creating additional pages for the app would be very similar to the ones we have already done here, so I’ll leave this as an exercise for you. I hope I helped you to understand the basics of Scala, Play and Slick. Consider this tutorial a very basic introduction, without all of the fancy stuff like Ajax requests or auto incrementing on H2 key columns. I am sure that if you were able to follow along with this tutorial, it will provide you with a solid base that you can build on top of. Also, don’t forget to check out all of the extra information and documentation about Slick, Play and Scala that I linked to throughout this tutorial.</p>
    <p>Thank you for reading.</p>
    </div>
]]>
</Body>
<Summary>In this tutorial we will implement the Ribbit application in Scala. We’ll be covering how to install the Play web framework, a NetBeans plugin for it, and finally the code in Scala. If you are new...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/1NmChMRnfGM/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34619/guest@my.umbc.edu/c6967c09319787e08ef38c4813957793/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>ribbit</Tag>
<Tag>scala</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>Fri, 23 Aug 2013 18:32:18 -0400</PostedAt>
<EditAt>Fri, 23 Aug 2013 18:32:18 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="34622" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34622">
<Title>A Look Back as Microsoft&#8217;s CEO Prepares to Depart</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Microsoft had some big product successes and a number of flops under Steve Ballmer.</p>
    <p>The era of Steve Ballmer’s leadership at Microsoft is coming to a close: the CEO said Friday that he plans to retire in the next year, and the company is on the hunt for a successor.</p>
    </div>
]]>
</Body>
<Summary>Microsoft had some big product successes and a number of flops under Steve Ballmer.  The era of Steve Ballmer’s leadership at Microsoft is coming to a close: the CEO said Friday that he plans to...</Summary>
<Website>http://www.technologyreview.com/news/518701/a-look-back-as-microsofts-ceo-prepares-to-depart/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34622/guest@my.umbc.edu/d768f470572ed14b6561b0b513c64e2a/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>Fri, 23 Aug 2013 18:25:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34624" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34624">
<Title>Women at Google Looking Past the Glass Ceiling</Title>
<Body>
<![CDATA[
    <div class="html-content">Pioneering women behind Google Glass are trying to bridge the gap between the worlds of high fashion and high tech.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F25%2Ffashion%2Fwomen-at-google-looking-past-the-glass-ceiling.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Women+at+Google+Looking+Past+the+Glass+Ceiling" 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%2F08%2F25%2Ffashion%2Fwomen-at-google-looking-past-the-glass-ceiling.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Women+at+Google+Looking+Past+the+Glass+Ceiling" 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%2F08%2F25%2Ffashion%2Fwomen-at-google-looking-past-the-glass-ceiling.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Women+at+Google+Looking+Past+the+Glass+Ceiling" 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%2F08%2F25%2Ffashion%2Fwomen-at-google-looking-past-the-glass-ceiling.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Women+at+Google+Looking+Past+the+Glass+Ceiling" 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%2F08%2F25%2Ffashion%2Fwomen-at-google-looking-past-the-glass-ceiling.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Women+at+Google+Looking+Past+the+Glass+Ceiling" 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/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/sc/21/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271810/u/0/f/640387/c/34625/s/3054083f/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Pioneering women behind Google Glass are trying to bridge the gap between the worlds of high fashion and high tech.      </Summary>
<Website>http://www.nytimes.com/2013/08/25/fashion/women-at-google-looking-past-the-glass-ceiling.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34624/guest@my.umbc.edu/33762e974384d3d83a409d64a4e1e96f/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>engineering-and-engineers</Tag>
<Tag>fashion-and-apparel</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>women-and-girls</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>Fri, 23 Aug 2013 17:13:42 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="34625" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34625">
<Title>Scene Stealers: Richard Simmons, Internet Star?</Title>
<Body>
<![CDATA[
    <div class="html-content">The “Sweatin’ to the Oldies” star works out with social media.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F08%2F25%2Ffashion%2Frichard-simmons-internet-star.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Scene+Stealers%3A+Richard+Simmons%2C+Internet+Star%3F" 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%2F08%2F25%2Ffashion%2Frichard-simmons-internet-star.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Scene+Stealers%3A+Richard+Simmons%2C+Internet+Star%3F" 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%2F08%2F25%2Ffashion%2Frichard-simmons-internet-star.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Scene+Stealers%3A+Richard+Simmons%2C+Internet+Star%3F" 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%2F08%2F25%2Ffashion%2Frichard-simmons-internet-star.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Scene+Stealers%3A+Richard+Simmons%2C+Internet+Star%3F" 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%2F08%2F25%2Ffashion%2Frichard-simmons-internet-star.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Scene+Stealers%3A+Richard+Simmons%2C+Internet+Star%3F" 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/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/sc/38/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/173608271809/u/0/f/640387/c/34625/s/30540841/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The “Sweatin’ to the Oldies” star works out with social media.      </Summary>
<Website>http://www.nytimes.com/2013/08/25/fashion/richard-simmons-internet-star.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34625/guest@my.umbc.edu/73849d615ffd5086618108047099e2a8/api/pixel</TrackingUrl>
<Tag>computers-and-the-internet</Tag>
<Tag>exercise</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>new</Tag>
<Tag>simmons-richard</Tag>
<Tag>social-media</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>Fri, 23 Aug 2013 16:49:01 -0400</PostedAt>
<EditAt>Fri, 23 Aug 2013 16:49:01 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="34616" important="false" status="posted" url="https://my3.my.umbc.edu/posts/34616">
<Title>Recommended from Around the Web (Week Ending August 23, 2013)</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>A roundup of the most interesting stories from other sites, collected by the staff at <em>MIT Technology Review</em>.</p></div>
]]>
</Body>
<Summary>A roundup of the most interesting stories from other sites, collected by the staff at MIT Technology Review.</Summary>
<Website>http://www.technologyreview.com/view/518696/recommended-from-around-the-web-week-ending-august-23-2013/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/34616/guest@my.umbc.edu/42edb4ecd861e9f8348a6b0b39efa5f3/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>Fri, 23 Aug 2013 16:08:00 -0400</PostedAt>
</NewsItem>

</News>
