<?xml version="1.0"?>
<News hasArchived="true" page="8641" pageCount="10794" pageSize="10" timestamp="Mon, 07 Sep 2026 20:51:46 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=recent&amp;page=8641">
<NewsItem contentIssues="true" id="31974" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31974">
<Title>Major updates to Adobe Creative Cloud</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img alt="major updates to creative cloud" src="http://netdna.webdesignerdepot.com/uploads/2013/06/thumbnail38.jpg" width="200" height="160" style="max-width: 100%; height: auto;">The days of CS6 are fading into the distance behind us, and Adobe has officially launched the newest version of what has, until now, been called Creative Suite (though from here on out it’s called <a href="http://www.adobe.com/products/creativecloud.html" rel="nofollow external" class="bo">Creative Cloud</a>).</p> <p>Major updates and new features have been integrated into the newest version of the Creative Cloud apps, including a new app for managing your Creative Cloud account and everything that goes with it.</p> <h1>Creative Cloud Desktop App</h1> <p>The new CC desktop app is a huge improvement over the old Application Manager. There are now five panels that give you various information about your CC account, your applications, and more.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/desktopapp.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></p> <p>The Home panel shows you continuous updates on all of your Creative Cloud activity. This includes app downloads and updates you’ve performed, files you’ve uploaded, and more. The Apps panel shows you the status of your CC apps, and lets you run updates or download new apps. In the Files panel you can access your CC file storage.</p> <p>The last two panels, though, really expand the usefulness of CC. The Fonts panel lets you browse both desktop and web fonts from Adobe and Typekit. You can also keep your fonts updated through this panel. The Behance panel lets you connect to your Behance account so you can easily showcase your work, get feedback, and find inspiration, without having to go through your browser.</p> <p> </p> <h1>Updates to cloud features</h1> <p>Photoshop CC and Dreamweaver CC now allow you to sync your settings between computers. This means you won’t have to manually set up each computer you use. Instead, just log into your Creative Cloud account, sync your settings on one computer, and then load the synced settings on another computer to have your workspace set up just the way you want it.</p> <p><img alt="sync" src="http://netdna.webdesignerdepot.com/uploads/2013/06/sync.jpg" width="607" height="301" style="max-width: 100%; height: auto;"></p> <p>Photoshop CC and Illustrator CC also now allow you to save your files directly to the Cloud, right from within the programs. This is a big time-saver for teams, or for designers who want to work from more than one computer. You can easily view your files on the Creative Cloud website from the CC desktop app.</p> <p>Once your files are uploaded to Creative Cloud, it’s easy to share them. Just go to the Creative Cloud website, open the file you want to share, and then use the built-in sharing link to either post to Behance for public feedback or send a link via email. If you send a link, you can allow those with the link to leave comments or even download the file. Whoever you share the link with does not have to have a CC membership in order to view the file or leave comments.</p> <p> </p> <h1>Major updates to Edge Animate CC</h1> <p>The newest version of Edge Animate offers some major updates, including a new motion paths feature. This makes it significantly easier to customize the movement of elements in your design.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/animate.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></p> <p>Animations can also be made interactive using code snippets built into Edge Animate, or with your own JavaScript functions. You can let users control playback of elements, or even create buttons that enable even more user interaction.</p> <p>The animations that you can create in Edge Animate can be added to any number of web projects. You can import them into Edge Code or Dreamweaver, or export them as OAM files. Edge animations can even be imported to mobile designs created in InDesign.</p> <p> </p> <h1>Updates to Edge Reflow CC</h1> <p>Responsive design is pretty much a necessity on today’s web. Edge Reflow CC makes it easy to create responsive designs using visual media queries and an intuitive user interface.</p> <p><a href="http://netdna.webdesignerdepot.com/uploads/2013/06/reflow.jpg" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/reflow.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></a></p> <p>Tight integration with Photoshop makes it easy to import your PSD files. Integration with Illustrator and Edge Animate make it easy to copy SVG files and animations into your Reflow projects, too. This makes your overall design process a lot faster and easier.</p> <p>Edge Reflow also allows you to create reusable CSS3 styles that are perfect for formatting multiple elements so that your entire project maintains a consistent appearance. Styles also make it really simple to update your project down the road.</p> <p> </p> <h1>Great updates in Photoshop CC</h1> <p>Sharpening in Photoshop has always been sort of a hit-or-miss proposition. On some images it worked great, while on others it created all sorts of undesirable artifacts. It could end up bringing out all the wrong parts of a photo.</p> <p><a href="http://netdna.webdesignerdepot.com/uploads/2013/06/photoshop1.jpg" rel="nofollow external" class="bo"><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/photoshop1.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></a></p> <p>That’s no longer the case with Smart Sharpen. Smart Sharpen gives you much crisper, cleaner artwork with easy-to-use controls. The new way images are processed for Smart Sharpen give virtually magical results, maintaining the fidelity of your images.</p> <p>There are also new features for editing your rounded rectangles in Photoshop CC. You can nondestructively remove or reapply settings as you work, without having to start over. Once you’ve created a shape, you can use the Properties panel to update and refine the settings.</p> <p> </p> <h1>Big changes to Dreamweaver CC</h1> <p>Dreamweaver CC has integrated new faster workflows for visually building website designs and responsive layouts. You can create both web and mobile content intuitively, with new features that make web design and development much easier.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/dreamweaver.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></p> <p>Enhancements to the Fluid Grid Layout functionality lets you build sites more intuitively, with visual construction of media queries that let you adapt your design to fit different screen dimensions. And it’s all been streamlined so you can do more with fewer steps.</p> <p>You can now apply classes to grouped elements, rather than having to add them to each element individually. That means you can update a single rule and control an entire group of elements at once.</p> <p>Another big change is that you can visually apply CSS styles using the new CSS Designer. This makes creating and updating styles much more intuitive. You can make changes to things like box shadows or gradients, and see updates to the Live view instantly. Live view renders everything you do with WebKit, so your designs look as they will online.</p> <p> </p> <h1>An all-new Flash CC</h1> <p>Flash Professional CC has been rebuilt from the ground up. It’s now faster, more extensible, modular, reliable, and significantly more efficient. You can now create richer, more engaging content using the modernized Flash workspace.</p> <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/06/flash.jpg" width="650" alt="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"></p> <p>Animated content has long been created with Flash Pro at major online video portals, studios, gaming companies, and more. Your Flash files can be exported to HD video and audio, all without dropping frames.</p> <p>The new Flash Professional CC lets you add even more functionality with the built-in Toolkit for CreateJS. This lets you create web-standard HTML and JavaScript code based on your Flash projects, including interactive content. This lets you create content that can be distributed to platforms and devices that don’t support the Flash Player, including iOS devices.</p> <p> </p> <h1>Conclusion</h1> <p>While some are still disappointed in Adobe’s decision to move to a subscription-only model, the quality of the software they’re putting out only continues to improve. These updates are sure to make the lives of any web designers using Adobe software significantly easier, and end results better.</p> <p> </p> <p><em><strong>What do you think of these new updates to Adobe Creative Cloud? Which do you think you’ll get the most use out of? Let us know in the comments.<br></strong></em></p> <p><br><br> </p>
    <table width="100%"> <tbody>
    <tr> <td> <a href="http://www.mightydeals.com/deal/korposerif-font.html?ref=inwidget" rel="nofollow external" class="bo"><strong>Korpo Serif Font (10 Variants) – from only $7!</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="Major updates to Adobe Creative Cloud" style="max-width: 100%; height: auto;"><br> </a> </td> </tr> </tbody>
    </table> <p><br> </p> <a href="http://www.webdesignerdepot.com/2013/06/major-updates-to-adobe-creative-cloud/" 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%2Fmajor-updates-to-adobe-creative-cloud%2F&amp;t=Major+updates+to+Adobe+Creative+Cloud" 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%2Fmajor-updates-to-adobe-creative-cloud%2F&amp;t=Major+updates+to+Adobe+Creative+Cloud" 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%2Fmajor-updates-to-adobe-creative-cloud%2F&amp;t=Major+updates+to+Adobe+Creative+Cloud" 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%2Fmajor-updates-to-adobe-creative-cloud%2F&amp;t=Major+updates+to+Adobe+Creative+Cloud" 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%2Fmajor-updates-to-adobe-creative-cloud%2F&amp;t=Major+updates+to+Adobe+Creative+Cloud" 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/165665551019/u/49/f/661066/c/35285/s/2deacb80/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665551019/u/49/f/661066/c/35285/s/2deacb80/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>The days of CS6 are fading into the distance behind us, and Adobe has officially launched the newest version of what has, until now, been called Creative Suite (though from here on out it’s called...</Summary>
