<?xml version="1.0"?>
<News hasArchived="true" page="8604" pageCount="10722" pageSize="10" timestamp="Sat, 11 Jul 2026 14:51:55 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8604">
<NewsItem contentIssues="false" id="31496" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31496">
<Title>Intro to Web Workers</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Brian Cooksey goes from "I don't really know what Web Workers are" to "OK I totally get Web Workers." on one short article.</p>
    <blockquote><p>...they are scripts that run in their own background thread. Independence from the regular JavaScript event loop means that a worker can churn away at something for a long time and your UI will remain responsive.</p></blockquote>
    <p><a href="https://zapier.com/engineering/intro-to-web-workers/" title="Direct link to featured article" rel="nofollow external" class="bo">Direct Link to Article</a> — <a href="http://css-tricks.com/intro-to-web-workers/" rel="nofollow external" class="bo">Permalink</a></p>
    <hr>
    
    <p><small><a href="http://css-tricks.com/intro-to-web-workers/" rel="nofollow external" class="bo">Intro to Web Workers</a> is a post from <a href="http://css-tricks.com" rel="nofollow external" class="bo">CSS-Tricks</a></small></p>
    </div>
]]>
</Body>
<Summary>Brian Cooksey goes from "I don't really know what Web Workers are" to "OK I totally get Web Workers." on one short article.    ...they are scripts that run in their own background thread....</Summary>
<Website>https://zapier.com/engineering/intro-to-web-workers/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31496/guest@my.umbc.edu/267b2692bc8cb9a721b66fd1cc8124ec/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>link</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tricks</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>Wed, 19 Jun 2013 08:56:48 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 08:56:48 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31490" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31490">
<Title>Gadgetwise: Skates, Squids and Dollies That Make Striking Video</Title>
<Body>
<![CDATA[
    <div class="html-content">The products from Cinetics might not be the first accessories a budding videographer should buy, but if you want to create some advanced dolly effects on a budget, they are worth a look.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fskates-squids-and-dollies-for-striking-video%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Skates%2C+Squids+and+Dollies+That+Make+Striking+Video" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fskates-squids-and-dollies-for-striking-video%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Skates%2C+Squids+and+Dollies+That+Make+Striking+Video" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fskates-squids-and-dollies-for-striking-video%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Skates%2C+Squids+and+Dollies+That+Make+Striking+Video" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fskates-squids-and-dollies-for-striking-video%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Skates%2C+Squids+and+Dollies+That+Make+Striking+Video" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fskates-squids-and-dollies-for-striking-video%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Skates%2C+Squids+and+Dollies+That+Make+Striking+Video" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165665329125/u/0/f/640387/c/34625/s/2d804b54/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665329125/u/0/f/640387/c/34625/s/2d804b54/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The products from Cinetics might not be the first accessories a budding videographer should buy, but if you want to create some advanced dolly effects on a budget, they are worth a look.     </Summary>
<Website>http://gadgetwise.blogs.nytimes.com/2013/06/19/skates-squids-and-dollies-for-striking-video/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31490/guest@my.umbc.edu/3683d73e3f80f19621c58a179071728d/api/pixel</TrackingUrl>
<Tag>cameras</Tag>
<Tag>digital-photography-and-video</Tag>
<Tag>new</Tag>
<Tag>products</Tag>
<Tag>technology</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 19 Jun 2013 07:43:13 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 14:45:02 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31488" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31488">
<Title>Gadgetwise: Reliving Your Twitter History</Title>
<Body>
<![CDATA[
    <div class="html-content">Twitter lets you download an archive of your posts, complete with a timeline for finding posts from a specific year or month.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fqa-reliving-your-twitter-history%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Reliving+Your+Twitter+History" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fqa-reliving-your-twitter-history%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Reliving+Your+Twitter+History" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fqa-reliving-your-twitter-history%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Reliving+Your+Twitter+History" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fqa-reliving-your-twitter-history%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Reliving+Your+Twitter+History" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fgadgetwise.blogs.nytimes.com%2F2013%2F06%2F19%2Fqa-reliving-your-twitter-history%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Gadgetwise%3A+Reliving+Your+Twitter+History" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165665156153/u/0/f/640387/c/34625/s/2d7f1c3a/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665156153/u/0/f/640387/c/34625/s/2d7f1c3a/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Twitter lets you download an archive of your posts, complete with a timeline for finding posts from a specific year or month.     </Summary>
<Website>http://gadgetwise.blogs.nytimes.com/2013/06/19/qa-reliving-your-twitter-history/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31488/guest@my.umbc.edu/3ba8177d258eb66e92b00ca3771ea90f/api/pixel</TrackingUrl>
<Tag>archives-and-records</Tag>
<Tag>new</Tag>
<Tag>q-and-a</Tag>
<Tag>technology</Tag>
<Tag>twitter</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Wed, 19 Jun 2013 06:55:22 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 06:55:22 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31485" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31485">
<Title>The Smashing Magazine 2013 Photo Contest: Winners And Best Entries</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <table width="650">
    <tbody>
    <tr>
    <td>
    <div>
    <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" style="max-width: 100%; height: auto;"><br><a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" alt="" style="max-width: 100%; height: auto;"></a> <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" rel="nofollow external" class="bo"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" alt="" style="max-width: 100%; height: auto;"></a>
    </div>
    </td>
    </tr>
    </tbody>
    </table>
    <p>Three weeks ago we launched a <a href="http://www.smashingmagazine.com/2013/05/28/smashing-magazine-2013-photo-contest/" rel="nofollow external" class="bo">photo contest</a> and asked everyone to submit a creative picture of the object that fuels their creativity and inspiration. For all of you who have participated, thank you so much for taking the time and thought to interpret your object in a creative way. We did not only enjoy the brilliant photography that you sent us, it was also inspiring to read your thoughts on the story behind all these objects.</p>
    <p>We received around 350 entries from all over the world and only 70 could make it onto the poster we’ve created exclusively for our dear fans.</p>
    <p>As promised, the 10 most creative and original submissions will be awarded with a printed poster. The ones who have been selected will be contacted via email very soon — if not already! If you’ve followed our submission guidelines, your inspiring picture has surely made it to our jury. And if you find your object among the 70 pictures on the poster, you’ll see that your name has been included among the names of all the contributors that made this poster possible. Of course, the owner of each photo owns all the copyrights.</p>
    <h4>The Smashing Magazine 2013 Photo Contest Poster</h4>
    <p><a href="http://provide.smashingmagazine.com/smashing-community-poster-2013.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/smashing-community-poster-2013-500px.jpg" width="500" height="707" alt="Inspiration Around Us: The Smashing Community Poster 2013" style="max-width: 100%; height: auto;"></a></p>
    <h4>Preview And Download</h4>
    <p>Below you will find a larger version as well as an exclusive version of the poster in PDF format:</p>
    <ul>
    <li>
    <a href="http://provide.smashingmagazine.com/smashing-community-poster-2013.jpg" rel="nofollow external" class="bo">Large resolution preview</a> (JPG, 5 Mb)</li>
    <li>
    <a href="http://provide.smashingmagazine.com/Inspiration-Around-Us.zip" rel="nofollow external" class="bo">Download the poster in PDF for free</a> (.zip, 23 Mb)</li>
    </ul>
    <h3>Our 10 Winners:</h3>
    <p>“Lead, Tin, Antimony, Wood &amp; Plastic” designed by <a href="http://www.royaljerry.net/" rel="nofollow external" class="bo">Adam Pócs</a>:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/adam-pocs_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/adam-pocs_mini_500_mini.jpg" alt="adam-pocs_mini_500_mini" width="500" height="750" style="max-width: 100%; height: auto;"></a><br><em>This is a metal movable type I acquired when I studied typography on Moholy–Nagy University of Art and Design. This small piece of the history of printing resides above my monitor in the peaceful company of a wooden letter “O” and a plastic “Q” key saved from a computer keyboard representing the ever changing tools of the written human culture. The actual background of the image shows a part of my CD collection wall.</em></p>
    <p>“Stationary Crane” designed by Holly Lambert:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/holly-lambert_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/holly-lambert_mini_500_mini.jpg" alt="holly-lambert_mini_500_mini" width="500" height="354" style="max-width: 100%; height: auto;"></a><br><em>I love origami paper cranes and up cycling paper, so I combined the two and decorated my cubicle with paper cranes made of old maps and a variety of call for entry posters. I even have a Starburst wrapper paper crane!</em></p>
    <p>“Take a Bite Out of Your Task List” designed by Jen Riehle:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jen-riehle_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jen-riehle_mini_500_mini.jpg" alt="jen-riehle_mini_500_mini" width="500" height="341" style="max-width: 100%; height: auto;"></a><br> <em>This frog is a little paper clip. It has a small spring and can clasp papers in its mouth. It sits on my desk, and has ever since high school when my mother gave it to me. She got it as a child so I’m sure it’s quite old. I should probably put it away and not use it but it’s too cute and it makes me smile every time I look at it.</em></p>
    <p>“Together” designed by <a href="https://www.facebook.com/RatulMukherjeePhotography/" rel="nofollow external" class="bo">Ratul Mukherjee</a>:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/ratul-mukherjee_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/ratul-mukherjee_mini_500_mini.jpg" alt="ratul-mukherjee_mini_500_mini" width="500" height="333" style="max-width: 100%; height: auto;"></a><br><em>I was visiting one of my friend’s relatives house. They have travelled around the world and the house contained lot of interesting pieces collected from other countries. The picture is of two tooth-picks’ holder from Paris. They were really cute and I was playing around with them as if I was a kid. They were designed so as to hug each other when placed face to face. And when I looked at these two inanimate objects hugging so sweetly, I envisaged love, friendship, care ,solidarity, peace. I believe we were also designed so as to hug each other when placed face to face but some of the blue-prints got lost in translation. </em></p>
    <p>“Ma’Guitar” designed by Santanu Karar:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/santanu-karar_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/santanu-karar_mini_500_mini.jpg" alt="santanu-karar_mini_500_mini" width="500" height="332" style="max-width: 100%; height: auto;"></a><br><em>Ma’ guitar is not a thing. It is an extension of myself. It is who I am. ~ Joan Jett </em></p>
    <p>“My bottle of creativity” designed by Stefania Peter:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/stefania-peter_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/stefania-peter_mini_500_mini.jpg" alt="stefania-peter_mini_500_mini" width="500" height="755" style="max-width: 100%; height: auto;"></a><br><em>Colours, rare lights make me inspired. They give me a strange, but very good feeling when ever I see such photos or real life scenes. It took me some time to get such bokehs, till I got an idea to use Christmas tree lights in the background! Those lights were exactly what I was looking for. When I was a little girl, I spent many hours near our tree and enjoying the lights and colours. Probably, that’s why I get inspired when ever I see similar photos.</em></p>
    <p>“Traces” designed by Janina Imberg:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/janina-imberg.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/janina-imberg.png" alt="stefania-peter_mini_500_mini" width="500" height="755" style="max-width: 100%; height: auto;"></a><br><em>I’ve taken a picture of my old and dirty shoes I was obviously wearing way to often. But they are carrying so many reminders of every step I took, so they are a kind of inspiration. And actually I just like their worn out look.</em></p>
    <p>“Morning duo” designed by Jovo Milanovic:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jovo-milanovic.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jovo-milanovic.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>What would be most inspiring object that would spark my creativity than mug of coffee? Hm, well thats true, but watch for big “S” on picture. That “S” simbolize Smashing magazine. There is no morning on work that would start without daily dose of coffee and daily dose of SM :) Cheers</em></p>
    <p>“My Keyboard” designed by <a href="http://nitnat.de/" rel="nofollow external" class="bo">Konstantin Meier</a>:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/konstantin-meier.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/konstantin-meier.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>Music has always been a great inspiration pool for me. So when I get stuck in design process, instead of clicking trough css galleries, I often start playing keyboard.</em></p>
    <p>“Pantone Catalyst” designed by Rebecca Miller:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/rebecca-miller.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/rebecca-miller.png" alt="stefania-peter_mini_500_mini" width="500" height="790" style="max-width: 100%; height: auto;"></a><br><em>A photograph of the brilliance that Pantone inspires.</em></p>
    <h3>Some Of The Best Entries:</h3>
    <p>“Check Mate” designed by Jerry Locke:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jerry-locke_mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jerry-locke_mini_500_mini.jpg" alt="jerry-locke_mini_500_mini" width="500" height="333" style="max-width: 100%; height: auto;"></a><br><em>This is a photo of a famous check mate called, “Hippopotamus Mate” which can seal a match in 6 moves. The photo symbolizes a quick turn of events that can change an outcome. Hopefully, one is on the right side of the check mate.</em></p>
    <p>Designed by Nicholas Koh:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/nicholas-koh-h.s._mini_500_mini.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/nicholas-koh-h.s._mini_500_mini.jpg" alt="nicholas-koh-h.s._mini_500_mini" width="500" height="332" style="max-width: 100%; height: auto;"></a><br><em>This is a photograph of a lil’ mini-bonsai that lives happily on my work desk. Two of its lower branches seem to reach out to you and have that ‘pom-pom’ effect, which always serves to cheer me up whenever I take a look at it. I also enjoy inspecting its network of constantly-growing aerial branches that weave around towards the soil… there’s just something about it that’s so mesmerising!</em></p>
    <p>“Hour-Glass” designed by Chris Preen:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/chris-preen.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/chris-preen.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>I use this for concentrated bursts of totally non-distracted and unplugged work. </em></p>
    <p>“Play for inspiration” designed by Jeffrey Lu:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jeffrey-lu.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jeffrey-lu.png" alt="stefania-peter_mini_500_mini" width="500" height="375" style="max-width: 100%; height: auto;"></a><br><em>Playing games is not just about having fun and passing time, but for me they are quite educational and make me a better designer. They are a great source of inspiration and design reference and problem-solving material!<br>
    This is a photo of my Nintendo 3DS XL playing Fire Emblem: Awakening, a game I’ve been playing almost everyday for the past month and more! Great Turn Based Strategy game! :D</em></p>
    <p>“The Foosball Table” designed by Harshad Methrath:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/harshad-methrath.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/harshad-methrath.png" alt="stefania-peter_mini_500_mini" width="500" height="333" style="max-width: 100%; height: auto;"></a><br><em>We, the staff of MP&amp;A Advertising Agency take out our stress or enjoy a break over a game of foosball. I personally use it when I have hit a creative wall and I need to get away from my system. It always helps.</em></p>
    <p>“Threads of a Colorfull Life” designed by Jofy Baby:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jofy-baby.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jofy-baby.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>The picture depicts the different emotions of one’s life which consists of colors of joy, sorrow , love , envy etc. Our life is too like these threads that bind us with these emotions in different phases.<br>
    P.s All rigths reserved</em></p>
    <p>“Repotting Day” designed by Jennifer Cui:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jennifer-cui.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/jennifer-cui.png" alt="stefania-peter_mini_500_mini" width="500" height="333" style="max-width: 100%; height: auto;"></a><br><em>Because I feel unproductive.</em></p>
    <p>Designed by Margaret Martin:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/margaret-martin.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/margaret-martin.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>Clay meets my wild daughter with unlimited imagination. Result: paintbrush vase. Flowers wilt anyway.</em></p>
    <p>“The Butterfly Effect” designed by Marvin Christopher Moloczek:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Marvin-Christopher-Moloczek.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Marvin-Christopher-Moloczek.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>One butterfly at the right time and the right place can create a storm with a flap of its wings. One coffee at the right time at the right place can help to create a storm of creativity. One butterfly, which had coffee at the right time – pretty much any time – that’d be interesting.</em></p>
    <p>“Keep on typing” designed by Mickael Mao:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/mickael-mao.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/mickael-mao.png" alt="stefania-peter_mini_500_mini" width="500" height="666" style="max-width: 100%; height: auto;"></a><br><em>Because we tend to forget things, one of the way to capture them is to write them.</em></p>
    <p>“Perritos” designed by Monica Molina:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Monica_Molina.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Monica_Molina.png" alt="stefania-peter_mini_500_mini" width="500" height="500" style="max-width: 100%; height: auto;"></a><br><em>In the south of Chile we call those clothes hanger “Perritos”, (spanish), in English means little dogs.</em></p>
    <p>“Music, I love you…” designed by Nik Aximov:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/nik-aximov.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/nik-aximov.png" alt="stefania-peter_mini_500_mini" width="500" height="318" style="max-width: 100%; height: auto;"></a><br><em>When I begin to create something, the only thing I need is music. I don’t drink and smoke, the music and love are the only sources I use in my works:)</em></p>
    <p>“Milk &amp; Cookies” designed by Oana Mangiurea:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/oana-mangiurea.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/oana-mangiurea.png" alt="stefania-peter_mini_500_mini" width="500" height="337" style="max-width: 100%; height: auto;"></a><br><em>My reminder of my inner child. Keeps me creative wihout having to fear of what others have to say regarding my work.</em></p>
    <p>“iCreativity” designed by Olivier Jousset:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/olivier-jousset.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/olivier-jousset.png" alt="stefania-peter_mini_500_mini" width="500" height="674" style="max-width: 100%; height: auto;"></a><br><em>What better object in 2013 may represent the creativity and the inspiration… a tablet of course !</em></p>
    <p>“This fuels my creativity!” designed by Per Swantesson:</p>
    <p> <a href="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Per-Swantesson.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/06/Per-Swantesson.png" alt="stefania-peter_mini_500_mini" width="500" height="332" style="max-width: 100%; height: auto;"></a><br><em>Photo at sunset on my terrace in Guanajuato, Mexico</em></p>
    <h3>Be Sure To Join In Next Time!</h3>
    <p>Thanks to all who have participated in this contest. There will be more contests and goodies coming up soon, so be sure to<strong> stay tuned</strong>!</p>
    <p>Yours sincerely,</p>
    <p>The Smashing Team</p>
    <p><em>(ml) (ea) (il)</em></p>
    <hr>
    <p><small>© The Smashing Editorial for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2013.</small></p>
    </div>
]]>
</Body>
<Summary>        Three weeks ago we launched a photo contest and asked everyone to submit a creative picture of the object that fuels their creativity and inspiration. For all of you who have participated,...</Summary>
<Website>http://www.smashingmagazine.com/2013/06/19/inspiration-around-us-smashing-community-poster/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31485/guest@my.umbc.edu/260c87a31462b65ff4e1a62c01a6a0dc/api/pixel</TrackingUrl>
<Tag>contests</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>inspiration</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>photography</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>Wed, 19 Jun 2013 05:47:32 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 05:47:32 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31484" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31484">
<Title>How to build a realtime jQuery plugin</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="thumbnail" src="http://netdna.webdesignerdepot.com/uploads/2013/06/thumbnail29.jpg" width="200" height="160" style="max-width: 100%; height: auto;">Back in January this year jQuery announced a new <a href="http://blog.jquery.com/2013/01/16/announcing-the-jquery-plugin-registry/" rel="nofollow external" class="bo">plugins registry</a>, so now seemed like a great time to write a tutorial combining building a jQuery plugin with my passion – realtime web technologies.</p> <p>Realtime web technologies make it really easy to add live content to previously static web pages. Live content can bring a page alive, retain users and remove the need for them to refresh the page periodically. Realtime updates are generally achieved by connecting to a source of data, subscribing to the data you want to add to the page and then updating the page as the data arrives. But why can’t this be achieved through simply marking up a page to identify what data should be shown and where? Well, maybe it can!</p> <p>jQuery’s tagline is <em>write less, do more</em>. The tagline for the jQuery Realtime plugin that we’re going to build in this tutorial will be <em>write less, do realtime.</em></p> <p>In this tutorial we’ll create a jQuery plugin that makes it really easy to add realtime content to a page by simply adding some markup. First, we’ll cover how to use a service called <a href="http://pusher.com" rel="nofollow external" class="bo">Pusher</a> to subscribe to realtime data. Then we’ll define a way of marking up an HTML5 document with ‘data-*’ attributes in a way which can then be queried by our realtime jQuery plugin and converted to realtime data subscriptions. Finally, we’ll create the jQuery plugin which will use the attributes to subscribe to data and instantly display updates within the page.</p> <p>If you just want to dive straight in you can <a href="http://www.leggetter.co.uk/pusher/jquery-realtime-plugin/examples/bitcoin/" rel="nofollow external" class="bo">view a demo</a> in action or you can <a href="https://github.com/leggetter/jquery.realtime/tree/wdd-tutorial" rel="nofollow external" class="bo">download the code</a> and start hacking.</p> <p> </p> <h1>Pusher basics</h1> <p>Pusher is a hosted service that makes it easy to add realtime content and interactive experiences to web and mobile apps. Here we’re going to simply connect, subscribe to some data and then update a page when the data comes in.</p> <p>To demonstrate this create a file called ‘example.html’ and include the Pusher JavaScript library from the Pusher CDN. We know we’re going to use jQuery 2.0.0 so we should also include that now:&lt;!DOCTYPE HTML&gt;</p> <pre>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta charset="utf-8"&gt;<br>&lt;title&gt;Creating a realtime jQuery plugin | Webdesigner Depot&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;script src="<a href="http://js.pusher.com/2.0/pusher.min.js%22&gt;&lt;/script&amp;gt">http://js.pusher.com/2.0/pusher.min.js"&gt;&lt;/script&amp;gt</a>;<br>&lt;script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"&gt;&lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre> <h2>Connect</h2> <p>Once the Pusher JavaScript library has been included we can connect to Pusher by creating a new ‘Pusher’ instance and passing in an application key. Create an additional ‘&lt;script&gt;’ tag beneath the jQuery include as follows:</p> <pre>&lt;!DOCTYPE HTML&gt;<br> &lt;html&gt;<br> &lt;head&gt;<br> &lt;meta charset="utf-8"&gt;<br> &lt;title&gt;Creating a realtime jQuery plugin | Webdesigner Depot&lt;/title&gt;<br> &lt;/head&gt;<br> &lt;body&gt;<br> &lt;script src="<a href="http://js.pusher.com/2.0/pusher.min.js%22&gt;&lt;/script&amp;gt">http://js.pusher.com/2.0/pusher.min.js"&gt;&lt;/script&amp;gt</a>;<br> &lt;script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"&gt;&lt;/script&gt;<br> &lt;script&gt;<br> ( function( $ ) {<br> <br> var pusher = new Pusher( '7b9f9ade2135118a915b' );<br> <br> } )( jQuery );<br> &lt;/script&gt;<br> &lt;/body&gt;<br> &lt;/html&gt;</pre> <p><em>Note: For the tutorial we’ll use an application key that I’ve provided but for your own applications you’ll need to sign up to Pusher to get your own.</em></p> <p>You can check that you’re connected in three different ways. You can do it manually by checking the <a href="http://pusher.com/docs/debugging#pusher_debug_console" rel="nofollow external" class="bo">Pusher Debug Console</a>, if you load the page with the Pusher Debug Console open you’ll see the connection logged. The Pusher JavaScript library provides a <a href="http://pusher.com/docs/debugging#pusher_logging" rel="nofollow external" class="bo">log property</a> that you can assign a function to and then you can manually check to make sure a connection has been established by inspecting the browser’s JavaScript console. Or you can check the connection programmatically by <a href="http://pusher.com/docs/client_api_guide/client_connect#connection-states" rel="nofollow external" class="bo">monitoring the connection state</a> of the Pusher instance.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_001.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"></p> <p><em>The Pusher Debug console</em></p> <p>Whatever you choose to do, you’ll now be connected.</p> <h2>Subscribe</h2> <p>Pusher uses the <a href="http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern" rel="nofollow external" class="bo">Publish &amp; Subscribe pattern,</a> so to receive data from Pusher you first need to subscribe to it. Pusher uses the term <a href="http://pusher.com/docs/channels" rel="nofollow external" class="bo">channels</a> when it comes to subscriptions, so let’s subscribe to a channel called ‘test-channel’.</p> <pre>&lt;script&gt; ( function( $ ) {<br> var pusher = new Pusher( '7b9f9ade2135118a915b' );<br> var channel = pusher.subscribe( 'test-channel' );<br>} )( jQuery );<br>&lt;/script&gt;</pre> <p>As with connection state, you can check the status of a subscription in a few ways; using the Pusher Debug Console, by checking the output from ‘Pusher.log’ or by binding to the <a href="http://pusher.com/docs/client_api_guide/client_events#subscription_succeeded" rel="nofollow external" class="bo">‘pusher:subscription_succeeded’ event.</a></p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_002.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"></p> <p><em>Using Pusher.log to log pusher-js library information</em></p> <h2>Bind to events</h2> <p>Those of you who use jQuery will probably be familiar with the idea of binding to events. jQuery does provide shortcuts for some events (e.g. ‘.onclick( &lt;function&gt; )’) but you can also bind to events using ‘.bind(&lt;type&gt;, &lt;function&gt;)’. Pusher follows this convention and you can bind to events to be informed when something updates; when the connection state changes, when a subscription succeeds or when new application data is received. For this example, and with the realtime plugin, we’re interested primarily in the latter.</p> <p>Let’s bind to a ‘test-event’ on the channel:</p> <pre>&lt;script&gt;<br> ( function( $ ) {<br> <br> var pusher = new Pusher( '7b9f9ade2135118a915b' );<br> var channel = pusher.subscribe( 'test-channel' );<br> channel.bind( 'test-event', handleEvent );<br> <br> function handleEvent( data ) {<br> console.log( 'in handleEvent:' );<br> console.log( data );<br> }<br> <br> } )( jQuery );<br> &lt;/script&gt;</pre> <p>When binding to an event you simply identify the event by name and pass in a reference to a function that will be called when that event occurs (is triggered) on the channel.</p> <p>If you have a Pusher account you can test that the ‘handleEvent’ function is called by using the <a href="http://pusher.com/docs/debugging#event_creator" rel="nofollow external" class="bo">Pusher Event Creator;</a> enter ‘test-channel’ as the channel name, ‘test-event’ as the event name and some data (‘{ “some” : “data” }’) into the event data text area and click the submit button. You’ll then see the debug information, along with the data you entered, logged to the JavaScript console.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_003.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"> </p> <p><em>Triggering an event from the Pusher Event Creator and logging it in the JavaScript console</em></p> <p>Since the realtime jQuery plugin that we’re building doesn’t publish (trigger) data (it just consumes it) we won’t cover that here. But if you’re interested in finding out more checkout the <a href="http://pusher.com/docs/server_api_guide" rel="nofollow external" class="bo">Pusher server docs.</a></p> <h2>Displaying realtime updates</h2> <p>The next thing to consider is displaying the realtime data updates to the user.</p> <p>For this we’ll need an idea for a simple application; having worked in finance for a few years I’m generally keen to avoid any type of financial example, but Bitcoin has made it interesting and relevant. So, let’s create a very simple display for showing Bitcoin prices.</p> <p><em>Note: We’re going to use some fake data. Let’s make sure this doesn’t result in more Bitcoin panic selling!</em></p> <p>First, let’s create some HTML where we’ll display the realtime prices. We can pre-populate the display with prices known at the time the page was loaded:</p> <pre>&lt;h1&gt;Bitcoin Fake Prices&lt;/h1&gt;<br>&lt;table id="bitcoin_prices"&gt;<br>&lt;thead&gt;<br>&lt;tr&gt;<br>&lt;th&gt;<br>&lt;/th&gt;<br>&lt;th&gt;Last&lt;/th&gt;<br>&lt;th&gt;Low&lt;/th&gt;<br>&lt;th&gt;High&lt;/th&gt;<br>&lt;th&gt;Volume&lt;/th&gt;<br>&lt;/tr&gt;<br>&lt;/thead&gt;<br>&lt;tbody&gt;<br>&lt;tr&gt;<br>&lt;td&gt;BTC/USD&lt;/td&gt;<br>&lt;td&gt;61.157 USD&lt;/td&gt;<br>&lt;td&gt;51 USD&lt;/td&gt;<br>&lt;td&gt;95.713 USD&lt;/td&gt;<br>&lt;td&gt;66271 BTC / 4734629 USD&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/tbody&gt;<br>&lt;/table&gt;</pre> <p>Let’s update the JavaScript to subscribe to a more appropriately named channel called ‘btc-usd’ and bind to a ‘new-price’ event:</p> <pre>&lt;script&gt;<br>( function( $ ) {<br>var pusher = new Pusher( '7b9f9ade2135118a915b' );<br>var channel = pusher.subscribe( 'btc-usd' );<br>channel.bind( 'new-price', handleEvent );<br>function handleEvent( data ) {<br>}<br>} )( jQuery );<br>&lt;/script&gt;</pre> <p>The ‘data’ sent to the ‘handleEvent’ function should also be in a more appropriate format – here’s the JSON:</p> <pre>{<br>"last": "last value",<br>"low": "low value",<br>"high": "high value",<br>"volume": "volume value"<br>}</pre> <p>Now that we know this we can change the ‘handleEvent’ function to update the appropriate cell in the table:</p> <pre>function handleEvent( data ) {<br>var cells = $( '#bitcoin_prices tbody tr td' );<br>cells.eq( 1 ).text( data.last );<br>cells.eq( 2 ).text( data.low );<br>cells.eq( 3 ).text( data.high );<br>cells.eq( 4 ).text( data.volume ); <br>}</pre> <p>If you now trigger a ‘new-price’ event on the ‘btc-usd’ channel, using the JSON we defined, the page will update to show the new values.</p> <p>There are ways of both making this code nicer and, as the page grows to show more data, optimise things. But, we’re going to make it so that realtime data will be added to the page simply by applying markup.</p> <p>Before we progress, let’s first add a bit of styling to the example. In the ‘&lt;head&gt;’ add the following CSS:</p> <pre>&lt;style&gt;<br>body {<br>font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;<br>}<br>#bitcoin_prices {<br>border-spacing: 0;<br>}<br>#bitcoin_prices thead {<br>background-color: gray;<br>}<br>#bitcoin_prices tbody tr:nth-child(odd) {<br>background-color: #fff;<br>}<br>#bitcoin_prices tbody tr:nth-child(even) {<br>background-color: #ccc;<br>}<br>#bitcoin_prices tbody tr td:nth-child(1) {<br>background-color: yellow;<br>}<br>#bitcoin_prices td {<br>padding: 4px 10px;<br>}<br>&lt;/style&gt;</pre> <p>As you can undoubtedly tell, I’m no designer. So please feel free to improve on this.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_004.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"></p> <p><em>The “styled” Bitcoin Fake Prices application</em></p> <p>Finally, restructure things so we’re set up for building the plugin.</p> <ol> <li>Create an ‘examples’ directory and within it a ‘bitcoin’ directory.</li> <li>Move the ‘example.html’ file to ‘examples/bitcoin’, rename it ‘index.html’.</li> <li>Create a ‘src’ directory at the top-level of the project.</li> </ol> <p>The directory structure should now look as follows:</p> <p>/<br>examples/<br>bitcoin/<br>index.html<br>src/</p> <p>We’re now ready to define our <em>realtime markup</em> and build the realtime jQuery plugin.</p> <p> </p> <h1>Realtime markup</h1> <p>The first thing to highlight is that this isn’t a new idea — I worked for a company called <a href="http://www.caplin.com" rel="nofollow external" class="bo">Caplin Systems</a> and in 2001 they had a technology known as RTML that let you markup a page so that realtime updates could be applied. The purpose here is to use jQuery to parse the page and then interpret the markup, resulting in subscriptions, event binding and ultimately live content being added to the page.</p> <p>For our plugin we’ll use HTML5′s <a href="http://ejohn.org/blog/html-5-data-attributes/" rel="nofollow external" class="bo">data-* attributes.</a> These attributes don’t directly affect the layout or presentation of the page so they’re a great choice for our realtime markup.</p> <p>The questions we now need to answer about the markup are:</p> <ul> <li>Where do we put the Pusher application key?</li> <li>How do we identify what channels should be subscribed to?</li> <li>How do we identify the events that should be bound to on a channel?</li> <li>How do we know what data to display in the page, and where?</li> </ul> <p>The first one is relatively easy. Since we need to include our plugin JavaScript file we can add a ‘data-rt-key’ attribute to the ‘&lt;script&gt;’ element for the plugin include and make the value our application key.</p> <p>Channel subscriptions can be identified by a ‘data-rt-channel’ attribute. This will mean that the element that the attribute is on and all children are related to this subscription.</p> <p>Event binding can be achieved using a ‘data-rt-event’ attribute where the element with the attribute, and all children are related to this event.</p> <p>The values to be extracted from the event data can be indicated by a ‘data-rt-value’ attribute.</p> <p>Putting this all together, update the Fake Bitcoin Prices markup to look as follows:</p> <pre>&lt;h1&gt;Bitcoin Fake Prices&lt;/h1&gt;<br>&lt;table id="bitcoin_prices"&gt;<br>&lt;thead&gt;<br>&lt;tr&gt;<br>&lt;th&gt;&lt;/th&gt;<br>&lt;th&gt;Last&lt;/th&gt;<br>&lt;th&gt;Low&lt;/th&gt;<br>&lt;th&gt;High&lt;/th&gt;<br>&lt;th&gt;Volume&lt;/th&gt;<br>&lt;/tr&gt;<br>&lt;/thead&gt;<br>&lt;tbody&gt;<br>&lt;tr data-rt-channel="btc-usd"<br>data-rt-event="new-price"&gt;<br>&lt;td&gt;BTC/USD&lt;/td&gt;<br>&lt;td data-rt-value="last"&gt;61.157 USD&lt;/td&gt;<br>&lt;td data-rt-value="low"&gt;51 USD&lt;/td&gt;<br>&lt;td data-rt-value="high"&gt;95.713 USD&lt;/td&gt;<br>&lt;td data-rt-value="volume"&gt;66271 BTC / 4734629 USD&lt;/td&gt;<br>&lt;/tr&gt;<br>&lt;/tbody&gt;<br>&lt;/table&gt;<br>&lt;script src="path/to/jquery.realtime.js"<br>data-rt-key="7b9f9ade2135118a915b"&gt;&lt;/script&gt;</pre> <p>So, from the script tag you can see we’re going to connect to Pusher using the key identified by ‘data-rt-key’. We’re going to subscribe to the ‘btc-usd’ channel and bind to the ‘new-price’ event. When an event is received we’re going to update the appropriate table cell based on the value indicated by ‘data-rt-value’; if the value of the attribute is ‘last’ then the value of the ‘last’ property is taken from the received ‘data’ object and displayed in the cell.</p> <p>Hopefully what we are trying to achieve is now pretty clear. Let’s start looking at how to create a jQuery plugin.</p> <h2>jQuery plugin basics</h2> <p>The <a href="http://learn.jquery.com/plugins/basic-plugin-creation/" rel="nofollow external" class="bo">jQuery plugin creation docs</a> are pretty good so I won’t go into the details here. We’ll simply concentrate on building the functionality that we need in our plugin.</p> <p>Before we write any code we should consider how we want to use the plugin. The normal way a plugin functions is that you use jQuery to query the page, and then you execute the plugin functionality against the matched elements.</p> <pre>$( 'a' ).toggle();</pre> <p>The above code would find all ‘&lt;a&gt;’ elements and then execute the ‘toggle()’ functionality on them — probably hiding all anchors, so not the most useful example you’ll ever see.</p> <p>So, let’s say we would want to use the plugin as follows:</p> <pre>&lt;script&gt;<br>$( function() {<br>$( '#bitcoin_prices' ).realtime();<br>} );<br>&lt;/script&gt;</pre> <p>Let’s look at creating the expected functionality.</p> <h2>A realtime plugin</h2> <p>First, create a ‘realtime.jquery.js’ file within the ‘src’ directory. This file will contain the plugin functionality. Then add the following to the file as the starting point of our plugin:</p> <pre>( function( $) {<br>$.fn.realtime = function() {<br>console.log( 'realtime!' );<br>console.log( $( this ).html() );<br>};<br>}( jQuery ) );</pre> <p>We can even test this out now. In ‘examples/bitcoin/index.html’ remove the example plugin ‘&lt;script&gt;’ tag and find the one below the jQuery include and replace it with a ‘&lt;script&gt;’ tag which includes the new ‘realtime.jquery.js’ file (don’t forget the ‘data-rt-key’ attribute) and a script block which executes the ‘realtime()’ plugin on the ‘bitcoin_prices’ table:</p> <pre>&lt;script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"&gt;&lt;/script&gt;<br>&lt;script src="../../jquery.realtime.js"<br>data-rt-key="7b9f9ade2135118a915b"&gt;&lt;/script&gt;<br>&lt;script&gt;<br>$( function() {<br>$( '#bitcoin_prices' ).realtime();<br>} );<br>&lt;/script&gt;</pre> <p>If you refresh the page now you’ll see ‘realtime!’ logged to the JavaScript console along with the HTML from the ‘&lt;table&gt;’ element. This is great as it means the plugin is working; we’re successfully executing our plugin functionality on the table identified by the selector we passed in to jQuery.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_005.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"></p> <h2>jQuery plugins and 3rd party libraries</h2> <p>Our realtime plugin relies on a 3rd party library — the Pusher JavaScript library. For the moment we have it included statically within our HTML, but we don’t want to make that a requirement to use the plugin. So, let’s dynamically load it. jQuery provides a way of easily doing this in the form of the <a href="http://api.jquery.com/jQuery.getScript/" rel="nofollow external" class="bo">‘.getScript()’</a> function.</p> <p>So, let’s load version 2.0 of the Pusher JavaScript library. We’ll load the HTTPS hosted version so that browsers are happy if our plugin is used on a page served over HTTPS (Chrome already blocks attempts to load HTTP hosted scripts in HTTPS pages and Firefox will do in <a href="https://developer.mozilla.org/en-US/docs/Site_Compatibility_for_Firefox_23#Non-SSL_active_content_on_SSL_pages_is_blocked_by_default" rel="nofollow external" class="bo">Firefox 23</a>). I’m going to wrap loading the library in a function as follows:</p> <pre>var libraryLoaded = false;<br>function loadPusher() {<br>$.getScript( "<a href="https://d3dy5gmtp8yhk7.cloudfront.net/2.0/pusher.min.js">https://d3dy5gmtp8yhk7.cloudfront.net/2.0/pusher.min.js</a>" )<br>.done( pusherLoaded )<br>.fail( function( jqxhr, settings, exception ) {<br>console.log( 'oh oh! ' + exception );<br>} );<br>}<br>function pusherLoaded( script, textStatus ) {<br>libraryLoaded = true;<br>console.log( 'pusher.min.js loaded: ' + textStatus ); <br>}<br>loadPusher();</pre> <p>If you reload the page the ‘pusher.min.js loaded: success’ message will be logged to the console.</p> <p>As we’re developing it’s always good to have a way of logging information so at this point let’s create a simple ‘log’ function that we can use which just logs to the console. We’ll use this now and also use it for logging Pusher events. The full source of the plugin is now:</p> <pre>( function( $ ) {<br>function log( msg ) {<br>console.log( msg );<br>}<br>var libraryLoaded = false;<br>function loadPusher() {<br>$.getScript( "<a href="https://d3dy5gmtp8yhk7.cloudfront.net/2.0/pusher.min.js">https://d3dy5gmtp8yhk7.cloudfront.net/2.0/pusher.min.js</a>" )<br>.done( pusherLoaded )<br>.fail( function( jqxhr, settings, exception ) {<br>log( 'oh oh! ' + exception );<br>} );<br>}<br>function pusherLoaded( script, textStatus ) {<br>libraryLoaded = true;<br>Pusher.log = log;<br>log( 'pusher.min.js loaded: ' + textStatus ); <br>}<br>$.fn.realtime = function() {<br>log( 'realtime!' );<br>log( $( this ).html() );<br>};<br>loadPusher();<br>}( jQuery ) );</pre> <p>You’ll also notice that we’ve assigned the ‘log’ function to the ‘Pusher.log’ property. This means we can see the internal Pusher library logging as well as our own.</p> <h2>When should we connect?</h2> <p>Due to the asynchronous nature of loading the library we can’t guarantee that it will have loaded when our plugin is called into action. Unfortunately this makes things a bit more complex than is ideal but we’ll try to solve it in as simple a way as possible.</p> <p>We need to check to see if the library has loaded — hence the ‘libraryLoaded’ flag — and act appropriately; if the library has loaded we can connect, if it hasn’t we need to queue the execution until it does. Because of this it makes more sense to only create the Pusher instance when we really need it, which is when we actually want to subscribe to data.</p> <p>Let’s look at how we can do that:</p> <pre>var pending = [];<br>function pusherLoaded( script, textStatus ) {<br>libraryLoaded = true;<br>while( pending.length !== 0 ) {<br>var els = pending.shift();<br>subscribe( els );<br>}<br>}<br>function subscribe( els ) {<br>}<br>$.fn.realtime = function() {<br>var els = this;<br>if( libraryLoaded ) {<br>subscribe( els );<br>}<br>else {<br>pending.push( els );<br>}<br>};</pre> <p>When the plugin is called we check the ‘libraryLoaded’ flag to see if the Pusher JavaScript library has been loaded. If it has we’re good to go and we can subscribe. If it’s still pending then we need to queue up the subscriptions. We do this by pushing the jQuery collection (‘els’) onto a ‘pending’ array.</p> <h2>Now, connect</h2> <p>Now that we know that the Pusher JavaScript library has loaded and that the page wants to subscribe to data we can create our ‘Pusher’ instance. Because we only want one ‘Pusher’ instance per page we’re going to follow the <a href="http://en.wikipedia.org/wiki/Singleton_pattern" rel="nofollow external" class="bo">Singleton pattern</a> and have a ‘getPusher()’:</p> <pre>var pusher;<br>function getPusher() {<br>if( pusher === undefined ) {<br>var pluginScriptTag = $("script[src$='jquery.realtime.js']");<br>var appKey = pluginScriptTag.attr("data-rt-key");<br>pusher = new Pusher( appKey );<br>}<br>return pusher;<br>}</pre> <p>This function grabs the plugin script tag by looking for a tag with a ‘src’ attribute that ends with ‘jquery.realtime.js’, and then gets the value of the ‘data-rt-key’ attribute. It then creates a new ‘Pusher’ instance, passing in the key. As discussed earlier, creating a new ‘Pusher’ instance results in a connection to the source of our data being established.</p> <h2>Subscribe</h2> <p>We can now use the ‘getPusher()’ function anytime we want to access the ‘Pusher’ instance. In our case we want to use it when we parse the elements to determine subscriptions.</p> <p>Update the placeholder ‘subscribe’ function and add the additional functions shown below:</p> <pre>function subscribe( els ) {<br>var channelEls = els.find( "*[data-rt-channel]" );<br>log( 'found ' + channelEls.size() + ' channels' );<br>channelEls.each( subscribeChannel );<br>}<br>function subscribeChannel( index, el ) {<br>el = $( el );<br>var pusher = getPusher();<br>var channelName = el.attr( 'data-rt-channel' );<br>var channel = pusher.subscribe( channelName );<br>}<br>function find( els, selector ) {<br>var topLevelEls = els.filter( selector );<br>var childEls = els.find( selector );<br>return topLevelEls.add( childEls );<br>}</pre> <p>The ‘find’ function is a utility function to get any elements from an existing collection that match a given selector using <a href="http://api.jquery.com/filter/" rel="nofollow external" class="bo">‘.filter()’,</a> along with any descendants of the elements using <a href="http://api.jquery.com/find/" rel="nofollow external" class="bo">‘.find()’.</a> We use this function to find any elements marked up to represent channel subscriptions (‘data-rt-channel’ attribute) and for each we then call ‘subscribeChannel’. This function extracts the name of the channel to be subscribed to and uses the value in calling ‘pusher.subscribe( channelName )’ to actually subscribe to the channel.</p> <h2>Bind</h2> <p>We then need to find any elements marked up to represent events (‘data-rt-event’ attribute) to be bound to:</p> <pre>function subscribeChannel( index, el ) {<br>el = $( el );<br>var pusher = getPusher();<br>var channelName = el.attr( 'data-rt-channel' );<br>var channel = pusher.subscribe( channelName );<br>var eventEls = find( el, '*[data-rt-event]' );<br>log( 'found ' + eventEls.size() + ' events' );<br>eventEls.each( function( i, el) {<br>bind( el, channel );<br>} );<br>}<br>function bind( el, channel ) {<br>el = $( el );<br>var eventName = el.attr( 'data-rt-event' );<br>channel.bind( eventName, function( data ) {<br>displayUpdate( el, data );<br>} );<br>}<br>function displayUpdate( el, data ) {<br>}</pre> <p>For each event element we find call our own ‘bind’ function which binds to the event on the channel using ‘channel.bind( eventName, eventHandler )’. The event handler function is a small closure which allows us to pass the data update, when received, and the event element to a ‘displayUpdate’ function.</p> <p>If we run this now we can see from the logging that a connection is being established, we’re finding one channel and subscribing to it, and finding one event to bind to.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/pusher_006.jpg" width="650" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"></p> <p><em>jQuery realtime markup finding channel subscription and event binding</em></p> <h2>Display the update</h2> <p>When the event handler is called we need to find the name of each property on the ‘data’ object (e.g. last, low, high and volume) sent with the update and find any elements that are marked with that name.</p> <pre>function bind( el, channel ) {<br>el = $( el );<br>var eventName = el.attr( 'data-rt-event' );<br>channel.bind( eventName, function( data ) {<br>displayUpdate( el, data );<br>} );<br>}<br>function displayUpdate( el, data ) {<br>for( var propName in data ) {<br>var value = data[ propName ];<br>var updateEls = find( el, '*[data-rt-value="' + propName + '"]' );<br>log( 'found ' + updateEls.size() + ' "' + propName + '" elements to update' );<br>updateEls.text( value );<br>}<br>}</pre> <p>We loop over the ‘data’ object and get the name of each property. Once we know the property name (‘propName’) we can find the associated elements and update their text value with the new data value. For now we’re not going to support objects with any kind of hierarchy — we just want one level of key and value pairs.</p> <p>If you now refresh the page and trigger an event from the Pusher Event Creator the new data will be instantly displayed within the page.</p> <p> </p> <p><em><strong>Have you worked with a live data service? What lessons did you learn? Let us know in the comments.</strong></em></p> <p><em>Featured image/thumbnail, <a href="http://www.shutterstock.com/pic-88910704/stock-photo-stock-data-live-on-line-dark-dramatic-image.html" rel="nofollow external" class="bo">live data image</a> via Shutterstock.</em></p> <p><br><br> </p>
    <table width="100%"> <tbody>
    <tr> <td> <a href="http://www.mightydeals.com/deal/designersfolder-700-backgrounds.html?ref=inwidget" rel="nofollow external" class="bo"><strong>700+ Professional Web Backgrounds – only $29!</strong></a> </td> <td> <a href="http://www.mightydeals.com/?ref=inwidget" rel="nofollow external" class="bo"><br> <img src="http://mightydeals.com/web/images/widget-logo.png" height="40" width="90" alt="How to build a realtime jQuery plugin" style="max-width: 100%; height: auto;"><br> </a> </td> </tr> </tbody>
    </table> <p><br> </p> <a href="http://www.webdesignerdepot.com/2013/06/how-to-build-a-realtime-jquery-plugin/" rel="nofollow external" class="bo">Source</a> <div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F06%2Fhow-to-build-a-realtime-jquery-plugin%2F&amp;t=How+to+build+a+realtime+jQuery+plugin" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F06%2Fhow-to-build-a-realtime-jquery-plugin%2F&amp;t=How+to+build+a+realtime+jQuery+plugin" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F06%2Fhow-to-build-a-realtime-jquery-plugin%2F&amp;t=How+to+build+a+realtime+jQuery+plugin" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F06%2Fhow-to-build-a-realtime-jquery-plugin%2F&amp;t=How+to+build+a+realtime+jQuery+plugin" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fwww.webdesignerdepot.com%2F2013%2F06%2Fhow-to-build-a-realtime-jquery-plugin%2F&amp;t=How+to+build+a+realtime+jQuery+plugin" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165665692613/u/49/f/661066/c/35285/s/2d7df014/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665692613/u/49/f/661066/c/35285/s/2d7df014/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Back in January this year jQuery announced a new plugins registry, so now seemed like a great time to write a tutorial combining building a jQuery plugin with my passion – realtime web...</Summary>
<Website>http://rss.feedsportal.com/c/35285/f/661066/s/2d7df014/l/0L0Swebdesignerdepot0N0C20A130C0A60Chow0Eto0Ebuild0Ea0Erealtime0Ejquery0Eplugin0C/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31484/guest@my.umbc.edu/6ea86550e9c8a4aed5b55578d0f3ca17/api/pixel</TrackingUrl>
<Tag>art</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>javascript</Tag>
<Tag>javascript-applications</Tag>
<Tag>jquery-plugin</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>pusher</Tag>
<Tag>realtime</Tag>
<Tag>sql</Tag>
<Tag>web-development</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>Wed, 19 Jun 2013 05:15:45 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 05:15:45 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="31547" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31547">
<Title>Traveling, Writing and Programming (2011)</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>In a nutshell, my year so far has consisted of:</p>
    
    <ul>
    <li><p>Traveling for 10 months around the world through 17 countries covering Africa, South East Asia, Australasia and North, Central and South America. The trip was centered around surfing and photography</p></li>
    <li><p>Presenting in Hong Kong, Japan, the US and London</p></li>
    <li><p>Writing a book for O'Reilly as I went, titled <a href="http://oreilly.com/catalog/9781449307530/" rel="nofollow external" class="bo">JavaScript Web Applications</a></p></li>
    <li><p>Writing another <a href="http://arcturo.github.com/library/coffeescript/" rel="nofollow external" class="bo">book on CoffeeScript</a>, soon to be published by O'Reilly.</p></li>
    <li><p>Doing a ton of open source libraries, such as <a href="http://spinejs.com" rel="nofollow external" class="bo">Spine</a>, <a href="https://spinejs.com/mobile" rel="nofollow external" class="bo">Spine.Mobile</a>, <a href="http://maccman.github.com/gfx" rel="nofollow external" class="bo">GFX</a>, and <a href="http://github.com/maccman/juggernaut" rel="nofollow external" class="bo">Juggernaut</a>.</p></li>
    <li><p>Building a startup prototype</p></li>
    <li><p>Presenting at <a href="http://futureofwebapps.com/london-2011/" rel="nofollow external" class="bo">FOWA</a></p></li>
    <li><p>And finally, landing a job at <a href="https://twitter.com/about/employees" rel="nofollow external" class="bo">Twitter</a></p></li>
    </ul>
    
    <p>So, let me start a year ago, in September 2010. I had just left a startup I’d co-founded, and whilst the experience was useful, I was feeling bit burnt out from the incredibly long working hours involved. I was back in England and needed to make some decisions. A long held dream of mine was to move (if only for a few years) to the US, so I wrote the following in Google Notebook:</p>
    
    <pre><code>Choices in life:&#x000A;      Do a bachelors at Columbia in NYC&#x000A;        Downside - v expensive, not much to learn practically, boring?&#x000A;        Upside - it's a uni in NYC!&#x000A;      Write a book and apply for an O1 visa&#x000A;        Downsides - very time consuming, risky&#x000A;        Upsides - good for career, interesting&#x000A;      Wait. Just go to NYC for a holiday (3 months). Wait for startup visa.&#x000A;        Easy option - not very interesting&#x000A;    &#x000A;    Maybe do 2, falling back to 3?&#x000A;    </code></pre>
    
    <p>In the end I decided to do option 2, to write-up a book idea I’d been mulling over on JavaScript web applications, and what better way to write a book than traveling round the world, another dream of mine. I bought a round the world plane ticket through oneworld (cheaper than you’d expect) and set off the next week to my first destination, South Africa.</p>
    
    <p><img src="https://lh5.googleusercontent.com/-H3VYHMYwDMk/TsRYhToP2CI/AAAAAAAABfE/7j5TikginMI/s640/rtw.png" alt="RTW" style="max-width: 100%; height: auto;"></p>
    
    <p>If you’ve never been to Africa, you should. Its scenery is raw and beautiful, hard to describe eloquently to those who haven’t experienced it. I had fallen in love with South Africa the previous year, doing a surfing tour up the East coast for three months. This time I only had time for one month, traveling through the Transkei up from Cape Town to Durban. As I travelled North, I started writing, fleshing out some of the chapter ideas I’d proposed to O'Reilly earlier.</p>
    
    <p>The Transkei is an extremely rural part of South Africa, consisting of rolling hills, small villages and mud huts. They still have a chieftain hierarchy and a king, and most locals survive off the land and by fishing. It takes about two days driving on a heavily potholed road to reach my favourite spot, a beautiful cove called Coffee Bay. From there I would charge up batteries and save some articles offline in preparation for further expeditions up the coast.</p>
    
    <p>I vividly remember walking miles down the untouched beaches, traveling from village to village, alone apart for the sand and the waves. At one stage I came across a swollen river, and rucksack held aloft managed to swim across it without drenching my Nikon and iPod. Africa is a place to lose yourself, to free up your mind, and to work out what’s really important in life.</p>
    
    <p><img src="https://lh6.googleusercontent.com/-t9Ja-8BnWvM/TOzGcHEVcLI/AAAAAAAAA_I/Gbk7HpkAlyE/s640/DSC_0164.jpg" alt="The Transkei" style="max-width: 100%; height: auto;"></p>
    
    <p>The next stop was Hong Kong, where I had my 21st birthday, and then I traveled by land from Singapore to Hanoi. What most people don’t realize is that Hong Kong is 70% national park, and I had a great time hiking some of the spectacular routes, such as the Dragon’s Back. Some days I’d hang out at <a href="http://boot.hk" rel="nofollow external" class="bo">boot.hk</a>, a co-working space, and teach a fellow traveler Ruby. Then, at night, I’d party with some <a href="http://couchsurfing.org" rel="nofollow external" class="bo">couchsurfers</a> in Soho till the early hours.</p>
    
    <p><img src="https://lh5.googleusercontent.com/-w4dOtoMx8FQ/TP92f1yaUgI/AAAAAAAAA_I/CkWZJTnj24s/s640/DSC_0032.jpg" alt="Hong Kong" style="max-width: 100%; height: auto;"></p>
    
    <p>Traveling through Thailand, Cambodia and Vietnam was probably my favorite part of the trip, and if you have never been through Asia, you really should. The countries are beautiful, the weather fair, the food delicious and the people friendly. Angkor Wat is one of the wonders of the world, and should be on everyone’s bucket list. It was <a href="http://stuckincustoms.com" rel="nofollow external" class="bo">Trey Ratcliff’s photographs</a> that inspired me to go there, and indeed many of my other destinations. That man was a catalyst for the trip in the first place.</p>
    
    <p><img src="https://lh6.googleusercontent.com/-bLvyRFra6DE/TShMHEaRv5I/AAAAAAAAA_I/cOGMjy8WTyU/s640/DSC_0031.jpg" alt="Angkor Wat" style="max-width: 100%; height: auto;"></p>
    
    <p>On some obscure blog, I’d heard tell of a remote and beautiful island off the coast of Cambodia. It spoke of a bar in Sihanoukville, where I could organize a fishing boat out to the place. I, along with some really good friends, took the night bus to the town, and started looking for this legendary bar. The search lasted most of the day, each bar I’d inquire at sending me to another. Finally, I found the place, and organized a shuttle to take us the next morning.</p>
    
    <p><img src="https://lh5.googleusercontent.com/-dyNjvQtn4GA/TTZ6x3dT0WI/AAAAAAAAA_I/PMQbesSbknU/s640/DSC_0039.jpg" alt="Cambodia" style="max-width: 100%; height: auto;"></p>
    
    <p>The photo above is of the beach outside our $10 a night shack. Apart from the local inhabitants, our group was alone on the island, free to rein as we pleased. During the day we’d laze on the beach, eating incredible fruit salads the island’s chef had prepared, then at night we’d swim in the sea amongst all the glowing plankton.</p>
    
    <p><img src="https://lh4.googleusercontent.com/-lLhNdn4DxvY/TTZ74Z7MhEI/AAAAAAAAA_I/TZBf2T5pADg/s640/DSC_0115.jpg" alt="Cambodia 2" style="max-width: 100%; height: auto;"></p>
    
    <p>Next stop was Vietnam, and we traveled along the Mei Kong’s tributes to reach a border town. There, we were the only westerners, and communicating was definitely an issue. Luckily we found what must have been the only English speaker in town, and he gave us a tour on his bicycle. His help was especially useful when my credit card got gobbled up by an ATM!</p>
    
    <p><img src="https://lh6.googleusercontent.com/-r629c1pOE2E/TVCwrLAdL2I/AAAAAAAABBY/r48a8WSsTS0/s640/DSC_0059.jpg" alt="Vietnam" style="max-width: 100%; height: auto;"></p>
    
    <p>Our group parted ways, and by the time I’d reached Vietnam the book was well underway and coming along nicely. I stayed a few extra weeks in Saigon to really make some progress on the chapters, and was around for the Chinese New Year’s celebrations, which were truly spectacular.</p>
    
    <p>Next was Japan, Australia, New Zealand and Hawaii. I can’t possibly cram into this post all the experiences I had, but suffice to say it was the time of my life.
    It’s incredible that so much beauty can be packed into one country, but that’s New Zealand for you. Some of my fondest memories are running at sunset around the lake at Wanaka, or hiking for days through the mountains along the Routeburn, carrying all my food and supplies. I made some lifelong friends traveling around that country; it’s truly a piece of paradise.</p>
    
    <p>By the time I’d circumnavigated New Zealand’s South Island, the book was practically finished and submitted to the technical reviewers.</p>
    
    <p><img src="https://lh3.googleusercontent.com/-hVGczAgcsxw/TZqg8ATYqkI/AAAAAAAABLk/OYT0p-Cq4L0/s640/DSC_0096.jpg" alt="New Zealand" style="max-width: 100%; height: auto;"></p>
    
    <p>Next up were New York and San Francisco, two incredible cities containing some brilliant developers, some of whom I’m lucky enough to call my friends. Techcrunch Disrupt was awesome (I can highly recommend the hackathon), as was ‘adopt a coder’.</p>
    
    <p>During my stop-over in New York and San Francisco, I did a ton of interviewing at various companies and landed a job at Twitter where I’ll be working on the front-end. I’m absolutely stoked to be working there with such an awesome team, and also by the move to San Francisco, a lifelong dream of mine.</p>
    
    <p>Whilst the visa was being assembled, I traveled through Central and South America, hacking on my pet project as I went: a JavaScript MVC library called <a href="http://spinejs.com" rel="nofollow external" class="bo">Spine</a>. I traveled down Costa Rica, Panama, Peru, Bolvia and Argentina. Peru was easily my favourite, and although I had some trouble with the altitude, I had an incredible time exploring. The picture below is of one of the Colca Canyon’s fabled Condors, taken whilst I was climbing down the canyon, the world’s deepest.</p>
    
    <p><img src="https://lh3.googleusercontent.com/-kQInzZ5DQC0/TsXiz712K7I/AAAAAAAABfk/8GfSq98ccwU/s640/DSC_0027.jpg" alt="Colca Canyon" style="max-width: 100%; height: auto;"></p>
    
    <p>When I was in Costa Rica, I got a tweet from a guy called Roberto, saying he’d read the book and was I interested in doing a surfing tour. Of course I readily agreed and took the bus to San Jose, meeting him a few days later. During the day we’d hack on Spine and Ruby projects at his beach-side condo, using the mobile dongle and car batteries to power our laptops. Then, when the power was low, we’d go out surfing as the solar panels did their work.</p>
    
    <p><img src="https://lh5.googleusercontent.com/-ydIJPFqgspY/TsXgVzCENyI/AAAAAAAABfY/nkOE1Y0N-X4/s640/DSC_0300.jpg" alt="Costa Rica" style="max-width: 100%; height: auto;"></p>
    
    <p>I can highly recommend writing a book, especially combining it with traveling. Indeed, if I didn’t have my sights set on San Francisco, I have a feeling I’d still be traveling, consulting and making startups. Being an author won’t make you much money directly, but it will definitely raise your profile and provide you with many more opportunities indirectly. In fact, what I most enjoyed about the process was being able to research and know a subject matter really deeply.</p>
    
    <p><img src="https://lh4.googleusercontent.com/-yte9E_ENsRc/TshQwHMD_pI/AAAAAAAABfs/rY13ru-oljQ/s640/DSC_0069.jpg" alt="Thailand" style="max-width: 100%; height: auto;"></p>
    
    <p>The last year has been the best year of my life, and I have a feeling the next will be better still. While I’ve settled down for the time being, I don’t think I’ll ever shake the lure of traveling; I still carry my passport in one pocket, and my wallet the other, ready to leave at a moments notice.</p>
    
    <p>However, this post is not just about my travels, there’s a message to it:</p>
    
    <p>The peculiar thing about programmers is that they’re the one profession that can easily work remotely and travel, and yet they’re the one profession that doesn’t. Of course there are exceptions, but on my travels I didn’t meet another programmer doing anything similar; a sad state of affairs. My message to fellow programmers is stop making excuses, man up and do it. You only live once, and I guarantee that you will have the time of your life.</p>
    
    <p>As for me, I feel incredibly fortunate to be in the position I’m in, to have found my passion and to be doing what I love every day. That said, much of my current situation is no accident or fluke, but rather the result of planning, goals and work.</p>
    <blockquote>
    <p>The harder you work, the luckier you get</p>
    </blockquote>
    <p>The point of this post isn’t some self-aggrandizing narcissistic pontification, but rather to demonstrate that setting goals works, and to inspire people to do likewise. Work out where you are now, where you want to be in a year, and set-down a series of concrete steps that will get you there. Follow your dreams.</p>
    
    <hr>
    
    <p><em>This is a repost of an article first posted in November 2011</em></p>
    </div>
]]>
</Body>
<Summary>In a nutshell, my year so far has consisted of:       Traveling for 10 months around the world through 17 countries covering Africa, South East Asia, Australasia and North, Central and South...</Summary>
<Website>http://blog.alexmaccaw.com/traveling-writing-and-programming</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31547/guest@my.umbc.edu/796c968a77ee6626dfe8ceefa9ea60ff/api/pixel</TrackingUrl>
<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>Wed, 19 Jun 2013 04:25:46 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="31480" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31480">
<Title>National Park Service Project- Ethnographic Study!</Title>
<Tagline>Due 6/28</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <p><span>Please find below an announcement for an Ethnographic Study with the National Park Service. Be advised that there is a brief window for application – responses are due June 28<sup>th</sup> – and the opportunity would be most appropriate for students who will not require travel funding to the Antietam National Battlefield in Maryland.</span></p>
    <p><span> </span></p>
    <p><span>All inquiries should be directed to Jennifer Talken-Spaulding <a rel="nofollow external" class="bo">(202 619-7205</a>) or Walter H. Zachritz <a rel="nofollow external" class="bo">(301 689-7108</a>,<a href="mailto:walter_zachritz@nps.gov" rel="nofollow external" class="bo">walter_zachritz@nps.gov</a>).</span></p>
    <p><span><br></span></p>
    <div><p><span>Dear Chesapeake Watershed CESU Partners and Researchers,</span></p></div>
    <div><p><span> </span></p></div>
    <div><p><strong><span>Please distribute this announcement to eligible researchers that might be interested. Notice the due date of <span><span>June 28th</span></span>. Read carefully and direct questions about the project to Jennifer Talken-Spaulding (</span><a rel="nofollow external" class="bo">202-619-7205</a>)</strong><strong><span> or myself.</span></strong><span></span></p></div>
    <div><p><span> </span></p></div>
    <div><p>The project will produce an ethnographic overview and assessment for Antietam National Battlefield, completing needed baseline documentation of ethnographic groups associated with park resources.  The ethnographic overview uses anthropological and sociological methods to identify and describe the park neighbors, park residents, ethnic groups, or others with historical and cultural ties and associations with, or special knowledge of, park resources, including former residents and their descendants who remain attached to the area despite having relocated.<span></span></p></div>
    <div><p><span> </span></p></div>
    <div><p><span> </span></p></div>
    <div><p>Thanks very much for your help!</p></div>
    <div><p> </p></div>
    <div><p>Walter</p></div>
    </div>
]]>
</Body>
<Summary>Please find below an announcement for an Ethnographic Study with the National Park Service. Be advised that there is a brief window for application – responses are due June 28th – and the...</Summary>
<AttachmentKind>Document</AttachmentKind>
<AttachmentUrl>https://assets3-my.umbc.edu/system/shared/attachments/0ac8ed96486e860523467e382dd96b6a/6a5290cb/news/000/031/480/164f4bfe061c94c60871d700d953f2f5/Antietem BP Request for Letters of Research Interest.docx?1371607696</AttachmentUrl>
<Attachments>
<Attachment kind="Document" url="https://my3.my.umbc.edu/posts/31480/attachments/10334"></Attachment>
</Attachments>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31480/guest@my.umbc.edu/158d01315adde115a90956c924e5759d/api/pixel</TrackingUrl>
<Group token="retired-279">Anthropology Council of Majors</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-279</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xsmall.png?1315754011</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/original.png?1315754011</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xxlarge.png?1315754011</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xlarge.png?1315754011</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/large.png?1315754011</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/medium.png?1315754011</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/small.png?1315754011</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xsmall.png?1315754011</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xxsmall.png?1315754011</AvatarUrl>
<Sponsor>Anthropology Council of Majors</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 18 Jun 2013 22:08:24 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="31479" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31479">
<Title>Postdoc Position at Purdue University</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <span>Purdue's Discovery Learning Research Center (DLRC) is looking to hire an energetic postdoctoral research associate to join our assessment and evaluation team. The DLRC is one of the centers comprising Purdue's innovative Discovery Park, an interdisciplinary research enterprise committed to advancing science, engaging industry, enhancing educational and work environments, and improving the quality of life. The DLRC supports research that enhances our understanding of the learning process by designing and assessing innovative educational programs and interactive learning technologies. Discoveries gained from DLRC supported research are transforming learning at all levels, from preschool to graduate school, and in the workplace and society as a whole. A research center in its own right, the DLRC provides assessment and evaluation services in support of other Centers and Units on campus, as well as external evaluation for nonPurdue projects. The Postdoctoral Research Associate w!</span><br><span> ill work</span><br><span> with DLRC assessment staff to provide project and external evaluation services and consultation that includes designing comprehensive evaluation plans organized around the activities that address project goals. The evaluation plans assist project management teams in assessing the quality and value of their project and provide responsive feedback regarding strengths and weaknesses of the project (formative evaluation) as well as a summary of progress toward meeting project goals (summative evaluation). The successful candidate will:</span><br><br><span>* Work with faculty researchers to develop holistic evaluation plans</span><br><span>* Develop and submit necessary protocols to the institutional review board</span><br><span>* Develop assessment protocols and instruments for data collection</span><br><span>* Collect, analyze, and interpret evaluation data</span><br><span>* Develop scholarly publications and presentations based on evaluation findings</span><br><span>* Contribute to the development of fundamental learning research and proposals</span><br><br><span>Applicants are expected to have a solid background in basic and advanced statistical analysis (e.g., regression analyses, multilevel modeling, structural equation modeling and psychometrics), be conversant with both quantitative and qualitative assessment techniques and approaches, and have significant experience in either quantitative or qualitative design and analysis. Expertise in designing and working with studies that involve large datasets, although not required, would be a plus.</span><br><br><span>The DLRC encourages a collaborative environment and is the home of a dynamic team of professional staff, graduate students, and faculty members. In addition to strong technical skills, the successful candidate must be able to work well in a fast-paced collaborative environment.</span><br><span>This postdoctoral research associate position is a one-year term that is renewable for up to 2 additional years, contingent on performance and availability of funding. Interested individuals are encouraged to send a copy of their CV and a research statement to Wilella Burgess at </span><a href="mailto:wburgess@purdue.edu" rel="nofollow external" class="bo">wburgess@purdue.edu</a><span>.</span><br><br><span>Purdue University is an equal opportunity/equal access/affirmative action employer.</span>
    </div>
]]>
</Body>
<Summary>Purdue's Discovery Learning Research Center (DLRC) is looking to hire an energetic postdoctoral research associate to join our assessment and evaluation team. The DLRC is one of the centers...</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31479/guest@my.umbc.edu/0dd9f58130c814253c43d031c16d85ae/api/pixel</TrackingUrl>
<Group token="retired-279">Anthropology Council of Majors</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-279</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xsmall.png?1315754011</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/original.png?1315754011</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xxlarge.png?1315754011</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xlarge.png?1315754011</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/large.png?1315754011</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/medium.png?1315754011</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/small.png?1315754011</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xsmall.png?1315754011</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/279/56786bbe51b83ae53c89e68efb23425a/xxsmall.png?1315754011</AvatarUrl>
<Sponsor>Anthropology Council of Majors</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 18 Jun 2013 22:06:04 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31483" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31483">
<Title>DealBook: Dish Says It Won&#8217;t Submit a New Offer for Sprint</Title>
<Body>
<![CDATA[
    <div class="html-content">Dish Network, a pay TV provider, said that because of new conditions imposed by Sprint Nextel, it would focus on acquiring a stake in Clearwire, a smaller competitor.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F06%2F18%2Fdish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Dish+Says+It+Won%E2%80%99t+Submit+a+New+Offer+for+Sprint" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F06%2F18%2Fdish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Dish+Says+It+Won%E2%80%99t+Submit+a+New+Offer+for+Sprint" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F06%2F18%2Fdish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Dish+Says+It+Won%E2%80%99t+Submit+a+New+Offer+for+Sprint" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F06%2F18%2Fdish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Dish+Says+It+Won%E2%80%99t+Submit+a+New+Offer+for+Sprint" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2013%2F06%2F18%2Fdish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Dish+Says+It+Won%E2%80%99t+Submit+a+New+Offer+for+Sprint" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/email.png" style="max-width: 100%; height: auto;"></a>
    </td></tr></tbody></table></div>
    <br><br><a href="http://da.feedsportal.com/r/165665233527/u/0/f/640387/c/34625/s/2d7a54ac/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665233527/u/0/f/640387/c/34625/s/2d7a54ac/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Dish Network, a pay TV provider, said that because of new conditions imposed by Sprint Nextel, it would focus on acquiring a stake in Clearwire, a smaller competitor.     </Summary>
<Website>http://dealbook.nytimes.com/2013/06/18/dish-says-it-wont-submit-a-new-offer-for-sprint-ahead-of-deadline/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31483/guest@my.umbc.edu/5d4598ca10aa6d3f72a8d0f72e7a6731/api/pixel</TrackingUrl>
<Tag>clearwire-corporation</Tag>
<Tag>clearwire-corporation-clwr-nasdaq</Tag>
<Tag>dish-network</Tag>
<Tag>mergers-acquisitions-and-divestitures</Tag>
<Tag>mergers-and-acquisitions</Tag>
<Tag>new</Tag>
<Tag>softbank-corporation</Tag>
<Tag>softbank-corporation-sftbf-other-otc</Tag>
<Tag>sprint-nextel-corporation</Tag>
<Tag>sprint-nextel-corporation-s-nyse</Tag>
<Tag>technology</Tag>
<Tag>telecommunications</Tag>
<Tag>top-headline-2</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Tue, 18 Jun 2013 20:31:57 -0400</PostedAt>
<EditAt>Wed, 19 Jun 2013 10:30:00 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="31482" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31482">
<Title>How to diagnose JavaScript Errors Faster with Error.stack</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>IE10 in Windows 8 Consumer Preview includes support for Error.stack , which enables Web developers to diagnose and correct bugs faster, especially those that are difficult to reproduce. Developers can build amazing apps with the capabilities of Web platforms that power today’s modern browsers. In Windows 8, we expose that power through both Internet Explorer 10 and Metro style apps in JavaScript .</p></div>
]]>
</Body>
<Summary>IE10 in Windows 8 Consumer Preview includes support for Error.stack , which enables Web developers to diagnose and correct bugs faster, especially those that are difficult to reproduce. Developers...</Summary>
<Website>http://www.htmlgoodies.com/HTML5/client/how-to-diagnose-javascript-errors-faster-with-error.stack.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31482/guest@my.umbc.edu/00843152d4361a80747e9a6258e5989e/api/pixel</TrackingUrl>
<Tag>html</Tag>
<Tag>htmlgoodies</Tag>
<Tag>learning</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>Tue, 18 Jun 2013 20:21:00 -0400</PostedAt>
</NewsItem>

</News>
