<?xml version="1.0"?>
<News hasArchived="true" page="8669" pageCount="10720" pageSize="10" timestamp="Thu, 09 Jul 2026 23:27:46 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8669">
<NewsItem contentIssues="true" id="30654" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30654">
<Title>NEW LEADERSHIP COURSE</Title>
<Tagline>Sign up for a semester of learning about YOU!</Tagline>
<Body>
<![CDATA[
    <div class="html-content"><blockquote><div><div><div><blockquote><blockquote><div>
    <p>Consider spending some time next semester thinking about who you are and how you best work with other to make a difference in your community. <span><br></span></p>
    <p><strong><span>Foundations of Leadership Development (3 credits)</span></strong></p>
    <pre><strong><span>PSYC 216 &amp; EDUC 216 (cross-listed); Wednesdays <span><span>4:30-7 pm</span></span></span></strong></pre>
    <p>Who are you?</p>
    <p>What are your strengths?</p>
    <p>What is your legacy at UMBC?</p>
    <p>What do you want to do after graduation?</p>
    <div><br></div>
    <em>Foundations of Leadership Development</em> is:<ul>
    <li>Highly-interactive</li>
    <li>100% focused on your development</li>
    <li>Project-based</li>
    <li>FOR EVERYONE. No previous knowledge, skills, or experiences required.</li>
    </ul>
    <p><strong><a href="http://www.youtube.com/watch?v=XaSIjQCoTMc&amp;list=PLYFUorjlWZQ-XZBcQAg3lr_1W4qnUh5Du&amp;index=3&amp;feature=plpp_video" rel="nofollow external" class="bo">Watch some student videos from last semester</a></strong></p>
    <p>Students said:<br></p>
    <ul>
    <li>“I have recommended (class) to several friends”</li>
    <li>“The interactions in class and activities inherently enhanced learning about the subject”</li>
    <li>“This was an immensely helpful and enjoyable class with a very unique style of learning the material”</li>
    <li>“Should be a required course if possible for all majors”</li>
    </ul>
    <div><br></div>Questions? --&gt; Email Virginia Byrne, Coordinator for Leadership Development &amp; Education of the Office of Student Life, at <a href="mailto:vbyrne@umbc.edu" rel="nofollow external" class="bo">vbyrne@umbc.edu</a><br><br>Note: This course will also be offered in the spring of 2014. Prefer students who have taken PSYC 100 or AP Psychology, but are lenient. Contact for more info. </div></blockquote></blockquote></div></div></div></blockquote></div>
]]>
</Body>
<Summary>Consider spending some time next semester thinking about who you are and how you best work with other to make a difference in your community.    Foundations of Leadership Development (3 credits)...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30654/guest@my.umbc.edu/2503783c1f8e72d5e3a8f4d7d16d3e0b/api/pixel</TrackingUrl>
<Group token="shriver">The Shriver Center</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/shriver</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xsmall.png?1441293069</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/original.jpg?1441293069</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xxlarge.png?1441293069</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xlarge.png?1441293069</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/large.png?1441293069</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/medium.png?1441293069</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/small.png?1441293069</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xsmall.png?1441293069</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xxsmall.png?1441293069</AvatarUrl>
<Sponsor>Shriver Center:Intern, Co-op, Research &amp; Service-Learning</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/xxlarge.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/xlarge.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/large.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/medium.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/small.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/xsmall.jpg?1370032761</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/030/654/4e1213b3b6b7ff55099c76ffd9eb4b58/xxsmall.jpg?1370032761</ThumbnailUrl>
<PawCount>9</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 16:40:25 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30651" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30651">
<Title>30 Days. 30 Scholarships for Deserving UMBC Students</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><a href="http://umbcalumni.files.wordpress.com/2013/05/quinn-8321.jpg" rel="nofollow external" class="bo"><img alt="quinn-8321" src="http://umbcalumni.files.wordpress.com/2013/05/quinn-8321.jpg?w=253&amp;h=300" width="253" height="300" style="max-width: 100%; height: auto;"></a>For <strong>Caitlynn</strong>, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people as a radiology assistant, but being the first in her family to graduate from college.</p>
    <p>Imagine working and studying hard for years, then losing it all because you can’t quite make one tuition bill payment. Imagine having to pay off years of student debt without a degree to show for it.</p>
    <p>Sadly, hundreds of UMBC students experience need that isn’t fulfilled by scholarships or financial aid. Many of them work two or more jobs while attending school – and sometimes, that still isn’t enough. Those are the times when they need you most.</p>
    <p><a href="https://givecorps.com/en/umbc/projects/463-annual-giving-causes-30-days-30-scholarships" rel="nofollow external" class="bo"><img alt="30for30_small" src="http://umbcalumni.files.wordpress.com/2013/05/30for30_small.jpg?w=234&amp;h=234" width="234" height="234" style="max-width: 100%; height: auto;"></a>When students have the scholarship support they need, they can do AMAZING things. And during the month of June, we’re showcasing students who are doing just that — making the most of their time at UMBC, and changing the world for the better, with the aid of scholarships. <strong>Our aim? To raise enough money to award 30 scholarships of $1,000. </strong>It’s a big goal, but you can help us reach it, and when you do, you’ll be helping students in need.</p>
    <p><a href="https://givecorps.com/en/umbc/projects/463-annual-giving-causes-30-days-30-scholarships" rel="nofollow external" class="bo">&gt;&gt; Make your gift to support students today</a></p>
    <p><strong>While Caitlynn was fortunate enough to receive support that enabled her to stay at UMBC, there are many students who still need your help.</strong> That’s why your support is more important this month than ever before. Please, make a gift today and help us raise the funds for 30 scholarships in 30 days<strong>. </strong></p>
    <br>   </div>
]]>
</Body>
<Summary>For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people...</Summary>
<Website>http://umbcgiving.wordpress.com/2013/05/31/30-days-30-scholarships-for-deserving-umbc-students/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30651/guest@my.umbc.edu/089f20b27bd629ff0f73b9a855d32988/api/pixel</TrackingUrl>
<Tag>uncategorized</Tag>
<Group token="retired-548">UMBC Giving</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-548</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/images/avatars/group/11/xsmall.png?1783534816</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/images/avatars/group/11/original.png?1783534816</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/images/avatars/group/11/xxlarge.png?1783534816</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/images/avatars/group/11/xlarge.png?1783534816</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/images/avatars/group/11/large.png?1783534816</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/images/avatars/group/11/medium.png?1783534816</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/images/avatars/group/11/small.png?1783534816</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/images/avatars/group/11/xsmall.png?1783534816</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/images/avatars/group/11/xxsmall.png?1783534816</AvatarUrl>
<Sponsor>UMBC Giving</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 15:10:30 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="106989" important="false" status="posted" url="https://my3.my.umbc.edu/posts/106989">
<Title>30 Days. 30 Scholarships for Deserving UMBC Students</Title>
<Body>
<![CDATA[
    <div class="html-content">For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to …</div>
]]>
</Body>
<Summary>For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to …</Summary>
<Website>https://magazine.umbc.edu/30-days-30-scholarships-for-deserving-umbc-students-2/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/106989/guest@my.umbc.edu/5544e5301bdf2d17d7f60802a58a51a7/api/pixel</TrackingUrl>
<Tag>impact</Tag>
<Group token="retired-1945">UMBC Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-1945</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/images/avatars/group/8/xsmall.png?1783534816</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/images/avatars/group/8/original.png?1783534816</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/images/avatars/group/8/xxlarge.png?1783534816</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/images/avatars/group/8/xlarge.png?1783534816</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/images/avatars/group/8/large.png?1783534816</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/images/avatars/group/8/medium.png?1783534816</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/images/avatars/group/8/small.png?1783534816</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/images/avatars/group/8/xsmall.png?1783534816</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/images/avatars/group/8/xxsmall.png?1783534816</AvatarUrl>
<Sponsor>UMBC Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 15:10:30 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30652" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30652">
<Title>30 Days. 30 Scholarships for Deserving UMBC Students.</Title>
<Body>
<![CDATA[
    <div class="html-content">For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people as a radiology assistant, but being the … <a href="http://umbcalumni.wordpress.com/2013/05/31/30-days-30-scholarships-for-deserving-umbc-students/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people...</Summary>
<Website>http://umbcalumni.wordpress.com/2013/05/31/30-days-30-scholarships-for-deserving-umbc-students/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30652/guest@my.umbc.edu/be16332b0a23913460a1172b53a1df91/api/pixel</TrackingUrl>
<Tag>uncategorized</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 15:08:56 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31841" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31841">
<Title>30 Days. 30 Scholarships for Deserving UMBC Students.</Title>
<Body>
<![CDATA[
    <div class="html-content">For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people as a radiology assistant, but being the … <a href="https://umbcalumni.wordpress.com/2013/05/31/30-days-30-scholarships-for-deserving-umbc-students/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>For Caitlynn, a biology major, one family emergency nearly meant having to leave UMBC. Thankfully, she’s now on track to finish what she started — fulfilling her dream not only of helping people...</Summary>
<Website>https://umbcalumni.wordpress.com/2013/05/31/30-days-30-scholarships-for-deserving-umbc-students/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31841/guest@my.umbc.edu/7b60438cc7fccbfd292e476eb696b1f1/api/pixel</TrackingUrl>
<Tag>uncategorized</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 15:08:56 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30660" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30660">
<Title>The Getaway: Let&#8217;s Play: Making Travel a Game</Title>
<Body>
<![CDATA[
    <div class="html-content">In case the view’s not enough, several apps and programs turn your trip into a game, offering GPS challenges, dispensing trivia and helping you make social connections mid-flight.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Ftravel.nytimes.com%2F2013%2F06%2F02%2Ftravel%2Flets-play-making-travel-a-game.html%3Fpartner%3Drss%26emc%3Drss&amp;t=The+Getaway%3A+Let%E2%80%99s+Play%3A+Making+Travel+a+Game" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Ftravel.nytimes.com%2F2013%2F06%2F02%2Ftravel%2Flets-play-making-travel-a-game.html%3Fpartner%3Drss%26emc%3Drss&amp;t=The+Getaway%3A+Let%E2%80%99s+Play%3A+Making+Travel+a+Game" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Ftravel.nytimes.com%2F2013%2F06%2F02%2Ftravel%2Flets-play-making-travel-a-game.html%3Fpartner%3Drss%26emc%3Drss&amp;t=The+Getaway%3A+Let%E2%80%99s+Play%3A+Making+Travel+a+Game" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Ftravel.nytimes.com%2F2013%2F06%2F02%2Ftravel%2Flets-play-making-travel-a-game.html%3Fpartner%3Drss%26emc%3Drss&amp;t=The+Getaway%3A+Let%E2%80%99s+Play%3A+Making+Travel+a+Game" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Ftravel.nytimes.com%2F2013%2F06%2F02%2Ftravel%2Flets-play-making-travel-a-game.html%3Fpartner%3Drss%26emc%3Drss&amp;t=The+Getaway%3A+Let%E2%80%99s+Play%3A+Making+Travel+a+Game" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    </div>
]]>
</Body>
<Summary>In case the view’s not enough, several apps and programs turn your trip into a game, offering GPS challenges, dispensing trivia and helping you make social connections mid-flight.     </Summary>
<Website>http://travel.nytimes.com/2013/06/02/travel/lets-play-making-travel-a-game.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30660/guest@my.umbc.edu/10466313e355ce829bb15a6d8f395e02/api/pixel</TrackingUrl>
<Tag>customer-loyalty-programs</Tag>
<Tag>expedia-inc-expe-nasdaq</Tag>
<Tag>facebook-inc-fb-nasdaq</Tag>
<Tag>games</Tag>
<Tag>gartner-inc-it-nyse</Tag>
<Tag>linkedin-corporation-lnkd-nyse</Tag>
<Tag>mobile-applications</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>travel-and-vacations</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 14:13:13 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30648" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30648">
<Title>Just Released: Laravel Testing Decoded</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32133&amp;c=18193234" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32133&amp;c=18193234" alt="" style="max-width: 100%; height: auto;"></a><p>After months of effort, I’m proud to announce the release of my new book, <a href="https://leanpub.com/laravel-testing-decoded" rel="nofollow external" class="bo">Laravel Testing Decoded</a>! It’s my hope that you won’t find a better, more approachable resource for learning the ins and outs of testing in PHP. I’ve spent years learning how to explain complicated topics in such a way so that anyone can understand. So, if learning how to properly test has been on your bucket list for a while now, maybe it’s <a href="https://leanpub.com/laravel-testing-decoded" rel="nofollow external" class="bo">time to finally dive in!</a><br> </p>  <a href="https://leanpub.com/laravel-testing-decoded" rel="nofollow external" class="bo"><img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/05/laravel-testing-cover.jpg" alt="Laravel Testing Decoded" style="max-width: 100%; height: auto;"></a> <strong>The testing book you’ve been waiting for. <a href="http://samples.leanpub.com/laravel-testing-decoded-sample.pdf" rel="nofollow external" class="bo">Try out a sample chapter.</a></strong> <p>I’ve seen it way too many times. As your application grows, so does your sloppy, untested codebase. Before long, you begin to drown, as your ability to manually test the application becomes unrealistic, or even impossible! It’s at these specific times, when you begin to realize the down-right necessity for testing. Sure, you might have read a TDD book in the past, but, like many things in life, we require real-life experience, before we suddenly – in a wonderful, blissful “aha moment” – get it.</p>
    <p>The only problem is that testing can be a tricky thing. In fact, it’s quite possible that your codebase, as it currently stands, is untestable! What you may not realize is that, while, yes, testing does help to ensure that your code works as expected, following this pattern will also make you a better developer. That messy, untestable spaghetti code that you might have snuck into your project in the past will never happen again. Trust me: as soon as you bring the phrase “how could I test this” to the forefront of every new piece of code, you’ll, with a smile on your face, look back to your former self, and laugh at your crazy, cowboy ways. Welcome to modern software development.</p>
    <blockquote><p> While the principles of testing (and TDD) are language-agnostic, when it comes to execution, there are a variety of tools and techniques at your finger tips. <a href="https://leanpub.com/laravel-testing-decoded" rel="nofollow external" class="bo">This book</a> is as much an introduction to TDD as it is a deep analysis of the Laravel way of testing applications. Updates will be free for life.</p></blockquote>
    <p><strong><a href="https://leanpub.com/laravel-testing-decoded" rel="nofollow external" class="bo">Laravel Testing Decoded may be purchased for $15.</a></strong></p>
    </div>
]]>
</Body>
<Summary>After months of effort, I’m proud to announce the release of my new book, Laravel Testing Decoded! It’s my hope that you won’t find a better, more approachable resource for learning the ins and...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/aAXrAYxnAgk/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30648/guest@my.umbc.edu/05775158c0a144e7458cdcf025e748e9/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>ebooks</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>laravel</Tag>
<Tag>mysql</Tag>
<Tag>news</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tdd</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, 31 May 2013 12:54:22 -0400</PostedAt>
<EditAt>Fri, 31 May 2013 12:54:22 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="30645" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30645">
<Title>Mill Stories: Sparrows Point Steelworkers and Community Speak</Title>
<Body>
<![CDATA[
    <div class="html-content">Mill Stories is a collaborative project bringing together UMBC students to help preserve stories from the Sparrows Point community. As the project develops, we hope that this website will present a form of database documentary, in which users can access interviews, videos photos and other cultural materials gathered from the community.
    
    Two classes participated during the Spring 2013 semester. Students in AMST 358 Cultural Documentation in Partnership with Communities were introduced to the ideas, techniques and ethical considerations that underpin qualitative research, particularly from a community-based, out-in-the-field perspective. The course focuses on cultural research and documentation within the communities that have been shaped for over a century by the Sparrows Point Steel Mill. Students have also been introduced to broader notions of community cohesion, senses of place and belonging, as well as the realities of post-industrial economic and social transition.
    
    
    
    <p><img alt="UB" src="http://farm9.staticflickr.com/8545/8609896787_5e8cc89a32.jpg" style="max-width: 100%; height: auto;"></p>
    
    Students in MLL 495/695 Intercultural Video Production focused on creating short digital stories based on community interviews. The class takes a collaborative approach, allowing participants to tell their stories in their own words.
    
    
    Visit the Project Website: <a href="http://millstories.org" rel="nofollow external" class="bo"> millstories.org</a>
    
    Read about the project in the <a href="http://www.baltimoresun.com/news/maryland/education/bs-md-sparrows-point-umbc-20130211,0,3174504.story#ixzz2ROAcCSj0" rel="nofollow external" class="bo">Baltimore Sun</a> and the <a href="http://dundalkeagle.com/component/content/article/2-slideshow/45605-documentary-captures-local-steel-history" rel="nofollow external" class="bo">Dundalk Eagle</a>.</div>
]]>
</Body>
<Summary>Mill Stories is a collaborative project bringing together UMBC students to help preserve stories from the Sparrows Point community. As the project develops, we hope that this website will present...</Summary>
<Website>http://www.umbc.edu/blogs/digitalstories/2013/05/mill_stories_sparrows_point_st.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30645/guest@my.umbc.edu/437ebad68a470bb451cf1b20c3419974/api/pixel</TrackingUrl>
<Tag>news</Tag>
<Tag>projects</Tag>
<Group token="stories">Digital Stories Working Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/stories</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xsmall.png?1279120366</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/original.png?1279120366</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xxlarge.png?1279120366</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xlarge.png?1279120366</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/large.png?1279120366</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/medium.png?1279120366</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/small.png?1279120366</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xsmall.png?1279120366</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xxsmall.png?1279120366</AvatarUrl>
<Sponsor>Digital Stories @ UMBC</Sponsor>
<PawCount>14</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 12:08:35 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="66663" important="false" status="posted" url="https://my3.my.umbc.edu/posts/66663">
<Title>Mill Stories: Sparrows Point Steelworkers and Community Speak</Title>
<Body>
<![CDATA[
    <div class="html-content">Mill Stories is a collaborative project bringing together UMBC students to help preserve stories from the Sparrows Point community. As the project develops, we hope that this website will present a form of database documentary, in which users can access interviews, videos photos and other cultural materials gathered from the community.
    
    Two classes participated during the Spring 2013 semester. Students in AMST 358 Cultural Documentation in Partnership with Communities were introduced to the ideas, techniques and ethical considerations that underpin qualitative research, particularly from a community-based, out-in-the-field perspective. The course focuses on cultural research and documentation within the communities that have been shaped for over a century by the Sparrows Point Steel Mill. Students have also been introduced to broader notions of community cohesion, senses of place and belonging, as well as the realities of post-industrial economic and social transition.
    
    
    
    <p><img alt="UB" src="http://farm9.staticflickr.com/8545/8609896787_5e8cc89a32.jpg" style="max-width: 100%; height: auto;"></p>
    
    Students in MLL 495/695 Intercultural Video Production focused on creating short digital stories based on community interviews. The class takes a collaborative approach, allowing participants to tell their stories in their own words.
    
    
    Visit the Project Website: <a href="http://millstories.org" rel="nofollow external" class="bo"> millstories.org</a>
    
    Read about the project in the <a href="http://www.baltimoresun.com/news/maryland/education/bs-md-sparrows-point-umbc-20130211,0,3174504.story#ixzz2ROAcCSj0" rel="nofollow external" class="bo">Baltimore Sun</a> and the <a href="http://dundalkeagle.com/component/content/article/2-slideshow/45605-documentary-captures-local-steel-history" rel="nofollow external" class="bo">Dundalk Eagle</a>.</div>
]]>
</Body>
<Summary>Mill Stories is a collaborative project bringing together UMBC students to help preserve stories from the Sparrows Point community. As the project develops, we hope that this website will present...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/66663/guest@my.umbc.edu/3bc1e9b4a11c44528eadb84da8f9afc3/api/pixel</TrackingUrl>
<Group token="stories">Digital Stories Working Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/stories</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xsmall.png?1279120366</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/original.png?1279120366</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xxlarge.png?1279120366</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xlarge.png?1279120366</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/large.png?1279120366</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/medium.png?1279120366</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/small.png?1279120366</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xsmall.png?1279120366</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/014/eecca5b6365d9607ee5a9d336962c534/xxsmall.png?1279120366</AvatarUrl>
<Sponsor>Digital Stories @ UMBC</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 31 May 2013 12:08:35 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="30647" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30647">
<Title>The Fundamentals of Bash Scripting</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32093&amp;c=1113748286" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32093&amp;c=1113748286" alt="" style="max-width: 100%; height: auto;"></a><p>Shell scripts are widely used in the UNIX world. They’re excellent for speeding up repetitive tasks and simplifying complex execution logic. They can be as simple as a set of commands, or they can orchestrate complex tasks. In this tutorial, we’ll learn more about the Bash scripting language by writing an example script step-by-step.</p>
    <p></p>
    <hr>
    <h2>The Fizz-Buzz Problem</h2>
    <p>One of the best way to learn about a new language is by example. Let’s start with one.</p>
    <p>The Fizz-Buzz problem is a very simple one. It became famous after a programmer, named Imran, used it as an interview test. It turns out that 90-99.5% of the candidates for a programming job are simply unable to write the simplest program. Imran took this simple Fizz-Buzz game and asked the candidates to solve it. Many followed Imran’s example, and, today, it is one of the most asked frequently asked questions for a programming job. If you’re hiring, and need a way to filter through 90% of the candidates, this is a great problem to present.</p>
    <p>Here are the rules:</p>
    <ul>
    <li>Take and print the numbers between 1 and 100.</li>
    <li>When a number is divisible by 3, print “Fizz” instead of the number.</li>
    <li>When it is divisible by 5, print “Buzz” instead.</li>
    <li>When it is divisible both by 3 and 5, print “FizzBuzz”.</li>
    </ul>
    <p>That’s all there is to it. I’m sure most of you can already visualize the two or three <code>if</code> statements to solve this. Let’s work through this using the Bash scripting language.</p>
    <hr>
    <h2>Shebang</h2>
    <p>A shebang refers to the combination of the hash and exclamation mark characters: <code>#!</code>. The program loader will look for a shebang on the first line of the script, and use the interpreter specified in it. A shebang consists of the following syntax: <code>#!interpreter [parameters]</code>. The interpreter is the program that is used to interpret our language. For bash scripting, that would be <code>/bin/bash</code>. For example, if you want to create a script in PHP and run it in console, you’d probably want to use <code>/usr/bin/php</code> (or the path to the PHP executable on your machine) as the interpreter.</p>
    <pre>#!/usr/bin/php&#x000A;    &lt;?php&#x000A;    phpinfo();</pre>
    <p>Yes, that will actually work! Isn’t it simple? Just be sure to make your file executable first. Once you do, this script will output your PHP information as you would expect.</p>
    <p><strong>Tip:</strong> To ensure that your script will work on as many systems as possible, you can use <code>/bin/env</code> in the shebang. As such, instead of <code>/bin/bash</code>, you could use <code>/bin/env bash</code>, which will work on systems where the bash executable is not within <code>/bin</code>.</p>
    <hr>
    <h2>Outputting Text</h2>
    <p>The output of a script will be equal to, as you might expect, whatever is outputted from your command. However, if we explicitly want to write something to the screen, we can use <code>echo</code>.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    echo "Hello World"</pre>
    <p>Running this script will print “Hello World” in the console.</p>
    <pre>csaba@csaba ~ $ ./helloWorld.sh&#x000A;    Hello World&#x000A;    csaba@csaba ~ $&#x000A;    </pre>
    <hr>
    <h2>Introducing Variables</h2>
    <p>As with any programming language, when writing shell scripts, you can use variables.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    message="Hello World"&#x000A;    echo $message</pre>
    <p>This code produces exactly the same “Hello World” message. As you can see, to assign a value to a variable, simply write its name – exclude the dollar sign in front of it. Also, be careful with spaces; there can’t be any spaces between the variable name and the equal sign. So <code>message="Hello"</code> instead of <code>message = 'Hello'</code></p>
    <p>When you wish to use a variable, you can take the value from it just as we did in the <code>echo</code> command. Prepending a <code>$</code> to the variable’s name will return its value.</p>
    <div><p><strong>Tip:</strong> Semicolons aren’t required in bash scripting. You can use them in most cases, but be careful: they may have a different meaning than what you expect.</p></div>
    <hr>
    <h2>Printing the Numbers Between 1 and 100</h2>
    <p>Continuing on with our demo project, we need to cycle through all numbers between 1 and 100. For this, we’ll need to use a <code>for</code> loop.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        echo $number&#x000A;    done</pre>
    <p>There are several new things worth noting in this example – which by the way, prints all the numbers from 1 to 100, one number at a time.</p>
    <ul>
    <li>The <code>for</code> syntax in Bash is: <code>for VARIABLE in RANGE; do COMMAND done</code>.</li>
    <li>The curly braces will transform <code>1..100</code> into a range in our example. They’re used  in other contexts as well, which we’ll review shortly.</li>
    <li>
    <code>do</code> and <code>for</code> are actually two separate commands. If you want to place two commands on a single line, you’ll need to separate them somehow. One way is to use semicolon. Alternatively you could write the code without a semicolon by moving <code>do</code> to the following line.</li>
    </ul>
    <pre>#!/bin/bash&#x000A;    &#x000A;    for number in {1..100}&#x000A;    do&#x000A;        echo $number&#x000A;    done</pre>
    <hr>
    <h2>The First Decision</h2>
    <p>Now that we know how to print all the numbers between 1 and 100, it’s time to make our first decision.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        if [ $((number%3)) -eq 0 ]; then&#x000A;            echo "Fizz"&#x000A;        else&#x000A;            echo $number&#x000A;        fi&#x000A;    done</pre>
    <p>This example will output “Fizz” for numbers divisible by 3. Again, we have to deal with a bit of new syntax. Let’s take them one by one.</p>
    <ul>
    <li>
    <code>if..then..else..fi</code> – this is the classic syntax for an <code>if</code> statement in Bash. Of course, the <code>else</code> part is optional – but required for our logic in this case.</li>
    <li>
    <code>if COMMAND-RETURN-VALUE; then...</code> – <code>if</code> will execute if the return value of the command is zero. Yes, logic in Bash is zero based, meaning that commands that execute successfully exit with a code of 0. If something goes wrong, on the other hand, a positive integer will be returned. To simplify things: anything other than 0 is considered <code>false</code>.</li>
    <li>Mathematical expressions in Bash are specified by double parentheses. <code>$((number%3))</code> will return the remaining value of dividing the variable, <code>number</code>, by 3. Please note that we did not use <code>$</code> inside the parenthesis – only in front of them.</li>
    </ul>
    <p>You might be wondering where the command is in our example. Isn’t there just a bracket with an odd expression in it? Well, it turns out that <code>[</code> is actually an executable command. To play around with this, try out the following commands in your console.</p>
    <pre>csaba@csaba ~ $ which [&#x000A;    /usr/bin/[&#x000A;    csaba@csaba ~ $ [ 0 -eq 1 ]&#x000A;    csaba@csaba ~ $ echo $?&#x000A;    1&#x000A;    csaba@csaba ~ $ [ 0 -eq 0 ]&#x000A;    csaba@csaba ~ $ echo $?&#x000A;    0&#x000A;    </pre>
    <blockquote><p><strong>Tip:</strong> A command's exit value is always returned into the variable, <code>?</code> (question mark). It is overwritten after each new command's execution.</p></blockquote>
    <hr>
    <h2>Checking for Buzz</h2>
    <p>We're doing well so far. We have "Fizz"; now let's do the "Buzz" part.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        if [ $((number%3)) -eq 0 ]; then&#x000A;            echo "Fizz"&#x000A;        elif [ $((number%5)) -eq 0 ]; then&#x000A;            echo "Buzz"&#x000A;        else&#x000A;            echo $number&#x000A;        fi&#x000A;    done</pre>
    <p>Above, we've introduced another condition for divisibility by 5: the <code>elif</code> statement. This, of course, translates to <em>else if</em>, and will be executed if the command following it returns <code>true</code> (or <code>0</code>). As you can observe, the conditional statements within <code>[]</code> are usually evaluated with the help of parameters, such as <code>-eq</code>, which stands for "equals."</p>
    <blockquote><p>For the syntax, <code>arg1 OP arg2</code>, <code>OP</code> is one of <code>-eq</code>, <code>-ne</code>, <code>-lt</code>, <code>-le</code>, <code>-gt</code>, or <code>-ge</code>. These arithmetic binary operators return <code>true</code> if <code>arg1</code> is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to <code>arg2</code>, respectively.<code>arg1</code> and <code>arg2</code> may be positive or negative integers. - <em>Bash Manual</em></p></blockquote>
    <p>When you're attempting to compare strings, you may use the well-known <code>==</code> sign, or even a single equal sign will do. <code>!=</code> returns <code>true</code> when the strings are different.</p>
    <hr>
    <h2>But the Code isn't Quite Correct</h2>
    <p>So far, the code runs, but the logic is not correct. When the number is divisible by both 3 and 5, our logic will echo only "Fizz." Let's modify our Code to satisfy the last requirement of FizzBuzz.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        output=""&#x000A;        if [ $((number%3)) -eq 0 ]; then&#x000A;            output="Fizz"&#x000A;        fi&#x000A;        if [ $((number%5)) -eq 0 ]; then&#x000A;            output="${output}Buzz"&#x000A;        fi&#x000A;        if [ -z $output ]; then&#x000A;            echo $number&#x000A;        else&#x000A;            echo $output;&#x000A;        fi&#x000A;    done</pre>
    <p>Again, we've had to make a handful of changes. The most notable one is the introduction of a variable, and then the concatenation of "Buzz" to it, if necessary. Strings in bash are typically defined between double quotes ("). Single quotes are usable as well, but for easier concatenation, doubles are the better choice. Within these double quotes, you can reference variables: <code>some text $variable some other text</code>" will replace <code>$variable</code> with its contents. When you want to concatenate variables with strings without spaces between them, you may prefer to put the variable's name within curly braces. In most cases, like PHP, you're not required to do so, but it helps a lot when it comes to the code's readability.</p>
    <div><p><strong>Tip:</strong> You can't compare empty strings. That would return a missing parameter.</p></div>
    <p>Because arguments inside <code>[ ]</code> are treated as parameters, for <code>"["</code>, they must be different from an empty string. So this expression, even though logical, will output an error: <code>[ $output != "" ]</code>. That's why we've used <code>[ -z $output ]</code>, which returns <code>true</code> if the string has a length of zero.</p>
    <hr>
    <h2>Extract Method for Logical Expression</h2>
    <p>One way to improve our example is to extract into functions the mathematical expression from the <code>if</code> statements, like so:</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    function isDivisibleBy {&#x000A;        return $(($1%$2))&#x000A;    }&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        output=""&#x000A;        if isDivisibleBy $number 3; then&#x000A;            output="Fizz"&#x000A;        fi&#x000A;        if isDivisibleBy $number 5; then&#x000A;            output="${output}Buzz"&#x000A;        fi&#x000A;        if [ -z $output ]; then&#x000A;            echo $number&#x000A;        else&#x000A;            echo $output;&#x000A;        fi&#x000A;    done</pre>
    <p>We took the expressions comparing the rest with zero, and moved them into a function. Even more, we eliminated the comparison with zero, because zero means true for us. We only have to return the value from the mathematical expression - very simple!</p>
    <div><p><strong>Tip:</strong> A function's definition must precede its call.</p></div>
    <p>In Bash, you can define a method as <code>function func_name { commands; }</code>. Optionally, there is a second syntax for declaring functions: <code>func_name () { commands; }</code>. So, we can drop the string, <code>function</code> and add <code>"()"</code> after its name. I personally prefer this option, as exemplified in the example above. It's more explicit and resembles traditional programming languages.</p>
    <p>You do not need to specify the parameters for a function in Bash. Sending parameters to a function is accomplished by simply enumerating over them after the function call separated by white spaces. Do not place commas or parenthesis in the function call - it won't work.</p>
    <p>Received parameters are automatically assigned to variables by number. The first parameter goes to <code>$1</code>, the second to <code>$2</code>, and so on. The special variable, <code>$0</code> refers the current script's file name.</p>
    <h3>Let's Play with Parameters</h3>
    <pre>#!/bin/bash&#x000A;    &#x000A;    function exampleFunc {&#x000A;        echo $1&#x000A;        echo $0&#x000A;        IFS="X"&#x000A;        echo "$@"&#x000A;        echo "$*"&#x000A;    }&#x000A;    &#x000A;    exampleFunc "one" "two" "three"</pre>
    <p>This code will produce the following output:</p>
    <pre>csaba@csaba ~ $ ./parametersExamples.sh&#x000A;    one&#x000A;    ./parametersExamples.sh&#x000A;    one two thre&#x000A;    oneXtwoXthre&#x000A;    </pre>
    <p>Let's analyze the source, line by line.</p>
    <ul>
    <li>The last line is the function call. We call it with three string parameters.</li>
    <li>The first line after the shebang is the function definition.</li>
    <li>The first line in the function outputs the first parameter: "one". So far so simple.</li>
    <li>The second line outputs current script's file name. Again, very simple.</li>
    <li>The third line changes the default character separator to the letter, "X". By default, this is " " (a space). That's how Bash knows how the parameters are separated.</li>
    <li>The fourth line outputs a special variable, <code>$@</code>. It represents all the parameters as a single word, exactly as specified in the function call.</li>
    <li>The final line outputs another special variable, <code>$*</code>. It represents all the parameters, taken one-by-one and concatenated with the first letter of the IFS variable. That's why the result is <code>oneXtwoXthre</code>.</li>
    </ul>
    <hr>
    <h2>Returning Strings From Functions</h2>
    <p>As I noted earlier, functions in Bash can return only integers. As such, writing <code>return "a string"</code> would be invalid code. Still, in many situations, you need more than just a zero or one. We can refactor our FizzBuzz example so that, in the <code>for</code> statement, we will just make a function call.</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    function isDivisibleBy {&#x000A;        return $(($1%$2))&#x000A;    }&#x000A;    &#x000A;    function fizzOrBuzz {&#x000A;        output=""&#x000A;        if isDivisibleBy $1 3; then&#x000A;            output="Fizz"&#x000A;        fi&#x000A;        if isDivisibleBy $1 5; then&#x000A;            output="${output}Buzz"&#x000A;        fi&#x000A;        if [ -z $output ]; then&#x000A;            echo $1&#x000A;        else&#x000A;            echo $output;&#x000A;        fi&#x000A;    }&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        fizzOrBuzz $number&#x000A;    done</pre>
    <p>Well, this is the first step. We just extracted all the code into a function, called <code>fizzOrBuzz</code>, and then replaced <code>$number</code> with <code>$1</code>. However, all outputting occurs in the <code>fizzOrBuzz</code> function. We want to output from the <code>for</code> loop with an <code>echo</code> statement, so that we can prepend each line with another string. We have to capture the <code>fizzOrBuzz</code> function's output.</p>
    <pre>#[...]&#x000A;    for number in {1..100}; do&#x000A;        echo "-`fizzOrBuzz $number`"&#x000A;        fizzBuzzer=$(fizzOrBuzz $number)&#x000A;        echo "-${fizzBuzzer}"&#x000A;    done</pre>
    <p>We've updated our <code>for</code> loop just a bit (no other changes). We've now echoed everything twice in two different ways to exemplify the differences between the two solutions to the same problem.</p>
    <p>The first solution to capture the output of a function or another command is to use backticks. In 99% of the cases, this will work just fine. You can simply reference a variable within backticks by their names, as we did with <code>$number</code>. The first few lines of the output should now look like:</p>
    <pre>csaba@csaba ~/Personal/Programming/NetTuts/The Basics of BASH Scripting/Sources $ ./fizzBuzz.sh&#x000A;    -1&#x000A;    -1&#x000A;    -2&#x000A;    -2&#x000A;    -Fizz&#x000A;    -Fizz&#x000A;    -4&#x000A;    -4&#x000A;    -Buzz&#x000A;    -Buzz&#x000A;    -Fizz&#x000A;    -Fizz&#x000A;    -7&#x000A;    -7&#x000A;    </pre>
    <p>As you can see, everything is duplicated. Same output.</p>
    <p>For the second solution, we've chosen to first assign the return value to a variable. In that assignment, we used <code>$()</code>, which, in this case, forks the script, executes the code, and returns its output.</p>
    <hr>
    <h2>;, &amp;&amp; and ||</h2>
    <p>Do you remember that we used semicolon here and there? They can be used to execute several commands written on the same line. If you separate them by semicolons, they will just simply be executed.</p>
    <p>A more sophisticated case is to use <code>&amp;&amp;</code> between two commands. Yes, that's a logical AND; it means that the second command will be executed only if the first one returns <code>true</code> (it exits with 0). This is helpful; we can simplify the <code>if</code> statements into these shorthands:</p>
    <pre>#!/bin/bash&#x000A;    &#x000A;    function isDivisibleBy {&#x000A;        return $(($1%$2))&#x000A;    }&#x000A;    &#x000A;    function fizzOrBuzz {&#x000A;        output=""&#x000A;        isDivisibleBy $1 3 &amp;&amp; output="Fizz"&#x000A;        isDivisibleBy $1 5 &amp;&amp; output="${output}Buzz"&#x000A;        if [ -z $output ]; then&#x000A;            echo $1&#x000A;        else&#x000A;            echo $output;&#x000A;        fi&#x000A;    }&#x000A;    &#x000A;    for number in {1..100}; do&#x000A;        echo "-`fizzOrBuzz $number`"&#x000A;    done</pre>
    <p>As our function, <code>isDivisibleBy</code> returns a proper return value, we can then use <code>&amp;&amp;</code> to set the variable we want. What's after <code>&amp;&amp;</code> will be executed only if the condition is <code>true</code>. In the same manner, we can use <code>||</code> (double pipe character) as a logical OR. Here's a quick example below.</p>
    <pre>csaba@csaba ~ $ echo "bubu" || echo "bibi"&#x000A;    bubu&#x000A;    csaba@csaba ~ $ echo false || echo "bibi"&#x000A;    false&#x000A;    csaba@csaba ~ $</pre>
    <hr>
    <h2>Final Thoughts</h2>
    <p>So that does it for this tutorial! I hope that you've picked up a handful of new tips and techniques for writing your own Bash scripts. Thanks for reading, and stay tuned for more advanced articles on this subject.</p>
    </div>
]]>
</Body>
<Summary>Shell scripts are widely used in the UNIX world. They’re excellent for speeding up repetitive tasks and simplifying complex execution logic. They can be as simple as a set of commands, or they can...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/ggSeCzz08go/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30647/guest@my.umbc.edu/3ea53c55bdd5531b475daa4aae4dcf05/api/pixel</TrackingUrl>
<Tag>bash</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>other</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>Fri, 31 May 2013 11:56:53 -0400</PostedAt>
<EditAt>Fri, 31 May 2013 11:56:53 -0400</EditAt>
</NewsItem>

</News>