<Website>http://rss.feedsportal.com/c/35285/f/661066/s/2deacb80/l/0L0Swebdesignerdepot0N0C20A130C0A60Cmajor0Eupdates0Eto0Eadobe0Ecreative0Ecloud0C/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31974/guest@my.umbc.edu/b86b227551f869242a7a6562d6c829ca/api/pixel</TrackingUrl>
<Tag>adobe</Tag>
<Tag>art</Tag>
<Tag>creative-cloud</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>dreamweaver</Tag>
<Tag>edge</Tag>
<Tag>flash</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>resources</Tag>
<Tag>sql</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 28 Jun 2013 05:15:45 -0400</PostedAt>
<EditAt>Fri, 28 Jun 2013 05:15:45 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31976" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31976">
<Title>IE11 supports WebGL, gains better debug tools</Title>
<Body>
<![CDATA[
    <div class="html-content">Microsoft unveils its new touchscreen browser preview<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.netmagazine.com%2Fnews%2Fie11-supports-webgl-gains-better-debug-tools-132846&amp;t=IE11+supports+WebGL%2C+gains+better+debug+tools" 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.netmagazine.com%2Fnews%2Fie11-supports-webgl-gains-better-debug-tools-132846&amp;t=IE11+supports+WebGL%2C+gains+better+debug+tools" 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.netmagazine.com%2Fnews%2Fie11-supports-webgl-gains-better-debug-tools-132846&amp;t=IE11+supports+WebGL%2C+gains+better+debug+tools" 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.netmagazine.com%2Fnews%2Fie11-supports-webgl-gains-better-debug-tools-132846&amp;t=IE11+supports+WebGL%2C+gains+better+debug+tools" 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.netmagazine.com%2Fnews%2Fie11-supports-webgl-gains-better-debug-tools-132846&amp;t=IE11+supports+WebGL%2C+gains+better+debug+tools" 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/165666574701/u/49/f/502346/c/32632/s/2deafc92/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165666574701/u/49/f/502346/c/32632/s/2deafc92/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Microsoft unveils its new touchscreen browser preview     </Summary>
<Website>http://feedproxy.google.com/~r/net/topstories/~3/OLW93lrkPy0/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31976/guest@my.umbc.edu/1dd925cebdbfa82435342a377e099898/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>net</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 28 Jun 2013 05:04:37 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31981" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31981">
<Title>Retired U.S. General Is Focus of Inquiry Over Iran Leak</Title>
<Body>
<![CDATA[
    <div class="html-content">Retired Gen. James E. Cartwright is being investigated in the leak of information about cyberattacks using the Stuxnet virus targeting Iran’s nuclear program.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F28%2Fus%2Fretired-us-general-is-focus-of-inquiry-over-iran-leak.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Retired+U.S.+General+Is+Focus+of+Inquiry+Over+Iran+Leak" 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.nytimes.com%2F2013%2F06%2F28%2Fus%2Fretired-us-general-is-focus-of-inquiry-over-iran-leak.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Retired+U.S.+General+Is+Focus+of+Inquiry+Over+Iran+Leak" 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.nytimes.com%2F2013%2F06%2F28%2Fus%2Fretired-us-general-is-focus-of-inquiry-over-iran-leak.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Retired+U.S.+General+Is+Focus+of+Inquiry+Over+Iran+Leak" 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.nytimes.com%2F2013%2F06%2F28%2Fus%2Fretired-us-general-is-focus-of-inquiry-over-iran-leak.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Retired+U.S.+General+Is+Focus+of+Inquiry+Over+Iran+Leak" 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.nytimes.com%2F2013%2F06%2F28%2Fus%2Fretired-us-general-is-focus-of-inquiry-over-iran-leak.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Retired+U.S.+General+Is+Focus+of+Inquiry+Over+Iran+Leak" 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/165665486328/u/0/f/640387/c/34625/s/2dec7672/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665486328/u/0/f/640387/c/34625/s/2dec7672/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Retired Gen. James E. Cartwright is being investigated in the leak of information about cyberattacks using the Stuxnet virus targeting Iran’s nuclear program.     </Summary>
<Website>http://www.nytimes.com/2013/06/28/us/retired-us-general-is-focus-of-inquiry-over-iran-leak.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31981/guest@my.umbc.edu/e408c450493fce4022634d7b5bd6a0de/api/pixel</TrackingUrl>
<Tag>cartwright-james-e</Tag>
<Tag>classified-information-and-state-secrets</Tag>
<Tag>cyberwarfare</Tag>
<Tag>holder-eric-h-jr</Tag>
<Tag>joint-chiefs-of-staff</Tag>
<Tag>new</Tag>
<Tag>new-york-times</Tag>
<Tag>news-sources-confidential-status-of</Tag>
<Tag>technology</Tag>
<Tag>united-states-defense-and-military-forces</Tag>
<Tag>york</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Fri, 28 Jun 2013 00:03:12 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31973" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31973">
<Title>Chinese Firm Is Charged in Theft of Turbine Software</Title>
<Body>
<![CDATA[
    <div class="html-content">China’s biggest wind turbine company and two of its executives are accused of conspiring to steal an American firm’s software for controlling the flow of electricity.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F28%2Fbusiness%2Fenergy-environment%2Fchinese-firm-is-charged-in-theft-of-turbine-software.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Chinese+Firm+Is+Charged+in+Theft+of+Turbine+Software" 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.nytimes.com%2F2013%2F06%2F28%2Fbusiness%2Fenergy-environment%2Fchinese-firm-is-charged-in-theft-of-turbine-software.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Chinese+Firm+Is+Charged+in+Theft+of+Turbine+Software" 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.nytimes.com%2F2013%2F06%2F28%2Fbusiness%2Fenergy-environment%2Fchinese-firm-is-charged-in-theft-of-turbine-software.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Chinese+Firm+Is+Charged+in+Theft+of+Turbine+Software" 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.nytimes.com%2F2013%2F06%2F28%2Fbusiness%2Fenergy-environment%2Fchinese-firm-is-charged-in-theft-of-turbine-software.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Chinese+Firm+Is+Charged+in+Theft+of+Turbine+Software" 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.nytimes.com%2F2013%2F06%2F28%2Fbusiness%2Fenergy-environment%2Fchinese-firm-is-charged-in-theft-of-turbine-software.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Chinese+Firm+Is+Charged+in+Theft+of+Turbine+Software" 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/165666563210/u/0/f/640387/c/34625/s/2de77574/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165666563210/u/0/f/640387/c/34625/s/2de77574/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>China’s biggest wind turbine company and two of its executives are accused of conspiring to steal an American firm’s software for controlling the flow of electricity.     </Summary>
<Website>http://www.nytimes.com/2013/06/28/business/energy-environment/chinese-firm-is-charged-in-theft-of-turbine-software.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31973/guest@my.umbc.edu/143eb5b088499dd4be4e76ec8d2a67d1/api/pixel</TrackingUrl>
<Tag>alternative-and-renewable-energy</Tag>
<Tag>american-superconductor-corp-amsc-nasdaq</Tag>
<Tag>china</Tag>
<Tag>international-trade-and-world-market</Tag>
<Tag>new</Tag>
<Tag>robberies-and-thefts</Tag>
<Tag>sinovel</Tag>
<Tag>technology</Tag>
<Tag>united-states</Tag>
<Tag>wind-power</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>Thu, 27 Jun 2013 22:11:30 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31971" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31971">
<Title>A Bill Allowing More Foreign Workers Stirs a Tech Debate</Title>
<Body>
<![CDATA[
    <div class="html-content">As the Senate voted on an immigration bill that would let Silicon Valley companies import engineers from abroad, the labor lobby said eligible workers in the United States were being passed over.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2013%2F06%2F28%2Ftechnology%2Fa-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Bill+Allowing+More+Foreign+Workers+Stirs+a+Tech+Debate" 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.nytimes.com%2F2013%2F06%2F28%2Ftechnology%2Fa-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Bill+Allowing+More+Foreign+Workers+Stirs+a+Tech+Debate" 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.nytimes.com%2F2013%2F06%2F28%2Ftechnology%2Fa-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Bill+Allowing+More+Foreign+Workers+Stirs+a+Tech+Debate" 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.nytimes.com%2F2013%2F06%2F28%2Ftechnology%2Fa-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Bill+Allowing+More+Foreign+Workers+Stirs+a+Tech+Debate" 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.nytimes.com%2F2013%2F06%2F28%2Ftechnology%2Fa-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html%3Fpartner%3Drss%26emc%3Drss&amp;t=A+Bill+Allowing+More+Foreign+Workers+Stirs+a+Tech+Debate" 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/165665540204/u/0/f/640387/c/34625/s/2de70d61/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665540204/u/0/f/640387/c/34625/s/2de70d61/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>As the Senate voted on an immigration bill that would let Silicon Valley companies import engineers from abroad, the labor lobby said eligible workers in the United States were being passed over....</Summary>
<Website>http://www.nytimes.com/2013/06/28/technology/a-bill-allowing-more-foreign-workers-stirs-a-tech-debate.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31971/guest@my.umbc.edu/e01f60bf0f2ea5ac0e4133eedd6a30a8/api/pixel</TrackingUrl>
<Tag>engineering-and-engineers</Tag>
<Tag>foreign-workers</Tag>
<Tag>hiring-and-promotion</Tag>
<Tag>immigration-and-emigration</Tag>
<Tag>intel-corporation-intc-nasdaq</Tag>
<Tag>labor-and-jobs</Tag>
<Tag>lobbying-and-lobbyists</Tag>
<Tag>motorola-solutions-inc-msi-nyse</Tag>
<Tag>new</Tag>
<Tag>science-and-technology</Tag>
<Tag>silicon-valley-calif</Tag>
<Tag>technology</Tag>
<Tag>united-states-economy</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>Thu, 27 Jun 2013 21:58:16 -0400</PostedAt>
<EditAt>Thu, 27 Jun 2013 21:58:16 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="31968" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31968">
<Title>Bits Blog: A Software Feud Ends, at Least for Today</Title>
<Body>
<![CDATA[
    <div class="html-content">Oracle’s Larry Ellison and Salesforce.com’s Marc Benioff explained how their companies are better off working together rather than fighting.<div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2013%2F06%2F27%2Fa-software-feud-ends-at-least-for-today%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Software+Feud+Ends%2C+at+Least+for+Today" 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%2Fbits.blogs.nytimes.com%2F2013%2F06%2F27%2Fa-software-feud-ends-at-least-for-today%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Software+Feud+Ends%2C+at+Least+for+Today" 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%2Fbits.blogs.nytimes.com%2F2013%2F06%2F27%2Fa-software-feud-ends-at-least-for-today%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Software+Feud+Ends%2C+at+Least+for+Today" 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%2Fbits.blogs.nytimes.com%2F2013%2F06%2F27%2Fa-software-feud-ends-at-least-for-today%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Software+Feud+Ends%2C+at+Least+for+Today" 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%2Fbits.blogs.nytimes.com%2F2013%2F06%2F27%2Fa-software-feud-ends-at-least-for-today%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits+Blog%3A+A+Software+Feud+Ends%2C+at+Least+for+Today" 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/165665649350/u/0/f/640387/c/34625/s/2de69983/kg/342-363/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/165665649350/u/0/f/640387/c/34625/s/2de69983/kg/342-363/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Oracle’s Larry Ellison and Salesforce.com’s Marc Benioff explained how their companies are better off working together rather than fighting.     </Summary>
<Website>http://bits.blogs.nytimes.com/2013/06/27/a-software-feud-ends-at-least-for-today/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31968/guest@my.umbc.edu/37b9eafbbec9611bc94bd8102dc89714/api/pixel</TrackingUrl>
<Tag>amazon-com-inc</Tag>
<Tag>benioff-marc</Tag>
<Tag>cloud-computing</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>ellison-lawrence-j</Tag>
<Tag>enterprise-computing</Tag>
<Tag>international-business-machines-corporation</Tag>
<Tag>new</Tag>
<Tag>oracle-corporation</Tag>
<Tag>salesforce-com-inc</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>Thu, 27 Jun 2013 20:49:38 -0400</PostedAt>
<EditAt>Fri, 28 Jun 2013 09:07:29 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="31970" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31970">
<Title>Email Marketing: The Key to eCommerce Success</Title>
<Body>
<![CDATA[
    <div class="html-content"><p>In this article you'll find out why you need an email marketing list for your business and how it can serve you over the course of time. You'll also learn about five methods of list building.</p></div>
]]>
</Body>
<Summary>In this article you'll find out why you need an email marketing list for your business and how it can serve you over the course of time. You'll also learn about five methods of list building.</Summary>
<Website>http://www.htmlgoodies.com/beyond/reference/email-marketing-the-key-to-ecommerce-success.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31970/guest@my.umbc.edu/12bbe4f4870b1a00ce43665fb3fded2b/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>Thu, 27 Jun 2013 19:23:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123209" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123209">
<Title>Stephen Freeland selected as new director of Interdisciplinary Studies</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>Interdisciplinary Studies (INDS) is pleased to welcome Dr. Stephen Freeland as its new Director. Dr. Freeland succeeds Patricia La Noue, praised for building a solid foundation during her time in the position.</p>
    <p>In his new role, Dr. Freeland will extend the strengths of INDS. He has particular interests in the interface of science and religion and in using the full spectrum of creative arts to visualize and communicate social science, natural science and engineering. In this capacity, Dr. Freeland initiated activities by presenting a public lecture in Washington D.C. for the American Association for the Advancement of Science (AAAS) dialogue on science, ethics, and religion.</p>
    <p>As Dr. Freeland begins to build new bridges, he would be delighted to hear from members of the campus community. Feel free to reach out to him directly at <a title="freeland@umbc.edu" href="mailto:freeland@umbc.edu" rel="nofollow external" class="bo">freeland@umbc.edu</a>.</p>
    </div>
]]>
</Body>
<Summary>Interdisciplinary Studies (INDS) is pleased to welcome Dr. Stephen Freeland as its new Director. Dr. Freeland succeeds Patricia La Noue, praised for building a solid foundation during her time in...</Summary>
<Website>https://umbc.edu/stories/stephen-freeland-selected-as-new-director-of-interdisciplinary-studies/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123209/guest@my.umbc.edu/d1a0cb3c4b3031ac84c04299e0c1783b/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>cnms</Tag>
<Tag>community</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Thu, 27 Jun 2013 19:15:55 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="123210" important="false" status="posted" url="https://my3.my.umbc.edu/posts/123210">
<Title>UMBC video documentaries in The Baltimore Sun capture voice, history of Sparrows Point steelworkers</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>In a gripping <em>Baltimore Sun</em> <a title="Sparrows Point: A year after collapse, unsettled lives" href="http://data.baltimoresun.com/stories/sparrows-point-a-year-after-bankruptcy-unsettled-lives/#millstories" rel="nofollow external" class="bo">feature story</a> on the lives of former steel mill workers after the closing of Sparrows Point, video documentaries from the UMBC project “Documenting Cultural Heritage in Partnership with Communities” (supported by <a title="BreakingGround Spring 2013" href="http://umbcbreakingground.wordpress.com/get-involved/learn/spring-2013-courses/" rel="nofollow external" class="bo">BreakingGround)</a> offer important first-person perspectives on life and work in the community.</p>
    <p>UMBC students interviewed former mill employees while learning about oral and audiovisual storytelling and documentation. The steelworkers shared their stories of working at the mill, the impact the Sparrows Point closure has had on the community, and the future of the industry locally and nationally. Bill Shewbridge (New Media Studio) and Michelle Stefano (American Studies) collaborated to bring to life a project that introduced students to the ideas, techniques and ethical considerations that underpin qualitative research, particularly from a community-based, out-in-the-field perspective.</p>
    </div>
]]>
</Body>
<Summary>In a gripping Baltimore Sun feature story on the lives of former steel mill workers after the closing of Sparrows Point, video documentaries from the UMBC project “Documenting Cultural Heritage in...</Summary>
<Website>https://umbc.edu/stories/umbc-video-documentaries-in-the-baltimore-sun-capture-voice-history-of-sparrows-point-steelworkers/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/123210/guest@my.umbc.edu/6bf7869dbe2bd88a524b22c0deac93ac/api/pixel</TrackingUrl>
<Tag>breakingground</Tag>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Group token="umbc-news-magazine">UMBC News &amp;amp; Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news-magazine</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/original.png?1748556657</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="xlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xlarge.png?1748556657</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/large.png?1748556657</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/medium.png?1748556657</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/small.png?1748556657</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xsmall.png?1748556657</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/943/24435aa6207c452e7bc15cc74b42c7bb/xxsmall.png?1748556657</AvatarUrl>
<Sponsor>UMBC News &amp; Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Thu, 27 Jun 2013 17:16:23 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="31966" important="false" status="posted" url="https://my3.my.umbc.edu/posts/31966">
<Title>Building a Web App From Scratch in AngularJS</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32944&amp;c=1568178682" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=32944&amp;c=1568178682" alt="" style="max-width: 100%; height: auto;"></a><p>In a previous <a href="http://www.revillwebdesign.com/angularjs-tutorial/" rel="nofollow external" class="bo">AngularJS tutorial</a> I covered all the basics of how to get up and running with <a href="http://angularjs.org/" rel="nofollow external" class="bo">Angular</a> in around 30 minutes. This tutorial will expand on what was covered there by creating a simple real world web application.</p>
    <p></p>
    <p>This simple web application will allow its users to view, search and filter TV Show Premieres for the next 30 days. As a keen series viewer, I am always looking for something new to watch when my favorite shows are off air, so I thought I would create an app to help me find what I am looking for.</p>
    <p>Before we get started, you may want to take a look at the demo from above, to see what we will be creating in this tutorial.</p>
    <hr>
    <h2>Getting Started</h2>
    <p>To begin, we need a skeleton AngularJS application which already has all the required JavaScript and CSS to create the TV Show Premieres app. Go ahead and download this skeleton from the “download source files” button above.</p>
    <p>Once you have downloaded the files you should have a directory structure as shown below:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure1-skeleton-directory-structure.jpg" alt="figure1-skeleton-directory-structure" width="236" height="289" style="max-width: 100%; height: auto;"><br> <p>Looking at the directory structure and the included files you will see that we will be using Twitter Bootstrap to make our web app a little prettier, but this tutorial will not look at Twitter Bootstrap in any detail (learn more about <a href="http://www.revillwebdesign.com/twitter-bootstrap-tutorial/" rel="nofollow external" class="bo">Twitter Bootstrap</a>). Additionally, this tutorial will not be covering how to setup a new AngularJS application as the aforementioned AngularJS tutorial already covers this in detail.</p>
    <p>Upon opening <code>index.html</code>, with your browser of choice, you should see a very simple web page with just a title and some basic formatting as seen below:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure2-basic-web-page.jpg" alt="figure2-basic-web-page" width="600" height="179" style="max-width: 100%; height: auto;"><br> <hr>
    <h2>Loading In Our Data</h2>
    <p>The first thing we are going to need to create our TV Show app, is information about TV shows. We are going to use an API provided by Trakt.tv. Before we can get started you are going to need an API key, you can register for one <a href="http://trakt.tv/api-docs/authentication" rel="nofollow external" class="bo">on their website</a>.</p>
    <p><strong>Why use this API? Do I really have to register?</strong> We are using this API so our app will use real data and will actually provide some use once completed. Also, by using this API we do not need to go over any server side implementations within this tutorial and can focus completely on AngularJS. An extra couple of minutes to register for the API will be well worth it.</p>
    <p>Now that you have your own API key, we can utilize the Trakt API to get some information on TV shows. We are going to use one of the available API calls for this tutorial, more information on this is available <a href="http://trakt.tv/api-docs/calendar-premieres" rel="nofollow external" class="bo">in the api docs</a>. This API call will provide us with all the TV Show Premieres within a specified time frame.</p>
    <p>Open <code>mainController.js</code> and modify it to match the below code:</p>
    <pre>    app.controller("mainController", function($scope, $http){&#x000A;    &#x000A;            $scope.apiKey = "[YOUR API KEY HERE]";&#x000A;            $scope.init = function() {&#x000A;                //API requires a start date&#x000A;                var today = new Date();&#x000A;                //Create the date string and ensure leading zeros if required&#x000A;                var apiDate = today.getFullYear() + ("0" + (today.getMonth() + 1)).slice(-2) + "" + ("0" + today.getDate()).slice(-2);&#x000A;                $http.jsonp('<a href="http://api.trakt.tv/calendar/premieres.json/">http://api.trakt.tv/calendar/premieres.json/</a>' + $scope.apiKey + '/' + apiDate + '/' + 30 + '/?callback=JSON_CALLBACK').success(function(data) {&#x000A;                    console.log(data);&#x000A;                }).error(function(error) {&#x000A;    &#x000A;                });&#x000A;            };&#x000A;    &#x000A;        });&#x000A;    </pre>
    <p>If you look within the <code>index.html</code> file, for the following line:</p>
    <pre>    &lt;div class="container main-frame" ng-app="TVPremieresApp" ng-controller="mainController" ng-init="init()"&gt;&#x000A;    </pre>
    <p>You will see that the <code>ng-init</code> method is calling the <code>init</code> function, this means that the <code>init()</code> function within our <code>mainController</code> will be called after the page has been loaded.</p>
    <p>If you read the API <a href="http://trakt.tv/api-docs/calendar-premieres" rel="nofollow external" class="bo">documentation</a> for the <code>calendar/premieres</code> method you will have seen that it takes three parameters, your API key, the start date (e.g. 20130616) and the number of days.</p>
    <p>To provide all three parameters, we first need to get today’s date using JavaScripts <code>Date()</code> method and format it to the API specified date format to create the <code>apiDate</code> string. Now that we have everything we need, we can create an <code>$http.jsonp</code> call to the API method. This will allow our web app to call a URL that is not within our own domain and receive some JSON data. Ensure that <code>?callback=JSON_CALLBACK</code> is prepended onto the request URI so that our attached <code>.success</code> callback function is called on response.</p>
    <p>Within our <code>.success</code> function we then simply output the received data to the console. Open <code>index.html</code> within your browser and open the JavaScript console, you should see something like the following:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure3-javascript-console.jpg" alt="figure3-javascript-console" width="582" height="351" style="max-width: 100%; height: auto;"><br> <p>This demonstrates that we are successfully performing a call to the Trakt API, authenticating with our API key and receiving some JSON data. Now that we have our TV show data, we can move on to the step.</p>
    <hr>
    <h2>Displaying Our Data</h2>
    <h3>Processing the JSON Objects</h3>
    <p>Before we can display our data, we need to process and store it. As the API returns the premiere episodes grouped by date, we want to remove this grouping and just create a single array with all the premiere episodes and their associated data. Modify <code>mainController.js</code> to be as follows:</p>
    <pre>    app.controller("mainController", function($scope, $http){&#x000A;            $scope.apiKey = "[YOUR API KEY]";&#x000A;            $scope.results = [];&#x000A;            $scope.init = function() {&#x000A;                //API requires a start date&#x000A;                var today = new Date();&#x000A;                //Create the date string and ensure leading zeros if required&#x000A;                var apiDate = today.getFullYear() + ("0" + (today.getMonth() + 1)).slice(-2) + "" + ("0" + today.getDate()).slice(-2);&#x000A;                $http.jsonp('<a href="http://api.trakt.tv/calendar/premieres.json/">http://api.trakt.tv/calendar/premieres.json/</a>' + $scope.apiKey + '/' + apiDate + '/' + 30 + '/?callback=JSON_CALLBACK').success(function(data) {&#x000A;                    //As we are getting our data from an external source, we need to format the data so we can use it to our desired effect&#x000A;                    //For each day, get all the episodes&#x000A;                    angular.forEach(data, function(value, index){&#x000A;                        //The API stores the full date separately from each episode. Save it so we can use it later&#x000A;                        var date = value.date;&#x000A;                        //For each episodes, add it to the results array&#x000A;                        angular.forEach(value.episodes, function(tvshow, index){&#x000A;                            //Create a date string from the timestamp so we can filter on it based on user text input&#x000A;                            tvshow.date = date; //Attach the full date to each episode&#x000A;                            $scope.results.push(tvshow);&#x000A;                        });&#x000A;                    });&#x000A;                }).error(function(error) {&#x000A;    &#x000A;                });&#x000A;            };&#x000A;        });&#x000A;    </pre>
    <p>The above code is well commented and should be easy to follow, lets take a look at these changes. First, we declare a scope variable <code>$scope.results</code> as an array which will hold our processed results. We then use <code>angular.forEach</code> (which is similar to jQuery’s <code>$.each</code> method for those who know it) to loop through each date group and store the date in a local <code>date</code> variable.</p>
    <p>We then create another loop which loops through each of the TV shows within that date group, adds the locally stored date to the <code>tvshow</code> object and then finally adds each <code>tvshow</code> object to the <code>$scope.results</code> array. With all of this done, our <code>$scope.results</code> array will look like the following:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure4-formatted-tvshow-json-objects.jpg" alt="figure4-formatted-tvshow-json-objects" width="599" height="416" style="max-width: 100%; height: auto;"><br> <h3>Creating the List HTML</h3>
    <p>We now have some data we wish to display within a list, on our page. We can create some HTML with <code>ng-repeat</code> to dynamically create the list elements based on the data within <code>$scope.results</code>. Add the following HTML code within the unordered list that has the <code>episode-list</code> class in <code>index.html</code>:</p>
    <pre>    &lt;li ng-repeat="tvshow in results"&gt;&#x000A;            &lt;div class="row-fluid"&gt;&#x000A;                &lt;div class="span3"&gt;&#x000A;                    &lt;img src="{{tvshow.episode.images.screen}}" /&gt;&#x000A;                    &lt;div class="ratings"&gt;&lt;strong&gt;Ratings:&lt;/strong&gt; &lt;span class="label"&gt;&lt;i class="icon-thumbs-up"&gt;&lt;/i&gt; {{tvshow.episode.ratings.loved}}&lt;/span&gt; &lt;span class="label"&gt;&lt;i class="icon-thumbs-down"&gt;&lt;/i&gt; {{tvshow.episode.ratings.hated}}&lt;/span&gt; &lt;span class="label label-important" ng-class="{'label-success': tvshow.episode.ratings.percentage &gt;= 50}"&gt;&lt;strong&gt;%&lt;/strong&gt; {{tvshow.episode.ratings.percentage}}&lt;/div&gt;&#x000A;                &lt;/div&gt;&#x000A;                &lt;div class="span6"&gt;&#x000A;                    &lt;h3&gt;{{tvshow.show.title}}: {{tvshow.episode.title}}&lt;/h3&gt;&#x000A;                    &lt;p&gt;{{tvshow.episode.overview}}&lt;/p&gt;&#x000A;                &lt;/div&gt;&#x000A;                &lt;div class="span3"&gt;&#x000A;                    &lt;div class="fulldate pull-right label label-info"&gt;{{tvshow.date}}&lt;/div&gt;&#x000A;                    &lt;ul class="show-info"&gt;&#x000A;                        &lt;li&gt;&lt;strong&gt;On Air:&lt;/strong&gt; {{tvshow.show.air_day}} {{tvshow.show.air_time}}&lt;/li&gt;&#x000A;                        &lt;li&gt;&lt;strong&gt;Network:&lt;/strong&gt; {{tvshow.show.network}}&lt;/li&gt;&#x000A;                        &lt;li&gt;&lt;strong&gt;Season #:&lt;/strong&gt; {{tvshow.episode.season}}&lt;/li&gt;&#x000A;                        &lt;li&gt;&lt;strong&gt;Genres:&lt;/strong&gt; &lt;span class="label label-inverse genre" ng-repeat="genre in tvshow.show.genres"&gt;{{genre}}&lt;/span&gt;&lt;/li&gt;&#x000A;                    &lt;/ul&gt;&#x000A;                &lt;/div&gt;&#x000A;            &lt;/div&gt;&#x000A;        &lt;/li&gt;&#x000A;    </pre>
    <p>This HTML is simply creating a single list element with <code>ng-repeat</code>. <code>ng-repeat="tvshow in results"</code> is telling angular to repeat this list element for each object within the <code>$scope.results</code> array. Remember that we do not need to include the <code>$scope</code>, as we are within an element with a specified controller (refer to the previous tutorial for more on this).</p>
    <p>Inside the <code>li</code> element we can then reference <code>tvshow</code> as a variable which will hold all of the objects data for each of the TV shows within <code>$scope.results</code>. Below is an example of one of the objects within <code>$scope.results</code> so you can easily see how to reference each slice of data:</p>
    <pre>    {&#x000A;        "show":{&#x000A;            "title":"Agatha Christie's Marple",&#x000A;            "year":2004,&#x000A;            "url":"<a href="http://trakt.tv/show/agatha-christies-marple">http://trakt.tv/show/agatha-christies-marple</a>",&#x000A;            "first_aired":1102838400,&#x000A;            "country":"United Kingdom",&#x000A;            "overview":"Miss Marple is an elderly spinster who lives in the village of St. Mary Mead and acts as an amateur detective. Due to her long and eventful life crimes often remind her of other incidents. Although Miss Marple looks sweet, frail, and old, she fears nothing; either dead or living.",&#x000A;            "runtime":120,&#x000A;            "network":"ITV",&#x000A;            "air_day":"Monday",&#x000A;            "air_time":"9:00pm",&#x000A;            "certification":"TV-14",&#x000A;            "imdb_id":"tt1734537",&#x000A;            "tvdb_id":"78895",&#x000A;            "tvrage_id":"2515",&#x000A;            "images":{&#x000A;                "poster":"<a href="http://slurm.trakt.us/images/posters/606.jpg">http://slurm.trakt.us/images/posters/606.jpg</a>",&#x000A;                "fanart":"<a href="http://slurm.trakt.us/images/fanart/606.jpg">http://slurm.trakt.us/images/fanart/606.jpg</a>",&#x000A;                "banner":"<a href="http://slurm.trakt.us/images/banners/606.jpg">http://slurm.trakt.us/images/banners/606.jpg</a>"&#x000A;            },&#x000A;            "ratings":{&#x000A;                "percentage":91,&#x000A;                "votes":18,&#x000A;                "loved":18,&#x000A;                "hated":0&#x000A;            },&#x000A;            "genres":[&#x000A;                "Drama",&#x000A;                "Crime",&#x000A;                "Adventure"&#x000A;            ]&#x000A;        },&#x000A;        "episode":{&#x000A;            "season":6,&#x000A;            "number":1,&#x000A;            "title":"A Caribbean Mystery",&#x000A;            "overview":"\"Would you like to see a picture of a murderer?\", Jane Marple is asked by Major Palgrave whilst on a luxurious holiday in the West Indies. When she replies that she would like to hear the story, he explains. There once was a man who had a wife who tried to hang herself, but failed. Then she tried again later, and succeeded in killing herself. The man remarried to a woman who then tried to gas herself to death. She failed, but then tried again later and succeeded. Just as Major Palgrave is about to show the picture to her, he looks over her shoulder, appears startled, and changes the subject. The next morning, a servant, Victoria Johnson, finds him dead in his room. Doctor Graham concludes that the man died of heart failure; he showed all the symptoms, and had a bottle of serenite (a drug for high blood pressure) on his table.",&#x000A;            "url":"<a href="http://trakt.tv/show/agatha-christies-marple/season/6/episode/1">http://trakt.tv/show/agatha-christies-marple/season/6/episode/1</a>",&#x000A;            "first_aired":1371366000,&#x000A;            "images":{&#x000A;                "screen":"<a href="http://slurm.trakt.us/images/fanart/606-940.jpg">http://slurm.trakt.us/images/fanart/606-940.jpg</a>"&#x000A;            },&#x000A;            "ratings":{&#x000A;                "percentage":0,&#x000A;                "votes":0,&#x000A;                "loved":0,&#x000A;                "hated":0&#x000A;            }&#x000A;        },&#x000A;        "date":"2013-06-16"&#x000A;        }&#x000A;    </pre>
    <p>As an example, within the <code>li</code> element, we can get the show title by referencing <code>tvshow.show.title</code> and wrapping it in double curly brackets:<code>{{ }}</code>. With this understanding, it should be easy to see what information will be displayed for each list element. Thanks to the CSS bundled with the skeleton structure, if you save these changes and open <code>index.html</code> within your browser, you should see a nicely formatted list of TV shows with the associated information and images. This is shown in the figure below:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure5-formatted-show-list.jpg" alt="figure5-formatted-show-list" width="500" height="395" style="max-width: 100%; height: auto;"><br> <h3>Conditional Classes</h3>
    <p>You may or may not have noticed:</p>
    <pre>ng-class="{'label-success': tvshow.episode.ratings.percentage &gt;= 50}"</pre>
    <p>…which is attached to one of the span elements, within the ratings section, in the above HTML. <code>ng-class</code> allows us to conditionally apply classes to HTML elements. This is particularly useful here, as we can then apply a different style to the percentage <code>span</code> element depending on whether the TV show rating percentage is high or not.</p>
    <p>In the above HTML example, we want to apply the class <code>label-success</code>, which is a Twitter Bootstrap class, which will style the span to have a green background and white text. We only want to apply this class to the element if the rating percentage is greater than or equal to 50. We can do this as simply as <code>tvshow.episode.ratings.percentage &gt;= 50</code>. Take a look down the list of formatted TV shows in your browser, if any of the percentages meet this condition, they should be displayed green.</p>
    <hr>
    <h2>Creating a Search Filter</h2>
    <p>We now have a list of upcoming TV show premieres, which is great, but it doesn’t offer much in the way of functionality. We are now going to add a simple text search which will filter all of the objects within the results array.</p>
    <h3>Binding HTML Elements to Scope Variables</h3>
    <p>Firstly we need to declare a <code>$scope.filterText</code> variable within <code>mainController.js</code> as follows:</p>
    <pre>    app.controller("mainController", function($scope, $http){&#x000A;            $scope.apiKey = "[YOUR API KEY]";&#x000A;            $scope.results = [];&#x000A;            $scope.filterText = null;&#x000A;            $scope.init = function() {&#x000A;                //API requires a start date&#x000A;                var today = new Date();&#x000A;                //Create the date string and ensure leading zeros if required&#x000A;                var apiDate = today.getFullYear() + ("0" + (today.getMonth() + 1)).slice(-2) + "" + ("0" + today.getDate()).slice(-2);&#x000A;                $http.jsonp('<a href="http://api.trakt.tv/calendar/premieres.json/">http://api.trakt.tv/calendar/premieres.json/</a>' + $scope.apiKey + '/' + apiDate + '/' + 30 + '/?callback=JSON_CALLBACK').success(function(data) {&#x000A;                    //As we are getting our data from an external source, we need to format the data so we can use it to our desired affect&#x000A;                    //For each day get all the episodes&#x000A;                    angular.forEach(data, function(value, index){&#x000A;                        //The API stores the full date separately from each episode. Save it so we can use it later&#x000A;                        var date = value.date;&#x000A;                        //For each episodes add it to the results array&#x000A;                        angular.forEach(value.episodes, function(tvshow, index){&#x000A;                            //Create a date string from the timestamp so we can filter on it based on user text input&#x000A;                            tvshow.date = date; //Attach the full date to each episode&#x000A;                            $scope.results.push(tvshow);&#x000A;                        });&#x000A;                    });&#x000A;                }).error(function(error) {&#x000A;    &#x000A;                });&#x000A;            };&#x000A;        });&#x000A;    </pre>
    <p>Now we need to add a text input so that the user can actually input a search term. We then need to bind this input to the newly declared variable. Add the following HTML within the <code>div</code> which has the <code>search-box</code> class in <code>index.html</code>.</p>
    <pre>    &lt;label&gt;Filter: &lt;/label&gt;&#x000A;        &lt;input type="text" ng-model="filterText"/&gt;&#x000A;    </pre>
    <p>Here we have used <code>ng-model</code> to bind this input to the <code>$scope.filterText</code> variable we declared within our scope. Now this variable will always equal what is inputted into this search input.</p>
    <h3>Enforcing Filtering On <code>ng-repeat</code> Output</h3>
    <p>Now that we have the text to filter on, we need to add the filtering functionality to <code>ng-repeat</code>. Thanks to the built-in filter functionality of AngularJS, we do not need to write any JavaScript to do this, just modify your <code>ng-repeat</code> as follows:</p>
    <pre>    &lt;li ng-repeat="tvshow in results | filter: filterText"&gt;&#x000A;    </pre>
    <p>It’s as simple as that! We are telling AngularJS – before we output the data using <code>ng-repeat</code>, we need to apply the filter based on the filterText variable. Open <code>index.html</code> in a browser and perform a search. Assuming you searched for something that exists, you should see a selection of the results.</p>
    <hr>
    <h2>Creating a Genre Custom Filter</h2>
    <p>So, our users can now search for whatever they are wanting to watch, which is better than just a static list of TV shows. But we can take our filter functionality a little further and create a custom filter that will allow the user to select a specific genre. Once a specific genre has been selected, the <code>ng-repeat</code> should only display TV shows with the chosen genre attached.</p>
    <p>First of all, add the following HTML under the <code>filterText</code> input in <code>index.html</code> that we added previously.</p>
    <pre>    &lt;label&gt;Genre: &lt;/label&gt;&#x000A;        &lt;select ng-model="genreFilter" ng-options="label for label in availableGenres"&gt;&#x000A;            &lt;option value=""&gt;All&lt;/option&gt;&#x000A;        &lt;/select&gt;&#x000A;    </pre>
    <p>You can see from the above HTML that we have created a select input bound to a model variable called <code>genreFilter</code>. Using <code>ng-options</code> we are able to dynamically populate this select input using an array called <code>availableGenres</code>.</p>
    <p>First of all, we need to declare these scope variables. Update your <code>mainController.js</code> file to be as follows:</p>
    <pre>    app.controller("mainController", function($scope, $http){&#x000A;            $scope.apiKey = "[YOUR API KEY HERE]";&#x000A;            $scope.results = [];&#x000A;            $scope.filterText = null;&#x000A;            $scope.availableGenres = [];&#x000A;            $scope.genreFilter = null;&#x000A;            $scope.init = function() {&#x000A;                //API requires a start date&#x000A;                var today = new Date();&#x000A;                //Create the date string and ensure leading zeros if required&#x000A;                var apiDate = today.getFullYear() + ("0" + (today.getMonth() + 1)).slice(-2) + "" + ("0" + today.getDate()).slice(-2);&#x000A;                $http.jsonp('<a href="http://api.trakt.tv/calendar/premieres.json/">http://api.trakt.tv/calendar/premieres.json/</a>' + $scope.apiKey + '/' + apiDate + '/' + 30 + '/?callback=JSON_CALLBACK').success(function(data) {&#x000A;                    //As we are getting our data from an external source, we need to format the data so we can use it to our desired affect&#x000A;                    //For each day get all the episodes&#x000A;                    angular.forEach(data, function(value, index){&#x000A;                        //The API stores the full date separately from each episode. Save it so we can use it later&#x000A;                        var date = value.date;&#x000A;                        //For each episodes add it to the results array&#x000A;                        angular.forEach(value.episodes, function(tvshow, index){&#x000A;                            //Create a date string from the timestamp so we can filter on it based on user text input&#x000A;                            tvshow.date = date; //Attach the full date to each episode&#x000A;                            $scope.results.push(tvshow);&#x000A;                            //Loop through each genre for this episode&#x000A;                            angular.forEach(tvshow.show.genres, function(genre, index){&#x000A;                                //Only add to the availableGenres array if it doesn't already exist&#x000A;                                var exists = false;&#x000A;                                angular.forEach($scope.availableGenres, function(avGenre, index){&#x000A;                                    if (avGenre == genre) {&#x000A;                                        exists = true;&#x000A;                                    }&#x000A;                                });&#x000A;                                if (exists === false) {&#x000A;                                    $scope.availableGenres.push(genre);&#x000A;                                }&#x000A;                            });&#x000A;                        });&#x000A;                    });&#x000A;                }).error(function(error) {&#x000A;    &#x000A;                });&#x000A;            };&#x000A;        });&#x000A;    </pre>
    <p>It is obvious that we have now declared both <code>genreFilter</code> and <code>availableGenres</code> which we saw referenced within our HTML. We have also added some JavaScript which will populate our <code>availableGenres</code> array. Within the <code>init()</code> function, while we are processing the JSON data returned from the API, we are now doing some additional processing and adding any genres that are not already within the <code>availableGenres</code> array to this array. This will then populate the select input with any available genres.</p>
    <p>If you open <code>index.html</code> within your browser, you should see the genre select drop down populate as illustrated below:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure6-genre-select-drop-down.jpg" alt="figure6-genre-select-drop-down" width="600" height="216" style="max-width: 100%; height: auto;"><br> <p>When the user chooses a genre, the <code>$scope.genreFilter</code> variable will be updated to equal the selected value.</p>
    <h3>Creating the Custom Filter</h3>
    <p>As we are wanting to filter on a specific part of the TV show objects, we are going to create a custom filter function and apply it alongside the AngularJS filter within the <code>ng-repeat</code>.</p>
    <p>At the very bottom of <code>mainController.js</code>, after all of the other code, add the following JavaScript:</p>
    <pre>    app.filter('isGenre', function() {&#x000A;            return function(input, genre) {&#x000A;                if (typeof genre == 'undefined' || genre == null) {&#x000A;                    return input;&#x000A;                } else {&#x000A;                    var out = [];&#x000A;                    for (var a = 0; a &lt; input.length; a++){&#x000A;                        for (var b = 0; b &lt; input[a].show.genres.length; b++){&#x000A;                            if(input[a].show.genres[b] == genre) {&#x000A;                                out.push(input[a]);&#x000A;                            }&#x000A;                        }&#x000A;                    }&#x000A;                    return out;&#x000A;                }&#x000A;            };&#x000A;        });&#x000A;    </pre>
    <p>The above JavaScript declares a custom filter to our app called <code>isGenre</code>. The function within the filter takes two parameters, <code>input</code> and <code>genre</code>. <code>input</code> is provided by default (which we will see in a moment) and is all the data that the <code>ng-repeat</code> is processing. <code>genre</code> is a value we need to pass in. All this filter does, is take the specified genre and checks to see if each of the TV show objects within <code>input</code> have the specified genre attached to them. If an object has the specified genre, it adds it to the <code>out</code> array, which will then be returned to the <code>ng-repeat</code>. If this doesn’t quite make sense, don’t worry! It should shortly.</p>
    <h3>Applying the Custom Filter</h3>
    <p>Now that we have our customer filter available, we can add this additional filter to our ng-repeat. Modify your <code>ng-repeat</code> in <code>index.html</code> as follows:</p>
    <pre>    &lt;li ng-repeat="tvshow in results | filter: filterText | isGenre:genreFilter"&gt;&#x000A;    </pre>
    <p>This simply chains another filter onto the <code>ng-repeat</code> output. Now the output will be processed by both filters before it is displayed on the screen. As you can see we have specified our custom filter as <code>isGenre:</code> and then we are passing the scope variable <code>genreFilter</code> as a parameter, which is how we provide our customer filter with the <code>genre</code> variable we talked about earlier. Remember that AngularJS is also providing our filter with the data that the <code>ng-repeat</code> is processing as the <code>input</code> variable.</p>
    <p>OK, our custom genre filter is complete. Open <code>index.html</code> in a browser and test out the new functionality. With this filter in place, a user can easily filter out genres they are not interested in.</p>
    <hr>
    <h2>Calling Scope Functions</h2>
    <p>You may have noticed that each TV show listing also shows the genre itself. For some additional functionality, we are going to allow the user to click these genres, which will then automatically apply the genre filter for the genre they have clicked on. First of all, we need to create a scope function that the <code>ng-click</code> can call. Add the following code within the <code>mainController</code> on <code>mainController.js</code>:</p>
    <pre>    $scope.setGenreFilter = function(genre) {&#x000A;            $scope.genreFilter = genre;&#x000A;        }&#x000A;    </pre>
    <p>In the above code, this function takes a genre value and then sets the <code>$scope.genreFilter</code> to the specified value. When this happens, the genre filter select box’s value will update and the filter will be applied to the <code>ng-repeat</code> output. To trigger this function when the genre span elements are clicked, add an <code>ng-click</code> to the genre span elements within <code>index.html</code> as follows:</p>
    <pre>    &lt;span class="label label-inverse genre" ng-repeat="genre in tvshow.show.genres" ng-click="setGenreFilter(genre)"&gt;{{genre}}&lt;/span&gt;&#x000A;    </pre>
    <p>The <code>ng-click</code> calls our previously created <code>setGenreFilter</code> function and specifies a genre. Open <code>index.html</code> and try it out!</p>
    <hr>
    <h2>Custom Ordering With AngularJS</h2>
    <p>Our TV show premiere app is looking pretty good, users can easily refine the results displayed using a series of intuitive filters. To enhance this experience we are going to add some custom ordering functionality so our users will be able to choose a range of ordering options.</p>
    <p>Add the following HTML under the genre select drop down:</p>
    <pre>    &lt;label&gt;Order by: &lt;/label&gt;&#x000A;        &lt;select ng-model="orderField" ng-options="label for label in orderFields" class="input-medium"&gt;&lt;/select&gt;&#x000A;        &lt;select ng-model="orderReverse"class="input-medium"&gt;&#x000A;            &lt;option value="true"&gt;Descending&lt;/option&gt;&#x000A;            &lt;option value="false"&gt;Ascending&lt;/option&gt;&#x000A;        &lt;/select&gt;&#x000A;    </pre>
    <p>With this code added, we have two more drop downs. One to select how to order the data and another to choose the direction in which to order the data. We now need to create a function within our controller to make the order comparison. Add the following JavaScript under our <code>setGenreFilter</code> function:</p>
    <pre>    $scope.customOrder = function(tvshow) {&#x000A;            switch ($scope.orderField) {&#x000A;                case "Air Date":&#x000A;                    return tvshow.episode.first_aired;&#x000A;                    break;&#x000A;                case "Rating":&#x000A;                    return tvshow.episode.ratings.percentage;&#x000A;                    break;&#x000A;            }&#x000A;        };&#x000A;    </pre>
    <p>We also need to declare some additional scope variables:</p>
    <pre>    $scope.orderFields = ["Air Date", "Rating"];&#x000A;        $scope.orderDirections = ["Descending", "Ascending"];&#x000A;        $scope.orderField = "Air Date"; //Default order field&#x000A;        $scope.orderReverse = false;&#x000A;    </pre>
    <p>If you now open <code>index.html</code> within your browser, you should see the added drop downs populated with <strong>Air Date</strong> already selected as the default order field. This is shown in the figure below:</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/uploads/2013/06/figure7-order-drop-downs.jpg" alt="figure7-order-drop-downs" width="600" height="218" style="max-width: 100%; height: auto;"><br> <p>Finally, as we have done with our other filters, we are going to need to append this to our <code>ng-repeat</code>, update this as follows:</p>
    <pre>    &lt;li ng-repeat="tvshow in results | filter: filterText | isGenre:genreFilter | orderBy:customOrder:orderReverse"&gt;&#x000A;    </pre>
    <p>We are now applying an order-by-filter on our data in addition to the other filters. We are telling the order by to use our <code>customOrder</code> function and we are passing our <code>orderReverse</code> scope variable through as well. Open <code>index.html</code> in a browser and see the ordering in action.</p>
    <hr>
    <h2>Conclusion</h2>
    <p>AngularJS has allowed us to quickly create a detailed and functional web application with minimum effort. Utilizing AngularJS’s built-in filter functions, alongside some of our own custom code, our web application allows our users to easily filter and search through the TV show premieres.</p>
    <p>After reading this tutorial you should now be able to understand and use the following principles:</p>
    <ul>
    <li>Using <code>ng-repeat</code> to display information on screen.</li>
    <li>Binding to inputs, allowing users to search and filter <code>ng-repeat</code> output.</li>
    <li>Chaining filters on <code>ng-repeat</code> to perform multiple filtering functions.</li>
    <li>Custom ordering of data.</li>
    <li>Using events such as <code>ng-click</code> to respond to user interaction.</li>
    <li>Using <code>ng-class</code> to conditionally apply styling to page elements.</li>
    </ul>
    <p>So in conclusion, the topics covered in this tutorial should give you a strong foundation and understanding of what you can achieve when creating rich web applications in AngularJS.</p>
    </div>
]]>
</Body>
<Summary>In a previous AngularJS tutorial I covered all the basics of how to get up and running with Angular in around 30 minutes. This tutorial will expand on what was covered there by creating a simple...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/HgWFSGgF4fA/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/31966/guest@my.umbc.edu/3cae869d79a6129fa2ce027820eac130/api/pixel</TrackingUrl>
<Tag>angularjs</Tag>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>javascript-and-ajax</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>tutorials</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 27 Jun 2013 17:01:53 -0400</PostedAt>
<EditAt>Thu, 27 Jun 2013 17:01:53 -0400</EditAt>
</NewsItem>

</News>
