<?xml version="1.0"?>
<News hasArchived="true" page="8107" pageCount="10740" pageSize="10" timestamp="Tue, 04 Aug 2026 15:26:52 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8107">
<NewsItem contentIssues="false" id="37927" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37927">
<Title>President Hrabowski receives "Champion for Children" award</Title>
<Body>
<![CDATA[
    <div class="html-content">President Hrabowski received the "Champion for Children" award from the Maryland State Department of Education on Oct. 11 at the 2013 Maryland Teacher of the Year gala. </div>
]]>
</Body>
<Summary>President Hrabowski received the "Champion for Children" award from the Maryland State Department of Education on Oct. 11 at the 2013 Maryland Teacher of the Year gala. </Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37927/guest@my.umbc.edu/4d302165cbaf4e009b6990d1bdfe4ef5/api/pixel</TrackingUrl>
<Group token="retired-426">President's Office What's New</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-426</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/images/avatars/group/11/xsmall.png?1785165141</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/images/avatars/group/11/original.png?1785165141</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/images/avatars/group/11/xxlarge.png?1785165141</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/images/avatars/group/11/xlarge.png?1785165141</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/images/avatars/group/11/large.png?1785165141</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/images/avatars/group/11/medium.png?1785165141</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/images/avatars/group/11/small.png?1785165141</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/images/avatars/group/11/xsmall.png?1785165141</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/images/avatars/group/11/xxsmall.png?1785165141</AvatarUrl>
<Sponsor>President's Office What's New</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 13:35:01 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37924" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37924">
<Title>Welcome Phi Xi Class!</Title>
<Body>
<![CDATA[
    <div class="html-content">We could not be happier to welcome our 6 new sisters of the Phi Xi pledge class of the Phi Chi chapter of Delta Phi Epsilon! Congratulations to Cait Furtado, Jamie Imperial, Leah Lord, Liza Horti, Lizz Chen, and Melissa Holmes. Welcome to our Sisterhood!</div>
]]>
</Body>
<Summary>We could not be happier to welcome our 6 new sisters of the Phi Xi pledge class of the Phi Chi chapter of Delta Phi Epsilon! Congratulations to Cait Furtado, Jamie Imperial, Leah Lord, Liza Horti,...</Summary>
<Website>http://umbcdphie.dphieconnect.org</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37924/guest@my.umbc.edu/b5c68420a433d3f9d8baaf7ca164a2b3/api/pixel</TrackingUrl>
<Group token="dphie">Delta Phi Epsilon</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/dphie</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/xsmall.png?1727901523</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/original.png?1727901523</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/xxlarge.png?1727901523</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/xlarge.png?1727901523</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/large.png?1727901523</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/medium.png?1727901523</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/small.png?1727901523</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/xsmall.png?1727901523</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/054/a6ec395059c6313c003bcbda92b2917e/xxsmall.png?1727901523</AvatarUrl>
<Sponsor>Delta Phi Epsilon</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/xxlarge.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/xlarge.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/large.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/medium.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/small.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/xsmall.jpg?1383589631</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/037/924/e71fceaf910b1065b49f118cbde48313/xxsmall.jpg?1383589631</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 13:27:58 -0500</PostedAt>
<EditAt>Mon, 04 Nov 2013 13:28:26 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37923" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37923">
<Title>Summer Research Opportunities!</Title>
<Tagline>University of Wisconsin, Madison</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <h2>Summer Research Opportunities Program-<br>SROP UW-Madison</h2>
    <p>The University of Wisconsin-Madison offers a number of Summer Research Opportunities to undergraduate students. It is a unique chance for undergraduates to work closely with faculty mentors and graduate students in their major discipline. Students accepted into research programs are matched with faculty whose expertise and interests match the student’s research interest. Students gain valuable skills for success in post-graduate studies and careers in their chosen field. Upon completing their summer research, students have the opportunity to present and receive reviews of their individual work.</p>
    </div>
]]>
</Body>
<Summary>Summer Research Opportunities Program- SROP UW-Madison  The University of Wisconsin-Madison offers a number of Summer Research Opportunities to undergraduate students. It is a unique chance for...</Summary>
<Website>http://www.grad.wisc.edu/education/diversity/srop/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37923/guest@my.umbc.edu/765eea586885d284c3486f6dcb664c5b/api/pixel</TrackingUrl>
<Tag>research</Tag>
<Group token="undergradresearch">Undergraduate Research</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/undergradresearch</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/xsmall.png?1600355057</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/original.jpg?1600355057</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/xxlarge.png?1600355057</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/xlarge.png?1600355057</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/large.png?1600355057</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/medium.png?1600355057</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/small.png?1600355057</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/xsmall.png?1600355057</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/006/875606ced2b629148af4caa1a4e8dd3c/xxsmall.png?1600355057</AvatarUrl>
<Sponsor>Undergraduate Research</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/xxlarge.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/xlarge.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/large.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/medium.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/small.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/xsmall.jpg?1383589379</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/923/d0095d3cd2f747ab23126a366739afb5/xxsmall.jpg?1383589379</ThumbnailUrl>
<PawCount>11</PawCount>
<CommentCount>1</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 13:23:46 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="37922" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37922">
<Title>25 Students Inspired &amp; Empowered @Climate Conference</Title>
<Tagline>Powershift gears students up to protect people &amp; the planet</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <p>The following is a feature article for the Retriever Weekly</p>
    <h1>UMBC students involved in Powershift</h1>
    <h2>A trip to Pittsburgh that left students inspired and motivated</h2>
    
    <p><span>By</span> <a href="http://www.retrieverweekly.com/search?q=author:%22Shannon%20Williams%22&amp;fq=page:2.20540&amp;ifByAuthor=true&amp;sortOrder=newestFirst" rel="nofollow external" class="bo"><u>Shannon Williams</u></a> Staff Writer</p>
    <div>
    <p><strong>Published: </strong>Tuesday, October 29, 2013</p>
    <p><span><span>A group of dedicated <span>UMBC</span> students packed their bags for a weekend and headed off to Pittsburgh, PA to help save the planet. These students were leaving for <span>Powershift</span>, an environmental conference held every two years that invites people from all over the country to learn more about improving the environment.</span></span></p>
    <p><span><span><span>Powershift</span> urges people to step out of their comfort zones and make the first move towards making a difference. It consists of multiple speakers, workshops, discussions and on the final day, a rally. </span></span></p>
    </div>
    <ul>
    <div></div>
    
    </ul>
    <div>
    <a rel="nofollow external" class="bo"><img alt="powershift" src="http://www.retrieverweekly.com/polopoly_fs/1.3102799!/image/542580926.jpg_gen/derivatives/landscape_260/542580926.jpg" style="max-width: 100%; height: auto;"></a><p><span><span>The <span>UMBC</span> students returned to campus more aware of the environmental issues the world is facing and even more determined to spread the word to other students.</span></span></p>
    <p><span><span>"I realized how many things are against us in the fight for clean power, but it was really inspiring to see so many like-minded people gathering to try and make a change for ourselves and, really when you get down to it, for everyone in our world today," said Virginia Morgan, a sophomore anthropology and sociology double major. </span></span></p>
    <p><span><span>"I was able to learn about issues in my own state, what I could do to help and in turn spread awareness to other students at <span>UMBC</span>,” said <span>Gagan</span> Singh senior English major.</span></span></p>
    </div>
    <div>
    <a rel="nofollow external" class="bo"><img alt="powershift_1" src="http://www.retrieverweekly.com/polopoly_fs/1.3102801!/image/917313915.jpg_gen/derivatives/landscape_260/917313915.jpg" style="max-width: 100%; height: auto;"></a><p><span><span>Some of the environmental issues that <span>Powershift</span> addressed were climate change, the keystone XL pipeline and mountaintop removal. </span></span></p>
    <p><span><span>But for this year's event, the main problem <span>Powershift</span> was concerned with was fracking (hydraulic fracturing), a way of extracting oil or gas that is harming the environment. The event was held in Pittsburgh specifically because fracking is being supported in this city. </span></span></p>
    <p><span><span>On the final day of Powershift, a rally took place against fracking. It consisted of a mass march down the streets of Pittsburgh, while people held banners and protested in order to stop fracking from harming the earth further than it already has.</span></span></p>
    <p><span><span>"The sense of rightness and belonging during that march was extremely powerful and exhilarating," said Sarah Bogle, a senior geography major.</span></span></p>
    </div>
    <div><a rel="nofollow external" class="bo"><img alt="powershift_2" src="http://www.retrieverweekly.com/polopoly_fs/1.3102802!/image/2956553173.jpg_gen/derivatives/landscape_260/2956553173.jpg" style="max-width: 100%; height: auto;"></a></div>
    <div>
    <p><span><span>UMBC students who were a part of Powershift had the opportunity to experience an event that impacted their lives and gave them even more motivation than ever to help the environment. </span></span></p>
    <p><span><span>"My favorite part about the trip was being energized by a 13-year-old activist, with his 10-year-old brother, who told the crowd about their fight to protect the earth and followed it with a hip hop performance. They are called the Earth Guardians and I do not think I've ever been so inspired," said junior environmental science major Alexa White.</span></span></p>
    <p><span><span>These students made a difference in one weekend, but it does not stop there. Many are continuing to share ways anyone can help with others, sharing all of the knowledge they gained as well as the memories they formed.</span></span></p>
    </div>
    </div>
]]>
</Body>
<Summary>The following is a feature article for the Retriever Weekly  UMBC students involved in Powershift  A trip to Pittsburgh that left students inspired and motivated    By Shannon Williams Staff...</Summary>
<Website>http://www.retrieverweekly.com/features/umbc-students-involved-in-powershift-1.3102079?pagereq=1</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37922/guest@my.umbc.edu/ac55e8136f4448a9b6195247e047c520/api/pixel</TrackingUrl>
<Group token="sustainability">Sustainability Matters at UMBC</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/sustainability</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xsmall.png?1586269437</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/original.png?1586269437</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xxlarge.png?1586269437</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xlarge.png?1586269437</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/large.png?1586269437</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/medium.png?1586269437</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/small.png?1586269437</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xsmall.png?1586269437</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/086/91091ac32f525d88daa6d6b721420ac1/xxsmall.png?1586269437</AvatarUrl>
<Sponsor>Sustainability Matters @UMBC</Sponsor>
<PawCount>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 12:54:39 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37926" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37926">
<Title>Money Pattern: The Right Way to Represent Value-Unit Pairs</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35509&amp;c=1377820208" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=35509&amp;c=1377820208" alt="" style="max-width: 100%; height: auto;"></a><p>The Money Pattern, defined by Martin Fowler and published in Patterns of Enterprise Application Architecture, is a great way to represent value-unit pairs. It is called Money Pattern because it emerged in a financial context and we will illustrate its use mainly in this context using PHP.</p>
    <p></p>
    <hr>
    <h2>A PayPal Like Account</h2>
    <p>I have no idea how PayPal is implemented, but I think it is a good idea to take its functionality as an example. Let me show you what I mean, my PayPal account has two currencies: US Dollars and Euro. It keeps the two values separated, but I can receive money in any currency, I can see my total amount in any of the two currencies and I can extract in any of the two. For the sake of this example, imagine that we extract in any of the currencies and automatic conversion is done if the balance of that specific currency is less than what we want to transfer but yet there is still enough money in the other currency. Also, we will limit the example to only two currencies.</p>
    <hr>
    <h2>Getting an Account</h2>
    <p>If I were to create and use an Account object, I would like to initialize it with an account number.</p>
    <pre>function testItCanCrateANewAccount() {&#x000A;    	$this-&gt;assertInstanceOf("Account", new Account(123));&#x000A;    }</pre>
    <p>This will obviously fail because we have no Account class, yet.</p>
    <pre>class Account {&#x000A;    &#x000A;    }</pre>
    <p>Well, writing that in a new <code>"Account.php"</code> file and requiring it in the test, made it pass. However, this is all being done just to make ourselves comfortable with the idea. Next, I am thinking of getting the account’s <code>id</code>.</p>
    <pre>function testItCanCrateANewAccountWithId() {&#x000A;    	$this-&gt;assertEquals(123, (new Account(123))-&gt;getId());&#x000A;    }</pre>
    <p>I actually changed the previous test into this one. There is no reason to keep the first one. It lived it’s life, meaning it forced me to think about the <code>Account</code> class and actually create it. We can now move on.</p>
    <pre>class Account {&#x000A;    &#x000A;    	private $id;&#x000A;    &#x000A;    	function __construct($id) {&#x000A;    		$this-&gt;id = $id;&#x000A;    	}&#x000A;    &#x000A;    	public function getId() {&#x000A;    		return $this-&gt;id;&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>The test is passing and <code>Account</code> is starting to look like a real class.</p>
    <hr>
    <h2>Currencies</h2>
    <p>Based on our PayPal analogy, we may want to define a primary and a secondary currency for our account.</p>
    <pre>private $account;&#x000A;    &#x000A;    protected function setUp() {&#x000A;    	$this-&gt;account = new Account(123);&#x000A;    }&#x000A;    &#x000A;    [...]&#x000A;    &#x000A;    function testItCanHavePrimaryAndSecondaryCurrencies() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency("EUR");&#x000A;    	$this-&gt;account-&gt;setSecondaryCurrency('USD');&#x000A;    &#x000A;    	$this-&gt;assertEquals(array('primary' =&gt; 'EUR', 'secondary' =&gt; 'USD'), $this-&gt;account-&gt;getCurrencies());&#x000A;    }&#x000A;    </pre>
    <p>Now the above test will force us to write the following code.</p>
    <pre>class Account {&#x000A;    &#x000A;    	private $id;&#x000A;    	private $primaryCurrency;&#x000A;    	private $secondaryCurrency;&#x000A;    &#x000A;    [...]&#x000A;    &#x000A;    	function setPrimaryCurrency($currency) {&#x000A;    		$this-&gt;primaryCurrency = $currency;&#x000A;    	}&#x000A;    &#x000A;    	function setSecondaryCurrency($currency) {&#x000A;    		$this-&gt;secondaryCurrency = $currency;&#x000A;    	}&#x000A;    &#x000A;    	function getCurrencies() {&#x000A;    		return array('primary' =&gt; $this-&gt;primaryCurrency, 'secondary' =&gt; $this-&gt;secondaryCurrency);&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>For the time being, we are keeping currency as a simple string. This may change in the future, but we are not there yet.</p>
    <hr>
    <h2>Gimme the Money</h2>
    <p>There are endless reasons why not to represent money as a simple value. Floating point calculations? Anyone? What about currency fractionals? Should we have 10, 100 or 1000 cents in some exotic currency? Well, this is another problem we will have to avoid. What about allocating indivisible cents?</p>
    <p>There are just too many and exotic problems when working with money to write them down in code, so we will go directly on to the solution, the Money Pattern. This is quite a simple pattern, with great advantages and many use cases, far out of the financial domain. Whenever you have to represent a value-unit pair you should probably use this pattern.</p>  <img src="http://cdn.tutsplus.com/net/uploads/2013/11/UML.png" alt="UML" width="365" height="354" style="max-width: 100%; height: auto;"><br> <p>The Money Pattern is basically a class encapsulating an amount and currency. Then it defines all the mathematical operations on the value with respect to the currency. <code>"allocate()"</code> is a special function to distribute a specific amount of money between two or more recipients.</p>
    <p>So, as a user of <code>Money</code> I would like to be able to do this in a test:</p>
    <pre>class MoneyTest extends PHPUnit_Framework_TestCase {&#x000A;    &#x000A;    	function testWeCanCreateAMoneyObject() {&#x000A;    		$money = new Money(100, Currency::USD());&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>But that won’t work yet. We need both <code>Money</code> and <code>Currency</code>. Even more, we need <code>Currency</code> before <code>Money</code>. This will be a simple class, so I will skip testing it for now. I am pretty sure the IDE can generate most of the code for me.</p>
    <pre>class Currency {&#x000A;    &#x000A;    	private $centFactor;&#x000A;    	private $stringRepresentation;&#x000A;    &#x000A;    	private function __construct($centFactor, $stringRepresentation) {&#x000A;    		$this-&gt;centFactor = $centFactor;&#x000A;    		$this-&gt;stringRepresentation = $stringRepresentation;&#x000A;    	}&#x000A;    &#x000A;    	public function getCentFactor() {&#x000A;    		return $this-&gt;centFactor;&#x000A;    	}&#x000A;    &#x000A;    	function getStringRepresentation() {&#x000A;    		return $this-&gt;stringRepresentation;&#x000A;    	}&#x000A;    &#x000A;    	static function USD() {&#x000A;    		return new self(100, 'USD');&#x000A;    	}&#x000A;    &#x000A;    	static function EUR() {&#x000A;    		return new self(100, 'EUR');&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>That’s enough for our example. We have two static functions for USD and EUR currencies. In a real application, we would probably have a general constructor with a parameter and load all the currencies from a database table or, even better, from a text file.</p>
    <p>Next, include the two new files in the test:</p>
    <pre>require_once '../Currency.php';&#x000A;    require_once '../Money.php';&#x000A;    &#x000A;    class MoneyTest extends PHPUnit_Framework_TestCase {&#x000A;    &#x000A;    	function testWeCanCreateAMoneyObject() {&#x000A;    		$money = new Money(100, Currency::USD());&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>This test still fails, but at least it can find <code>Currency</code> now. We continue with a minimal <code>Money</code> implementation. A little bit more than what this test strictly requires since it is, again, mostly auto-generated code.</p>
    <pre>class Money {&#x000A;    &#x000A;    	private $amount;&#x000A;    	private $currency;&#x000A;    &#x000A;    	function __construct($amount, Currency $currency) {&#x000A;    		$this-&gt;amount = $amount;&#x000A;    		$this-&gt;currency = $currency;&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>Please note, we enforce the type <code>Currency</code> for the second parameter in our constructor. This is a nice way to avoid our clients sending in junk as currency.</p>
    <hr>
    <h2>Comparing Money</h2>
    <p>The first thing that came into my mind after having the minimal object up and running was that I will have to compare money objects somehow. Then I remembered that PHP is quite smart when it comes to comparing objects, so I wrote this test.</p>
    <pre>function testItCanTellTwoMoneyObjectAreEqual() {&#x000A;    	$m1 = new Money(100, Currency::USD());&#x000A;    	$m2 = new Money(100, Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertEquals($m1,$m2);&#x000A;    	$this-&gt;assertTrue($m1 == $m2);&#x000A;    }</pre>
    <p>Well, that actually passes. The <code>"assertEquals"</code> function can compare the two objects and even the built-in equality condition from PHP <code>"=="</code> is telling me what I expect. Nice.</p>
    <p>But, what about if we are interested in one being bigger than the other? To my even greater surprise, the following test also passes without any problems.</p>
    <pre>function testOneMoneyIsBiggerThanTheOther() {&#x000A;    	$m1 = new Money(200, Currency::USD());&#x000A;    	$m2 = new Money(100, Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertGreaterThan($m2, $m1);&#x000A;    	$this-&gt;assertTrue($m1 &gt; $m2);&#x000A;    }</pre>
    <p>Which leads us to…</p>
    <pre>function testOneMoneyIsLessThanTheOther() {&#x000A;    	$m1 = new Money(100, Currency::USD());&#x000A;    	$m2 = new Money(200, Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertLessThan($m2, $m1);&#x000A;    	$this-&gt;assertTrue($m1 &lt; $m2);&#x000A;    }</pre>
    <p>… a test that passes immediately.</p>
    <hr>
    <h2>Plus, Minus, Multiply</h2>
    <p>Seeing so much PHP magic actually working with comparisons, I could not resist to try this one.</p>
    <pre>function testTwoMoneyObjectsCanBeAdded() {&#x000A;    	$m1 = new Money(100, Currency::USD());&#x000A;    	$m2 = new Money(200, Currency::USD());&#x000A;    	$sum = new Money(300, Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertEquals($sum, $m1 + $m2);&#x000A;    }</pre>
    <p>Which fails and says:</p>
    <pre>Object of class Money could not be converted to int</pre>
    <p>Hmm. That sounds pretty obvious. At this point we have to make a decision. It is possible to continue this exercise with even more PHP magic, but this approach will, at some point, transform this tutorial into a PHP cheatsheet instead of a design pattern. So, let’s make the decision to implement the actual methods to add, subtract and multiply money objects.</p>
    <pre>function testTwoMoneyObjectsCanBeAdded() {&#x000A;    	$m1 = new Money(100, Currency::USD());&#x000A;    	$m2 = new Money(200, Currency::USD());&#x000A;    	$sum = new Money(300, Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertEquals($sum, $m1-&gt;add($m2));&#x000A;    }</pre>
    <p>This test fails as well, but with an error telling us there is no <code>"add"</code> method on <code>Money</code>.</p>
    <pre>public function getAmount() {&#x000A;    	return $this-&gt;amount;&#x000A;    }&#x000A;    &#x000A;    function add($other) {&#x000A;    	return new Money($this-&gt;amount + $other-&gt;getAmount(), $this-&gt;currency);&#x000A;    }</pre>
    <p>To sum up two <code>Money</code> objects, we need a way to retrieve the amount of the object we pass in as the argument. I prefer to write a getter, but setting the class variable to be public would also be an acceptable solution. But what if we want to add Dollars to Euros?</p>
    <pre>/**&#x000A;     * @expectedException Exception&#x000A;     * @expectedExceptionMessage Both Moneys must be of same currency&#x000A;     */&#x000A;    function testItThrowsExceptionIfWeTryToAddTwoMoneysWithDifferentCurrency() {&#x000A;    	$m1 = new Money(100, Currency::USD());&#x000A;    	$m2 = new Money(100, Currency::EUR());&#x000A;    &#x000A;    	$m1-&gt;add($m2);&#x000A;    }</pre>
    <p>There are several ways to deal with operations on <code>Money</code> objects with different currencies. We will throw an exception and expect it in the test. Alternatively, we could implement a currency conversion mechanism in our application, call it, convert both <code>Money</code> objects into some default currency and compare them. Or, if we would have a more sophisticated currency conversion algorithm, we could always convert from one to another and compare in that converted currency. The thing is, that when conversion comes into place, conversion fees have to be considered and things will be getting quite complicated. So let’s just throw that exception and move on.</p>
    <pre>public function getCurrency() {&#x000A;    	return $this-&gt;currency;&#x000A;    }&#x000A;    &#x000A;    function add(Money $other) {&#x000A;    	$this-&gt;ensureSameCurrencyWith($other);&#x000A;    	return new Money($this-&gt;amount + $other-&gt;getAmount(), $this-&gt;currency);&#x000A;    }&#x000A;    &#x000A;    private function ensureSameCurrencyWith(Money $other) {&#x000A;    	if ($this-&gt;currency != $other-&gt;getCurrency())&#x000A;    		throw new Exception("Both Moneys must be of same currency");&#x000A;    }</pre>
    <p>That’s better. We do a check to see if the currencies are different and throw an exception. I already wrote it as a separate private method, because I know we will need it in the other mathematical operations as well.</p>
    <p>Subtraction and multiplication are very similar to addition, so here is the code and you can find the tests in the attached source code.</p>
    <pre>function subtract(Money $other) {&#x000A;    	$this-&gt;ensureSameCurrencyWith($other);&#x000A;    	if ($other &gt; $this)&#x000A;    		throw new Exception("Subtracted money is more than what we have");&#x000A;    	return new Money($this-&gt;amount - $other-&gt;getAmount(), $this-&gt;currency);&#x000A;    }&#x000A;    &#x000A;    function multiplyBy($multiplier, $roundMethod = PHP_ROUND_HALF_UP) {&#x000A;    	$product = round($this-&gt;amount * $multiplier, 0, $roundMethod);&#x000A;    	return new Money($product, $this-&gt;currency);&#x000A;    }</pre>
    <p>With subtraction, we have to make sure we have enough money and with multiplication, we must take actions to round things up or down so that division (multiplication with numbers less than one) will not produce “half cents”. We keep our amount in cents, the lowest possible factor of the currency. We can not divide it more.</p>
    <hr>
    <h2>Introducing Currency to Our Account</h2>
    <p>We have an almost complete <code>Money</code> and <code>Currency</code>. It is time to introduce these objects to <code>Account</code>. We will start with <code>Currency</code>, and change our tests accordingly.</p>
    <pre>function testItCanHavePrimaryAndSecondaryCurrencies() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$this-&gt;account-&gt;setSecondaryCurrency(Currency::USD());&#x000A;    &#x000A;    	$this-&gt;assertEquals(array('primary' =&gt; Currency::EUR(), 'secondary' =&gt; Currency::USD()), $this-&gt;account-&gt;getCurrencies());&#x000A;    }</pre>
    <p>Because of the dynamic typing nature of PHP, this test passes without any problems. However I would like to force the methods in <code>Account</code> to use <code>Currency</code> objects and do not accept anything else. This is not mandatory, but I find these kinds of type hintings extremely useful when someone else needs to understand our code.</p>
    <pre>function setPrimaryCurrency(Currency $currency) {&#x000A;    	$this-&gt;primaryCurrency = $currency;&#x000A;    }&#x000A;    &#x000A;    function setSecondaryCurrency(Currency $currency) {&#x000A;    	$this-&gt;secondaryCurrency = $currency;&#x000A;    }</pre>
    <p>Now it is obvious to anyone reading this code for the first time that <code>Account</code> works with <code>Currency</code>.</p>
    <hr>
    <h2>Introducing Money to Our Account</h2>
    <p>The two basic actions any account must provide is: deposit – meaning adding money to an account – and withdraw – meaning removing money from an account. Depositing has a source and withdrawing has a destination other than our current account. We will not go into details about how to implement these transactions, we will only concentrate on implementing the effects these have on our account. So, we can imagine a test like this for depositing.</p>
    <pre>function testAccountCanDepositMoney() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    &#x000A;    	$this-&gt;assertEquals($money, $this-&gt;account-&gt;getPrimaryBalance());&#x000A;    }</pre>
    <p>This will force us to write quite a lot of implementation code.</p>
    <pre>class Account {&#x000A;    &#x000A;    	private $id;&#x000A;    	private $primaryCurrency;&#x000A;    	private $secondaryCurrency;&#x000A;    	private $secondaryBalance;&#x000A;    	private $primaryBalance;&#x000A;    &#x000A;    	function getSecondaryBalance() {&#x000A;    		return $this-&gt;secondaryBalance;&#x000A;    	}&#x000A;    &#x000A;    	function getPrimaryBalance() {&#x000A;    		return $this-&gt;primaryBalance;&#x000A;    	}&#x000A;    &#x000A;    	function __construct($id) {&#x000A;    		$this-&gt;id = $id;&#x000A;    	}&#x000A;    &#x000A;    	[...]&#x000A;    &#x000A;    	function deposit(Money $money) {&#x000A;    		$this-&gt;primaryCurrency == $money-&gt;getCurrency() ? $this-&gt;primaryBalance = $money : $this-&gt;secondaryBalance = $money;&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>OK, OK. I know, I wrote more than what was absolutely necessary, for production. But I don’t want to bore you to death with baby-steps and I am also fairly sure the code for <code>secondaryBalance</code> will work correctly. It was almost entirely generated by the IDE. I will even skip testing it. While this code makes our test pass, we have to ask ourselves what happens when we do subsequent deposits? We want our money to be added to the previous balance.</p>
    <pre>function testSubsequentDepositsAddUpTheMoney() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money); //One euro in the account&#x000A;    	$this-&gt;account-&gt;deposit($money); //Two euros in the account&#x000A;    &#x000A;    	$this-&gt;assertEquals($money-&gt;multiplyBy(2), $this-&gt;account-&gt;getPrimaryBalance());&#x000A;    }</pre>
    <p>Well, that fails. So we have to update our production code.</p>
    <pre>function deposit(Money $money) {&#x000A;    	if ($this-&gt;primaryCurrency == $money-&gt;getCurrency()){&#x000A;    		$this-&gt;primaryBalance = $this-&gt;primaryBalance ? : new Money(0, $this-&gt;primaryCurrency);&#x000A;    		$this-&gt;primaryBalance = $this-&gt;primaryBalance-&gt;add($money);&#x000A;    	}else {&#x000A;    		$this-&gt;secondaryBalance = $this-&gt;secondaryBalance ? : new Money(0, $this-&gt;secondaryCurrency);&#x000A;    		$this-&gt;secondaryBalance = $this-&gt;secondaryBalance-&gt;add($money);&#x000A;    	}&#x000A;    }</pre>
    <p>This is much better. We are probably done with the <code>deposit</code> method and we can continue with <code>withdraw</code>.</p>
    <pre>function testAccountCanWithdrawMoneyOfSameCurrency() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    	$this-&gt;account-&gt;withdraw(new Money(70, Currency::EUR()));&#x000A;    &#x000A;    	$this-&gt;assertEquals(new Money(30, Currency::EUR()), $this-&gt;account-&gt;getPrimaryBalance());&#x000A;    &#x000A;    }</pre>
    <p>This is just a simple test. The solution is simple, also.</p>
    <pre>function withdraw(Money $money) {&#x000A;    	$this-&gt;primaryCurrency == $money-&gt;getCurrency() ?&#x000A;    		$this-&gt;primaryBalance = $this-&gt;primaryBalance-&gt;subtract($money) :&#x000A;    		$this-&gt;secondaryBalance = $this-&gt;secondaryBalance-&gt;subtract($money);&#x000A;    }</pre>
    <p>Well, that works, but what if we want to use a <code>Currency</code> that is not in our account? We should throw an Excpetion for that.</p>
    <pre>/**&#x000A;     * @expectedException Exception&#x000A;     * @expectedExceptionMessage This account has no currency USD&#x000A;     */&#x000A;    &#x000A;    function testThrowsExceptionForInexistentCurrencyOnWithdraw() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    	$this-&gt;account-&gt;withdraw(new Money(70, Currency::USD()));&#x000A;    }</pre>
    <p>That will also force us to check our currencies.</p>
    <pre>function withdraw(Money $money) {&#x000A;    	$this-&gt;validateCurrencyFor($money);&#x000A;    	$this-&gt;primaryCurrency == $money-&gt;getCurrency() ?&#x000A;    		$this-&gt;primaryBalance = $this-&gt;primaryBalance-&gt;subtract($money) :&#x000A;    		$this-&gt;secondaryBalance = $this-&gt;secondaryBalance-&gt;subtract($money);&#x000A;    }&#x000A;    &#x000A;    private function validateCurrencyFor(Money $money) {&#x000A;    	if (!in_array($money-&gt;getCurrency(), $this-&gt;getCurrencies()))&#x000A;    			throw new Exception(&#x000A;    				sprintf(&#x000A;    					'This account has no currency %s',&#x000A;    					$money-&gt;getCurrency()-&gt;getStringRepresentation()&#x000A;    				)&#x000A;    			);&#x000A;    }</pre>
    <p>But what if we want to withdraw more than what we have? That case was already addressed when we implemented subtraction on <code>Money</code>. Here is the test that proves it.</p>
    <pre>/**&#x000A;     * @expectedException Exception&#x000A;     * @expectedExceptionMessage Subtracted money is more than what we have&#x000A;     */&#x000A;    function testItThrowsExceptionIfWeTryToSubtractMoreMoneyThanWeHave() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    	$this-&gt;account-&gt;withdraw(new Money(150, Currency::EUR()));&#x000A;    }</pre>
    <hr>
    <h2>Dealing With Withdraw and Exchange</h2>
    <p>One of the more difficult things to deal with when we are working with multiple currencies is exchanging between them. The beauty of this design pattern is that it allows us to somewhat simplify this problem by isolating and encapsulating it in its own class. While the logic in an <code>Exchange</code> class may be very sophisticated, its use becomes much easier. For the sake of this tutorial, let’s imagine that we have some very basic <code>Exchange</code> logic only. 1 EUR = 1.5 USD.</p>
    <pre>class Exchange {&#x000A;    &#x000A;    	function convert(Money $money, Currency $toCurrency) {&#x000A;    		if ($toCurrency == Currency::EUR() &amp;&amp; $money-&gt;getCurrency() == Currency::USD())&#x000A;    			return new Money($money-&gt;multiplyBy(0.67)-&gt;getAmount(), $toCurrency);&#x000A;    		if ($toCurrency == Currency::USD() &amp;&amp; $money-&gt;getCurrency() == Currency::EUR())&#x000A;    			return new Money($money-&gt;multiplyBy(1.5)-&gt;getAmount(), $toCurrency);&#x000A;    		return $money;&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>If we convert from EUR to USD we multiply the value by 1.5, if we convert from USD to EUR we divide the value by 1.5, otherwise we presume we are converting two currencies of the same type, so we do nothing and just return the money. Of course, in reality this would be a much more complicated class.</p>
    <p>Now, having an <code>Exchange</code> class, <code>Account</code> can make different decisions when we want to withdraw <code>Money</code> in a currency, but we do not hove enough in that specific currency. Here is a test that better exemplifies it.</p>
    <pre>function testItConvertsMoneyFromTheOtherCurrencyWhenWeDoNotHaveEnoughInTheCurrentOne() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::USD());&#x000A;    	$money = new Money(100, Currency::USD()); //That's 1 USD&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    &#x000A;    	$this-&gt;account-&gt;setSecondaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO = 1.5 USD&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    &#x000A;    	$this-&gt;account-&gt;withdraw(new Money(200, Currency::USD())); //That's 2 USD&#x000A;    &#x000A;    	$this-&gt;assertEquals(new Money(0, Currency::USD()), $this-&gt;account-&gt;getPrimaryBalance());&#x000A;    	$this-&gt;assertEquals(new Money(34, Currency::EUR()), $this-&gt;account-&gt;getSecondaryBalance());&#x000A;    }</pre>
    <p>We set our account’s primary currency to USD and deposit one dollar. Then we set the secondary currency to EUR and deposit one Euro. Then we withdraw two dollars. Finally, we expect to remain with zero dollars and 0.34 Euros. Of course this test throws an exception, so we have to implement a solution to this dilemma.</p>
    <pre>function withdraw(Money $money) {&#x000A;    	$this-&gt;validateCurrencyFor($money);&#x000A;    	if ($this-&gt;primaryCurrency == $money-&gt;getCurrency()) {&#x000A;    		if( $this-&gt;primaryBalance &gt;= $money ) {&#x000A;    			$this-&gt;primaryBalance = $this-&gt;primaryBalance-&gt;subtract($money);&#x000A;    		}else{&#x000A;    			$ourMoney = $this-&gt;primaryBalance-&gt;add($this-&gt;secondaryToPrimary());&#x000A;    			$remainingMoney = $ourMoney-&gt;subtract($money);&#x000A;    			$this-&gt;primaryBalance = new Money(0, $this-&gt;primaryCurrency);&#x000A;    			$this-&gt;secondaryBalance = (new Exchange())-&gt;convert($remainingMoney, $this-&gt;secondaryCurrency);&#x000A;    		}&#x000A;    &#x000A;    	} else {&#x000A;    		$this-&gt;secondaryBalance = $this-&gt;secondaryBalance-&gt;subtract($money);&#x000A;    	}&#x000A;    }&#x000A;    &#x000A;    private function secondaryToPrimary() {&#x000A;    	return (new Exchange())-&gt;convert($this-&gt;secondaryBalance, $this-&gt;primaryCurrency);&#x000A;    }</pre>
    <p>Wow, lots of changes had to be made to support this automatic conversion. What is happening is that if we are in the case of extracting from our primary currency and we don’t have enough money, we convert our balance of the secondary currency to primary and try the subtraction again. If we still do not have enough money, the <code>$ourMoney</code> object will throw the appropriate exception. Otherwise, we will set our primary balance to zero and we will convert the remaining money back to the secondary currency and set our secondary balance to that value.</p>
    <p>It remains up to our account’s logic to implement a similar automatic conversion for secondary currency. We will not implement such a symmetrical logic. If you like the idea, consider it as an exercise for you. Also, think about a more generic private method that would do the magic of auto-conversions in both cases.</p>
    <p>This complex change to our logic also forces us to update another one of our tests. Whenever we want to auto-convert we must have a balance, even if it is just zero.</p>
    <pre>/**&#x000A;     * @expectedException Exception&#x000A;     * @expectedExceptionMessage Subtracted money is more than what we have&#x000A;     */&#x000A;    function testItThrowsExceptionIfWeTryToSubtractMoreMoneyThanWeHave() {&#x000A;    	$this-&gt;account-&gt;setPrimaryCurrency(Currency::EUR());&#x000A;    	$money = new Money(100, Currency::EUR()); //That's 1 EURO&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    &#x000A;    	$this-&gt;account-&gt;setSecondaryCurrency(Currency::USD());&#x000A;    	$money = new Money(0, Currency::USD());&#x000A;    	$this-&gt;account-&gt;deposit($money);&#x000A;    	$this-&gt;account-&gt;withdraw(new Money(150, Currency::EUR()));&#x000A;    }</pre>
    <hr>
    <h2>Allocating Money Between Accounts</h2>
    <p>The last method we need to implement on <code>Money</code> is <code>allocate</code>. This is the logic that decides what to do when dividing money between different accounts which can’t be made exactly. For example, if we have 0.10 cents and we want to allocate them between two accounts in a proportion of 30-70 percents, that is easy. One account will get three cents and the other seven. However, if we want to make the same 30-70 ratio allocation of five cents, we have a problem. The exact allocation would be 1.5 cents in one account and 3.5 in the other. But we can not divide cents, so we have to implement our own algorithm to allocate the money.</p>
    <p>There can be several solutions to this problem, one common algorithm is to add one cent sequentially to each account. If an account has more cents than its exact mathematical value, it should be eliminated from the allocation list and receive no further money. Here is a graphical representation.</p>  <img src="http://cdn.tutsplus.com/net/uploads/2013/11/Allocations.png" alt="Allocations" width="600" height="301" style="max-width: 100%; height: auto;"><br> <p>And a test to prove our point is below.</p>
    <pre>function testItCanAllocateMoneyBetween2Accounts() {&#x000A;    	$a1 = $this-&gt;anAccount();&#x000A;    	$a2 = $this-&gt;anAccount();&#x000A;    	$money = new Money(5, Currency::USD());&#x000A;    	$money-&gt;allocate($a1, $a2, 30, 70);&#x000A;    &#x000A;    	$this-&gt;assertEquals(new Money(2, Currency::USD()), $a1-&gt;getPrimaryBalance());&#x000A;    	$this-&gt;assertEquals(new Money(3, Currency::USD()), $a2-&gt;getPrimaryBalance());&#x000A;    }&#x000A;    &#x000A;    private function anAccount() {&#x000A;    	$account = new Account(1);&#x000A;    	$account-&gt;setPrimaryCurrency(Currency::USD());&#x000A;    	$account-&gt;deposit(new Money(0, Currency::USD()));&#x000A;    	return $account;&#x000A;    }</pre>
    <p>We just create a <code>Money</code> object with five cents and two accounts. We call <code>allocate</code> and expect the two to three values to be in the two accounts. We also created a helper method to quickly create accounts. The test fails, as expected, but we can make it pass quite easily.</p>
    <pre>function allocate(Account $a1, Account $a2, $a1Percent, $a2Percent) {&#x000A;    	$exactA1Balance = $this-&gt;amount * $a1Percent / 100;&#x000A;    	$exactA2Balance = $this-&gt;amount * $a2Percent / 100;&#x000A;    &#x000A;    	$oneCent = new Money(1, $this-&gt;currency);&#x000A;    	while ($this-&gt;amount &gt; 0) {&#x000A;    		if ($a1-&gt;getPrimaryBalance()-&gt;getAmount() &lt; $exactA1Balance) {&#x000A;    			$a1-&gt;deposit($oneCent);&#x000A;    			$this-&gt;amount--;&#x000A;    		}&#x000A;    		if ($this-&gt;amount &lt;= 0)&#x000A;    			break;&#x000A;    		if ($a2-&gt;getPrimaryBalance()-&gt;getAmount() &lt; $exactA2Balance) {&#x000A;    			$a2-&gt;deposit($oneCent);&#x000A;    			$this-&gt;amount--;&#x000A;    		}&#x000A;    	}&#x000A;    }</pre>
    <p>Well, not the simplest code, but it is working correctly, as the passing of our test proves it. The only thing we can still do to this code is to reduce the small duplication inside the <code>while</code> loop.</p>
    <pre>function allocate(Account $a1, Account $a2, $a1Percent, $a2Percent) {&#x000A;    	$exactA1Balance = $this-&gt;amount * $a1Percent / 100;&#x000A;    	$exactA2Balance = $this-&gt;amount * $a2Percent / 100;&#x000A;    &#x000A;    	while ($this-&gt;amount &gt; 0) {&#x000A;    		$this-&gt;allocateTo($a1, $exactA1Balance);&#x000A;    		if ($this-&gt;amount &lt;= 0)&#x000A;    			break;&#x000A;    		$this-&gt;allocateTo($a2, $exactA2Balance);&#x000A;    	}&#x000A;    }&#x000A;    &#x000A;    private function allocateTo($account, $exactBalance) {&#x000A;    	if ($account-&gt;getPrimaryBalance()-&gt;getAmount() &lt; $exactBalance) {&#x000A;    		$account-&gt;deposit(new Money(1, $this-&gt;currency));&#x000A;    		$this-&gt;amount--;&#x000A;    	}&#x000A;    }</pre>
    <hr>
    <h2>Final Thoughts</h2>
    <blockquote><p>What I find amazing with this little pattern is the large range of cases where we can apply it.</p></blockquote>
    <p>We are done with our Money Pattern. We saw that it is quite a simple pattern, which encapsulates the specifics of the money concept. We also saw that this encapsulation alleviates the burden of computations from Account. Account can concentrate on representing the concept from a higher level, from the point of view of the bank. Account can implement methods like connection with account holders, IDs, transactions and money. It will be an orchestrator not a calculator. Money will take care of calculations.</p>
    <p>What I find amazing with this little pattern is the large range of cases where we can apply it. Basically, every time you have a value-unit pair, you can use it. Imagine you have a weather application and you want to implement a representation for temperature. That would be the equivalent of our Money object. You can use Fahrenheit or Celsius as currencies.</p>
    <p>Another use case is when you have a mapping application and you want to represent distances between points. You can easily use this pattern to switch between Metric or Imperial measurements. When you work with simple units, you can drop the Exchange object and implement the simple conversion logic inside your “Money” object.</p>
    <p>So, I hope you enjoyed this tutorial and I am eager to hear about the different ways that you might use this concept. Thank you for reading.</p>
    </div>
]]>
</Body>
<Summary>The Money Pattern, defined by Martin Fowler and published in Patterns of Enterprise Application Architecture, is a great way to represent value-unit pairs. It is called Money Pattern because it...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/ouFOBGHDIkc/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37926/guest@my.umbc.edu/330e5acf003aeb7a7e8f10b44ab3f384/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>money-pattern</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tutorials</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, 04 Nov 2013 12:00:23 -0500</PostedAt>
<EditAt>Mon, 04 Nov 2013 12:00:23 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="37920" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37920">
<Title>IEEE Job Search Workshop</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="" src="http://www.csee.umbc.edu/wp-content/uploads/2013/11/dreamstime_l_21089305.jpg" width="700" height="308" style="max-width: 100%; height: auto;"></p>
    <h2>IEEE – Job Search Workshop</h2>
    <h3><span>12:00-1:00 Monday, 11 November 2013, ITE LH 7</span></h3>
    <p>Join IEEE for a job search workshop. A Career Services’ expert will give a presentation tailored for STEM grad students. Learn about job search techniques that work best for those in a STEM major and start your search now.</p>
    <p>It could take up to 9 months to find a job after graduation… Don’t wait until your last year to start looking for a job.</p>
    <p>Kick start your job search with us, November 11th, at noon, in Lecture Hall 7. No matter where you are in your studies, it’s never too early to start job searching. Lunch will be served!</p>
    <p>RSVP <a href="http://my.umbc.edu/groups/ieee/events/19664" rel="nofollow external" class="bo">online</a>.</p>
    </div>
]]>
</Body>
<Summary>IEEE – Job Search Workshop   12:00-1:00 Monday, 11 November 2013, ITE LH 7   Join IEEE for a job search workshop. A Career Services’ expert will give a presentation tailored for STEM grad...</Summary>
<Website>http://www.csee.umbc.edu/2013/11/ieee-job-search-workshop/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37920/guest@my.umbc.edu/5a9c0bbd7b961ee7cc4827cf431d3eff/api/pixel</TrackingUrl>
<Tag>graduate</Tag>
<Tag>jobs</Tag>
<Tag>students</Tag>
<Tag>undergraduate</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 11:58:45 -0500</PostedAt>
<EditAt>Mon, 04 Nov 2013 11:58:45 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="42650" important="false" status="posted" url="https://my3.my.umbc.edu/posts/42650">
<Title>IEEE Job Search Workshop</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="" src="http://www.csee.umbc.edu/wp-content/uploads/2013/11/dreamstime_l_21089305.jpg" width="700" height="308" style="max-width: 100%; height: auto;"></p>
    <h2>IEEE – Job Search Workshop</h2>
    <h3><span>12:00-1:00 Monday, 11 November 2013, ITE LH 7</span></h3>
    <p>Join IEEE for a job search workshop. A Career Services’ expert will give a presentation tailored for STEM grad students. Learn about job search techniques that work best for those in a STEM major and start your search now.</p>
    <p>It could take up to 9 months to find a job after graduation… Don’t wait until your last year to start looking for a job.</p>
    <p>Kick start your job search with us, November 11th, at noon, in Lecture Hall 7. No matter where you are in your studies, it’s never too early to start job searching. Lunch will be served!</p>
    <p>RSVP <a href="http://my.umbc.edu/groups/ieee/events/19664" rel="nofollow external" class="bo">online</a>.</p>
    </div>
]]>
</Body>
<Summary>IEEE – Job Search Workshop   12:00-1:00 Monday, 11 November 2013, ITE LH 7   Join IEEE for a job search workshop. A Career Services’ expert will give a presentation tailored for STEM grad...</Summary>
<Website>http://www.csee.umbc.edu/2013/11/ieee-job-search-workshop/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ieee-job-search-workshop</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/42650/guest@my.umbc.edu/89726624b969279373494070c0e09620/api/pixel</TrackingUrl>
<Tag>graduate</Tag>
<Tag>jobs</Tag>
<Tag>students</Tag>
<Tag>undergraduate</Tag>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 11:58:45 -0500</PostedAt>
<EditAt>Mon, 04 Nov 2013 11:58:45 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="109954" important="false" status="posted" url="https://my3.my.umbc.edu/posts/109954">
<Title>Piotr Gwiazda, English, Publishes a Book</Title>
<Body>
<![CDATA[
    <div class="html-content">Associate Professor of English Piotr Gwiazda has just published his translation of Polish writer Grzegorz Wroblewski’s book of prose poems KOPENHAGA. This project was awarded a grant from the PEN American Center and UMBC’s Dresher Center for the Humanities. Gabriel Gudding calls KOPENHAGA “one of the most important books of our time.” Joshua Clover describes it as “grim, glancingly beautiful, always necessary.” Marjorie Perloff comments: “Wroblewski is the true poetic chronicler of our 21st century diaspora in all its absurdities and anxieties.”</div>
]]>
</Body>
<Summary>Associate Professor of English Piotr Gwiazda has just published his translation of Polish writer Grzegorz Wroblewski’s book of prose poems KOPENHAGA. This project was awarded a grant from the PEN...</Summary>
<Website>https://news.umbc.edu/piotr-gwiazda-english-publishes-a-book/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/109954/guest@my.umbc.edu/8a65dcb58cbd4e21734dcd425d424e79/api/pixel</TrackingUrl>
<Tag>arts-and-culture</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>Mon, 04 Nov 2013 11:55:42 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="109955" important="false" status="posted" url="https://my3.my.umbc.edu/posts/109955">
<Title>Amanda Knapp, Office of Undergraduate Education, Recognized by the Sloan Consortium</Title>
<Body>
<![CDATA[
    <div class="html-content">Dr. Amanda M. Knapp’s research entitled, “The Relationship Between Best Online Instructional Practices and Undergraduate Student Perceptions of Instructor Credibility at a Large, Four-Year, Public, Open University” was selected for a 2013 Effective Practice Award through a Sloan-C peer review process. An award luncheon will be held at the 19th Annual Sloan Consortium International Conference on Online Learning on November 21, 2013 in Orlando, FL.</div>
]]>
</Body>
<Summary>Dr. Amanda M. Knapp’s research entitled, “The Relationship Between Best Online Instructional Practices and Undergraduate Student Perceptions of Instructor Credibility at a Large, Four-Year,...</Summary>
<Website>https://news.umbc.edu/amanda-knapp-office-of-undergraduate-education-recognized-by-the-sloan-consortium/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/109955/guest@my.umbc.edu/882bc78c511da2382ff9bf22f26d0bc5/api/pixel</TrackingUrl>
<Tag>community</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>Mon, 04 Nov 2013 11:47:58 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="37919" important="false" status="posted" url="https://my3.my.umbc.edu/posts/37919">
<Title>Summer Internship Program with the NBA</Title>
<Body>
<![CDATA[
    <div class="html-content"><blockquote><blockquote>
    <div>NBA Internship Program offers college students an exciting opportunity to use their skills and classroom learning within a national sports environment. Imagine having a real job experience and being able to learn all about the NBA at the same time.<br><br>Students must be juniors or seniors already attending a U.S. accredited college or university, first and second-year graduate students, and law students. Internship positions are located either in New York City (Manhattan) or Secaucus, New Jersey. Each office will have different positions available, and students will be matched to a position based on their skills and experience. <br><br>Interns will not be fetching coffee for other office employees. They will get hands-on experience in their field and learn how the NBA League Office operates. The internship is 10 weeks long and is offered every summer; interns work 40 hours a week. Students will work and learn, but also be able to attend NBA events and other activities.<br><br>Students may apply online for internships in marketing, communications, human resources, information technology, business, media, events and much more. <strong><br><br>For more details, visit </strong>
    </div>
    <div><br></div>
    <div><a href="http://careers.peopleclick.com/careerscp/client_nba/external/gateway.do?functionName=viewFromLink&amp;jobPostId=3896&amp;localeCode=en-us" rel="nofollow external" class="bo">http://careers.peopleclick.com/careerscp/client_nba/external/gateway.do?functionName=viewFromLink&amp;jobPostId=3896&amp;localeCode=en-us</a></div>
    </blockquote></blockquote></div>
]]>
</Body>
<Summary>NBA Internship Program offers college students an exciting opportunity to use their skills and classroom learning within a national sports environment. Imagine having a real job experience and...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/37919/guest@my.umbc.edu/5d4773e77a708fba6401ce25f7c75486/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>Intern, Co-op, Research &amp; Service-Learning</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/xxlarge.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/xlarge.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/large.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/medium.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/small.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/xsmall.jpg?1383582693</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/037/919/30c5ba4650eee4a5550cdfa16fb4f195/xxsmall.jpg?1383582693</ThumbnailUrl>
<PawCount>2</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Nov 2013 11:31:43 -0500</PostedAt>
</NewsItem>

</News>
