<?xml version="1.0"?>
<News hasArchived="true" page="8826" pageCount="10714" pageSize="10" timestamp="Fri, 03 Jul 2026 17:23:35 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8826">
<NewsItem contentIssues="false" id="28008" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28008">
<Title>Men's Tennis Wraps Up Regular Season With 5-2 Victory at Temple</Title>
<Body>
<![CDATA[
    <div class="html-content">Philadelphia�The UMBC men's tennis team went into America East Tournament play on a high note, as the Retrievers finished the regular season with a 5-2 victory at Temple. Gaulthier Berret, Daniel Gray and Alex Drean each posted a pair of victories in the match.</div>
]]>
</Body>
<Summary>Philadelphia�The UMBC men's tennis team went into America East Tournament play on a high note, as the Retrievers finished the regular season with a 5-2 victory at Temple. Gaulthier Berret, Daniel...</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=7925</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28008/guest@my.umbc.edu/82a718876e8610e2ffda046c4589f85b/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 20 Apr 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="28005" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28005">
<Title>School Records and Event Victories Fuel Men's Track Win Morgan State Legacy Meet, Women Place 10th</Title>
<Body>
<![CDATA[
    <div class="html-content">BALTIMORE � Using school record performances and event victories, the UMBC men's track and field team took first place at the Morgan State Legacy Meet which concluded Saturday at Hughes Stadium.  The men scored a meet-best 122 points while Retriever women's squad finished tenth with 36 points.</div>
]]>
</Body>
<Summary>BALTIMORE � Using school record performances and event victories, the UMBC men's track and field team took first place at the Morgan State Legacy Meet which concluded Saturday at Hughes Stadium....</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=7923</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28005/guest@my.umbc.edu/ac1d7cb39f5cf8839538ef6293749c12/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 20 Apr 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="28006" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28006">
<Title>School Records and Event Victories Fuel Men's Track Win Morgan State Legacy Meet, Women Place 10th</Title>
<Body>
<![CDATA[
    <div class="html-content">BALTIMORE � Using school record performances and event victories, the UMBC men's track and field team took first place at the Morgan State Legacy Meet which concluded Saturday at Hughes Stadium.  The men scored a meet-best 122 points while Retriever women's squad finished tenth with 36 points.</div>
]]>
</Body>
<Summary>BALTIMORE � Using school record performances and event victories, the UMBC men's track and field team took first place at the Morgan State Legacy Meet which concluded Saturday at Hughes Stadium....</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=7924</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28006/guest@my.umbc.edu/03afef3d2bb9ce4714c74726383e5a47/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 20 Apr 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="28002" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28002">
<Title>Second Half Charge From UMBC Women's Lacrosse Halted By Vermont, 8-7</Title>
<Body>
<![CDATA[
    <div class="html-content">UMBC women's lacrosse junior midfielder Kristen Bilney (Ellicott City, Md./Mt. Hebron) ignited a second-half charge for the Retrievers, tallying points on three of UMBC's four-straight goals, but the go-ahead goal with 2:22 to go from Vermont's junior attacker Sydney Mas gave the Catamounts an 8-7 victory against the black and gold in Saturday afternoon's America East matchup at Virtue Field.</div>
]]>
</Body>
<Summary>UMBC women's lacrosse junior midfielder Kristen Bilney (Ellicott City, Md./Mt. Hebron) ignited a second-half charge for the Retrievers, tallying points on three of UMBC's four-straight goals, but...</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=7920</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28002/guest@my.umbc.edu/da325a996717ee4217f316b50bccc6a4/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 20 Apr 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="28004" important="false" status="posted" url="https://my3.my.umbc.edu/posts/28004">
<Title>Softball Drops Doubleheader to League Leader Albany</Title>
<Body>
<![CDATA[
    <div class="html-content">UMBC softball's freshman right fielder Danielle O'Neill (Loathian, Md./Southern) notched her 13th multi-hit game of the season, finishing the day 3-for-5 from the dish, but the Retrievers dropped both games in their Saturday afternoon America East doubleheader against Albany, falling 8-0 in five innings in both contests.</div>
]]>
</Body>
<Summary>UMBC softball's freshman right fielder Danielle O'Neill (Loathian, Md./Southern) notched her 13th multi-hit game of the season, finishing the day 3-for-5 from the dish, but the Retrievers dropped...</Summary>
<Website>http://www.umbcretrievers.com/release.asp?RELEASE_ID=7922</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/28004/guest@my.umbc.edu/ea49d80c2e0467fdd2d5d79ae0d7d24b/api/pixel</TrackingUrl>
<Group token="athletics">UMBC Athletics</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/athletics</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/original.jpg?1709304849</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xlarge.png?1709304849</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/large.png?1709304849</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/medium.png?1709304849</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/small.png?1709304849</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xsmall.png?1709304849</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/009/69595c9b99f609d75fbb8232d9bd73d3/xxsmall.png?1709304849</AvatarUrl>
<Sponsor>UMBC Athletics</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Sat, 20 Apr 2013 01:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123358" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123358">
<Title>Group Exhibition at Goucher College Features Visual Arts Faculty</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="/wp-content/uploads/2013/04/hydroflow.png" rel="nofollow external" class="bo"><img alt="Untitled (Iceburg 2), photography and digital montage, 2009, Calla Thompson" src="/wp-content/uploads/2013/04/hydroflow.png?w=300" width="300" height="209" style="max-width: 100%; height: auto;"></a><em>Untitled (Iceberg 2)</em>, photography and digital montage, 2009, Calla Thompson
    <p>A group exhibition at Goucher College’s Silber Gallery, <em>Hydroflow</em>, is displaying the work of ten artists including UMBC visual arts faculty, Eric Dyer, Lisa Moren and Calla Thompson.</p>
    <p><em>Hydroflow,</em> centered upon works <a href="http://www.goucher.edu/academics/art-and-art-history/galleries/silber-art-gallery/exhibits/hydroflow" rel="nofollow external" class="bo">“that explore the multifaceted aspects of water,”</a> opened April 9 and continues through May 19. A free artists’ reception will take place in the Silber, Friday, May 10 from 6 to 9 pm.</p>
    <p>Learn more about Dyer, Moren and Thompsons’ works in the exhibition, at Goucher College’s community news publication <a href="http://blogs.goucher.edu/intheloop/2922/hydroflow/" rel="nofollow external" class="bo"><em>In The Loop</em></a>.</p>
    </div>
]]>
</Body>
<Summary>Untitled (Iceberg 2), photography and digital montage, 2009, Calla Thompson  A group exhibition at Goucher College’s Silber Gallery, Hydroflow, is displaying the work of ten artists including UMBC...</Summary>
<Website>https://umbc.edu/stories/group-exhibition-at-goucher-college-features-visual-arts-faculty/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123358/guest@my.umbc.edu/e043ff8a78b4e50d0df3e18e3dc7455f/api/pixel</TrackingUrl>
<Tag>arts-and-culture</Tag>
<Tag>cahss</Tag>
<Tag>visualarts</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 19 Apr 2013 20:17:44 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123359" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123359">
<Title>A New Context Featured on WAMU Art Beat</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><a href="/wp-content/uploads/2013/04/thumb_body-language-4.jpg" rel="nofollow external" class="bo"><img alt="Thumb_Body Language 4" src="/wp-content/uploads/2013/04/thumb_body-language-4.jpg?w=150" width="150" height="108" style="max-width: 100%; height: auto;"></a>This month, the WAMU segment <em>Art Beat </em>with Lauren Landau, a daily update of arts and culture events in the D.C. area, highlighted the exhibition currently running in the Library Gallery, <em>A New Context: Photographs from the Baltimore Sun Revisited</em>.</p>
    <p>Listen at <a href="http://wamu.org/news/art_beat/13/04/08/art_beat_with_lauren_landau_april_8_2013" rel="nofollow external" class="bo">WAMU’s website</a>.</p>
    <p><a href="http://artscalendar.umbc.edu/2012/04/14/a-new-context-photographs-from-the-baltimore-sun-revisited/" rel="nofollow external" class="bo"><em>A New Context</em></a> is on display through Friday, May 31.</p>
    </div>
]]>
</Body>
<Summary>This month, the WAMU segment Art Beat with Lauren Landau, a daily update of arts and culture events in the D.C. area, highlighted the exhibition currently running in the Library Gallery, A New...</Summary>
<Website>https://umbc.edu/stories/a-new-context-featured-on-wamu-art-beat/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123359/guest@my.umbc.edu/4e63759dc86c3c8b5cd4ce25496ecc1e/api/pixel</TrackingUrl>
<Tag>arts-and-culture</Tag>
<Tag>cahss</Tag>
<Tag>visualarts</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 19 Apr 2013 18:14:54 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="123360" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123360">
<Title>Emmett &#8217;08 M.A., MAgS, in New Leadership Role at Erickson Living</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <img width="150" height="150" src="https://umbc.edu/wp-content/uploads/2013/04/chrisemmett-150x150.jpg" alt="" style="max-width: 100%; height: auto;"><p><a href="/wp-content/uploads/2013/04/chrisemmett.jpg" rel="nofollow external" class="bo"><img alt="chrisemmett" src="/wp-content/uploads/2013/04/chrisemmett.jpg?w=300" width="300" height="200" style="max-width: 100%; height: auto;"></a>Erickson Living has named Erickson School alumnus <strong>Christopher J. Emmett ’08, M.A. management, aging studies</strong>, regional vice president of operations. In his new leadership position, he will oversee the company’s campus operations in New Jersey, Pennsylvania, Massachusetts, Michigan and Kansas.</p>
    <p>According to <a href="http://seniorhousingnews.com/2013/04/18/movers-shakers-people-and-positions-for-april/" rel="nofollow external" class="bo">Senior Housing News.com</a>:</p>
    <p>“Emmett began his career with Erickson Living in 1996. He has held several management positions with the company, which reflect his superior leadership skills and expertise in healthcare and strategic management.</p>
    <p>For the past eight years, he has served as the executive director at Highland Springs, in Dallas, Tex. Other career positions with Erickson Living include: senior administrator, administrator, and assistant administrator of the continuing care neighborhood at Oak Crest, in Parkville, Md; and, assistant administrator, assisted living administrator, special projects manager and health services business manager at Charlestown in Catonsville, Md.</p>
    <p>Emmett holds a graduate degree in aging studies from the University of Maryland, Baltimore County and an undergraduate degree in business from Towson University, Md. He is a licensed Maryland nursing home administrator and currently serves on the board of LeadingAge Texas.”</p>
    </div>
]]>
</Body>
<Summary>Erickson Living has named Erickson School alumnus Christopher J. Emmett ’08, M.A. management, aging studies, regional vice president of operations. In his new leadership position, he will oversee...</Summary>
<Website>https://umbc.edu/stories/emmett-08-m-a-mags-new-vp-at-erickson-living/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123360/guest@my.umbc.edu/6f7cced6e5c37c4dc508ceaf3e3cd918/api/pixel</TrackingUrl>
<Tag>alumni</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 19 Apr 2013 17:54:16 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27989" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27989">
<Title>Writing a Shell Script From Scratch</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31426&amp;c=409910356" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31426&amp;c=409910356" alt="" style="max-width: 100%; height: auto;"></a><p>Writing shell scripts can be rather daunting, primarily because the shell isn't the most friendly of languages to use. However, I hope to show you in this tutorial that shell scripting is actually not as tough or as scary as you might expect.</p>
    <p></p>
    <p>For this tutorial, we'll write a script that makes the process of using the <a href="http://pivotal.github.com/jasmine/" rel="nofollow external" class="bo">Jasmine test framework</a> a little bit easier. Actually, I wouldn't use this script today; I would use <a href="http://gruntjs.com/" rel="nofollow external" class="bo">Grunt.js</a> or something similar. However, I wrote this script before Grunt was around, and I found that writing it proved to be an excellent way to get more comfortable with shell scripting, so that's why we're using it.</p>
    <blockquote><p>One note: this tutorial is loosely associated with my upcoming <a href="http://tutsplus.com" rel="nofollow external" class="bo">Tuts+ Premium</a> course,  "Advanced Command Line Techniques." To learn more about pretty much anything in this tutorial, stay tuned for that course’s release. Hereafter in this tutorial, it will be referred to as "the course."</p></blockquote>
    <p>So, our script, which I call <code>jazz</code>, will have four main features:</p>
    <ul>
    <li>It will download Jasmine from the web, unzip it, and delete the sample code.</li>
    <li>It will create JavaScript files and their associated spec files, and pre-fill them with a bit of template code.</li>
    <li>It will open the tests in the browser.</li>
    <li>It will display the help text, which outlines the above.</li>
    </ul>
    <p>Let's begin with the script file.</p>
    <hr>
    <h2>
    <span>Step 1 -</span> Creating the File</h2>
    <p>Writing a shell script is only useful if you can use it from the terminal; to be able to use your custom scripts on the terminal, you need to put them in a folder that is in your terminal's <code>PATH</code> variable (you can see your <code>PATH</code> variable by running <code>echo $PATH</code>). I've created a <code>~/bin</code> folder (where <code>~</code> is the home directory) on my computer, and that's where I like to keep custom scripts (if you do the same, you'll have to add it to your path). So, just create a file, called <code>jazz</code>, and put it in your folder.</p>
    <p>Of course, we'll also have to make that file executable; otherwise, we won't be able to run it. We can do this by running the following command:</p>
    <pre>    chmod +x jazz&#x000A;    </pre>
    <p>Now that we can actually execute the script, let's add a very important part. All shell scripts should begin with a <a href="https://en.wikipedia.org/wiki/Shebang_(Unix" rel="nofollow external" class="bo">shebang</a>). As Wikipedia says, this should be the first line of the script; it states what interpreter, or shell, this script should be run with. We're just going to use a basic, standard shell:</p>
    <pre>    #!/bin/sh&#x000A;    </pre>
    <p>All right, with all that set up, we're ready to start writing the actual code.</p>
    <hr>
    <h2>
    <span> Step 2 – </span> Outlining the Script Flow</h2>
    <p>Earlier, I pointed out what the different features of our shell script should be. But how will the script know which feature to run? We'll use a combination of a shell parameter and a case statement. When running the script from the command line, we'll use a sub-command, like this:</p>
    <pre>    jazz init&#x000A;        jazz create SomeFile&#x000A;        jazz run&#x000A;        jazz help&#x000A;    </pre>
    <p>This should look familiar, especially if you've used Git:</p>
    <pre>    git init&#x000A;        git status&#x000A;        git commit&#x000A;    </pre>
    <p>Based on that first parameter (<code>init</code>, <code>create</code>, <code>run</code>, <code>help</code>), our case statement will decide what to run. However, we do need a default case: what happens if no first parameter is given, or we get an unrecognized first parameter? In those cases, we'll show the help text. So, let's get started!</p>
    <hr>
    <h2>
    <span> Step 3 – </span> Writing the Help Text</h2>
    <p>We begin with the <code>if</code> statement that checks for our first parameter:</p>
    <pre>    if [ $1 ]&#x000A;        then&#x000A;            # do stuff &#x000A;        else&#x000A;            # show help&#x000A;        fi&#x000A;    </pre>
    <p>You might be a little confused at first, because a shell <code>if</code> statement is pretty different from a "regular" programming language's <code>if</code> statement. To get a better understanding of it, watch the screencast on conditional statements in the course. This code checks for the presence of a first parameter (<code>$1</code>); if it's there, we'll execute the <code>then</code> code; <code>else</code>, we'll show the help text.</p>
    <p>It's a good idea to wrap the printing of the help text in a function, because we need to call it more than once. We do need to define the function before it is called, so we'll put it at the top. I like this, because now, as soon as I open the file, I see the documentation for the script, which can be a helpful reminder when returning to code you haven't seen in a while. Without further ado, here's the <code>help</code> function:</p>
    <pre>    function help () {&#x000A;            echo "jazz - A simple script that makes using the Jasmine testing framework in a standalone project a little simpler."&#x000A;            echo "&#x000A;            echo "    jazz init                  - include jasmine in the project";&#x000A;            echo "    jazz create FunctionName   - creates ./src/FunctionName.js ./spec/FunctionNameSpec.js";&#x000A;            echo "    jazz run                   - runs tests in browser";&#x000A;        }&#x000A;    </pre>
    <p>Now, just replace that <code># show help</code> function with a call to the <code>help</code> function.</p>
    <pre>    else&#x000A;            help&#x000A;        fi&#x000A;    </pre>
    <hr>
    <h2>
    <span> Step 4 – </span> Writing the Case Statement</h2>
    <p>If there is a first parameter, we need to figure out which it is. For this, we use a <code>case</code> statement:</p>
    <pre>	case "$1" in&#x000A;    		init)&#x000A;    		&#x000A;    		;;&#x000A;    		create)&#x000A;    		&#x000A;    		;;&#x000A;    		run)&#x000A;    		&#x000A;    		;;&#x000A;    		*)&#x000A;    			help&#x000A;    		;;&#x000A;    	esac&#x000A;    </pre>
    <p>We pass the first parameter to the <code>case</code> statement; then, it should match one of four things: "init", "create", "run", or our wildcard, default case. Notice that we don't have an explicit "help" case: that's just our default case. This works, because anything other than "init", "create", and "run" aren't commands we recognize, so it should get the help text.</p>
    <p>Now we're ready to write the functional code, and we'll start with <code>jazz init</code>.</p>
    <hr>
    <h2>
    <span> Step 5 – </span> Preparing Jasmine with <code>jazz init</code>
    </h2>
    <p>All the code we write here will go within our <code>init)</code> case, from the case statement above. The first step is to actually download the standalone version of Jasmine, which comes in a zip file:</p>
    <pre>    echo "Downloading Jasmine ..."&#x000A;        curl -sO $JASMINE_LINK&#x000A;    </pre>
    <p>We first echo a little message, and then we use <code>curl</code> to download the zip. The <code>s</code> flag makes it silent (no output) and the <code>O</code> flag saves the contents of the zip to a file (otherwise, it would pipe it to standard out). But what's with that <code>$JASMINE_LINK</code> variable? Well, you could put the actual link to the zip file there, but I prefer to put it in a variable for two reasons: first, it keeps us from repeating part of the path, as you'll see in a minute. Second, with that variable near the top of the file, it makes it easy to change the version of Jasmine we're using: just change that one variable. Here's that variable declaration (I put it outside the <code>if</code> statement, near the top):</p>
    <pre>    JASMIME_LINK="<a href="http://cloud.github.com/downloads/pivotal/jasmine/jasmine-standalone-1.3.1.zip">http://cloud.github.com/downloads/pivotal/jasmine/jasmine-standalone-1.3.1.zip</a>"&#x000A;    </pre>
    <p>Remember, no spaces around the equals-sign in that line.</p>
    <p>Now that we have our zip file, we can unzip it and prepare the contents:</p>
    <pre>    unzip -q &lt;code&gt;basename $JASMINE_LINK&lt;/code&gt;&#x000A;        rm -rf &lt;code&gt;basename $JASMINE_LINK&lt;/code&gt; src/*.js spec/*.js&#x000A;    </pre>
    <p>In two of these lines, we're using <code>basename $JASMINE_LINK</code>; the <code>basename</code> command just reduces a path to the base name: so <code>path/to/file.zip</code> becomes just <code>file.zip</code>. This allows us to use that <code>$JASMINE_LINK</code> variable to reference our local zip file.</p>
    <p>After we unzip, we'll delete that zip file, as well as all the JavaScript files in the <code>src</code> and <code>spec</code> directories. These are the sample files that Jasmine comes with, and we don't need them.</p>
    <p>Next, we have a Mac-only issue to deal with. By default, when you download something from the internet on a Mac, when you try to run it for the first time, you'll be asked to confirm that you want to run it. This is because of the extended attribute <code>com.apple.quarantine</code> that Apple puts on the file. We need to remove this attribute.</p>
    <pre>    if which xattr &gt; /dev/null &amp;&amp; [ "&lt;code&gt;xattr SpecRunner.html&lt;/code&gt;" = "com.apple.quarantine" ]&#x000A;        then&#x000A;            xattr -d com.apple.quarantine SpecRunner.html&#x000A;        fi&#x000A;    </pre>
    <p>We begin by checking for the presence of the <code>xattr</code> command, because it doesn't exist on some Unix systems (I'm not sure, but it may be a Mac-only program). If you watched the course screencast on conditionals, you'll know that we can pass any command to <code>if</code>; if it has an exit status of anything but <code>0</code>, it's false. If <code>which</code> finds the <code>xattr</code> command, it will exit with <code>0</code>; otherwise, it will exit with <code>1</code>. In either case, <code>which</code> will display some output; we can keep that from showing by redirecting it to <code>/dev/null</code> (this is a <a href="https://en.wikipedia.org/wiki//dev/null" rel="nofollow external" class="bo">special file</a> that discards all data written to it).</p>
    <p>That double ampersand is an boolean AND; it's there for the second condition we want to check. That is, does the <code>SpecRunner.html</code> have that attribute? We can simply run the <code>xattr</code> command on the file, and compare it's output to the string we're expecting. (We can't just expect the file to have the attribute, because you can actually turn this feature off in Mac OS X, and we'll get an error when trying to remove it if the file doesn't have the attribute).</p>
    <p>So, if <code>xattr</code> is found and the file has the attribute, we'll remove it, with the <code>d</code> (for delete) flag. Pretty straightforward, right?</p>
    <p>The final step is to edit <code>SpecRunner.html</code>. Currently, it contains scripts tags for the sample JavaScript files that we deleted; we should also delete those scripts tags. I happen to know that those script tags span lines 12 to 18 in the files. So, we can use the stream editor <code>sed</code> to delete those lines:</p>
    <pre>    sed -i "" '12,18d' SpecRunner.html&#x000A;        echo "Jasmine initialized!"&#x000A;    </pre>
    <p>The <code>i</code> flag tells <code>sed</code> to edit the file in place, or to save the output from the command to the same file we passed in; the empty string after the flag means that we don't want <code>sed</code> to back up the file for us; if you wanted that, you could just put a file extension in that string (like <code>.bak</code>, to get <code>SpecRunner.html.bak</code>).</p>
    <p>Finally, we'll let the user know that Jasmine has been initialized. And that's it for our <code>jazz init</code> command.</p>
    <hr>
    <h2>
    <span> Step 6 – </span> Creating Files with <code>jazz create</code>
    </h2>
    <p>Next up, we're going to let our users create JavaScript files and their associated spec files. This portion of the code will go in the “create" section of the <code>case</code> statement we wrote earlier.</p>
    <pre>    if [ $2 ]&#x000A;        then&#x000A;            # create files&#x000A;        else&#x000A;            echo "please include a name for the file"&#x000A;        fi&#x000A;    </pre>
    <p>When using <code>jazz create</code>, we need to include a name for the file as the second parameter: <code>jazz create View</code>, for example. We'll use this to create <code>src/View.js</code> and <code>spec/ViewSpec.js</code>. So, if there isn't a second parameter, we'll remind the user to add one.</p>
    <p>If there is a file name, we'll start by creating those two files (inside the <code>then</code> part above):</p>
    <pre>    echo "function $2 () {\n\n}" &gt; src/$2.js&#x000A;        echo "describe('$2', function () {\n\n});" &gt; spec/$2Spec.js&#x000A;    </pre>
    <p>Of course, you can put whatever you want into your <code>src</code> file. I'm doing something basic here; so <code>jazz create View</code> will create <code>src/View.js</code> with this:</p>
    <pre>function View () {&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>You could replace that first <code>echo</code> line with this:</p>
    <pre>    echo "var $2 = (function () {\n\tvar $2Prototype = {\n\n\t};\n\n\treturn {\n\t\tcreate : function (attrs) {\n\t\t\tvar o = Object.create($2Prototype);\n\t\t\textend(o, attrs);\n\t\t\treturn o;\n\t\t}\n \t};\n}());" &gt; src/$2.js&#x000A;    </pre>
    <p>And then <code>jazz create View</code> will result in this:</p>
    <pre>    var View = (function () {&#x000A;            var ViewPrototype = {&#x000A;            &#x000A;            };&#x000A;        &#x000A;            return {&#x000A;                create : function (attrs) {&#x000A;                    var o = Object.create(ViewPrototype);&#x000A;                    extend(o, attrs);&#x000A;                    return o;&#x000A;                }&#x000A;            };&#x000A;        }());&#x000A;    </pre>
    <p>So, really, your imagination is the limit. Of course, you'll want the spec file to be the standard Jasmine spec code, which is what I have above; but you can tweak that however you like as well.</p>
    <p>The next step is to add the script tags for these files to <code>SpecRunner.html</code>. At first, this might seem tricky: how can we add lines to the middle of a file programmatically? Once again, it's <code>sed</code> that does the job.</p>
    <pre>    sed -i "" "11a\\&#x000A;        &lt;script src='src/$2.js'&gt;&lt;/script&gt;\\&#x000A;        &lt;script src='spec/$2Spec.js'&gt;&lt;/script&gt;&#x000A;        " SpecRunner.html&#x000A;    </pre>
    <p>We start just like we did before: in-place edit without a backup. Then our command: at line 11, we want to append the two following lines. It's important to escape the two new-lines, so that they'll appear in the text. As you can see, this just inserts those two scripts tags, exactly what we need for this step.</p>
    <p>We can end with some output:</p>
    <pre>    echo "Created:"&#x000A;        echo "\t- src/$2.js"&#x000A;        echo "\t- spec/$2Spec.js"&#x000A;        echo "Edited:"&#x000A;        echo "\t- SpecRunner.html"&#x000A;    </pre>
    <p>And that's <code>jazz create</code>!</p>
    <hr>
    <h2>
    <span> Step 7 – </span> Running the Specs with <code>jazz run</code>
    </h2>
    <p>The last step is to actually run the tests. This means opening the <code>SpecRunner.html</code> file in a browser. There's a bit of a caveat here. On Mac OS X, we can use the <code>open</code> command to open a file in it's default program; this won't work on any other OS, but that's the way I do it here. Unfortunately, there's no real cross-platform way to do this, that I know of. If you're using this script under Cygwin on Windows, you can use <code>cygstart</code> in place of <code>open</code>; otherwise, try googling "[your OS] shell script open browser" and see what you come up with. Unfortunately, some versions of Linux (at least Ubuntu, in my experience) have an <code>open</code> command that's for something completely different. All this to say, your mileage with the following may vary.</p>
    <pre>if [ "`which open`" = '/usr/bin/open' ] &#x000A;    then&#x000A;        open SpecRunner.html&#x000A;    else&#x000A;        echo "Please open SpecRunner.html in your browser"&#x000A;    fi&#x000A;    </pre>
    <p>By now, you know exactly what this does: if we have <code>open</code>, we'll open <code>SpecRunner.html</code>, otherwise, we'll just print a message telling the user to open the file in the browser.</p>
    <p>Originally, that <code>if</code> condition looked like this:</p>
    <pre>if which open &gt; /dev/null&#x000A;    </pre>
    <p>As we did with <code>xattr</code>, it just checked for existence of <code>open</code>; however, since I found out that there's a different <code>open</code> command on Linux (even on my Ubuntu server, which can't even open a browser!), I figured it might be better to compare the path of the <code>open</code> program, since the Linux one is at <code>/bin/open</code> (again, at least on Ubuntu server).</p>
    <p>All this extra wordiness about <code>open</code> might sound like an excuse for my lack of a good solution, it actually points out something important about the command line. Don't mistake understanding the terminal with understanding a computer's configuration. This tutorial, and the associated course, have taught you a little bit more about the Bash shell (and the Z shell), but that doesn't mean each computer you use will be configured the same; there are many ways to install new commands (or different versions of commands), as well as remove commands. <em>Caveat developer</em>.</p>
    <p>Well, that's the entire script! Here it is again, all together:</p>
    <pre>    #! /bin/sh&#x000A;    &#x000A;        function help () {&#x000A;            echo "jazz - A simple script that makes using the Jasmine testing framework in a standalone project a little simpler."&#x000A;            echo ""&#x000A;            echo "    jazz init                  - include jasmine in the project";&#x000A;            echo "    jazz create FunctionName   - creates ./src/FunctionName.js ./spec/FunctionNameSpec.js";&#x000A;            echo "    jazz run                   - runs tests in browser";&#x000A;        }&#x000A;    &#x000A;        JASMIME_LINK="<a href="http://cloud.github.com/downloads/pivotal/jasmine/jasmine-standalone-1.3.1.zip">http://cloud.github.com/downloads/pivotal/jasmine/jasmine-standalone-1.3.1.zip</a>"&#x000A;    &#x000A;        if [ $1 ] &#x000A;        then&#x000A;          case "$1" in&#x000A;          init)&#x000A;            echo "Downloading Jasmine . . ."&#x000A;            curl -sO $JASMIME_LINK &#x000A;            unzip -q `basename $JASMIME_LINK` &#x000A;            rm `basename $JASMIME_LINK` src/*.js spec/*.js&#x000A;            &#x000A;            if which xattr &gt; /dev/null &amp;&amp; [ "`xattr SpecRunner.html`" = "com.apple.quarantine" ]&#x000A;            then&#x000A;              xattr -d com.apple.quarantine SpecRunner.html&#x000A;            fi&#x000A;    &#x000A;            sed -i "" "12,18d" SpecRunner.html&#x000A;            echo "Jasmine initialized!"&#x000A;          ;;&#x000A;          create)&#x000A;            if [ $2 ]&#x000A;            then &#x000A;              echo "function $2 () {\n\n}" &gt; ./src/$2.js&#x000A;              echo "describe('$2', function () {\nit('runs');\n});" &gt; ./spec/$2Spec.js&#x000A;              sed -i "" "11a\\&#x000A;              &lt;script src='src/$2.js'&gt;&lt;/script&gt;\\&#x000A;              &lt;script src='spec/$2Spec.js'&gt;&lt;/script&gt;&#x000A;              " SpecRunner.html&#x000A;              echo "Created:"&#x000A;              echo "\t- src/$2.js"&#x000A;              echo "\t- spec/$2Spec.js"&#x000A;              echo "Edited:"&#x000A;              echo "\t- SpecRunner.html"&#x000A;            else&#x000A;              echo 'please add a name for the file'&#x000A;            fi&#x000A;          ;;&#x000A;          "run")&#x000A;            if [ "`which open`" = '/usr/bin/open' ] &#x000A;            then&#x000A;              open ./SpecRunner.html&#x000A;            else&#x000A;              echo "Please open SpecRunner.html in your browser"&#x000A;            fi&#x000A;          ;;&#x000A;          *)&#x000A;            help;&#x000A;          ;;&#x000A;          esac&#x000A;        else&#x000A;          help;&#x000A;        fi&#x000A;    </pre>
    <p>Well, go on, give it a try!</p>
    <pre>    mkdir project&#x000A;        cd project&#x000A;        jazz init&#x000A;        jazz create Dog&#x000A;        # edit src/Dog.js and spec/DogSpec.js&#x000A;        jazz run&#x000A;    </pre>
    <p>By the way, if you want to have some more fun with this project, you can <a href="https://github.com/andrew8088/jazz" rel="nofollow external" class="bo">find it on Github</a>.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>So there you have it! We've just written an intermediate level shell script; that wasn't so bad, now, was it? Don’t forget to stay tuned for my upcoming <a href="http://tutsplus.com" rel="nofollow external" class="bo">Tuts+ Premium</a> course; you'll learn a lot more about many of the techniques used in this article, as well as countless others. Have fun on the terminal!</p>
    </div>
]]>
</Body>
<Summary>Writing shell scripts can be rather daunting, primarily because the shell isn't the most friendly of languages to use. However, I hope to show you in this tutorial that shell scripting is actually...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/kd9cz6hLDAU/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27989/guest@my.umbc.edu/5ffc9b6252df01daf342828ab79a60ae/api/pixel</TrackingUrl>
<Tag>console</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>terminal</Tag>
<Tag>tools-and-tips</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, 19 Apr 2013 17:27:17 -0400</PostedAt>
<EditAt>Fri, 19 Apr 2013 17:27:17 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="30054" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30054">
<Title>Ads on Google Glass Will Never Work</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>An ad delivered straight to the eyeball feels like a violation.</p>
    <p>Some curious information <a href="http://news.cnet.com/8301-10812_3-57579762/google-glassware-developers-prohibited-from-displaying-ads/" rel="nofollow external" class="bo">came to light</a> this week about Google Glass. For a company that owes its solvency to advertising–95% of its revenue comes from it–remarkably, Google is planning an ad-free experience for its on-eye computing experiment. At least, for now.</p>
    </div>
]]>
</Body>
<Summary>An ad delivered straight to the eyeball feels like a violation.  Some curious information came to light this week about Google Glass. For a company that owes its solvency to advertising–95% of its...</Summary>
<Website>http://www.technologyreview.com/view/513966/ads-on-google-glass-will-never-work/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30054/guest@my.umbc.edu/9f5066c1595c1c34d7e363db13a051f5/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, 19 Apr 2013 17:10:40 -0400</PostedAt>
</NewsItem>

</News>
