<?xml version="1.0"?>
<News hasArchived="true" page="9030" pageCount="10776" pageSize="10" timestamp="Fri, 28 Aug 2026 22:27:46 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=9030&amp;range=2">
<NewsItem contentIssues="true" id="25613" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25613">
<Title>Introduction to ARTstor</Title>
<Tagline>Library Workshop</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <div>March 27, 2013</div>
    <div>12 - 1 PM</div>
    <div>LIB 259</div>
    <div><br></div>Need images for presentations, research and other projects?  The AOK library now provides access to the ARTstor Digital Library.  ARTstor provides access to over 1 million images in the arts, architecture, humanities and science.  These images are hi-resolution images that may be downloaded and used for classroom and research purposes.  <div><br></div>
    <div>Join us for a 1 hour workshop that will introduce some basic and not-so-basic tips for making the most of this exciting new resource.</div>
    </div>
]]>
</Body>
<Summary>March 27, 2013  12 - 1 PM  LIB 259    Need images for presentations, research and other projects?  The AOK library now provides access to the ARTstor Digital Library.  ARTstor provides access to...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25613/guest@my.umbc.edu/5b971d9f3bb444e77f8dd32c45ba7de1/api/pixel</TrackingUrl>
<Tag>library-workshops</Tag>
<Group token="library">Albin O. Kuhn Library &amp;amp; Gallery</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/library</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xsmall.png?1279120404</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/original.png?1279120404</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xxlarge.png?1279120404</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xlarge.png?1279120404</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/large.png?1279120404</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/medium.png?1279120404</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/small.png?1279120404</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xsmall.png?1279120404</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/016/854d6fae5ee42911677c739ee1734486/xxsmall.png?1279120404</AvatarUrl>
<Sponsor>Albin O. Kuhn Library &amp; Gallery</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/xxlarge.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/xlarge.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/large.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/medium.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/small.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/xsmall.jpg?1363023494</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/613/78147341bba904f5b3f3c6123055a974/xxsmall.jpg?1363023494</ThumbnailUrl>
<PawCount>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 13:39:52 -0400</PostedAt>
<EditAt>Wed, 27 Mar 2013 17:43:15 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="25609" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25609">
<Title>Nursing Scholarship Opportunities!</Title>
<Body>
<![CDATA[
    <div class="html-content">I came across this website today when I was doing research for a presentation.  I thought it might be useful to many of you!<div><br></div>
    <div><a href="http://www.discovernursing.com/scholarships#levels=undergrads">http://www.discovernursing.com/scholarships#levels=undergrads</a></div>
    <div><br></div>
    <div><br></div>
    </div>
]]>
</Body>
<Summary>I came across this website today when I was doing research for a presentation.  I thought it might be useful to many of you!    http://www.discovernursing.com/scholarships#levels=undergrads</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25609/guest@my.umbc.edu/18f310138b1900ccf7bc3626f023258c/api/pixel</TrackingUrl>
<Group token="retired-109">Pre-Nursing Society</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-109</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/xsmall.png?1318440980</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/original.jpg?1318440980</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/xxlarge.png?1318440980</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/xlarge.png?1318440980</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/large.png?1318440980</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/medium.png?1318440980</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/small.png?1318440980</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/xsmall.png?1318440980</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/109/90e715513174fd117c8f87c3c61d7d5d/xxsmall.png?1318440980</AvatarUrl>
<Sponsor>Pre-Nursing Society</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 13:00:32 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25607" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25607">
<Title>Office of the State's Attorney for Balto. City Seeks Interns</Title>
<Tagline>Volunteer Opportunity to Work in the Victim's Unit</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <strong>Position Description: </strong>The students would be assigned to our victim/witness waiting room, providing services to victims and witnesses in Baltimore City Juvenile Court delinquency cases. The students would be signing in victims and witnesses who have been summoned to court. The students would also be sending letters to victims and witnesses for future court dates. They could do court accompaniment if a victim wanted someone to sit with him or her in court. The students would have the opportunity to go into court and listen to cases being prosecuted. Required Credentials: The students would have to pass a criminal background check. This is required for all employees and volunteers. <br><br>The Office of the State's Attorney will begin accepting applications for Summer 2013 internships/externships for both law students and undergraduates between<br>February 4, 2013, and March 29, 2013. Application requirements will be posted on February 1, 2013. We anticipate openings for 10 undergraduate interns and 16 law school interns.<br><br>The Office does not offer any paid internships. Summer interns must commit to volunteer at least 20 hours per week for at least 10 weeks. The Office does not<br>offer parking except at the District Court facilities where parking is available for the general public.<br><br>A criminal background and traffic record check is required for all applicants.<br><br><strong>APPLY to Position 9256324 on UMBCworks ASAP to be considered.  Great opportunity for future LAW STUDENTS or those interested in the juvenile courts system.</strong><br><br>
    </div>
]]>
</Body>
<Summary>Position Description: The students would be assigned to our victim/witness waiting room, providing services to victims and witnesses in Baltimore City Juvenile Court delinquency cases. The...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25607/guest@my.umbc.edu/8fb9776e401a03bd89cf05ebc741015b/api/pixel</TrackingUrl>
<Group token="shriver">The Shriver Center</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/shriver</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xsmall.png?1441293069</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/original.jpg?1441293069</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xxlarge.png?1441293069</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xlarge.png?1441293069</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/large.png?1441293069</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/medium.png?1441293069</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/small.png?1441293069</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xsmall.png?1441293069</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/008/0bfad113286cf6b1bc6dedbdbfc7e5ef/xxsmall.png?1441293069</AvatarUrl>
<Sponsor>Shriver Center:Intern, Co-op, Research &amp; Service-Learning</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/xxlarge.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/xlarge.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/large.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/medium.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/small.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/xsmall.jpg?1363020977</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/607/a33b40c5c94f754663bba65e02fae22b/xxsmall.jpg?1363020977</ThumbnailUrl>
<PawCount>1</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 12:54:28 -0400</PostedAt>
<EditAt>Mon, 11 Mar 2013 12:56:38 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="25610" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25610">
<Title>Branding&#8217;s Cardinal Sins: 3 Common Mistakes to Avoid</Title>
<Body>
<![CDATA[
    <div class="html-content">In launching a new company, resist the urge to be overly creative and dull when dreaming up your brand name. See our list of branding's cardinal sins.</div>
]]>
</Body>
<Summary>In launching a new company, resist the urge to be overly creative and dull when dreaming up your brand name. See our list of branding's cardinal sins.</Summary>
<Website>http://feedproxy.google.com/~r/YoungentrepreneurcomBlog/~3/av1Dy7md3e8/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25610/guest@my.umbc.edu/4c080284c59a048d0bf3cec29c4700a0/api/pixel</TrackingUrl>
<Tag>branding</Tag>
<Tag>business-names</Tag>
<Tag>marketing</Tag>
<Tag>marketing-strategies</Tag>
<Tag>naming-a-business</Tag>
<Tag>starting-up</Tag>
<Tag>startup-mistakes</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>Mon, 11 Mar 2013 12:30:06 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25988" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25988">
<Title>Mozilla: no Firefox for iOS</Title>
<Body>
<![CDATA[
    <div class="html-content">Mozilla wants Gecko on iOS. Apple doesn’t. Mozilla takes ball home<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=Mozilla%3A+no+Firefox+for+iOS&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fmozilla-no-firefox-ios-132616" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/emailthis2.gif" style="max-width: 100%; height: auto;"></a></td>
    <td><a href="http://res.feedsportal.com/viral/bookmark.cfm?title=Mozilla%3A+no+Firefox+for+iOS&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fmozilla-no-firefox-ios-132616" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/bookmark.gif" style="max-width: 100%; height: auto;"></a></td>
    </tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/159490727057/u/49/f/502346/c/32632/s/2971f0b9/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/159490727057/u/49/f/502346/c/32632/s/2971f0b9/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Mozilla wants Gecko on iOS. Apple doesn’t. Mozilla takes ball home</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/3XjMro1aaf4/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25988/guest@my.umbc.edu/9d8f3ac776c0ae671981a57779172501/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 12:17:38 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25605" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25605">
<Title>How to Build an Advisory Board</Title>
<Body>
<![CDATA[
    <div class="html-content">Why you should consider building an advisory team alongside your business plan -- and how to get started.<br><br><a href="http://da.feedsportal.com/r/159490533475/u/49/f/625555/c/34343/s/29712c32/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/159490533475/u/49/f/625555/c/34343/s/29712c32/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Why you should consider building an advisory team alongside your business plan -- and how to get started.</Summary>
<Website>http://feedproxy.google.com/~r/entrepreneur/startingabusiness/~3/EZf4Rqw4pus/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25605/guest@my.umbc.edu/5168787a14f9e9a90772a3d02d1670cb/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>Mon, 11 Mar 2013 11:30:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="30102" important="false" status="posted" url="https://my3.my.umbc.edu/posts/30102">
<Title>Online Nationalism</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The rhetoric about “cyberwar” is getting out of control.</p>
    <p>For something that was supposed to ignore borders and bring the world closer, the Internet is fostering an awful lot of nationalism right now. We’re seeing increased concern about where IT products and services come from: U.S. companies are worried about hardware from China, European companies are worried about cloud services in the U.S., and Russia and China might each be building their own operating systems to avoid using foreign ones.</p>
    </div>
]]>
</Body>
<Summary>The rhetoric about “cyberwar” is getting out of control.  For something that was supposed to ignore borders and bring the world closer, the Internet is fostering an awful lot of nationalism right...</Summary>
<Website>http://www.technologyreview.com/view/512386/online-nationalism/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/30102/guest@my.umbc.edu/e474ff894f41c7e64183df463d915bff/api/pixel</TrackingUrl>
<Tag>development</Tag>
<Tag>internet</Tag>
<Tag>mit</Tag>
<Tag>technology</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 11:19:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25989" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25989">
<Title>Designing for users</Title>
<Body>
<![CDATA[
    <div class="html-content">Design is not a vehicle for showing off the latest techniques or tools, it’s a way of communicating ideas, says Joshua Garity<div><table border="0"><tbody><tr>
    <td><a href="http://share.feedsportal.com/viral/sendEmail.cfm?lang=en&amp;title=Designing+for+users&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fopinions%2Fdesigning-users" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/emailthis2.gif" style="max-width: 100%; height: auto;"></a></td>
    <td><a href="http://res.feedsportal.com/viral/bookmark.cfm?title=Designing+for+users&amp;link=http%3A%2F%2Fwww.netmagazine.com%2Fopinions%2Fdesigning-users" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/images/bookmark.gif" style="max-width: 100%; height: auto;"></a></td>
    </tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/159490125923/u/49/f/502346/c/32632/s/29719f7c/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/159490125923/u/49/f/502346/c/32632/s/29719f7c/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Design is not a vehicle for showing off the latest techniques or tools, it’s a way of communicating ideas, says Joshua Garity</Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/sy_DE0eH0ZA/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25989/guest@my.umbc.edu/458da8bf01f32814acecfbccc08e00a4/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 11:02:38 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25606" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25606">
<Title>Quick Guide to Reduce Insurance Premiums and File Effective Claims</Title>
<Body>
<![CDATA[
    <div class="html-content">The ins and outs of keeping your insurance costs down.<br><br><a href="http://da.feedsportal.com/r/159490533474/u/49/f/625555/c/34343/s/29712c33/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/159490533474/u/49/f/625555/c/34343/s/29712c33/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The ins and outs of keeping your insurance costs down.</Summary>
<Website>http://feedproxy.google.com/~r/entrepreneur/startingabusiness/~3/gOoMHvRxNCQ/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25606/guest@my.umbc.edu/0715ec6727c5adcc82ab8a1a9e8140c1/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>Mon, 11 Mar 2013 11:00:00 -0400</PostedAt>
<EditAt>Mon, 11 Mar 2013 11:00:00 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="26017" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26017">
<Title>The Whens and Whys for PHP Design Patterns</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=27862&amp;c=490072487" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=27862&amp;c=490072487" alt="" style="max-width: 100%; height: auto;"></a><p>There are plenty of articles that explain what design patterns are, and how to implement them; the web doesn’t need yet another one of those articles! Instead, in this article, we will more discuss the <em>when</em> and <em>why</em>, rather than the <em>which</em> and <em>how</em>.</p>
    <p>I’ll present different situations and use-cases for patterns, and will also provide short definitions to help those of you who are not so familiar with these specific patterns. Let’s get started.</p>
    <p></p> October, 2012<p>This article covers some of the various <em>Agile Design Patterns</em>, documented in Robert C. Martin’s books. These patterns are modern adaptations of the original design patterns defined and documented by <em><a href="http://en.wikipedia.org/wiki/Design_Patterns" title="GoF: Design Patterns" rel="nofollow external" class="bo">The Gang of Four</a></em> in 1994. Martin’s patterns present a much more recent take on the GoF’s patterns, and they work better with modern programming techniques and problems. In fact, about 15% of the original patterns were replaced with newer patterns, and the remaining patterns were slightly modernized.</p>
    <hr>
    <h2>Let’s Start by Creating Some Objects</h2>
    <h3>Use a Factory Pattern</h3>
    <p>The factory pattern was invented to help programmers organize the information related to object creation. Objects sometimes have lot of constructor parameters; other times, they must be populated with default information immediately after their creation. These objects should be created in factories, keeping all the information regarding their creation and initialization contained within a single place.</p>
    <div>
    <p><strong>When</strong> Use a Factory Pattern when you find yourself writing code to gather information necessary to create objects.</p>
    <p><strong>Why:</strong> Factories help to contain the logic of object creation in a single place. They can also break dependencies to facilitate loose coupling and dependency injection to allow for better testing.</p>
    </div>
    <hr>
    <h2>Finding the Data We Need</h2>
    <p>There are two frequently used patterns to retrieve information from a persistence layer or external data source.</p>
    <h3>The Gateway Pattern</h3>
    <p>This pattern defines a communication channel between a persistence solution and the business logic. For simpler applications, it can retrieve or recreate whole objects by itself, but object creation is the responsibility of factories in most complex applications. Gateways simply retrieve and persist raw data.</p>
    <div>
    <p><strong>When:</strong> When you need to retrieve or persist information.</p>
    <p><strong>Why:</strong> It offers a simple public interface for complicated persistence operations. It also encapsulates persistence knowledge and decouples business logic from persistence logic.</p>
    </div>
    <p>In fact, the gateway pattern is just a particular implementation of another design pattern that we’ll discuss shortly: the adapter pattern.</p>
    <h3>Go with the Proxy</h3>
    <p>There are times when you can not (or do not want to) expose the knowledge of the persistence layer to your business classes. The proxy pattern is a good way to fool your business classes into thinking they are using already existing objects.</p>
    <div>
    <p><strong>When:</strong> You have to retrieve information from a persistence layer or external source, but don’t want your business logic to know this.</p>
    <p><strong>Why:</strong> To offer a non-intrusive approach to creating objects behind the scenes. It also opens the possibility to retrieve these object on the fly, lazily, and from different sources.</p>
    </div>
    <p>A proxy effectively implements the same interface as a real object and mimics its functionality. The business logic simply uses it as if it were a real object, but in fact, the proxy creates the object if one doesn’t exist.</p>
    <blockquote><p>The active object pattern also played a part in early multi-tasking systems.</p></blockquote>
    <p>Okay, okay. That great and all, but how can we find the objects that we need to create?</p>
    <h3>Ask a Repository</h3>
    <p>The repository pattern is very useful for implementing search methods and mini-query languages. It takes these queries and uses a gateway to obtain the data for a factory to produce the objects you need.</p>
    <p>The repository pattern is different from the other patterns; it exists as part of Domain Driven Design (DDD), and is not included as part of Robert C. Martin’s book.</p>
    <div>
    <p><strong>When:</strong> You need to create multiple objects based on search criteria, or when you need to save multiple objects to the persistence layer.</p>
    <p><strong>Why:</strong> To let clients that need specific objects to work with a common and well isolated query and persistence language. It removes even more creation-related code from the business logic.</p>
    </div>
    <p>But what if the repository cannot find the objects? One option would be to return a <code>NULL</code> value, but doing so has two side effects:</p>
    <ul>
    <li>It throws a <em>refused bequest</em> if you try to call a method on such an object.</li>
    <li>It forces you to include numerous null checks (<code>if(is_null($param)) return;</code>) in your code.</li>
    </ul>
    <p>A better approach is to return a <code>null</code> object.</p>
    <h3>The Null Object Pattern</h3>
    <p>A null object implements the same interface of your other objects, but the object’s members return a neutral value. For example, a method that returns a string would return an empty string; another member returning a numeric value would return zero. This forces you to implement methods that do not return meaningful data, but you can use these objects without worrying about refused bequest or littering your code with null checks.</p>
    <div>
    <p><strong>When:</strong> You frequently check for <code>null</code> or you have refused bequests.</p>
    <p><strong>Why:</strong> It can add clarity to your code and forces you to think more about the behavior of your objects.</p>
    </div>
    <p>It’s not unusual to call many methods on an object before it can do its job. There are situations when you must prepare an object after its creation before you can truly use it. This leads to code duplication when creating those objects in different places.</p>
    <h3>You Need the Command Pattern</h3>
    <div>
    <p><strong>When:</strong> When you have to perform many operations to prepare objects for use.</p>
    <p><strong>Why:</strong> To move complexity from the consuming code to the creating code.</p>
    </div>
    <p>This sounds good, doesn’t it? In fact, it is quite useful in many situations. The command pattern is widely used for implementing transactions. If you add a simple <code>undo()</code> method to a command object, it can track all the undo transactions it performed and reverse them if necessary.</p>
    <p>So now you have ten (or more) command objects, and you want them running concurrently. You can gather them into an active object.</p>
    <h3>The Active Object</h3>
    <p>The simple and interesting active object has only one responsibility: keep a list of command objects and run them.</p>
    <div>
    <p><strong>When:</strong> Several similar objects have to execute with a single command.</p>
    <p><strong>Why:</strong> It forces clients to perform a single task and affect multiple objects.</p>
    </div>
    <p>An active object removes each command from its list after the command’s execution; meaning, you can execute the command only once. Some real world examples of an active object are:</p>
    <blockquote><p>Design patterns are here to solve problems.</p></blockquote>
    <ul>
    <li>
    <strong>Shopping Cart</strong> – Executing a <code>buy()</code> command on each product removes them from the cart.</li>
    <li>
    <strong>Financial Transactions</strong> – Grouping transactions into a single list and executing them with a simple call to the list manager’s active object would remove the transactions from the queue.</li>
    </ul>
    <p>The active object pattern also played a part in early multi-tasking systems. Each object inside an active object would keep a reference to the active object. They would execute a portion of their jobs and then put themselves back into the queue. Even in today’s systems, you can use an active object to let other objects work while you wait for a response from another application.</p>
    <hr>
    <h2>Reusability</h2>
    <p>I am positive that you’ve heard the big promise of object oriented programming: code reuse. Early adopters of OOP envisioned using universal libraries and classes in millions of different projects. Well, it never happened.</p>
    <h3>Make Some Template Methods Instead</h3>
    <p>This pattern allows for the partial reuse of code. It’s practical with multiple algorithms which only slightly differ from one another.</p>
    <div>
    <p><strong>When:</strong> Eliminate duplication in a simple way.</p>
    <p><strong>Why:</strong> There is duplication and flexibility is not a problem.</p>
    </div>
    <p>But flexibility is nice. What if I really need it?</p>
    <h3>It’s Time For a Strategy</h3>
    <div>
    <p><strong>When:</strong> Flexibility and reusability is more important than simplicity.</p>
    <p><strong>Why:</strong> Use it to implement big, interchangeable chunks of complicated logic, while keeping a common algorithm signature.</p>
    </div>
    <p>For example, you can create a generic <code>Calculator</code> and then use different <code>ComputationStrategy</code> objects to perform the calculations. This is a moderately used pattern, and it is most powerful when you have to define many conditional behaviors.</p>
    <hr>
    <h2>Discover-ability</h2>
    <p>As projects grow, it becomes increasingly difficult for external users to access our application. That’s one reason to offer a well-defined entry point to the application or module in question. Other such reasons may include the desire to conceal the module’s internal workings and structure.</p>
    <h3>Present a Facade</h3>
    <p>A facade is essentially an API – a nice and client-facing interface. When a client calls one of these nice methods, the facade delegates a series of calls to the classes it hides in order to provide the client with the required information or desired result.</p>
    <div>
    <p><strong>When:</strong> To simplify your API or intentionally conceal inner business logic.</p>
    <p><strong>Why:</strong> You can control the API and the real implementations and logic independently.</p>
    </div>
    <p>Control is good, and many times you need to perform a task when something changes. Users have to be notified, red LEDs have to blink, an alarm has to sound… you get the idea.</p>
    <blockquote><p> The popular <a href="http://laravel.com" rel="nofollow external" class="bo">Laravel</a> framework makes excellent use of the Facade Pattern.</p></blockquote>
    <h3>Subscribe to an Observer</h3>
    <blockquote><p>A null object implements the same interface as your other objects.</p></blockquote>
    <p>The observer pattern offers an easy way to monitor objects and take actions when conditions change. There are two types of observer implementations:</p>
    <ul>
    <li>
    <strong>Polling</strong> – Objects accept subscribers. Subscribers observe the object and are notified on specific events. Subscribers <em>ask</em> the observed objects for more information in order to take an action.</li>
    <li>
    <strong>Push</strong> – Like the polling method, objects accept subscribers, and subscribers are notified when an event occurs. But when a notification happens, <em>the observer also receives a hint</em> that the observer can act on.</li>
    </ul>
    <div>
    <p><strong>When:</strong> To provide a notification system inside your business logic or to the outside world.</p>
    <p><strong>Why:</strong> The pattern offers a way to communicate events to any number of different objects.</p>
    </div>
    <p>Use cases for this pattern are email notifications, logging daemons, or messaging systems. Of course, in real life, there are countless other ways to use it.</p>
    <h3>Coordinate The Effects</h3>
    <p>The observer pattern can be extended with a mediator pattern. This pattern takes two objects as parameters. The mediator subscribes itself to the first parameter, and when a change happens to the observed object, the mediator decides what to do on the second object.</p>
    <div>
    <p><strong>When:</strong> The affected objects can not know about the observed objects.</p>
    <p><strong>Why:</strong> To offer a hidden mechanism of affecting other objects in the system when one object changes.</p>
    </div>
    <hr>
    <h2>Singularity</h2>
    <p>Sometimes, you need special objects that are unique in your application, and you want to ensure that all consumers can see any change made to these objects. You also want to prevent creating multiple instances of such objects for certain reasons, like long initialization time or problems with concurrent actions to some third party libraries.</p>
    <h3>Use a Singleton</h3>
    <p>A singleton is an object having a private constructor and a public <code>getInstance()</code> method. This method ensures that only one instance of the object exists.</p>
    <div>
    <p><strong>When:</strong> You need to achieve singularity and want a cross platform, lazily evaluated solution which also offers the possibility of creation through derivation.</p>
    <p><strong>Why:</strong> To offer a single point of access when needed.</p>
    </div>
    <h3>Or Write a Monostate Object</h3>
    <p>Another approach to singularity is the monostate design pattern. This solution uses a trick offered by object oriented programming languages. It has dynamic public methods which get or set the values of static private variables. This, in turn, ensures that all instances of such classes share the same values.</p>
    <div>
    <p><strong>When:</strong> Transparency, derivabitility, and polymorphism are preferred together with singularity.</p>
    <p><strong>Why:</strong> To hide from the users/clients the fact that the object offers singularity.</p>
    </div>
    <p>Pay special attention to singularity. It pollutes the global namespace and, in most cases, can be replaced with something better suited for that particular situation.</p>
    <hr>
    <h2>Controlling Different Objects</h2>
    <blockquote><p>The repository pattern is quite useful for implementing search methods…</p></blockquote>
    <p>So you have a switch and a light. The switch can turn the light on and off, but, now, you’ve purchased a fan and want to use your old switch with it. That’s easy to accomplish in the physical world; take the switch, connect the wires, and viola.</p>
    <p>Unfortunately, it’s not so easy in the programming world. You have a <code>Switch</code> class and a <code>Light</code> class. If your <code>Switch</code> uses the <code>Light</code>, how could it use the <code>Fan</code>?</p>
    <p>Easy! Copy and paste the <code>Switch</code>, and change it to use the <code>Fan</code>. But that’s code duplication; it’s the equivalent of buying another switch for the fan. You could extend <code>Switch</code> to <code>FanSwitch</code>, and use that object instead. But what if you want to use a <code>Button</code> or <code>RemoteControl</code>, instead of a <code>Switch</code>?</p>
    <h3>The Abstract Server Pattern</h3>
    <p>This is the simplest pattern ever invented. It only uses an interface. That’s it, but there are several different implementations.</p>
    <div>
    <p><strong>When:</strong> You need to connect objects and maintain flexibility.</p>
    <p><strong>Why:</strong> Because it is the simplest way to achieve flexibility, while respecting both the dependency inversion principle and the open close principle.</p>
    </div>
    <p>PHP is dynamically typed. This means that you can omit interfaces and use different objects in the same context – risking a refused bequest. However, PHP also allows for the definition of interfaces, and I recommend you use this great functionality to provide clarity to the intent of your source code.</p>
    <p>But you already have a bunch of classes you want to talk to? Yes, of course. There are many libraries, third-party APIs, and other modules that one has to talk to, but this does not mean that our business logic has to know the details of such things.</p>
    <h3>Plug in an Adapter</h3>
    <p>The adapter pattern simply creates a correspondence between the business logic and something else. We have already seen such a pattern in action: the gateway pattern.</p>
    <div>
    <p><strong>When:</strong> You need to create a connection with a pre-existing and potentially changing module, library, or API.</p>
    <p><strong>Why:</strong> To allow your business logic to rely only on the public methods the adapter offers, and permit changing the other side of the adapter easily.</p>
    </div>
    <p>If either of the above patterns don’t fit with your situation, then you could use…</p>
    <h3>The Bridge Pattern</h3>
    <p>This is a very complicated pattern. I personally do not like it because it is usually easier to take a different approach. But for those special cases, when other solutions fail, you can consider the bridge pattern.</p>
    <div>
    <p><strong>When:</strong> The adapter pattern is not enough, and you change classes on both sides of the pipe.</p>
    <p><strong>Why:</strong> To offer increased flexibility at the cost of significant complexity.</p>
    </div>
    <hr>
    <h2>The Composite Pattern</h2>
    <p>Consider that you have a script with similar commands, and you want make a single call to run them. Wait! Didn’t we already see something like this earlier? The active object pattern?</p>
    <p>Yes, yes we did. But this one is a bit different. It’s the composite pattern, and like the active object pattern, it keeps a list of objects. But calling a method on a composite object calls the same method on all of its objects without removing them from the list. The clients calling a method are thinking they are talking to a single object of that particular type, but in fact, their actions are applied to many, many objects of the same type.</p>
    <div>
    <p><strong>When:</strong> You have to apply an action to several similar objects.</p>
    <p><strong>Why:</strong> To reduce duplication and simplify how similar objects are called.</p>
    </div>
    <p>Here’s an example: you have an application that is capable of creating and placing <code>Orders</code>. Assume you have three orders: <code>$order1</code>, <code>$order2</code> and <code>$order3</code>. You could call <code>place()</code> on each of them, or you could contain those orders in a <code>$compositeOrder</code> object, and call its <code>place()</code> method. This, in turn, calls the <code>place()</code> method on all the contained <code>Order</code> objects.</p>
    <hr>
    <h2>The State Pattern</h2>
    <blockquote><p>Gateways only retrieve and persist raw data.</p></blockquote>
    <p>A finite state machine (FSM) is a model that has a finite number of discreet states. Implementing a FSM can be difficult, and the easiest way to do so involves the trusty <code>switch</code> statement. Each <code>case</code> statement represents a current state in the machine, and it knows how to activate the next state.</p>
    <p>But we all know that <code>switch...case</code> statements are less desirable because they produce an unwanted high fan-out on our objects. So forget the <code>switch...case</code> statement, and instead consider the state pattern. The state pattern is composed of several objects: an object to coordinate things, an interface representing an abstract state, and then several implementations – one for each state. Each state knows which state comes after it, and the state can notify the coordinating object to set its new state to the next in line.</p>
    <div>
    <p><strong>When:</strong> FSM-like logic is required to be implemented.</p>
    <p><strong>Why:</strong> To eliminate the problems of a <code>switch...case</code> statement, and to better encapsulate the meaning of each individual state.</p>
    </div>
    <p>A food dispenser could have a <code>main</code> class that has a reference to a <code>state</code> class. Possible state classes might be something like: <code>WaitingForCoin</code>, <code>InsertedCoin</code>, <code>SelectedProduct</code>, <code>WaitingForConfirmation</code>, <code>DeliveringProduct</code>, <code>ReturningChange</code>. Each state performs its job and creates the next state object to send to the coordinator class.</p>
    <hr>
    <h2>Decorate with the Decorator Pattern</h2>
    <p>There are times when you deploy classes or modules throughout an application, and you can’t modify them without radically affecting the system. But, at the same time, you need to add new functionality that your users require.</p>
    <p>The decorator pattern can aid in these situations. It is very simple: take existing functionality and add to it. This is accomplished by extending the original class and providing new functionality at run-time. Old clients continue to use the new object as they would an old one, and new clients will use both the old and new functionality.</p>
    <div>
    <p><strong>When:</strong> You can’t change old classes, but you have to implement new behavior or state.</p>
    <p><strong>Why:</strong> It offers an unintrusive way of adding new functionality.</p>
    </div>
    <p>A simple example is printing data. You print some information to the user as plain text, but you also want to provide the ability to print in HTML. The decorator pattern is one such solution that lets you keep both functionality.</p>
    <h3>Or, Accept a Visitor</h3>
    <p>If your problem of extending functionality is different – say, you have a complex tree-like structure of objects, and you want to add functionality to many nodes at once – a simple iteration is not possible, but a visitor might be a viable solution. The downside, however, is that a visitor pattern implementation requires modification to the old class if it wasn’t designed to accept a visitor.</p>
    <div>
    <p><strong>When:</strong> A decorator is not appropriate and some extra complexity is acceptable.</p>
    <p><strong>Why:</strong> To allow and organized approach to defining functionality for several objects but at the price of higher complexity.</p>
    </div>
    <hr>
    <h2>Conclusion</h2>
    <blockquote><p>Use design patterns to solve your problems, but only if they fit.</p></blockquote>
    <p>Design patterns help solve problems. As an implementation recommendation, never name your classes after the patterns. Instead, find the right names for the right abstractions. This helps you to better discern when you really need a pattern as opposed to just implementing one because you can.</p>
    <p>Some may say that if you don’t name your class with the pattern’s name in it, then other developers will have a difficult time understanding your code. If it’s hard to recognize a pattern, then the problem is in the pattern’s implementation.</p>
    <p>Use design patterns to solve your problems, but only if they fit. Do not abuse them. You’ll find that a more simple solution befits a little problem; whereas, you’ll discover that you need a pattern only after you implement a few other solutions.</p>
    <p>If you’re new to design patterns, I hope that this article has given you some idea as to how patterns can be helpful in your applications. Thanks for reading!</p>
    </div>
]]>
</Body>
<Summary>There are plenty of articles that explain what design patterns are, and how to implement them; the web doesn’t need yet another one of those articles! Instead, in this article, we will more...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/QErzWmd5JXI/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26017/guest@my.umbc.edu/71037bae0f26c979676ebf452efdfe6a/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design-patterns</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 11 Mar 2013 10:48:53 -0400</PostedAt>
<EditAt>Mon, 11 Mar 2013 10:48:53 -0400</EditAt>
</NewsItem>

</News>
