<?xml version="1.0"?>
<News hasArchived="true" page="7692" pageCount="10930" pageSize="10" timestamp="Sat, 07 Nov 2026 03:58:30 -0500" url="https://my3.my.umbc.edu/posts.xml?mode=recent&amp;page=7692">
<NewsItem contentIssues="true" id="44446" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44446">
<Title>Business Travel: Your Digital Trail Follows You to the Border</Title>
<Body>
<![CDATA[
    <div class="html-content">Immigration agencies around the world have learned to use technology, including Facebook, Google and Twitter, to screen travelers for evidence of a criminal record, political activism or intention to work without a visa.<br><br><br><a href="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505692060/u/0/f/640387/c/34625/s/3a2bf30b/sc/10/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Immigration agencies around the world have learned to use technology, including Facebook, Google and Twitter, to screen travelers for evidence of a criminal record, political activism or intention...</Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/3a2bf30b/sc/10/l/0L0Snytimes0N0C20A140C0A50C0A80Cbusiness0Cyour0Edigital0Etrail0Efollows0Eyou0Eto0Ethe0Eborder0Bhtml0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44446/guest@my.umbc.edu/0412cbeca74f30526d0e950c201eb0f1/api/pixel</TrackingUrl>
<Tag>business-travel</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>google-inc-googl-nasdaq</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>twitter-twtr-nyse</Tag>
<Tag>visas</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 15:58:17 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="44436" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44436">
<Title>Student Org Space closed at 2pm tomorrow</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <span>The Student Organization Space (Commons 2nd floor) will be closed starting tomorrow, May 8th at 2pm for the CelebratingOrgs event. It will reopen on Friday May 9th. </span><div><br></div>
    <div>For those who RSVP'd- can't wait to see you there!</div>
    <div><br></div>
    <div>Sara</div>
    </div>
]]>
</Body>
<Summary>The Student Organization Space (Commons 2nd floor) will be closed starting tomorrow, May 8th at 2pm for the CelebratingOrgs event. It will reopen on Friday May 9th.     For those who RSVP'd- can't...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44436/guest@my.umbc.edu/807e98b846938a7e490dd5d2cc412d80/api/pixel</TrackingUrl>
<Group token="retired-769">UMBC Student Organizations </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-769</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/xsmall.png?1383677072</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/original.jpg?1383677072</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/xxlarge.png?1383677072</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/xlarge.png?1383677072</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/large.png?1383677072</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/medium.png?1383677072</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/small.png?1383677072</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/xsmall.png?1383677072</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/769/c1de2111b16e6b21b794451fe54ef86f/xxsmall.png?1383677072</AvatarUrl>
<Sponsor>UMBC Student Organizations</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 15:51:40 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="44439" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44439">
<Title>A Push for More Computer Programming in Public Schools</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <div>
    <a href="http://blog.teamtreehouse.com/wp-content/uploads/2014/05/student-computer-class-woodleywonderworks-flickr.jpg" rel="nofollow external" class="bo"><img alt="A student in a fifth-grade Maryland classroom. (Flickr photo by woodleywonderworks) " src="http://blog.teamtreehouse.com/wp-content/uploads/2014/05/student-computer-class-woodleywonderworks-flickr.jpg" width="1000" height="667" style="max-width: 100%; height: auto;"></a><p>A fifth-grade student in a Maryland school studies in a computer class. (Flickr photo by <a href="https://www.flickr.com/photos/wwworks/5073550323" rel="nofollow external" class="bo">woodleywonderworks</a>)</p>
    </div>
    <p>Will computer programming languages like PHP, Ruby and JavaScript soon be as commonplace in U.S. classrooms as English lit, American history and chemistry? Almost assuredly, if a growing vocal group of organizations and educators has its way.</p>
    <p>Countless education advocates stress that a STEM education — that is, curriculum taught in science, technology, engineering and mathematics — will not just be indispensable in the future. It is imperative now.</p>
    <p>Coding — more formally known as computer science — is a huge part of that education.</p>
    <div>
    <p><strong>How can you help students learn to code?</strong></p>
    <p>For every new Gold account on Treehouse, we will donate one to a public school student.</p>
    <p><strong><a href="http://trhou.se/1mDivEj" rel="nofollow external" class="bo">Learn how to donate here</a>.</strong></p>
    <p>A Treehouse membership means hours of learning <a href="http://teamtreehouse.com/library/topic:html" rel="nofollow external" class="bo">HTML</a>, <a href="http://teamtreehouse.com/library/topic:css" rel="nofollow external" class="bo">CSS</a>, <a href="http://teamtreehouse.com/library/topic:javascript" rel="nofollow external" class="bo">JavaScript</a>, <a href="http://teamtreehouse.com/library/topic:ios" rel="nofollow external" class="bo">iOS app creation</a> and other instrumental skills that will make our students more competitive.</p>
    <p><strong>Interested in trying Treehouse yourself?</strong></p>
    <p><strong><a href="https://teamtreehouse.com/subscribe/plans?cid=2062&amp;amp;utm_source=story-23409-computer-programming-schools&amp;amp;trial=yes" rel="nofollow external" class="bo">Sign up for a 14-day free trial</a> </strong>and start learning today.</p>
    </div>
    <p>Nonprofits like Code.org, which lobbies for more coding in the classroom, says computer science education — and its constituent fields like back-end development and front-end web design — should be available in all schools. And teachers agree.</p>
    <p>“The greatest need for future STEM workers will be in computer science-related fields, especially computer programming/coding,” Kevin Tambara, a sixth-grade teacher at Bert Lynn Middle School in Torrance, Calif., <a href="http://blog.teamtreehouse.com/code-classroom-teachers-software" rel="nofollow external" class="bo">told Treehouse earlier this year</a>.</p>
    <h2>Appeals for Students and Code at the Highest Levels</h2>
    <p>On Wednesday, prominent California CEOs, educators and community leaders asked Gov. Jerry Brown to consider partnering with them on computer science education in the state’s K-12 classrooms. In a <a href="http://code.org/action/brown-letter" rel="nofollow external" class="bo">letter to Brown on Code.org</a>, they focused on proposed legislation that would increase computer science clout in schools.</p>
    <p>Code.org says a coding education is wildly popular — in just four months, 34 million students participated in the Hour of Code, a program backed by Google and Apple — and classes could be even more successful if there is an institutional push behind them.</p>
    <p>“Computer science education draws overwhelming support — not only from the tech industry and its leaders,” the letter reads, “but among regular Americans who want their children to be prepared for the software century.”</p>
    <div>
    <p><strong>More options for educators</strong></p>
    <p>Edutopia <a href="http://www.edutopia.org/blog/7-apps-teaching-children-coding-anna-adam" rel="nofollow external" class="bo">suggests these seven apps</a> for teaching coding in the class and <a href="http://www.edutopia.org/blog/15-ways-teaching-students-coding-vicki-davis" rel="nofollow external" class="bo">more than 15 ways to teach every student</a> — even without a computer.</p>
    <p>Code.org <a href="http://code.org/educate/curriculum" rel="nofollow external" class="bo">recommends curriculum</a> for elementary, middle and high school students.</p>
    <p><a href="http://scratch.mit.edu/" rel="nofollow external" class="bo">Scratch</a>, a project of the Lifelong Kindergarten Group at MIT, is aimed at young students who want to code interactive stories and games.</p>
    </div>
    <p>More preparation is needed. American students continue to lag behind their international counterparts in science, mathematics, reading and other skills.</p>
    <p>In the United States, <a href="http://nces.ed.gov/surveys/pisa/pisa2012/pisa2012highlights_3_1.asp" rel="nofollow external" class="bo">nearly 26 percent of 15-year-old students</a> scored below the baseline proficiency for mathematics in 2012 tests conducted by PISA, or the Program for International Student Assessment. Only 9 percent of American students scored at the test’s highest levels.</p>
    <p>In comparison, 55 percent of Chinese students from Shanghai performed at the test’s highest levels, while only 4 percent scored below proficiency. <a href="http://www.edweek.org/ew/articles/2013/12/03/14pisa.h33.html" rel="nofollow external" class="bo">Education Week says</a> the United States scored poorer than 19 other nations across the test’s math, science and reading metrics. American students trail 29 other nations significantly in math.</p>
    <p></p>
    <p>The post <a href="http://blog.teamtreehouse.com/help-students-learn-computer-programming" rel="nofollow external" class="bo">A Push for More Computer Programming in Public Schools</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>A fifth-grade student in a Maryland school studies in a computer class. (Flickr photo by woodleywonderworks)    Will computer programming languages like PHP, Ruby and JavaScript soon be as...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/49jviQyKadg/help-students-learn-computer-programming</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44439/guest@my.umbc.edu/740d500f53e4d1e2a7c199ee3f67c008/api/pixel</TrackingUrl>
