<?xml version="1.0"?>
<News hasArchived="true" page="8996" pageCount="10708" pageSize="10" timestamp="Fri, 26 Jun 2026 18:08:52 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8996">
<NewsItem contentIssues="true" id="25045" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25045">
<Title>A Look Inside NYC's Entrepreneurial Landscape</Title>
<Body>
<![CDATA[
    <div class="html-content">A new exhibit at New York's Tenement Museum explores a century of the city's immigrant small-business owners, while the city government champions its growing tech startup community.<br><br><a href="http://da.feedsportal.com/r/159490242647/u/49/f/625555/c/34343/s/291d473b/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/159490242647/u/49/f/625555/c/34343/s/291d473b/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>A new exhibit at New York's Tenement Museum explores a century of the city's immigrant small-business owners, while the city government champions its growing tech startup community.</Summary>
<Website>http://feedproxy.google.com/~r/entrepreneur/startingabusiness/~3/pG_kf79Kp3Y/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25045/guest@my.umbc.edu/50562f803609f18dbde45ad7cf345503/api/pixel</TrackingUrl>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 17:29:00 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="110259" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110259">
<Title>Roy T. Meyers, Political Science, in USA Today</Title>
<Body>
<![CDATA[
    <div class="html-content">A new USA Today article exploring the impacts of sequestration suggests federal budget cuts designed to save $85 billion in the short term might end up costing the government more money in the future through lower tax revenue, increased unemployment, contract terminations, and deferred maintenance on warships and airplanes. UMBC political science professor Roy T. Meyers, a former Congressional budget analyst, adds, “It makes it less likely that some contractors will want to supply services into the federal government, and in the future they’re going to charge a risk premium.” Meyers further argues, “We’ve been paying this cost of sequester …</div>
]]>
</Body>
<Summary>A new USA Today article exploring the impacts of sequestration suggests federal budget cuts designed to save $85 billion in the short term might end up costing the government more money in the...</Summary>
<Website>https://news.umbc.edu/roy-t-meyers-political-science-in-usa-today/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110259/guest@my.umbc.edu/1cf6c7ad2efc406ffeda222de4ba655f/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Tag>politicalscience</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 16:56:21 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25039" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25039">
<Title>3 Online Resources for Getting Expert Startup Advice</Title>
<Body>
<![CDATA[
    <div class="html-content">Can't afford to have an attorney on speed dial? Don't worry, help is just a click away.</div>
]]>
</Body>
<Summary>Can't afford to have an attorney on speed dial? Don't worry, help is just a click away.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/oKtzvbVpTqg/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25039/guest@my.umbc.edu/0dc274dbe5b5b582d927c0efcd644cba/api/pixel</TrackingUrl>
<Tag>business-growth</Tag>
<Tag>business-growth-strategies</Tag>
<Tag>business-management</Tag>
<Tag>mentors</Tag>
<Tag>resources</Tag>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 16:00:02 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25036" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25036">
<Title>Two women representing UMBC for Women's History Month!</Title>
<Tagline>"It's not HIStory - it's HERstory!"</Tagline>
<Body>
<![CDATA[
    <div class="html-content"><p>Caitlyn Leiter-Mason and Dr. Phyllis Robinson are representing UMBC on this awesome page highlighting women from USM for Women's History Month! Check it out!</p></div>
]]>
</Body>
<Summary>Caitlyn Leiter-Mason and Dr. Phyllis Robinson are representing UMBC on this awesome page highlighting women from USM for Women's History Month! Check it out!</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25036/guest@my.umbc.edu/c09b5ee6b76f4b11524a65578a5c96dd/api/pixel</TrackingUrl>
<Group token="womenscenter">Women's, Gender, &amp;amp; Equity Center</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/womenscenter</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xsmall.png?1750974263</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/original.png?1750974263</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xxlarge.png?1750974263</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xlarge.png?1750974263</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/large.png?1750974263</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/medium.png?1750974263</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/small.png?1750974263</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xsmall.png?1750974263</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/125/78272a4842689b30dbf74672182b78f8/xxsmall.png?1750974263</AvatarUrl>
<Sponsor>Women's Center</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/xxlarge.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/xlarge.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/large.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/medium.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/small.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/xsmall.jpg?1362170884</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/036/5eef269207a5f1914c93407bed2d9ab8/xxsmall.jpg?1362170884</ThumbnailUrl>
<PawCount>10</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 15:49:16 -0500</PostedAt>
<EditAt>Thu, 10 Aug 2023 12:52:20 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="25032" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25032">
<Title>NIH Working Group: Attention Graduate Students &amp; Postdocs</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><em>This message came to us from UMBC Chemistry alumna, Dr. LaTese Briggs. Dr. Briggs completed a postdoc at The Broad, a collaborative between Harvard and MIT. She is now a Program Analyst for Faster Cures, a division of the Milken Institute. </em></p>
    <p><br></p>
    <p>--------------------------------------------------------------------------------------------------------</p>
    <p>The NIH has issued a <a href="http://app.aaas-science.org/e/er?s=1906&amp;lid=27459&amp;elq=616d1003db7748ce8634139671519f3a" rel="nofollow external" class="bo"><span>Request for Information</span></a> about implementing the recommendations of its Working Group on the Biomedical Research Workforce.<strong>The comment deadline is April 22. </strong><span>Responses are being sought from all stakeholders in the extramural community, including students, postdoctorates, scientists, scientific societies, and NIH grantee institutions, as well as from the general public. </span></p>
    <p><span> </span></p>
    <p><span>Here is the Link:</span></p>
    <p><a href="http://grants.nih.gov/grants/guide/notice-files/NOT-OD-13-045.html" rel="nofollow external" class="bo">http://grants.nih.gov/grants/guide/notice-files/NOT-OD-13-045.html</a></p>
    </div>
]]>
</Body>
<Summary>This message came to us from UMBC Chemistry alumna, Dr. LaTese Briggs. Dr. Briggs completed a postdoc at The Broad, a collaborative between Harvard and MIT. She is now a Program Analyst for Faster...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25032/guest@my.umbc.edu/dc4f8f02ca0314ab46ab5d538bed47a6/api/pixel</TrackingUrl>
<Tag>biomedical</Tag>
<Tag>gradstudents</Tag>
<Tag>nih</Tag>
<Tag>postdocs</Tag>
<Group token="gspd">Grad Student &amp;amp; Postdoc Development </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/gspd</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xsmall.png?1781730740</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/original.png?1781730740</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xxlarge.png?1781730740</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xlarge.png?1781730740</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/large.png?1781730740</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/medium.png?1781730740</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/small.png?1781730740</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xsmall.png?1781730740</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/066/4b2a0ea3017d894b96de7bd4a45729d5/xxsmall.png?1781730740</AvatarUrl>
<Sponsor>PROMISE @ UMBC: Graduate Student Development</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/xxlarge.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/xlarge.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/large.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/medium.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/small.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/xsmall.jpg?1362169857</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/032/77c33d0fb152118e33778d34ae8a0473/xxsmall.jpg?1362169857</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 15:31:54 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="25030" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25030">
<Title>16-Year-Old White Girl Poses in &#8216;African Queen&#8217; Editorial</Title>
<Tagline>Beautiful As You Are</Tagline>
<Body>
<![CDATA[
    <div class="html-content">Controversial tactics for female models in America today. <br><br>Check out this article about Ondria Hardin, a white, sixteen-year-old model whose skin was painted so she could pose as an 'African Queen' in an editorial for Numero Magazine. What do you think? Grinds your gears? A misunderstood message? We want to know!<br><br><a href="http://jezebel.com/5986608/16+year+old-white-girl-poses-in-african-queen-editorial?fb_action_ids=2294564885612&amp;fb_action_types=og.likes&amp;fb_source=other_multiline&amp;action_object_map=%7B%222294564885612%22%3A132807103557433%7D&amp;action_type_map=%7B%222294564885612%22%3A%22og.likes%22%7D&amp;action_ref_map">http://jezebel.com/5986608/16+year+old-white-girl-poses-in-african-queen-editorial?fb_action_ids=2294564885612&amp;fb_action_types=og.likes&amp;fb_source=other_multiline&amp;action_object_map={%222294564885612%22%3A132807103557433}&amp;action_type_map={%222294564885612%22%3A%22og.likes%22}&amp;action_ref_map</a>  <br>
    </div>
]]>
</Body>
<Summary>Controversial tactics for female models in America today.   Check out this article about Ondria Hardin, a white, sixteen-year-old model whose skin was painted so she could pose as an 'African...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25030/guest@my.umbc.edu/7abcf23d2ca30cf91fbe56602fd6d128/api/pixel</TrackingUrl>
<Group token="themosaic">The Mosaic: Center for Cultural Diversity </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/themosaic</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xsmall.png?1755890395</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/original.png?1755890395</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xxlarge.png?1755890395</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xlarge.png?1755890395</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/large.png?1755890395</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/medium.png?1755890395</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/small.png?1755890395</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xsmall.png?1755890395</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xxsmall.png?1755890395</AvatarUrl>
<Sponsor>The Office of Student Life's Mosaic Center</Sponsor>
<PawCount>0</PawCount>
<CommentCount>2</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 15:09:28 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="25027" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25027">
<Title>Scholarship Opportunities For Returning Students</Title>
<Tagline>Are you a student over the age of 25?Do you have 60 credits?</Tagline>
<Body>
<![CDATA[
    <div class="html-content">Here is a great opportunity for students who have answered 'yes' to both questions in the tagline. You can apply for the Newcombe scholarship as well as the Bryson Neville scholarship. Applications for both scholarship programs have been attached below.<div>
    <br><div>For more information about the Newcombe scholarship program, click on the link below<div><a href="http://my.umbc.edu/groups/womenscenter/news/23561" rel="nofollow external" class="bo">http://my.umbc.edu/groups/womenscenter/news/23561</a></div>
    <div><span><br></span></div>
    <div><span>For more information about the Bryson Neville scholarship program, click on the link below</span></div>
    <div><span><a href="http://my.umbc.edu/groups/womenscenter/news/23572">http://my.umbc.edu/groups/womenscenter/news/23572</a></span></div>
    </div>
    </div>
    <div><span><br></span></div>
    <div><pre><strong>*Applications are due on Friday, April 5th by 4pm. *</strong></pre></div>
    </div>
]]>
</Body>
<Summary>Here is a great opportunity for students who have answered 'yes' to both questions in the tagline. You can apply for the Newcombe scholarship as well as the Bryson Neville scholarship....</Summary>
<AttachmentKind>Document</AttachmentKind>
<AttachmentUrl>https://assets3-my.umbc.edu/system/shared/attachments/3e22223bc96008308132b8b42bfd6958/6a3ef874/news/000/025/027/b977b532403e14d6681a00f78f95506e/2013-2014 Newcombe Application.doc?1362167546</AttachmentUrl>
<Attachments>
<Attachment kind="Document" url="https://my3.my.umbc.edu/posts/25027/attachments/9167"></Attachment>
<Attachment kind="Document" url="https://my3.my.umbc.edu/posts/25027/attachments/9168"></Attachment>
</Attachments>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25027/guest@my.umbc.edu/8e1dce39aad9d14d9eeb641336c4c71f/api/pixel</TrackingUrl>
<Group token="themosaic">The Mosaic: Center for Cultural Diversity </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/themosaic</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xsmall.png?1755890395</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/original.png?1755890395</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xxlarge.png?1755890395</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xlarge.png?1755890395</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/large.png?1755890395</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/medium.png?1755890395</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/small.png?1755890395</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xsmall.png?1755890395</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/079/8da8369525d899e6fa49decd5a80b73f/xxsmall.png?1755890395</AvatarUrl>
<Sponsor>The Office of Student Life's Mosaic Center</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 14:56:19 -0500</PostedAt>
<EditAt>Fri, 01 Mar 2013 15:24:44 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="26023" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26023">
<Title>Best of Tuts+ in February 2013</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30418&amp;c=268722557" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30418&amp;c=268722557" alt="" style="max-width: 100%; height: auto;"></a><p>Each month, we bring together a selection of the best tutorials and articles from across the whole <a href="http://tutsplus.com/" rel="nofollow external" class="bo">Tuts+ network</a>. Whether you’d like to read the top posts from your favourite site, or would like to start learning something completely new, this is the best place to start!</p>
    <p></p>
    <hr>
    <h2>Psdtuts+ — Photoshop Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/grant-friedman/Premium_206_Wave_preview.jpg" alt="Create a Surreal “Parting of the Sea” Photo Manipulation" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/part-the-sea/" rel="nofollow external" class="bo">Create a Surreal “Parting of the Sea” Photo Manipulation</a></h4>
    <p>Water, by its very nature is difficult to convincingly incorporate into a composition. In this tutorial, you will discover how to combine advanced masking techniques, blending modes, adjustment layers and clever use of filters to part the sea and create a surreal photo manipulation. Let’s get started!</p>
    <p><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/part-the-sea/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/grant-friedman/0816_Lips_preview.jpg" alt="How to Replace a Woman’s Lipstick With Artwork Using Creative Retouching Techniques" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/retouching-lipstick-artwork/" rel="nofollow external" class="bo">How to Replace a Woman’s Lipstick With Artwork Using Creative Retouching Techniques</a></h4>
    <p>Creative retouching techniques are often used to enhance the photography that is being used for a particular project. In this tutorial, Stefka Pavlova will show you how to replace a woman’s lipstick with artwork using some creative and effective photo retouching techniques. Let’s get started!</p>
    <p><a href="http://psd.tutsplus.com/tutorials/photo-effects-tutorials/retouching-lipstick-artwork/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/grant-friedman/friendlyportfolio.png" alt="11 Ways to Make Your Portfolio Friendlier" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://psd.tutsplus.com/articles/theory/11-ways-to-make-your-portfolio-friendlier/" rel="nofollow external" class="bo">Ways to Make Your Portfolio Friendlier</a></h4>
    <p>As the editor of Psdtuts+, I look through a lot of portfolios. A big part of my job is to find talented artists and recruit them to become authors for the site. Over the years, I have developed some strong opinions about the ways in which artists present their work online. In this article, I wanted to share a few easy ways that you can make your online portfolio a bit friendlier to people that hire artists. Let’s take a look!</p>
    <p><a href="http://psd.tutsplus.com/articles/theory/11-ways-to-make-your-portfolio-friendlier/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Nettuts+ — Web Development</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/ember-js.jpg" alt="Speaking With the Ember.js Core Team" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://net.tutsplus.com/articles/interviews/ember-js-core-team-interview/" rel="nofollow external" class="bo">Speaking With the Ember.js Core Team</a></h4>
    <p>Single page apps are the new hotness; everyone’s trying to figure out the easiest way to build them. But it’s more than just finding a couple of controls to slap together and sprinkling Ajax pixie dust on it. Building scalable and maintainable apps is serious business, which requires serious tools.</p>
    <p><a href="http://net.tutsplus.com/articles/interviews/ember-js-core-team-interview/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/laravel-4.jpg" alt="Testing Like a Boss in Laravel: Models" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://net.tutsplus.com/tutorials/php/testing-like-a-boss-in-laravel-models/" rel="nofollow external" class="bo">Testing Like a Boss in Laravel: Models</a></h4>
    <p>If you’re hoping to learn<a href="http://net.tutsplus.com/tutorials/php/the-newbies-guide-to-test-driven-development/" rel="nofollow external" class="bo"> why tests are beneficial</a>, this is not the article for you. Over the course of this tutorial, I will assume that you already understand the advantages, and are hoping to learn how best to write and organize your tests in <a href="http://four.laravel.com" rel="nofollow external" class="bo">Laravel 4</a>.</p>
    <p><a href="http://net.tutsplus.com/tutorials/php/testing-like-a-boss-in-laravel-models/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeffreyway/write-code-that-embraces-change.jpg" alt="How to Write Code That Embraces Change" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://net.tutsplus.com/tutorials/how-to-write-code-that-embraces-change/" rel="nofollow external" class="bo">How to Write Code That Embraces Change</a></h4>
    <p>Writing code, which is easy to change is the Holy Grail of programming. Welcome to programming nirvana! But things are much more difficult in reality: source code is difficult to understand, dependencies point in countless directions, coupling is annoying, and you soon feel the heat of programming hell. In this tutorial, we will discuss a few principles, techniques and ideas that will help you write code that is easy to change.</p>
    <p><a href="http://net.tutsplus.com/tutorials/how-to-write-code-that-embraces-change/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Vectortuts+ — Illustrator Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/vector.tutsplus.com/authors/sharon-milne/dean_article_anime_preview.jpg" alt="What is Anime/Manga and Why should you Create it in Vector?" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://vector.tutsplus.com/articles/what-is-animemanga-and-why-should-you-create-it-in-vector/" rel="nofollow external" class="bo">What is Anime/Manga and Why should you Create it in Vector?</a></h4>
    <p>Today we will be looking at exactly what makes a drawing "anime styled", the general theories behind drawing in this style, and why vector is a fantastic medium to work with when creating anime/manga styled artwork. This is a great introduction for those who aren’t familiar with the style and wish to know more.</p>
    <p><a href="http://vector.tutsplus.com/articles/what-is-animemanga-and-why-should-you-create-it-in-vector/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/vector.tutsplus.com/authors/sharon-milne/mary_tut_bubblegum_preview.jpg" alt="How to Create a Colorful Stylized Portrait in Adobe Illustrator" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://vector.tutsplus.com/tutorials/illustration/how-to-create-a-colorful-stylized-portrait-in-adobe-illustrator/" rel="nofollow external" class="bo">How to Create a Colorful Stylized Portrait in Adobe Illustrator</a></h4>
    <p>This tutorial focuses on creating a vibrant, poppy portrait in Adobe Illustrator. Using bright colors, transparent gradients, and a sense of whimsy, you’ll be constructing facial features and candy hair in no time.</p>
    <p><a href="http://vector.tutsplus.com/tutorials/illustration/how-to-create-a-colorful-stylized-portrait-in-adobe-illustrator/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/vector.tutsplus.com/authors/sharon-milne/thumbnail.jpg" alt="How to Create Multiple Frames with One Image in Adobe InDesign" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://vector.tutsplus.com/tutorials/tools-tips/how-to-create-multiple-frames-with-one-image-in-adobe-indesign/" rel="nofollow external" class="bo">How to Create Multiple Frames with One Image in Adobe InDesign</a></h4>
    <p>It is possible to create cool image effects not only in Photoshop and Illustrator but also in InDesign. In this tutorial we will learn how to place one image into several randomly placed frames. We will use Effects, Object Styles, special Paste features and learn some very useful techniques on the way. Let’s get started!</p>
    <p><a href="http://vector.tutsplus.com/tutorials/tools-tips/how-to-create-multiple-frames-with-one-image-in-adobe-indesign/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Webdesigntuts+ — Web Design Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/webdesign.tutsplus.com/authors/ian-yates/seo-checjklist-preview.png" alt="A Web Designer’s SEO Checklist (Including Portable Formats)" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://webdesign.tutsplus.com/articles/general/seo-checklist/" rel="nofollow external" class="bo">A Web Designer’s SEO Checklist (Including Portable Formats)</a></h4>
    <p>As you might have noticed from our previous articles; there are many factors which need to be influenced to optimize a website for search engines. After a while you might not see the woods for the trees. To help you bring some order to this chaos, weve compiled an SEO checklist.</p>
    <p><a href="http://webdesign.tutsplus.com/articles/general/seo-checklist/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/webdesign.tutsplus.com/authors/ian-yates/layers-preview.png" alt="Making the Most of Photoshop Layers" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://webdesign.tutsplus.com/tutorials/applications/making-the-most-of-photoshop-layers/" rel="nofollow external" class="bo">Making the Most of Photoshop Layers</a></h4>
    <p>The way web designers are using Photoshop is changing; pixel perfect comps are less relevant than they were a year or two ago. However, Photoshop is still an invaluable design tool and using its features properly is as important as ever. The following tips will help you master working with layers.</p>
    <p><a href="http://webdesign.tutsplus.com/tutorials/applications/making-the-most-of-photoshop-layers/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/webdesign.tutsplus.com/authors/ian-yates/performance-thumb.png" alt="Designing for Performance" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://webdesign.tutsplus.com/articles/user-experience-articles/designing-for-performance/" rel="nofollow external" class="bo">Designing for Performance</a></h4>
    <p>Designers have a tremendous impact on site performance based on <em>how</em> they design for the web, before a single line of code is written. This article will cover how performance can be <em>designed</em> and what it takes to make it happen.</p>
    <p><a href="http://webdesign.tutsplus.com/articles/user-experience-articles/designing-for-performance/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Phototuts+ — Photography Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://tutsplus-media.s3.amazonaws.com/photo.tutsplus.com/authors/cameron-knight/lrvspspreview.jpg" alt="Comparing Effects in Lightroom and Photoshop" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://photo.tutsplus.com/articles/post-processing-articles/comparing-effects-in-lightroom-and-photoshop/" rel="nofollow external" class="bo">Comparing Effects in Lightroom and Photoshop</a></h4>
    <p>Do you need Photoshop if you own Lightroom? This is a question that is often asked, and which there is no definite answer. In this video, we take an existing image manipulated in Photoshop and set out to attempt to create a similar style of image using only Lightroom 3. Let’s see how it turns out.</p>
    <p><a href="http://photo.tutsplus.com/articles/post-processing-articles/comparing-effects-in-lightroom-and-photoshop/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://tutsplus-media.s3.amazonaws.com/photo.tutsplus.com/authors/andrew-childress/preview4.jpg" alt="How to Shoot a Mysterious Levitation Photo" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://photo.tutsplus.com/tutorials/shooting/how-to-shoot-a-mysterious-levitation-photo/" rel="nofollow external" class="bo">How to Shoot a Mysterious Levitation Photo</a></h4>
    <p>If you’re looking to bring some magic to your next photograph, today’s tutorial is going to help you do just that. With some creative planning and easy post-production, we’ll create a levitation photo that seems to break the laws of physics.</p>
    <p><a href="http://photo.tutsplus.com/tutorials/shooting/how-to-shoot-a-mysterious-levitation-photo/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://tutsplus-media.s3.amazonaws.com/photo.tutsplus.com/authors/cameron-knight/videoshutter_01preview.jpg" alt="Quick Tip: How Does Shutter Speed Affect Video?" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://photo.tutsplus.com/articles/shooting-articles/quick-tip-how-does-shutter-speed-affect-video/" rel="nofollow external" class="bo">Quick Tip: How Does Shutter Speed Affect Video?</a></h4>
    <p>When talking about video, many people refer the “cinematic” or “videoish” looks. Cinematic is in. Everyone wants to make sure their videos look like they came from a Hollywood backlot. One of the most basic methods of changing the look is by controlling the shutter speed.</p>
    <p><a href="http://photo.tutsplus.com/articles/shooting-articles/quick-tip-how-does-shutter-speed-affect-video/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Cgtuts+ — Computer Graphics Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/cg.tutsplus.com/authors/ben-tate/Earth_Cross_Section_Thumb.png" alt="Create a Stylish Earth Cross-Section Animation with Cinema 4D – Part 1" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://cg.tutsplus.com/tutorials/maxon-cinema-4d/create-a-stylish-earth-cross-section-animation-with-cinema-4d-part-1/" rel="nofollow external" class="bo">Create a Stylish Earth Cross-Section Animation with Cinema 4D – Part 1</a></h4>
    <p>In our latest Cinema 4D tutorial, Aleksey Voznesenski will walk you through the process of Modeling, Texturing, Lighting and Animating a cross section of planet Earth. You’ll learn a whole bunch of techniques for adding materials and using alpha channels to modify only certain parts of the texture maps. You’ll also learn how to animate the cross section using booles and make everything look sexy with materials and lighting.</p>
    <p><a href="http://cg.tutsplus.com/tutorials/maxon-cinema-4d/create-a-stylish-earth-cross-section-animation-with-cinema-4d-part-1/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/cg.tutsplus.com/authors/ben-tate/HeMan_Thumb.jpg" alt="Create a Classic He-Man Action Figure using Maya: Part 1 – Tuts+ Premium" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-classic-he-man-action-figure-using-maya-part-1-tuts-premium/" rel="nofollow external" class="bo">Create a Classic He-Man Action Figure using Maya: Part 1 – Tuts+ Premium</a></h4>
    <p>Today we’re kicking off a brand new tutorial series covering the creation of an awesome He-Man Action Figure using Maya. This unique series will walk you through the entire process of modeling your very own action figure inspired by the iconic 80′s character.</p>
    <p><a href="http://cg.tutsplus.com/tutorials/autodesk-maya/create-a-classic-he-man-action-figure-using-maya-part-1-tuts-premium/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/cg.tutsplus.com/authors/chris-tate/GI_Photometric_Lighting_Thumb.png" alt="Global Illumination vs Photometric Lighting in Maya" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://cg.tutsplus.com/tutorials/autodesk-maya/global-illumination-vs-photometric-lighting-in-maya/" rel="nofollow external" class="bo">Global Illumination vs Photometric Lighting in Maya</a></h4>
    <p>When working with Mental-Ray, many times we would use final gather almost exclusively. In this tutorial I would like to explore two less commonly used methods of illuminating our scenes, Global Illumination and photometric lighting.Throughout this tutorial we will explore these two methods, and compare their positive versus negative virtues.</p>
    <p><a href="http://cg.tutsplus.com/tutorials/autodesk-maya/global-illumination-vs-photometric-lighting-in-maya/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Aetuts+ — After Effects Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/ae.tutsplus.com/authors/adam-everett-miller/Aetuts_Preview_Spill_Suppression.jpg" alt="Advanced Spill Suppression Methods" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://ae.tutsplus.com/tutorials/workflow/advanced-spill-suppression-methods/" rel="nofollow external" class="bo">Advanced Spill Suppression Methods</a></h4>
    <p>This tutorial shows how to use sophisticated channel operations to achieve a more accurate spill suppression result than is attainable with AE’s default plug-ins.</p>
    <p><a href="http://ae.tutsplus.com/tutorials/workflow/advanced-spill-suppression-methods/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/ae.tutsplus.com/authors/adam-everett-miller/Aetuts_Preview_Animation_Weight.jpg" alt="Keyframing Tips for Adding Weight to Basic Shapes" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://ae.tutsplus.com/tutorials/motion-graphics/keyframing-tips-for-adding-weight-to-basic-shapes/" rel="nofollow external" class="bo">Keyframing Tips for Adding Weight to Basic Shapes</a></h4>
    <p>There are some tiny tricks when animating moving graphics and in this tutorial we will go through some of them. We’ll be examining the movements of some basic shapes as they are repositioned from point A to B. I will show you how they should react the force based on their given weight, both in rotation and position. And of course, as a bonus we’ll be creating bouncing ball.</p>
    <p><a href="http://ae.tutsplus.com/tutorials/motion-graphics/keyframing-tips-for-adding-weight-to-basic-shapes/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/ae.tutsplus.com/authors/adam-everett-miller/Aetuts_Preview_Newton_2_Introduction.jpg" alt="Introduction to the New Features in Newton 2" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://ae.tutsplus.com/tutorials/workflow/introduction-to-the-new-features-in-newton-2/" rel="nofollow external" class="bo">Introduction to the New Features in Newton 2</a></h4>
    <p>This is an introduction to the new features of Newton 2.  Newton is a 2D physics simulator that allows users to apply various simulations like gravity, collision, and bounce to their layers in After Effects. We’re going to work through a few scenarios to see how to set up and execute a simulation.</p>
    <p><a href="http://ae.tutsplus.com/tutorials/workflow/introduction-to-the-new-features-in-newton-2/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Audiotuts+ — Audio &amp; Production Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/audio.tutsplus.com/authors/adrian-try/ridesample-preview.jpg" alt="Quick Tip: Creating a Drum Sequence with Just One Sample" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://audio.tutsplus.com/tutorials/production/quick-tip-creating-a-drum-sequence-with-just-one-sample/" rel="nofollow external" class="bo">Quick Tip: Creating a Drum Sequence with Just One Sample</a></h4>
    <p>Today I will show you a new technique which you can use to create interesting drum patterns. My last article was about modulation. Modulation techniques can turn your samples (in our example a ride sample) into a glitchy tom supported drum sequence. All you need a sampler or an impulse, and a ride sample.</p>
    <p> </p>
    <p><a href="http://audio.tutsplus.com/tutorials/production/quick-tip-creating-a-drum-sequence-with-just-one-sample/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/audio.tutsplus.com/authors/sean-hodge/preview-audio-resources.png" alt="Check Out the New Recommended Resources on Audiotuts+" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://audio.tutsplus.com/articles/news/audiotuts-resources/" rel="nofollow external" class="bo">Check Out the New Recommended Resources on Audiotuts+</a></h4>
    <p>We’ve added a new page to the site, which will help audio professionals grab top quality software, tools and gear. It’s filled with our <a href="http://audio.tutsplus.com/recommended-resources" rel="nofollow external" class="bo">favorite resources that we recommend for audio junkies</a>. You can jump straight over to our <a href="http://audio.tutsplus.com/recommended-resources" rel="nofollow external" class="bo">Recommended Resources</a> page here on Audiotuts+ or read on for further information.</p>
    <p><a href="http://audio.tutsplus.com/articles/news/audiotuts-resources/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/audio.tutsplus.com/authors/adrian-try/beginnermidipreview.jpg" alt="A Beginner’s Guide to MIDI Recording" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://audio.tutsplus.com/tutorials/production/a-beginners-guide-to-midi-recording/" rel="nofollow external" class="bo">A Beginner’s Guide to MIDI Recording</a></h4>
    <p>In this is a beginner’s tutorial on MIDI we cover how to record and edit MIDI, and create your own MIDI parts. Just getting into using more advanced audio software? Never done any MIDI recording? Then this tutorial is for you.</p>
    <p><a href="http://audio.tutsplus.com/tutorials/production/a-beginners-guide-to-midi-recording/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Wptuts+ — WordPress Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/wp.tutsplus.com/authors/rakhithanimesh/Disqus-comments.png" alt="Improving Blog Discussions With Disqus Comments" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://wp.tutsplus.com/tutorials/business/improving-blog-discussions-with-disqus-comments/" rel="nofollow external" class="bo">Improving Blog Discussions With Disqus Comments</a></h4>
    <p><a href="http://wp.tutsplus.com/tutorials/business/how-to-engage-readers-into-effective-discussions/" rel="nofollow external" class="bo">In the first part</a> we discussed how we can use the default WordPress comments system to engage users into effective discussions. Today we are going to talk about how Disqus can help you to create effective discussions and how you can choose between default WordPress comment system vs Disqus systems.</p>
    <p><a href="http://wp.tutsplus.com/tutorials/business/improving-blog-discussions-with-disqus-comments/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/wp.tutsplus.com/authors/japh/WPPlugins.png" alt="Strategies for Supporting WordPress Plugins" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://wp.tutsplus.com/tutorials/plugins/strategies-for-supporting-wordpress-plugins/" rel="nofollow external" class="bo">Strategies for Supporting WordPress Plugins</a></h4>
    <p>As a WordPress developer – specifically for plugins, in this case – determining the best way to provide support for your work can be a challenge. In fact, I’m currently in the process of evaluating what may be the best route for my current set of plugins, so this topic hits close to home.</p>
    <p><a href="http://wp.tutsplus.com/tutorials/plugins/strategies-for-supporting-wordpress-plugins/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/wp.tutsplus.com/authors/japh/preview.png" alt="How to Create a WordPress Avatar Management Plugin from Scratch: Getting Started" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://wp.tutsplus.com/tutorials/plugins/how-to-create-a-wordpress-avatar-management-plugin-from-scratch-getting-started/" rel="nofollow external" class="bo">How to Create a WordPress Avatar Management Plugin from Scratch: Getting Started</a></h4>
    <p>Avatar Manager for WordPress is a sweet and simple plugin for storing avatars locally and more. Easily.</p>
    <p><a href="http://wp.tutsplus.com/tutorials/plugins/how-to-create-a-wordpress-avatar-management-plugin-from-scratch-getting-started/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Mobiletuts+ — Mobile Development Tutorials</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/mobile.tutsplus.com/authors/mark-hammonds/iOS-SDK_Opening-Documents-Preview.png" alt="iOS SDK: Previewing and Opening Documents" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mobile.tutsplus.com/tutorials/iphone/previewing-and-opening-documents-with-uidocumentinteractioncontroller/" rel="nofollow external" class="bo">iOS SDK: Previewing and Opening Documents</a></h4>
    <p>Sandboxing on iOS makes the platform much more secure and this ultimately benefits every user of the platform. However, because of the strict rules inherent to sandboxing, sharing data between applications is not trivial. An often overlooked class that helps with sharing documents between applications is the <code>UIDocumentInteractionController</code> class. In this quick tip, I will show you how you can use this class to preview documents as well as opening documents in other applications installed on the device.</p>
    <p><a href="http://mobile.tutsplus.com/tutorials/iphone/previewing-and-opening-documents-with-uidocumentinteractioncontroller/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/mobile.tutsplus.com/authors/mark-hammonds/Corona-SDK_Hundreds-Game_preview.png" alt="Create a Hundreds-Like Game – Interface Creation" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mobile.tutsplus.com/tutorials/corona/create-a-hundreds-like-game-interface-creation/" rel="nofollow external" class="bo">Create a Hundreds-Like Game – Interface Creation</a></h4>
    <p>In this tutorial series, you’ll learn how to create  a game like the popular Hundreds. The objective of the game is to reach 100 points without the circles touching while you raise the score. Read on!</p>
    <p><a href="http://mobile.tutsplus.com/tutorials/corona/create-a-hundreds-like-game-interface-creation/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/mobile.tutsplus.com/authors/eduardo-gonzalez/Facebook-WP7.png" alt="Windows Phone: Connecting with Facebook" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mobile.tutsplus.com/tutorials/windows/windows-phone-connecting-with-facebook/" rel="nofollow external" class="bo">Windows Phone: Connecting with Facebook</a></h4>
    <p>In this tutorial, we will talk about how to interact with the Facebook API, and all the tools you need in order to connect with it. Specifically, the app that we are going to make will be able to connect with the user’s Facebook account and update their status. Lets get started!<br> </p>
    <p><a href="http://mobile.tutsplus.com/tutorials/windows/windows-phone-connecting-with-facebook/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Gamedevtuts+ — Game Development</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/gamedev.tutsplus.com/authors/michael-james-williams/TI_83_by_Brothers_Le.jpg" alt="Making Your First Game: A Walkthrough for Game Developers" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://gamedev.tutsplus.com/articles/business-articles/making-your-first-game-a-walkthrough-for-game-developers/" rel="nofollow external" class="bo">Making Your First Game: A Walkthrough for Game Developers</a></h4>
    <p>When you get stuck in a video game, you might head to <a href="http://www.gamefaqs.com/" rel="nofollow external" class="bo">GameFAQs</a> to find a walkthrough to help you get through it.  When you get stuck making your first video game, what can you do? That’s where this article comes in: think of this as a walkthrough for developing your first game.</p>
    <p><a href="http://gamedev.tutsplus.com/articles/business-articles/making-your-first-game-a-walkthrough-for-game-developers/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/gamedev.tutsplus.com/authors/michael-james-williams/Portal_2_Level_Design_Intro.jpg" alt="Portal 2 Level Design: Creating Puzzles to Challenge Your Players" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://gamedev.tutsplus.com/tutorials/level-design/portal-2-level-design-creating-puzzles-to-challenge-your-players/" rel="nofollow external" class="bo">Portal 2 Level Design: Creating Puzzles to Challenge Your Players</a></h4>
    <p><a href="http://orange.half-life2.com/portal.html" rel="nofollow external" class="bo">Portal</a> was one of the most distinctive puzzle games of the past few years, and its sequel <a href="http://www.thinkwithportals.com/" rel="nofollow external" class="bo">Portal 2</a> showed us that lightning can strike twice. A little less than a year ago, Valve made waves once again by introducing a simple yet powerful level editing tool in Portal 2 itself. In this article I’m going to discuss how to design great puzzles that will challenge your players.</p>
    <p><a href="http://gamedev.tutsplus.com/tutorials/level-design/portal-2-level-design-creating-puzzles-to-challenge-your-players/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/gamedev.tutsplus.com/authors/fernando-bevilacqua/featured_image_cheaters.jpg" alt="How We Dealt With Cheaters in Our Turn-Based MMO Game" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://gamedev.tutsplus.com/articles/business-articles/how-we-dealt-with-cheaters-in-our-turn-based-mmo/" rel="nofollow external" class="bo">How We Dealt With Cheaters in Our Turn-Based MMO Game</a></h4>
    <p>Cheaters, griefers and trolls can ruin your game. The bigger your game, the more likely you are to face them. Although they are just trying to have fun like everybody else, they do that by negatively affecting the whole game. Suddenly your creation becomes a living nightmare. Read on to find out how we dealt with this problem in our turn-based MMO.</p>
    <p><a href="http://gamedev.tutsplus.com/articles/business-articles/how-we-dealt-with-cheaters-in-our-turn-based-mmo/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Mactuts+ — Mac &amp; OS X</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/mac.tutsplus.com/authors/paula-dupont/keycard.png" alt="Use Your Phone to Automatically Lock Your Mac When You Walk Away" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mac.tutsplus.com/tutorials/security/use-your-phone-to-automatically-lock-your-mac-when-you-walk-away/" rel="nofollow external" class="bo">Use Your Phone to Automatically Lock Your Mac When You Walk Away</a></h4>
    <p>I’ve got a couple of applications that can help you out, and well go a bit further and look at how you can use AppleScripts to really tweak what your Mac does when you come and go. All you need is a phone or other Bluetooth device and we can get your Mac locking itself up in no time!</p>
    <p><a href="http://mac.tutsplus.com/tutorials/security/use-your-phone-to-automatically-lock-your-mac-when-you-walk-away/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://tuts-authors.s3.amazonaws.com/mac.tutsplus.com/Jordan%20Merrick/2012/12/03/ext-icon.png" alt="How to Move Your iTunes, iPhoto or Aperture Library to an External Drive" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mac.tutsplus.com/tutorials/media/how-to-move-your-itunes-iphoto-or-aperture-library-to-an-external-drive/" rel="nofollow external" class="bo">How to Move Your iTunes, iPhoto or Aperture Library to an External Drive</a></h4>
    <p>As Apple moves towards solid state drives for their portable range, users are having to be more frugal with their storage requirements. In this tutorial, well show you how to keep your large media libraries on an external drive and keep your portable Mac from filling up!</p>
    <p><a href="http://mac.tutsplus.com/tutorials/media/how-to-move-your-itunes-iphoto-or-aperture-library-to-an-external-drive/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/mac.tutsplus.com/authors/josh-johnson/TextExpander-200x200.png" alt="Master TextExpander With These Helpful Tips &amp; Tricks" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://mac.tutsplus.com/tutorials/app-training/master-textexpander-with-these-helpful-tips-tricks/" rel="nofollow external" class="bo">Master TextExpander With These Helpful Tips &amp; Tricks</a></h4>
    <p>If you’re a <a href="http://smilesoftware.com/TextExpander/index.html" rel="nofollow external" class="bo">TextExpander</a> user, then you know that it can have a drastic positive impact on your productivity. But are you using TextExpander to its full ability or are you barely scraping the surface of what it can do? This tutorial takes a deep dive into this incredibly versatile tool and teaches you everything you need to know to become a TextExpander master.</p>
    <p><a href="http://mac.tutsplus.com/tutorials/app-training/master-textexpander-with-these-helpful-tips-tricks/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Crafttuts+ — Craft &amp; Handmade</h2>
    <ul>
    <li>
    <div> <img src="http://cdn.tutsplus.com/craft.tutsplus.com/authors/eleanna-kotsikou/preview3.jpg" alt="Make Your Own Perpetual Calendar With Blackboard Paint" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="https://craft.tutsplus.com/tutorials/repurposing-upcycling/make-your-own-perpetual-calendar-with-blackboard-paint/" rel="nofollow external" class="bo">Make Your Own Perpetual Calendar With Blackboard Paint</a></h4>
    <p>A perpetual calendar is a nice spin on a traditional calendar, as it’s super-practical and means you don’t have to shell out for a new one every year. In this tutorial, we’ve combined the practicality of a perpetual calendar with the awesome functionality of chalkboard paint, to create a stunning organisational tool that can be updated time and again – with little fuss, or mess.</p>
    <p><a href="https://craft.tutsplus.com/tutorials/repurposing-upcycling/make-your-own-perpetual-calendar-with-blackboard-paint/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/craft.tutsplus.com/authors/lisa-tilse/the-red-thread-geometric-mobile-preview.jpg" alt="Make a Beautiful Paper Polyhedron Mobile" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="https://craft.tutsplus.com/tutorials/paper-crafts/make-a-beautiful-paper-polyhedron-mobile/" rel="nofollow external" class="bo">Make a Beautiful Paper Polyhedron Mobile</a></h4>
    <p>If you thought mobiles were just for kids’ rooms, think again. This mobile of polyhedron paper shapes is a beautiful sculptural addition for any room of your home. Choose colours to suit your space and hang it from the ceiling – or even on a wall.</p>
    <p><a href="https://craft.tutsplus.com/tutorials/paper-crafts/make-a-beautiful-paper-polyhedron-mobile/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://cdn.tutsplus.com/craft.tutsplus.com/authors/erica-craft/Create-a-Combination-Coptic-Long-stitch-Archival-Book3_200x200.jpg" alt="Create a Stunning Combination Coptic Long-stitch Archival Book" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="https://craft.tutsplus.com/tutorials/bookbinding/create-a-combination-coptic-long-stitch-archival-book/" rel="nofollow external" class="bo">Create a Stunning Combination Coptic Long-stitch Archival Book</a></h4>
    <p>This tutorial will show you how to make a good quality, archival book from beginning to end. Book binding requires a lot of patience and practice, but the result is a beautiful work of art that you can give as a gift, or fill with your own drawings, notes and photos. Let’s begin!<br> </p>
    <p><a href="https://craft.tutsplus.com/tutorials/bookbinding/create-a-combination-coptic-long-stitch-archival-book/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>FreelanceSwitch — Freelance Jobs &amp; Information</h2>
    <ul>
    <li>
    <div> <img src="http://freelanceswitch.com/wp-content/uploads/2013/01/preview-find-clients-twitter.png" alt="" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://freelanceswitch.com/freelance-marketing/how-to-find-clients-on-twitter/" rel="nofollow external" class="bo">How to Find Freelance Clients on Twitter</a></h4>
    <p>I’ve often heard freelancers say “I don’t use Twitter for marketing”. That’s like saying you don’t use networking events to meet people (Well, perhaps you enjoy the free food, but really?).<br> Like it or not, if you’re on Twitter, you use it for marketing. Twitter is a public platform, and potential clients will look at your Twitter account when they’re deciding whether to hire you.</p>
    <p><a href="http://freelanceswitch.com/freelance-marketing/how-to-find-clients-on-twitter/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://freelanceswitch.com/wp-content/uploads/2013/02/preview-solo-vs-agency-marketing.png" alt="" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://freelanceswitch.com/freelance-marketing/marketing-an-agency/" rel="nofollow external" class="bo">The Differences Between Marketing Yourself Solo and Marketing an Agency</a></h4>
    <p>When you’re first marketing yourself as a freelancer, you have to make sure that your clients trust you. The entire point of your marketing is to convince each prospective client that you, personally, will do an awesome job on their project. But that approach doesn’t work when you won’t be personally doing every piece of work that passes through your agency.</p>
    <p><a href="http://freelanceswitch.com/freelance-marketing/marketing-an-agency/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div> <img src="http://freelanceswitch.com/wp-content/uploads/2013/02/preview-mobile-social-media-apps.png" alt="" width="150" height="150" style="max-width: 100%; height: auto;">
    </div>
    <h4><a href="http://freelanceswitch.com/freelance-marketing/best-social-media-mobile-apps/" rel="nofollow external" class="bo">10 Best Mobile Apps for Easier Social Media Marketing on the Go</a></h4>
    <p>I have found that one of the best ways to take advantage of my time – while waiting in the drive-thru line, waiting for an appt., or watching my kids at sports events – is to get some social media marketing done. This helps with efficiency when I am sitting down at my computer trying to get some writing done.</p>
    <p><a href="http://freelanceswitch.com/freelance-marketing/best-social-media-mobile-apps/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    <hr>
    <h2>Tuts+ Premium — Creative &amp; Technical Skills</h2>
    <ul>
    <li>
    <div><p><img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/joel-bankhead/dev.jpg" alt="dev" width="150" height="150" style="max-width: 100%; height: auto;"></p></div>
    <h4><a href="https://tutsplus.com/course/whats-new-in-laravel-4/" rel="nofollow external" class="bo">What’s New in Laravel 4</a></h4>
    <p>The coding world moves pretty fast. Since my last coverage of Laravel, Laravel Essentials, much has changed for the better. While plenty of that course still applies, a variety of adjustments and additions have been made to the framework. This course will get you up to speed on those changes as quickly as possible.</p>
    <p>Please note that this is a live course. Check back each week for new lessons!</p>
    <p><a href="https://tutsplus.com/course/whats-new-in-laravel-4/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div><p><img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/joel-bankhead/ppsd.jpg" alt="ppsd" width="150" height="150" style="max-width: 100%; height: auto;"></p></div>
    <h4><a href="https://tutsplus.com/course/psd-to-html-for-designers/" rel="nofollow external" class="bo">PSD to HTML for Designers</a></h4>
    <p>Have you ever tried to take a nice PSD design for a web site and tried to translate it to HTML? Not always easy, is it! Here is Adi Purdila to help us learn this sometimes tricky art, where you will be taking an already designed web page layout and developing it into a functional, working web page using intermediate and current techniques.</p>
    <p><a href="https://tutsplus.com/course/psd-to-html-for-designers/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    <li>
    <div><p><img src="http://cdn.tutsplus.com/psd.tutsplus.com/authors/joel-bankhead/draw.jpg" alt="draw" width="150" height="150" style="max-width: 100%; height: auto;"></p></div>
    <h4><a href="https://tutsplus.com/course/digital-drawing-fundamentals/" rel="nofollow external" class="bo">Digital Drawing Fundamentals</a></h4>
    <p>Whether you’re an ambitious illustrator or an experienced designer, almost everyone wants to improve their traditional drawing skills. Kirk Nelson is here to do just that! As an experienced digital painter and designer, Kirk walks you through the building blocks of digital drawing, shapes and shading, composing and perspective, and much more. Grab your tablet or stylus and let’s get started.</p>
    <p><a href="https://tutsplus.com/course/digital-drawing-fundamentals/" rel="nofollow external" class="bo">Visit Article</a></p>
    </li>
    </ul>
    </div>
]]>
</Body>
<Summary>Each month, we bring together a selection of the best tutorials and articles from across the whole Tuts+ network. Whether you’d like to read the top posts from your favourite site, or would like...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/8G9tf4xP4oI/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26023/guest@my.umbc.edu/0aa97b1513fec49b5081e766ee7917fa/api/pixel</TrackingUrl>
<Tag>bestof</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web-roundups</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, 01 Mar 2013 14:48:16 -0500</PostedAt>
<EditAt>Fri, 01 Mar 2013 14:48:16 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="26024" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26024">
<Title>Active Record: The Rails Database Bridge</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30489&amp;c=1298698563" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=30489&amp;c=1298698563" alt="" style="max-width: 100%; height: auto;"></a><p>In the past, to build a web application, you required the skills to code in your business logic language and your database language. More recently, however, back-end frameworks are leaning toward using <a href="https://en.wikipedia.org/wiki/Object-relational_mapping" rel="nofollow external" class="bo">Object-Relational Mapping</a> (ORM); this is a technique that lets you manage your database in the business logic language that you’re most comfortable with.</p>
    <p>Rails uses an ORM in the form of Active Record. In this tutorial, we'll dive into Active Record and see what it can do for us!</p>
    <p></p>
    <hr>
    <h2>What Active Record Is, Exactly</h2>
    <p>Like I said, Active Record is an ORM. This means it's a layer of Ruby code that runs between your database and your logic code. When you need to make changes to the database, you'll write Ruby code, and then run migrations, which we'll review soon. These migrations make the actual changes to the database. The cool part is that it doesn't matter what database you're using: Rails can handle pretty much all of 'em. For example, Rails uses SQLite locally when you're developing. However, let's say you're deploying to Heroku, which uses PostreSQL. All you have to do is add this to your <code>Gemfile</code>:</p>
    <pre>    group :production do&#x000A;            gem 'pg'&#x000A;        end&#x000A;    </pre>
    <p>Now, when you deploy, Heroku will run those same migrations (using the PostgreSQL adapter). Same code, different database, which is pretty cool, in my opinion.</p>
    <p>So, that's what Active Record is; let's dig deeper and see how it all works.</p>
    <hr>
    <h2>Getting Started</h2>
    <p>While it is technically possible to use Active Record outside of a Rails app, nine times out of ten you'll be using it <em>within</em> a Rails app, so that's what we'll do here. I'm using Rails 3.2.12, the latest version as I type this. If you've got that installed, you can start by creating a new Rails app.</p>
    <pre>    rails new myapp&#x000A;        cd myapp&#x000A;    </pre>
    <p>Now, we can start by creating a model.</p>
    <hr>
    <h2>Creating Models and Migrations</h2>
    <p>As you might expect, since Active Record interacts with the database, it is the <em>M</em> in Rails' MVC: <em>models</em>. From the command line, we'll create a model for, say, a Person. Actually, the <code>rails generate</code> command is pretty flexible: all the following commands work:</p>
    <pre>    rails generate model Person&#x000A;        rails g model Person&#x000A;        rails g model Person first_name last_name age:integer&#x000A;    </pre>
    <p>The first two lines here do the same thing; <code>rails g</code> is just a shortcut for <code>rails generate</code>. The third one gives Rails a little more information, so it can do a little more work for us. We're saying we want this model to have three fields: <code>first_name</code>, <code>last_name</code>, and <code>age</code>. For <code>first_name</code> and <code>last_name</code>, we don't specify a type, so it defaults to a string. For <code>age</code>, we say that it should be an integer.</p>
    <p>So, what's this actually do? You should see some output, explaining that. The important bits are this:</p>
    <pre>    create    db/migrate/20130213204626_create_people.rb&#x000A;        create    app/models/person.rb&#x000A;    </pre>
    <p>The first file is your migration file (of course, the timestamp will be different); the second is your Ruby class.</p>
    <p>You should be comfortable with the migration file syntax, because you'll often want to adjust the code. Let's check it out.</p>
    <pre>    class CreatePeople &lt; ActiveRecord::Migration&#x000A;            def change&#x000A;                create_table :people do |t|&#x000A;                    t.string :first_name&#x000A;                    t.string :last_name&#x000A;                    t.integer :age&#x000A;    &#x000A;    1            t.timestamps&#x000A;            end&#x000A;        end&#x000A;    end&#x000A;    </pre>
    <p>Each migration is a class; this one has a single method: <code>change</code>. If you're familiar with Ruby, this should be pretty self explanatory: this migration creates a table named "people" in the database. This table has six columns. That's right, six. There's the <code>first_name</code>, <code>last_name</code>, and <code>age</code> fields we added from the command line; in the <code>create_table</code> block, we use methods named after the data type and pass them a symbol with the column name.</p>
    <p>Then, there's <code>t.timestamps</code>. This creates two more columns in our table: <code>created_at</code> and <code>updated_at</code>. Of course, these are of type <code>datetime</code> (more on your type options later). Active Record takes care of these fields throughout the lifetime of your records, setting and updating them when appropriate.</p>
    <p>The sixth and final column is <code>id</code>, which isn't listed here because it's added by default. That's the unique primary key for the table.</p>
    <p>Creating tables is just one use for a migration class; they're your method of tweaking the database, remember, so they can do any database job you might ever need do. But one of the important ideas with migrations is that you can roll them back, or undo their effects. This means that each migration class needs to have enough information to undo its effects. Several methods can "undo themselves"; for example, the opposite of adding a table is removing it, which doesn't take any extra information. This is why we can use the <code>change</code> method here. However, if we were doing something that can't be automatically undone, we have to specify the actions for doing and undoing our migration. In these cases, our migration class should have two methods: <code>up</code> and <code>down</code>. The <code>up</code> method will detail what to do when running the migration, and the <code>down</code> method will explain how to roll back the migration.</p>
    <p>Let's write our own migration from scratch to give this rollback feature a try. We start by generating a blank migration:</p>
    <pre>    rails g migration do_stuff&#x000A;    </pre>
    <p>(Normally, you'll give your migration a sensible name.)</p>
    <p>Now, we can open <code>db/migrate/&lt;timestamp&gt;_do_stuff.rb</code>. It will have the <code>up</code>/<code>down</code> methods by default, but do ahead and replace that with a single <code>change</code> method.</p>
    <pre>    class DoStuff &lt; ActiveRecord::Migration&#x000A;            def change&#x000A;                create_table :nothing do |t| &#x000A;                    t.string :blank&#x000A;                end&#x000A;    &#x000A;    1        add_column :people, :job, :string&#x000A;        end &#x000A;    end&#x000A;    </pre>
    <p>We start by creating a useless table, with similar syntax to our people table above. Then, we use the <code>add_column</code> method to add a column to the people table: specifically, a <code>job</code> column of type string. Both of these actions can easily be undone, by dropping the table and removing the column.</p>
    <p>Now, let's run our two migrations. We do this via a rake task:</p>
    <pre>    rake db:migrate&#x000A;    </pre>
    <p>You should see output like this:</p>
    <pre>    ==  CreatePeople: migrating =====================&#x000A;        -- create_table(:people)&#x000A;           -&gt; 0.0027s&#x000A;        ==  CreatePeople: migrated (0.0034s) ============&#x000A;        &#x000A;        ==  DoStuff: migrating ==========================&#x000A;        -- create_table(:nothing)&#x000A;           -&gt; 0.0014s&#x000A;        -- add_column(:people, :job, :string)&#x000A;           -&gt; 0.0008s&#x000A;        ==  DoStuff: migrated (0.0037s) =================&#x000A;    </pre>
    <p>You can see from the output exactly what was done. The first migration created the <code>people</code> table; the second created the <code>nothing</code> table and added the column. Now, let's undo the last migration we ran. We can do this by running the following:</p>
    <pre>    rake db:rollback&#x000A;    </pre>
    <p>Again, the output confirms:</p>
    <pre>    ==  DoStuff: reverting ==========================&#x000A;        -- remove_column("people", :job)&#x000A;           -&gt; 0.0134s&#x000A;        -- drop_table("nothing")&#x000A;           -&gt; 0.0004s&#x000A;        ==  DoStuff: reverted (0.0140s) =================&#x000A;    </pre>
    <p>And now, the migration we wrote from scratch has been undone.</p>
    <p>An important note here: if you're relatively new to Rails, you might forget that migrations aren't run automatically when you create a new model. You have to run them manually. Yes, I've forgotten this my fair share of times, and wondered what was going on, only to realize that the table I was trying to work with didn't even exist yet.</p>
    <p>Besides <code>create_table</code> and <code>add_column</code>, there are a bunch of other methods that you can use in your migration files. We can't go into them all in this tutorial, but if they look like something you'll need, check out the <a href="http://guides.rubyonrails.org/migrations.html#supported-types" rel="nofollow external" class="bo">migration docs</a>.</p>
    <ul>
    <li><code>add_column</code></li>
    <li><code>add_index</code></li>
    <li><code>add_timestamps</code></li>
    <li><code>change_column</code></li>
    <li><code>change_table</code></li>
    <li><code>create_table</code></li>
    <li><code>drop_table</code></li>
    <li><code>remove_column</code></li>
    <li><code>remove_index</code></li>
    <li><code>remove_timestamps</code></li>
    <li><code>rename_column</code></li>
    <li><code>rename_index</code></li>
    <li><code>rename_table</code></li>
    </ul>
    <p>Last note on migrations: here's a list of the supported types that you can use in your migration classes:</p>
    <ul>
    <li><code>binary</code></li>
    <li><code>boolean</code></li>
    <li><code>date</code></li>
    <li><code>datetime</code></li>
    <li><code>decimal</code></li>
    <li><code>float</code></li>
    <li><code>integer</code></li>
    <li><code>primary_key</code></li>
    <li><code>string</code></li>
    <li><code>text</code></li>
    <li><code>time</code></li>
    <li><code>timestamp</code></li>
    </ul>
    <hr>
    <h2>Looking at the Active Record Class</h2>
    <p>Now that we've set up the database, we're ready to look at the other part of our model: the Active Record class. This is the piece that you'll actually interact with from your Rails controllers. When we created the <code>Person</code> model, a file <code>app/models/person.rb</code> was created; it looks like this:</p>
    <pre>    class Person &lt; ActiveRecord::Base&#x000A;            attr_accessible :age, :first_name, :last_name&#x000A;        end&#x000A;    </pre>
    <p>If you've worked with Ruby before, you might be familiar with the <code>attr_accessor</code> method, which makes the getter and setter methods for the attributes in question. Well, the <code>attr_accessible</code> method is different; it's actually Rails-specific. Any properties that are <code>attr_accessible</code>-ized can be set via mass assignment. This just means setting a bunch of properties on an object at once; this is often done when creating an object, like so:</p>
    <pre>    Person.new first_name: "Andrew", last_name: "Burgess", age: 22&#x000A;    </pre>
    <p>Each of the properties defined with <code>attr_accessible</code> must be one of the fields we defined in our database tables, in our migrations (there are a few exceptions to this). But this doesn't mean that all our properties should be defined as accessible; there may be some properties that you want to be set more intentionally; for example, an <code>admin</code> property that gives administration privileges to a user record should probably not be allowed in mass assignment, where it could be set accidentally / maliciously.</p>
    <p>For simple Active Record classes, just that line of <code>attr_accessible</code> properties will suffice. There's actually a lot more we can add to our model class to make it more robust, but let's first take this Person model round-trip, and see how to create model instances.</p>
    <hr>
    <h2>Creating Records</h2>
    <p>In "A Normal Day in the Life of a Rails app," all the database records will be created in the controller. However, we'll be using the Rails console in this tutorial. In the terminal, you can open the Rails console by running one of the following:</p>
    <pre>    rails console&#x000A;        rails c&#x000A;    </pre>
    <p>This opens a Ruby console in which you can use all your Model classes.</p>
    <p>As you saw above, we can create new database records by creating a class instance:</p>
    <pre>    p = Person.new first_name: "John", last_name: "Doe", age: 30&#x000A;        #=&gt; #&lt;Person id: nil, first_name: "John", last_name: "Doe", age: 30, created_at: nil, updated_at: nil&gt;&#x000A;    </pre>
    <p>The second line is the value of our variable <code>p</code>: a new <code>Person</code> object. Notice that three of the six properties have been set, while the other three haven't. Those will be set when the record is saved to the database, which it currently isn't (if you typed <code>exit</code> right now, nothing will have been stored in the database). You can confirm that it isn't saved by running</p>
    <pre>    p.new_record?&#x000A;        #=&gt; true&#x000A;    </pre>
    <p>To save the record to the database, you can call the <code>save</code> method:</p>
    <pre>    p.save&#x000A;    </pre>
    <p>Notice this part of the output:</p>
    <pre>    INSERT INTO "people" ("age", "created_at", "first_name", "last_name", "updated_at") VALUES (?, ?, ?, ?, ?)  [["age", 30], ["created_at", Fri, 15 Feb 2013 16:02:18 UTC +00:00], ["first_name", "John"], ["last_name", "Doe"], ["updated_at", Fri, 15 Feb 2013 16:02:18 UTC +00:00]]&#x000A;    </pre>
    <p>Yes, that's an SQL statement. Remember, Active Record is using the database API underneath, so the SQL still does need to be executed. That's one of the features of the Rails console: you can experiment with different Active Record methods and see exactly how they're touching the database. This will be helpful when you're running methods that pull a lot of data, perhaps from several tables: you can choose the right methods to get the most efficient SQL query.</p>
    <p>But now, check out our record</p>
    <pre>    p.new_record?&#x000A;        #=&gt; false&#x000A;        p&#x000A;        #=&gt; #&lt;Person id: 1, first_name: "John", last_name: "Doe", age: 30, created_at: "2013-02-15 16:02:18", updated_at: "2013-02-15 16:02:18"&gt;&#x000A;    </pre>
    <p>The <code>id</code>, <code>created_at</code>, and <code>updated_at</code> fields have been set.</p>
    <p>If you'd like, you can create and save a new record all at once, with the <code>create</code> method:</p>
    <pre>    p2 = Person.create first_name: "Jane", last_name: "Doe", age: 25&#x000A;        #=&gt; #&lt;Person id: 2, first_name: "Jane", last_name: "Doe", age: 25, created_at: "2013-02-15 16:26:42", updated_at: "2013-02-15 16:26:42"&gt;&#x000A;        p2.new_record?&#x000A;        #=&gt; false&#x000A;    </pre>
    <p>When working with individual records, you can set or change any properties by using their individual methods; just remember that setting a property doesn't save it to the database; that requires the <code>save</code> call.</p>
    <pre>    p2.first_name = "Janice"&#x000A;        p2.save&#x000A;    </pre>
    <p>If you want to update multiple attributes at a time, you can use the <code>update_attributes</code>, which takes a hash of all the attribute you want to change:</p>
    <pre>    p.update_attributes first_name: "Jonathan", last_name: "Doherty"&#x000A;    </pre>
    <p>An important difference about <code>update_attributes</code> is that <code>save</code> is run inside that method; no need to save the changes on your own.</p>
    <p>Like I said, though, there's more that we can do in the model class. So let's go back and look at some of those other features.</p>
    <hr>
    <h2>Validations</h2>
    <p>Validations are an important part of any web app; this is where we make sure that the data we're putting into the database is clean and correct.</p>
    <p>Before we begin, it's important to realize that validation rules created in your model classes don't change the actually database. For example, saying a given property is required in your model class doesn't make it required at the database level (that kind of thing you would set in your—wait for it—migrations). This isn't really something you have to worry about, I just want to make sure you understand the big picture here.</p>
    <p>So. Validations. In current versions of Rails, we use the <code>validates</code> method to set up all our validations (it was otherwise in the past). First, we pass it the field or fields we are validating. Then, we can pass it a hash will the validation properties. There are a bunch of these validation helper (as they are called) we can use; here are several that you'll use all the time.</p>
    <p>Probably the most common one is just validating that a given field has been filled; for this, we do a <code>presence</code> validation:</p>
    <pre>    validates :first_name, :last_name, presence: true&#x000A;    </pre>
    <p>Here, we've validating on the <code>first_name</code> and <code>last_name</code> attributes. In our validation properties hash, we set <code>presence</code> to true, which means that those attributes must not be left <code>nil</code> when the record is saved.</p>
    <p>Another common validation is making sure a field is unique. We can do this with the uniqueness helper.</p>
    <pre>    validates :username, uniqueness: true&#x000A;    </pre>
    <p>Several validation helpers don't just take <code>true</code> or <code>false</code>; they need a few more options. Actually, the uniqueness helper is one of them; when we just set it to <code>true</code>, as above, case sensitivity is on. Really, though, with usernames, <code>bob</code> and <code>BOB</code> should be the same. So, we should do this:</p>
    <pre>    validates :username, uniqueness: { case_sensitive: false }&#x000A;    </pre>
    <p>Now, <code>bob</code> and <code>BOB</code> would be considered the same.</p>
    <p>Sometimes you'll want a property to be one of a given set of options. Try <code>inclusion</code>, which takes an array (or any other enumerable object).</p>
    <pre>    validates :account, inclusion: ['free', 'premium', 'business']&#x000A;    </pre>
    <p>The opposite of <code>inclusion</code> is <code>exclusion</code>, which makes sure the field value is not in the given set:</p>
    <pre>    validates :appt_day, exclusion: ['Sunday', 'Saturday']&#x000A;    </pre>
    <p>If you want to make sure a field is of a given length? Enter <code>length</code>. There are a bunch of ways to use this one. Here are a couple of examples:</p>
    <pre>    validates :username, length: { maximum: 15 }&#x000A;        validates :first_name, length: { minimum: 1}&#x000A;        validates :password, length: { in:10..50 }&#x000A;    </pre>
    <p>You can even set thresholds:</p>
    <pre>    validates :age, length: { greater_than: 18 }&#x000A;        validates :commission_percentage, length: { less_than: 30 }&#x000A;    </pre>
    <p>You might want to confirm that a value is a number. For this, use <code>numericality</code>:</p>
    <pre>    validates :price, numericality: true&#x000A;    </pre>
    <p><code>numericality</code> can also handle a "no decimals" policy:</p>
    <pre>    validates :year, numericality: { only_integers: true }&#x000A;    </pre>
    <p>The last one I'll show you is <code>format</code>, which let's you set a regular expression for the field to match:</p>
    <pre>    # not a real email regex&#x000A;        validates :email, format: { with: /\w_@\w_.\w*/ }&#x000A;    </pre>
    <p>There are a few others, but that'll get you started. A last tidbit: you can create your own validation helper classes. <a href="http://guides.rubyonrails.org/active_record_validations_callbacks.html#performing-custom-validations" rel="nofollow external" class="bo">Check out the documentation</a> for the details on that.</p>
    <p>There are several common options that go with almost all the validation helpers. First, we can set <code>allow_nil</code> to, well, allow a property to be unfilled.</p>
    <pre>    validates :nickname, length: { in: 4..10, allow_nil: true }&#x000A;    </pre>
    <p>If a blank string is acceptable, you can use the <code>allow_blank</code> instead.</p>
    <p>A more common one is <code>message</code>; if a validation fails, a message will be attached to the object (more on this later). Of course, all the validation helpers have default messages, but you can set your own with <code>message</code>.</p>
    <pre>    validates :year, presence: true, message: "Please select a year." }&#x000A;    </pre>
    <p>The last one I'll mention is <code>on</code>, which decides on what conditions the validation will be run. The values can be <code>:create</code> (the validation is only run when saving new records). <code>:update</code> (it's only run when saving previously saved records), or <code>:save</code> (it's run in both cases). Of course, it defaults to <code>:save</code>.</p>
    <pre>    validates :password, length: { in: 10..20, on: :create }&#x000A;    </pre>
    <hr>
    <h2>Validation Errors</h2>
    <p>A model instance's <code>save</code> method returns <code>true</code> if it was successfully saved and <code>false</code> if it wasn't. If you do get a <code>false</code> back, you'll want to know what the errors were, right?</p>
    <p>Your model instance has an <code>error</code> property, which is an <code>ActiveModel::Errors</code> instance. After the validations are run, this object is populated with all the error message for failed validations; these are kept in its own <code>messages</code> proptery. Observe:</p>
    <pre>    p = Person.new&#x000A;        p.save  # false&#x000A;        p.errors.messages&#x000A;        # {:first_name=&gt;["can't be blank"], :last_name=&gt;["can't be blank"], :age=&gt;["can't be blank", "is not a number"]}&#x000A;        # alternatively:&#x000A;        p.errors.full_messages&#x000A;        # ["First name can't be blank", "Last name can't be blank", "Age can't be blank", "Age is not a number"] &#x000A;    </pre>
    <p>Usually, you'll want to display these errors to the user, probably next to a form that they submitted. One of the easiest ways to do it is to loop over the <code>full_messages</code> property from inside your <code>form_for</code> block, and print them in a list or something. Even easier is to let Rails handle all that markup by running <code>form.error_messages</code>.</p>
    <hr>
    <h2>Callbacks</h2>
    <p>Callbacks are another cool part of Active Record; they let you run custom methods at given times. If you read my <a href="http://net.tutsplus.com/tutorials/building-ribbit-in-rails/" rel="nofollow external" class="bo">Building Ribbit in Rails</a> tutorial, you might remember that we used the <code>before_save</code> callback to set the <code>avatar_hash</code> property on users before saving them. We first create the method we want to run:</p>
    <pre>    def create_avatar_hash&#x000A;            self.avatar_hash = "<a href="http://www.gravatar.com/avatar/#%7BDigest::MD5.hexdigest(self.email)%7D?s=50">http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(self.email)}?s=50</a>"&#x000A;        end&#x000A;    </pre>
    <p>And then we just register the callback:</p>
    <pre>    before_save :create_avatar_hash&#x000A;    </pre>
    <p>This means that when we call <code>save</code>, our method will be run just before the save is actually done.</p>
    <p>We also used a <code>before_validation</code> callback to strip and downcase the email address. While these are only two of the callbacks you can use, they're good examples of these callbacks can be handy. Here are the others:</p>
    <ul>
    <li>
    <code>before_validation</code> / <code>after_validation</code>
    </li>
    <li>
    <code>before_save</code> / <code>around_save</code> / <code>after_save</code>
    </li>
    <li>
    <code>before_create</code> / <code>around_create</code> / <code>after_create</code>
    </li>
    <li>
    <code>before_update</code> / <code>around_update</code> / <code>after_update</code>
    </li>
    <li>
    <code>before_destroy</code> / <code>around_destroy</code> / <code>after_destroy</code>
    </li>
    </ul>
    <p>Wondering about the <code>around_*</code> callbacks? These are pretty cool. They are called before the action is done, but then you can perform the action from within the method by calling <code>yield</code>. Once the action is done, the reset of the callback method is run. Cool, eh?</p>
    <hr>
    <h2>Associations</h2>
    <p>Most relational databases will have multiple tables that are related in some way, so it's only natural that Active Record will be able to handle this: it does so through Active Record Associations. Let's say we want to have an <code>Order</code> table in our database, and that each <code>Person</code> can have multiple orders. How do get this set up?</p>
    <p>We have to start by creating our <code>Order</code> model:</p>
    <pre>    rails g model Order total:integer person_id:integer&#x000A;    </pre>
    <p>The important part here is the <code>person_id</code> field; as you might expect, this will be our foreign key, the connection between the two classes. We're calling it <code>person_id</code> because, once we tell our model classes about the relationship, the <code>Order</code> class will look for a field by that name by default. If we wanted to call it something else, like <code>orderer_identifier</code>, we'd have to tell <code>Order</code> that the field isn't named after the class it's connecting to. It's easier to go with the defaults.</p>
    <p>The migration created by this command will be everything we need, so I'll migrate now:</p>
    <pre>    rake db:migrate&#x000A;    </pre>
    <p>Now, we need to inform the classes about the relationship. Inside the <code>app/model/person.rb</code>, add this line:</p>
    <pre>    has_many :orders&#x000A;    </pre>
    <p>Now, in <code>app/model/order.rb</code>, add this:</p>
    <pre>    belongs_to :person&#x000A;    </pre>
    <p>In <code>Person</code>, we're saying there can be many orders for each person record; put differently, each person <code>has_many</code> orders. Conversely, each order <code>belongs_to</code> a person instance. These just add a few handy methods to our <code>Person</code> and <code>Order</code> instances, which we'll see in a bit.</p>
    <p>So, let's test this relationship, shall we? In the Rails console:</p>
    <pre>    p = Person.find(1)&#x000A;        o = Order.new total: 100&#x000A;        o.person = p&#x000A;        o.save&#x000A;        p.orders &#x000A;        #=&gt; [#&lt;Order id: 1 ... &gt;]&#x000A;    </pre>
    <p>The interesting lines here are 3 and 5. We could have done <code>o.person_id = p.id</code>, but because of our additions to the model classes, <code>o.person = p</code> is a shorter way of doing the same thing. Then, line 5: this is another one of those added methods: it returns an array of all the orders that our person has. Handy, no?</p>
    <p>This is a good summary of the kind of things you can do with Active Record Associations; there's a ton more, and it can get pretty complex. Check out the <a href="http://guides.rubyonrails.org/association_basics.html" rel="nofollow external" class="bo">Associations documentation</a> for all the goodness.</p>
    <hr>
    <h2>Selecting Records</h2>
    <p>All this time we've been building Active Record classes or creating model records. However, a big part of working with an Active Record class is getting those records back out. As you might expect, there are a dozen or so methods we can use.</p>
    <p>First, and simplest, is the methods that returns all the records:</p>
    <pre>    Person.all&#x000A;    </pre>
    <p>The <code>all</code> method returns an array of all the records.</p>
    <p>There's also <code>find</code>, which takes the <code>id</code> as a parameter, and returns the record with that id; it can also take an array of <code>id</code>s and return the matching records:</p>
    <pre>    Person.find 2&#x000A;        #=&gt; #&lt;Person id: 2 ... &gt;&#x000A;        Person.find [2,4,6]&#x000A;        #=&gt; [#&lt;Person id: 2 ... &gt;, #&lt;Person id: 4 ...&gt;, #&lt;Person id: 6 ...&gt; ]&#x000A;    </pre>
    <p>If you just want the first or last record in the collection, there are specific methods for that:</p>
    <pre>    Person.first&#x000A;        Person.last&#x000A;    </pre>
    <p>One of Active Record's coolest feature is the custom find methods; underneath, this is just using <code>method_missing</code>, but from the top it looks like pure magic. Here's how it works: use the method name <code>find_by_&lt;property&gt;</code> and pass the value for that property as a parameter. For example:</p>
    <pre>    Person.find_by_first_name "John"&#x000A;        #=&gt; #&lt;Person id: 1, first_name: "John" . . . &gt;&#x000A;    </pre>
    <p>You can even chain properties; this command will return the same record:</p>
    <pre>    Person.find_by_first_name_and_last_name "John", "Doe"&#x000A;    </pre>
    <p>If you look at the SQL queries for those last two methods, you'll see that we're only returning the first result (<code>LIMIT 1</code>). To find all records that match, use the <code>find_all_by</code> prefix instead. So:</p>
    <pre>    Person.find_all_by_first_name "John"&#x000A;        Person.find_all_by_first_name_and_last_name "John", "Doe"&#x000A;    </pre>
    <p>It gets even better: you can use the <code>find_or_create_by</code> prefix to create a record if no matching one is found:</p>
    <pre>    p = Person.find_or_create_by_first_name_and_last_name_and_age "Bob", "Smith", 45&#x000A;    </pre>
    <p>Yes, this actually works. However, realize that if no record is found, this is just like running <code>Person.create</code>, which does run the validations. So, for example, since <code>last_name</code> and <code>age</code> are required, running this will result in an unsaved record will errors atttached:</p>
    <pre>    Person.find_or_create_by_first_name "Lindsey"&#x000A;    </pre>
    <p>If you don't want the new record to be saved right away, use the <code>find_or_initialize_by</code> prefix.</p>
    <pre>    Person.find_or_initialize_by_first_name "Lindsey"&#x000A;    </pre>
    <p>There are a few other methods you might find useful when selecting records. A really useful one is <code>where</code> which takes a <code>WHERE</code> clause from an SQL statement.</p>
    <pre>    Person.where("first_name like 'A%'")&#x000A;    </pre>
    <p>If you're taking values from the user for use in <code>where</code>, you shouldn't interpolate them, for fear of SQL injections. You should use question marks in place of them, and then pass the values as other parameters:</p>
    <pre>    Person.where("first_name like ?", params[:name_starts_with])&#x000A;    </pre>
    <p>. . . or something similar.</p>
    <p>All these methods we've looked at so far return all the fields of the returned records. You can use the <code>select</code> method before any of them to only return model instances with a few selected properties:</p>
    <pre>    Person.select(:first_name).first&#x000A;        Person.select("last_name, age").find_by_first_name("Andrew")&#x000A;    </pre>
    <p>Other common SQL statement activities include limiting and offsetting; a great use case for these is paging results. The <code>limit</code> and <code>offset</code> methods take a single number parameter each. If you use them alone, they work on the whole collection; for example, this returns five records, skipping the first two:</p>
    <pre>    Person.offset(2).limit(5)&#x000A;    </pre>
    <p>But you can choose the records to limit and offset with one of the other functions:</p>
    <pre>    Person.select(:id).limit(2).offset(2).find_all_by_first_name "Andrew"&#x000A;    </pre>
    <p>There are a few other query methods, but we've covered the ones you're going to be using 90% of the time.</p>
    <p>If you're doing complex queries like this, it would be a good idea to create a query method of your own, in your model classes. Let's say we let people search for other users by their last name, and we page the results with 10 users per page. The query might look something like this:</p>
    <pre>Person.offset(0).limit(10).find_by_last_name(params[:search_term])&#x000A;    </pre>
    <p>Besides this being rather long for the controller, that offset has to change for each page; <code>0</code> only works for the first page. So, we write a method in our <code>Person</code> class:</p>
    <pre>    def self.search(term, page = 1, per_page = 10)&#x000A;            Person.offset( per_page * (page - 1)).limit(per_page).find_all_by_last_name term&#x000A;        end&#x000A;    </pre>
    <p>This returns the set we want, and we can choose which page and how many results per page we'd like (or leave them to their sensible defaults. And even better, it's a nice neat method that we can call from our controller like this:</p>
    <pre>    Person.search "Smith"    # page 1&#x000A;        Person.search "Smith", 2 # page 2&#x000A;    </pre>
    <p>For more on querying, <a href="http://guides.rubyonrails.org/active_record_querying.html" rel="nofollow external" class="bo">check the Active Record querying documentation</a>.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>If you're just getting into Rails, you've just learned nearly everything you'll need to know about Active Record for a while. Of course, like every other part of Rails, Active Record is deep and rich; there are a lot of pieces that I haven't mentioned in this tutorial. For more on those, look at the <a href="http://guides.rubyonrails.org/" rel="nofollow external" class="bo">Rails Guides for models</a>. Thanks for reading!</p>
    </div>
]]>
</Body>
<Summary>In the past, to build a web application, you required the skills to code in your business logic language and your database language. More recently, however, back-end frameworks are leaning toward...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/VXneh1X3y3c/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26024/guest@my.umbc.edu/28860f6362ea9d39c7b460163339f5bf/api/pixel</TrackingUrl>
<Tag>active-record</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>rails</Tag>
<Tag>ruby</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, 01 Mar 2013 14:45:45 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25025" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25025">
<Title>March Skillsoft Topic of the Month</Title>
<Tagline>Success over Stress</Tagline>
<Body>
<![CDATA[
    <div class="html-content">Contrary to popular belief, stress itself is never a good thing--it is always harmful. This course will show you the difference between pressure, which spurs you into action and helps you to perform at your peak, and stress, which impedes your performance, and has long-term health implications. You will learn how to recognize stress and categorize it appropriately, learn to distinguish between job stressors, and see the benefits of recognizing stress.  You will also learn about relaxing techniques and coping mechanisms to help challenge and reframe negative thinking and handle receiving constructive feedback.   This is course number:  PD0182<br><br>Visit the <a href="http://www.umbc.edu/skillsoft" rel="nofollow external" class="bo">UMBC SkillSoft website</a> for a Quick Start Guide, FAQ’s, and the link to log in to SkillPort.  <br><br>For more information about SkillSoft and the Business Exploration Series courseware, click <a href="http://www.umbc.edu/hr/T&amp;OD/PDF%20flyers/SS_BizExplorFlyerCombined.pdf" rel="nofollow external" class="bo">here</a>.<br><br>To schedule a department presentation about using SkillSoft for professional development, call ext. 5-6262 or e-mail <a href="mailto:hrtraining@umbc.edu">hrtraining@umbc.edu</a>.  <br>
    </div>
]]>
</Body>
<Summary>Contrary to popular belief, stress itself is never a good thing--it is always harmful. This course will show you the difference between pressure, which spurs you into action and helps you to...</Summary>
<Website>http://www.umbc.edu/skillsoft</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25025/guest@my.umbc.edu/86efa4be7d13e7b5cac3b73592813a85/api/pixel</TrackingUrl>
<Group token="training">Training</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/training</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/xsmall.png?1281010946</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/original.png?1281010946</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/xxlarge.png?1281010946</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/xlarge.png?1281010946</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/large.png?1281010946</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/medium.png?1281010946</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/small.png?1281010946</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/xsmall.png?1281010946</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/019/bdb106a0560c4e46ccc488ef010af787/xxsmall.png?1281010946</AvatarUrl>
<Sponsor>Training &amp; Organization Development</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/xxlarge.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/xlarge.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/large.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/medium.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/small.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/xsmall.jpg?1362166151</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/025/e7010b9fb43e91b36e43b374ce2d7454/xxsmall.jpg?1362166151</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Fri, 01 Mar 2013 14:31:05 -0500</PostedAt>
<EditAt>Fri, 12 Apr 2013 14:33:16 -0400</EditAt>
</NewsItem>

</News>