<Tag>android</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>education</Tag>
<Tag>features</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>javascript</Tag>
<Tag>responsive</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 15:50:51 -0400</PostedAt>
<EditAt>Wed, 07 May 2014 15:50:51 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="44437" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44437">
<Title>Machine Learning: The Move Toward Computing That Reads Your Mind</Title>
<Body>
<![CDATA[
    <div class="html-content">Contextual computing, which uses information collected on a person’s habits and interests, could enrich our lives but at the cost of privacy.<br><br><br><a href="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505707227/u/0/f/640387/c/34625/s/3a2bced2/sc/4/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Contextual computing, which uses information collected on a person’s habits and interests, could enrich our lives but at the cost of privacy.</Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/3a2bced2/sc/4/l/0L0Snytimes0N0C20A140C0A50C0A80Ctechnology0Cpersonaltech0Cthe0Eapp0Ethat0Eknows0Eyou0Bhtml0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44437/guest@my.umbc.edu/754991768243bd7a85569d7bd9bc2356/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>everythingme</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>google-now</Tag>
<Tag>mobile-applications</Tag>
<Tag>nest-labs-inc</Tag>
<Tag>new</Tag>
<Tag>privacy</Tag>
<Tag>technology</Tag>
<Tag>twitter-twtr-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>Wed, 07 May 2014 15:39:22 -0400</PostedAt>
<EditAt>Wed, 07 May 2014 15:39:22 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="44434" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44434">
<Title>DBA: Nonstop Partition Operations</Title>
<Body>
<![CDATA[
    <div class="html-content">Oracle ACE Director Arup Nanda demonstrates how Oracle Partitioning delivers online partition moves, selective indexes on partitions, and asynchronously maintained global indexes to Oracle Database 12c.</div>
]]>
</Body>
<Summary>Oracle ACE Director Arup Nanda demonstrates how Oracle Partitioning delivers online partition moves, selective indexes on partitions, and asynchronously maintained global indexes to Oracle...</Summary>
<Website>http://www.oracle.com/technetwork/issue-archive/2014/14-may/o34dba-2193424.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44434/guest@my.umbc.edu/c058dc7be948ff1b7f9462162fe6196f/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>pl-sql</Tag>
<Tag>sql</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 14:47:26 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="44433" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44433">
<Title>Bits Blog: With Update, Snapchats Get a Little Less Private</Title>
<Body>
<![CDATA[
    <div class="html-content">SnapChat built a brand and a passionate following on disappearing messages. With its latest update, messages are easier to save and some never disappear at all.<br><br><br><a href="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/195505703296/u/0/f/640387/c/34625/s/3a2b0e8b/sc/4/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>SnapChat built a brand and a passionate following on disappearing messages. With its latest update, messages are easier to save and some never disappear at all.</Summary>
<Website>http://rss.nytimes.com/c/34625/f/640387/s/3a2b0e8b/sc/4/l/0Lbits0Bblogs0Bnytimes0N0C20A140C0A50C0A70Cwith0Eupdate0Esnapchats0Egets0Ea0Elittle0Eless0Eprivate0C0Dpartner0Frss0Gemc0Frss/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44433/guest@my.umbc.edu/1ed368c0e14919e10c8a7c685ec3161b/api/pixel</TrackingUrl>
<Tag>instant-messaging</Tag>
<Tag>mobile-applications</Tag>
<Tag>new</Tag>
<Tag>snapchat-inc</Tag>
<Tag>social</Tag>
<Tag>technology</Tag>
<Tag>text-messaging</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 14:42:07 -0400</PostedAt>
<EditAt>Thu, 08 May 2014 07:29:57 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="44432" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44432">
<Title>Stories of Deindustrialized Baltimore on Marc Steiner Show</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <span><br><strong>UPDATE - An archive of this broadcast is now <a href="http://millstories.umbc.edu/steiner/" rel="nofollow external" class="bo">available here.</a></strong><br></span><div><span><br></span></div>
    <div><span><br></span></div>
    <div><span><br></span></div>
    <div>
    <span>Tune in to the Marc Steiner Show on WEAA 88.9 FM from Monday, May 12th through Friday, May 17th for the special series, <em>Stories of Deindustrialized Baltimore</em>, which traces the boom and bust of the industrial communities of Baybrook and the Sparrows Point Steel Mill. Each day at <span><span>9am</span></span>, the stories and memories of community members are threaded together to explore the industrial history and deindustrialized present of each area, how various industries shaped the lives of countless residents and former workers, including their stories of struggle and hardship, and how a sustainable future for these areas can be forged. </span><div><span><br></span></div>
    <div><span>Teaming up with the Center for Emerging Media, the series is produced by students at the University of Maryland, Baltimore County (UMBC) as part of the larger Post-industrial Places Project (PIPP), which seeks to examine the processes and impacts of deindustrialization in the greater Baltimore region, led by UMBC Professors Steve Bradley (Visual Arts), Bill Shewbridge (Media and Communication Studies), Nicole King (American Studies), and Michelle Stefano (American Studies and Maryland Traditions, the folklife program of the Maryland State Arts Council). The project is supported by funding from the BreakingGround initiative at UMBC.</span></div>
    </div>
    </div>
]]>
</Body>
<Summary>UPDATE - An archive of this broadcast is now available here.           Tune in to the Marc Steiner Show on WEAA 88.9 FM from Monday, May 12th through Friday, May 17th for the special series,...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44432/guest@my.umbc.edu/d490799ce1adff01fc47023eaa99ca2a/api/pixel</TrackingUrl>
<Group token="millstories">Mill Stories</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/millstories</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/xsmall.png?1368367350</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/original.gif?1368367350</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/xxlarge.png?1368367350</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/xlarge.png?1368367350</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/large.png?1368367350</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/medium.png?1368367350</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/small.png?1368367350</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/xsmall.png?1368367350</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/555/b12131e87c87b7c13a36825bdc4abe77/xxsmall.png?1368367350</AvatarUrl>
<Sponsor>Mill Stories</Sponsor>
<PawCount>19</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 14:37:15 -0400</PostedAt>
<EditAt>Fri, 12 Sep 2014 16:35:02 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="44431" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44431">
<Title>Part-Time Jobs</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The following part-time positions have been posted within the past week to UMBCworks. Login to your account (via the link in the Jobs &amp; Internships topic in myUMBC) and find details and application instructions as well as hundreds of other job postings!</p>
    <p>9264569 - Android App Developer - Banana Bones<br>9265823 - Cycling Instructor - YMCA of Central Maryland<br>9263667 - Freelance Motion Graphics/Videographer - Galley Creative Group<br>9265753 - Market Research Recruiter - Observation Baltimore<br>9264959 - Mobile Crisis Social Worker - Way Station, Inc.<br><br><br><br></p>
    <p><br></p>
    <p><br><br><br><br></p>
    <p><br></p>
    <p><br></p>
    <p><br></p>
    <p><br></p>
    </div>
]]>
</Body>
<Summary>The following part-time positions have been posted within the past week to UMBCworks. Login to your account (via the link in the Jobs &amp; Internships topic in myUMBC) and find details and...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44431/guest@my.umbc.edu/43bf54e9ba3ee5d9e76f1284437cb8cc/api/pixel</TrackingUrl>
<Tag>featured-jobs</Tag>
<Tag>jobs</Tag>
<Tag>part-time</Tag>
<Group token="careers">Career Center</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/careers</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/xsmall.png?1411655278</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/original.jpg?1411655278</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/xxlarge.png?1411655278</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/xlarge.png?1411655278</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/large.png?1411655278</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/medium.png?1411655278</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/small.png?1411655278</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/xsmall.png?1411655278</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/018/729f2c7eeeab66f50f4ab3677539a585/xxsmall.png?1411655278</AvatarUrl>
<Sponsor>Career Services Center</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/xxlarge.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/xlarge.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/large.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/medium.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/small.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/xsmall.jpg?1399930402</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/044/431/30acddb708f8bb9b4e5bf65bdee6ecc8/xxsmall.jpg?1399930402</ThumbnailUrl>
<PawCount>1</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 14:35:12 -0400</PostedAt>
<EditAt>Mon, 12 May 2014 17:34:23 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="44429" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44429">
<Title>Don't Forget to Cover Your Client Side!</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>By making sure that your application is tested, you are able to reduce the amount of bugs you find in your code, increase the maintainability of your application, and design well structured code. </p>
    <p>Client side unit testing presents different challenges than server side testing. When dealing with client side code, you will find yourself struggling to separate application logic from DOM logic, as well as just structuring JavaScript code in general. Fortunately there are a lot of great client side testing libraries out there to help test your code, create metrics about the test coverage, as well as analyze the complexity of it.</p>
    
    <hr>
    <h2>Why Test at All?</h2>
    <p>First of all, unit testing in general is a way to reduce bugs by ensuring that your application functions as it's supposed to. Beyond that though, are the notions of Test Driven Development (TDD) and Behavior Driven Development (BDD).</p>
    
    <p>These two unit testing strategies will help you design your application by writing tests <em>before</em> you write your application logic. By writing the tests before you write the code, you're giving yourself the opportunity to think through the design of your application.</p>
    
    <p>This happens because when you're writing tests, you're basically trying to design the API for how you interact with your code, so you therefore get better insight into its design. Testing first will quickly show you any flaws you have in your design because you're writing test code that essentially uses the code you're writing!</p>
    
    <blockquote>
    <p>TDD is a code discovery process</p>
    </blockquote>
    
    <p>You'll learn that TDD helps you discover your code as you're writing it. TDD is summed up very quickly as "Red, Green, Refactor". What this means is, you write a test, write enough code to make the test <em>fail</em> first. <em>Then</em>, you write the code that makes your test pass. After that, you think through what you just wrote and refactor it. Nice and easy.</p>
    
    <p>BDD is a slightly different take on TDD and is based more on business requirements and specifications.</p>
    
    <hr>
    <h2>Client Side Testing</h2>
    <p>There are many reasons that you should be testing your client side code. As mentioned before, it will help reduce bugs, and help you design your application. Client side testing is also important because it gives you a chance to test your front end code, in isolation, away from your presentation. In other words, one of its advantages is you get to test your JavaScript code without actually spinning up an application server. You simply run the tests and make sure things function without clicking around and testing things. In many cases, you don't even have to have internet access, as long as your tests are set up correctly.</p>
    
    <p>With JavaScript taking such an important role in modern web development, it's important to learn how to test code and reduce the chances of bugs making their way into production code. Your boss doesn't like it when that happens and neither should you! In fact, a good place to get started working with client side testing is to write tests around a bug report. This will allow you to get practice writing tests when you don't have a place to start from scratch.</p>
    
    <p>Another reason to test your client side code is that once a suite of tests exists and has decent coverage over your code, when you get ready to go and add new features to your code, you'll be able to add the new feature, re-run your tests, and make sure you didn't regress and break any existing features.</p>
    
    <hr>
    <h2>Getting Started</h2>
    <p>Getting started with client side testing can be daunting if you've never done it before. One of the hardest parts about client side testing is figuring out the best way to isolate the DOM from your application's logic. That often means you'll need some sort of abstraction over the DOM. The easiest way to achieve this is through a client side framework such as Knockout.js, Backbone.js, or Angular.js, to name just a few.</p>
    
    <p>When using a library such as these, you get to think less about how your page renders in the browser and more about the features of your application. It's not like it's impossible to unit test with just plain JavaScript though. In that case, your life will be much easier if you design the code in such a way that the DOM can easily be abstracted.</p>
    
    <h3>Choose a Testing Library</h3>
    <p>There are a lot of different testing libraries to choose from, although the three front runners tend to be <a href="http://qunitjs.com" rel="nofollow external" class="bo">QUnit</a>, <a rel="nofollow external" class="bo">Mocha</a>, and <a href="http://jasmine.github.io/" rel="nofollow external" class="bo">Jasmine</a>.  </p>
    
    <p>Jasmine and Mocha are both from the BDD school of unit testing, whereas QUnit is just a unit testing framework of its own.</p>
    
    <p>For the rest of this post, we'll explore using QUnit as its barrier to entry in client side testing is very low. Check out this <a href="http://code.tutsplus.com/tutorials/how-to-test-your-javascript-code-with-qunit--net-9077" rel="nofollow external" class="bo">detailed intro to QUnit</a> for more information.</p>
    
    <h3>TDD Your Code With QUnit</h3>
    <p>Getting started with QUnit is extremely simple. The following HTML is all you need:</p>
    <pre>&lt;!DOCTYPE html&gt;&#x000A;    &lt;html&gt;&#x000A;    &lt;head&gt;&#x000A;        &lt;meta charset="utf-8"&gt;&#x000A;        &lt;title&gt;QUnit Example&lt;/title&gt;&#x000A;        &lt;link rel="stylesheet" href="qunit.css"&gt;&#x000A;    &lt;/head&gt;&#x000A;    &lt;body&gt;&#x000A;        &lt;div id="qunit"&gt;&lt;/div&gt;&#x000A;        &lt;div id="qunit-fixture"&gt;&lt;/div&gt;&#x000A;        &lt;script src="qunit.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="../app/yourSourceCode.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="tests.js"&gt;&lt;/script&gt;&#x000A;    &lt;/body&gt;&#x000A;    &lt;/html&gt;</pre>
    <p>For the next few examples, let's assume that we're building a small widget that you input a zip code into a text box and it returns the corresponding city, state, and county values using <a href="http://geonames.org" rel="nofollow external" class="bo">Geonames</a>. It'll show only a zip code at first, but as soon as the zip code has five characters it'll retrieve the data from Geonames. If it is able to find data, it will show a few more fields containing the resulting city, state, and county information. We'll also be using <a href="http://knockoutjs.com/" rel="nofollow external" class="bo">Knockout.js</a>. The first step is to write a failing test.</p>
    
    <p>Thinking through the design slightly before the first test is written, there probably needs to be at least two viewModels, so that will be a good starting point. To start off, we'll define a QUnit Module and our first test:</p>
    <pre>module("zip code retriever");&#x000A;    test("view models should exist", function() {&#x000A;        ok(FormViewModel, "A viewModel for our form should exist");&#x000A;        ok(AddressViewModel, "A viewModel for our address should exist");&#x000A;    });</pre>
    <p>If you run this test, it will fail, now you can go write the code to make it pass:</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/qunit-first-fail.jpg" style="max-width: 100%; height: auto;">
    
    <div><br></div>
    <pre>var AddressViewModel = function(options) {&#x000A;    &#x000A;    };&#x000A;    &#x000A;    var FormViewModel = function() {&#x000A;        this.address = new AddressViewModel();&#x000A;    };</pre>
    <p>You'll see green rather than red this time. Tests like this seem a bit silly at first, but they are useful in that they force you to at least think through some of the early stages of your design.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/qunit-first-pass.jpg" style="max-width: 100%; height: auto;">
    
    <p>The next test we will write will work on the <code>AddressViewModel</code>'s functionality. We know from the specification of this widget that the other fields should be hidden at first, until the data is found for the zip code.</p>
    <pre>module("address view model");&#x000A;    test("should show city state data if a zip code is found", function() {&#x000A;        var address = new AddressViewModel();&#x000A;    &#x000A;        ok(!address.isLocated());&#x000A;    &#x000A;        address.zip(12345);&#x000A;        address.city("foo");&#x000A;        address.state("bar");&#x000A;        address.county("bam");&#x000A;    &#x000A;        ok(address.isLocated());&#x000A;    });</pre>
    <p>None of the code for this has been written yet, but the idea here is that the <code>isLocated</code> will be a computed observable, that returns <code>true</code> only when the zip, city, state, and county are all truthy. So, this test will of course fail at first, now let's write the code to make it pass.</p>
    <pre>var AddressViewModel = function(options) {&#x000A;        options = options || {};&#x000A;    &#x000A;        this.zip = ko.observable(options.zip);&#x000A;        this.city = ko.observable(options.city);&#x000A;        this.state = ko.observable(options.state);&#x000A;        this.county = ko.observable(options.county);&#x000A;    &#x000A;        this.isLocated = ko.computed(function() {&#x000A;            return this.city() &amp;&amp; this.state() &amp;&amp; this.county() &amp;&amp; this.zip();&#x000A;        }, this);&#x000A;    &#x000A;        this.initialize();&#x000A;    };</pre>
    <p>Now if you run the tests again, you'll see green!</p>
    
    <p>This is, at its most basic, how you can use TDD to write front end tests. Ideally, after each failing test, you'd write the simplest code that will make the test pass and then go back and refactor the code. You can learn a lot more about TDD practices though, so I suggest reading up and studying it further, but the previous examples are enough to get your mind thinking about writing tests first.</p>
    
    <h3>Mocking Dependencies With Sinon.js</h3>
    <p><a href="http://sinonjs.org" rel="nofollow external" class="bo">Sinon.js</a> is a JavaScript library that provides the ability to spy, stub, and mock JavaScript objects. When writing unit tests you want to make sure that you are able to test only a given "unit" of code. This oftentimes means you'll have to do some sort of mocking or stubbing of dependencies to isolate the code being tested.</p>
    
    <p>Sinon has an extremely simple API for doing this. The Geonames API supports retrieving data via a JSONP endpoint, which means we'll be able to easily use <code>$.ajax</code>.</p>
    
    <p>Ideally though, you won't have to depend on the Geonames API in your tests. They could be down temporarily, your internet may die, and it also is just slower to actually make the ajax call. Sinon to the rescue.</p>
    <pre>test("should only try to get data if there's 5 chars", function() {&#x000A;        var address = new AddressViewModel();&#x000A;    &#x000A;        sinon.stub(jQuery, "ajax").returns({&#x000A;            done: $.noop&#x000A;        });&#x000A;    &#x000A;        address.zip(1234);&#x000A;    &#x000A;        ok(!jQuery.ajax.calledOnce);&#x000A;    &#x000A;        address.zip(12345);&#x000A;    &#x000A;        ok(jQuery.ajax.calledOnce);&#x000A;    &#x000A;        jQuery.ajax.restore();&#x000A;    });</pre>
    <p>Here in this test, we're doing a few things. First of all, the <code>sinon.stub</code> function is actually going to proxy over <code>jQuery.ajax</code> and add the ability to see how many times it has been called, and many other assertions. As the test reads, "<strong>should only try to get data if there's 5 chars</strong>", we are going to assume that when the address is set to just "<code>1234</code>", that no ajax call has been made yet, then set it to "<code>12345</code>", and by that point an ajax call should be made.</p>
    
    <p>We then need to restore <code>jQuery.ajax</code> to its original state, because we are good citizens of unit testing and want to keep our tests atomic. Keeping your tests atomic is important to ensure that one test does not depend on another test, and there's no shared state between tests. They can then be ran in any order as well.</p>
    
    <p>Now that the test is written, we can run it, watch it fail, and then write the code that performs the ajax request to Geonames.</p>
    <pre>AddressViewModel.prototype.initialize = function() {&#x000A;        this.zip.subscribe(this.zipChanged, this);&#x000A;    };&#x000A;    &#x000A;    AddressViewModel.prototype.zipChanged = function(value) {&#x000A;        if (value.toString().length === 5) {&#x000A;            this.fetch(value);&#x000A;        }&#x000A;    };&#x000A;    &#x000A;    AddressViewModel.prototype.fetch = function(zip) {&#x000A;        var baseUrl = "<a href="http://www.geonames.org/postalCodeLookupJSON">http://www.geonames.org/postalCodeLookupJSON</a>"&#x000A;    &#x000A;        $.ajax({&#x000A;            url: baseUrl,&#x000A;            data: {&#x000A;                "postalcode": zip,&#x000A;                "country": "us"&#x000A;            },&#x000A;            type: "GET",&#x000A;            dataType: "JSONP"&#x000A;        }).done(this.fetched.bind(this));&#x000A;    };</pre>
    <p>Here we are subscribing to changes of the zip code. Whenever it changes, the <code>zipChanged</code> method will be called. The <code>zipChanged</code> method will check to see if the length of the value of the zip is <code>5</code>. When it reaches <code>5</code>, the <code>fetch</code> method will be called. Here is where the Sinon stub comes in to play. At this point, <code>$.ajax</code> is actually a Sinon stub. So <code>calledOnce</code> will then be <code>true</code> in the test.</p>
    
    <p>The final test we'll write is for when the data comes back from the Geonames service:</p>
    <pre>test("should set city info based off search result", function() {&#x000A;        var address = new AddressViewModel();&#x000A;    &#x000A;        address.fetched({&#x000A;            postalcodes: [{&#x000A;                adminCode1: "foo",&#x000A;                adminName2: "bar",&#x000A;                placeName: "bam"&#x000A;            }]&#x000A;        });&#x000A;    &#x000A;        equal(address.city(), "bam");&#x000A;        equal(address.state(), "foo");&#x000A;        equal(address.county(), "bar");&#x000A;    });</pre>
    <p>This test will test how the data from the server gets set onto the <code>AddressViewmodel</code>. Run it, see some red. Now make it green:</p>
    <pre>AddressViewModel.prototype.fetched = function(data) {&#x000A;        var cityInfo;&#x000A;    &#x000A;        if (data.postalcodes &amp;&amp; data.postalcodes.length === 1) {&#x000A;            cityInfo = data.postalcodes[0];&#x000A;    &#x000A;            this.city(cityInfo.placeName);&#x000A;            this.state(cityInfo.adminCode1);&#x000A;            this.county(cityInfo.adminName2);&#x000A;        }&#x000A;    };</pre>
    <p>The fetched method just makes sure there is an array of <code>postalcodes</code> in the data from the server, and then sets the corresponding properties on the <code>viewModel</code>.</p>
    
    <p>See how easy this is now? Once you get the flow of doing this down, you'll find yourself hardly ever wanting to <em>not</em> TDD again. You end up with nice small functions that are testable. You force yourself into thinking about how your code interacts with its dependencies. And now you have a suite of tests to run when some other new requirement is added to the code. Even if you miss something and there is a bug in the code, you are now able to simply add a new test to the suite, to prove that you've fixed the bug! It actually ends up being kind of addicting.</p>
    
    <hr>
    <h2>Test Coverage</h2>
    <p>Test coverage provides an easy way to evaluate how much of your code has been tested by a unit test. It's often hard and not worth it to reach 100% coverage, but do what you can to get it as high as possible.</p>
    
    <p>One of the newer and easier coverage libraries is called <a href="http://blanketjs.org/" rel="nofollow external" class="bo">Blanket.js</a>. Using it with QUnit is dead simple. Simply grab the code right off of their homepage or install it with <a href="http://bower.io/" rel="nofollow external" class="bo">Bower</a>. Then add blanket as a library in the bottom of your <code>qunit.html</code> file, and then add <code>data-cover</code> to all of the files you want coverage tests on.</p>
    <pre>    &lt;script src="../app/yourSourceCode.js" data-cover&gt;&lt;/script&gt;&#x000A;        &lt;script src="../js/lib/qunit/qunit/qunit.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="../js/lib/blanket/dist/qunit/blanket.js"&gt;&lt;/script&gt;&#x000A;        &lt;script src="tests.js"&gt;&lt;/script&gt;&#x000A;    &lt;/body&gt;</pre>
    <p>Done. Super easy, and now you'll get an option in your QUnit runner for showing coverage:</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/qunit-code-coverage.jpg" style="max-width: 100%; height: auto;">
    
    <p>In this example, you can see that the test coverage isn't quite 100%, but in this case since there's not much code, it'll be easy to bump it up. You can actually drill down and see the exact functions that haven't been covered yet:</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/qunit-functions-not-covered.jpg" style="max-width: 100%; height: auto;">
    
    <p>Here in this case, the <code>FormViewModel</code> was never instantiated in the tests and therefor is missing test coverage. You can then simply add a new test that creates an instance of the <code>FormViewModel</code>, and perhaps write an assertion that checks that the <code>address</code> property is present and is an <code>instanceOf</code> the <code>AddressViewModel</code>.</p>
    
    <p>You'll then get the pleasure of seeing 100% test coverage.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/qunit-hundred-percent-coverage.jpg" style="max-width: 100%; height: auto;">
    
    <hr>
    <h2>Complexity Tests</h2>
    <p>As your applications get larger and larger, it's nice to be able to run some static analysis on your JavaScript code. A great tool for running analysis on JavaScript is called <a href="https://github.com/es-analysis/plato" rel="nofollow external" class="bo">Plato</a>.</p>
    
    <p>You can run <code>plato</code> by installing it via <code>npm</code> with:</p>
    <pre>npm install -g plato</pre>
    <p>Then you can run <code>plato</code> on a directory of JavaScript code:</p>
    <pre>plato -r -d js/app reports</pre>
    <p>This will run Plato on all of the JavaScript located at "<code>js/app</code>" and output the results into <code>reports</code>. Plato runs all kind of metrics on your code, including average lines of code, a computed maintainability score, JSHint, difficult, estimated errors, and more.</p>
    <img alt="" src="https://s3.amazonaws.com/cms-assets.tutsplus.com/uploads/users/45/posts/21021/image/plato-metrics.jpg" style="max-width: 100%; height: auto;">
    
    <p>There is not a whole lot to see in that previous image, simply because for the code we've been working on, there's only one file, but when you get into working with a large application that has a lot of files and lines of code, you'll find the information it gives you extremely useful.</p>
    
    <p>It even keeps track of all of the times you've run it, so you can see how your statistics change over time.</p>
    
    <h2>Conclusion</h2>
    <p>While testing the client side seems like a difficult proposition, there are so many great tools to use these days to make it super easy. This article barely scratches the surface of all of the things out there nowadays to make client side testing easy. It can be a tedious task, but you'll find that in the end, the benefits of having a test suite and testable code far outweighs it. Hopefully with the steps outlined here, you'll be able to begin testing client side code quickly.</p>
    </div>
]]>
</Body>
<Summary>By making sure that your application is tested, you are able to reduce the amount of bugs you find in your code, increase the maintainability of your application, and design well structured code. ...</Summary>
<Website>http://code.tutsplus.com/tutorials/dont-forget-to-cover-your-client-side--cms-21021</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44429/guest@my.umbc.edu/009517cde3ccf578f368eb277fa0d4c3/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</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>Wed, 07 May 2014 13:30:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="44424" important="false" status="posted" url="https://my3.my.umbc.edu/posts/44424">
<Title>UMBC Bookstore News</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><strong><span>Selling Books for Cash</span></strong></p>
    
    <p><span>Spring 2014 Textbook Buyback
    takes place May 12-22 at UMBC Bookstore. Students may sell their books to the
    store for up to 50% of the new retail price and receive cash on the spot.</span><span>  </span><span>Buyback customers also receive a coupon for
    30% off all UMBC apparel and logo merchandise. </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=20447" rel="nofollow external" class="bo">Visit the Bookstore
    website</a><span> for details and times.</span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Rental Textbook Return Deadline: Wednesday, May 21 by
    4:00 p.m. </span></strong></p>
    
    <p><span>Spring 2014 textbooks not
    returned by the deadline will incur replacement fees billed to the student’s
    University Account, which may result in registration and housing holds if not
    paid on time. </span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Sales and Clearance Events </span></strong></p>
    
    <p><span>Save 20% off UMBC apparel and
    logo merchandise during the UMBC Bookstore End of Term Sale May 12-22. </span><span> </span><span>Sale valid in the store and </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=20442" rel="nofollow external" class="bo">online</a><span>. Visit the </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=22132" rel="nofollow external" class="bo">new <span>items</span> page</a><span>, and
    </span><span>brand new </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=20440" rel="nofollow external" class="bo">clearance
    section</a><span> of the UMBC Bookstore merchandise catalog. </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=22132" rel="nofollow external" class="bo">New merchandise</a><span> is
    added to the website weekly, such as the limited edition </span><a href="http://bookstore.umbc.edu/MerchDetail.aspx?MerchID=893204&amp;type=6#.U1_U7oFdV8E" rel="nofollow external" class="bo">Graduation
    Bear</a><span>, a perfect gift for your graduating senior. </span><span> </span><span>Another great gift sure to start a new grad
    off right is an </span><a href="http://bookstore.umbc.edu/MerchList.aspx?ID=12445" rel="nofollow external" class="bo">Apple
    iPad</a><span>.</span><span>  </span><a href="http://bookstore.umbc.edu/SiteText.aspx?id=20453#technology" rel="nofollow external" class="bo">Save up to
    $175</a><span> off certain <span>models while</span> supplies last.</span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Summer Session</span></strong></p>
    
    <p><span>Textbooks and course materials
    for summer session classes are now in stock and available for <strong>purchase, rent, or download</strong> in the
    store and <a href="http://bookstore.umbc.edu/SelectTermDept.aspx" rel="nofollow external" class="bo">online</a>.  Save money with our large selection of <span>used</span>,
    rental, and digital textbooks. </span></p>
    
    <p><span> </span></p>
    
    <p><strong><span>Student Employment</span></strong></p>
    
    <p><span>UMBC Bookstore and Yum Shoppe
    are hiring friendly, smart, and talented UMBC students <span>to work</span> as cashiers,
    receiving clerks, and technology sales associates. Working at the Bookstore is
    a fantastic opportunity for your student to gain job experience while
    developing new skills. Visit the <a href="http://bookstore.umbc.edu/StoreAbout.aspx#employment" rel="nofollow external" class="bo">jobs section of the
    Bookstore website</a> for details about how to apply. </span></p>
    </div>
]]>
</Body>
<Summary>Selling Books for Cash    Spring 2014 Textbook Buyback takes place May 12-22 at UMBC Bookstore. Students may sell their books to the store for up to 50% of the new retail price and receive cash on...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/44424/guest@my.umbc.edu/559032df94f4fb307d1dd67d3295f9ad/api/pixel</TrackingUrl>
<Group token="retired-420">UMBC Family Connection </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-420</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xsmall.png?1340914772</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/original.png?1340914772</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xxlarge.png?1340914772</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xlarge.png?1340914772</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/large.png?1340914772</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/medium.png?1340914772</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/small.png?1340914772</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xsmall.png?1340914772</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/420/30293457191c29e0d0d7a715d26041bd/xxsmall.png?1340914772</AvatarUrl>
<Sponsor>UMBC Family Connection</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 07 May 2014 13:18:08 -0400</PostedAt>
<EditAt>Thu, 08 May 2014 15:58:57 -0400</EditAt>
</NewsItem>

</News>
