<?xml version="1.0"?>
<News hasArchived="true" page="8991" pageCount="10708" pageSize="10" timestamp="Sat, 27 Jun 2026 20:02:09 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8991">
<NewsItem contentIssues="true" id="25735" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25735">
<Title>Tattoo Artist Holloway &#8217;92, VPA, in DelmarvaNow</Title>
<Body>
<![CDATA[
    <div class="html-content">Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his customers and the tattoo community. In a … <a href="https://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-demarvanow/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his...</Summary>
<Website>https://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-demarvanow/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25735/guest@my.umbc.edu/f5e33c382bf59a28f948e4f5b7a80e80/api/pixel</TrackingUrl>
<Tag>90s-alums</Tag>
<Tag>arts-and-humanities</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:41:42 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25885" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25885">
<Title>Tattoo Artist Holloway &#8217;92, VPA, in DelmarvaNow</Title>
<Body>
<![CDATA[
    <div class="html-content">Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his customers and the tattoo community. In a … <a href="http://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-delmarvanow/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his...</Summary>
<Website>http://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-delmarvanow/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25885/guest@my.umbc.edu/f82ee8c8ec891afbfac1f13c69eebceb/api/pixel</TrackingUrl>
<Tag>90s-alums</Tag>
<Tag>arts-and-humanities</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:41:42 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26913" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26913">
<Title>Tattoo Artist Holloway &#8217;92, VPA, in DelmarvaNow</Title>
<Body>
<![CDATA[
    <div class="html-content">Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his customers and the tattoo community. In a … <a href="https://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-delmarvanow/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a name for himself as a businessman — and a permanent impression on his...</Summary>
<Website>https://umbcalumni.wordpress.com/2013/03/04/tattoo-artist-holloway-92-vpa-in-delmarvanow/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26913/guest@my.umbc.edu/af31d3335e145c90cb8e8d4263d4eb3f/api/pixel</TrackingUrl>
<Tag>90s-alums</Tag>
<Tag>arts-and-humanities</Tag>
<Group token="retired-20">UMBC Alumni</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-20</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/original.png?1280681147</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xlarge.png?1280681147</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/large.png?1280681147</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/medium.png?1280681147</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/small.png?1280681147</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xsmall.png?1280681147</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/020/08fe2621d8e716b02ec0da35256a998d/xxsmall.png?1280681147</AvatarUrl>
<Sponsor>UMBC Alumni</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:41:42 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="107042" important="false" status="posted" url="https://my3.my.umbc.edu/posts/107042">
<Title>Tattoo Artist Holloway &#8217;92, VPA, in DelmarvaNow</Title>
<Body>
<![CDATA[
    <div class="html-content">Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a …</div>
]]>
</Body>
<Summary>Over the last 20 years, Eastern Shore tattoo artist Todd “Noble” Holloway ’92, visual and performing arts, has made a …</Summary>
<Website>https://magazine.umbc.edu/tattoo-artist-holloway-92-vpa-in-delmarvanow/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/107042/guest@my.umbc.edu/fca75124161a2de22765549381e6793f/api/pixel</TrackingUrl>
<Tag>alumni</Tag>
<Group token="retired-1945">UMBC Magazine</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-1945</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/images/avatars/group/8/xsmall.png?1782487666</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/images/avatars/group/8/original.png?1782487666</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/images/avatars/group/8/xxlarge.png?1782487666</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/images/avatars/group/8/xlarge.png?1782487666</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/images/avatars/group/8/large.png?1782487666</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/images/avatars/group/8/medium.png?1782487666</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/images/avatars/group/8/small.png?1782487666</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/images/avatars/group/8/xsmall.png?1782487666</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets2-my.umbc.edu/images/avatars/group/8/xxsmall.png?1782487666</AvatarUrl>
<Sponsor>UMBC Magazine</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:41:42 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25792" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25792">
<Title>The Web Apps Manifest | Firefox OS Quick Tip</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p>In this Firefox OS Treehouse Quick Tip, we talk about the Web Apps Manifest. </p>
    <p></p>
    <div class="embed-container"><iframe src="http://www.youtube.com/embed/dgAUgHQOm8M" frameborder="0" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowFullScreen">[Video]</iframe></div>
    <p>To watch more videos like this, go to <a href="http://trhou.se/start-free-yt" rel="nofollow external" class="bo">http://trhou.se/start-free-yt</a><br>
    And don’t forget to subscribe on YouTube: <a href="http://trhou.se/subscribe-treehouse-yt" rel="nofollow external" class="bo">http://trhou.se/subscribe-treehouse-yt</a>  </p>
    <p>Connect with Treehouse!<br>
    Website: <a href="http://www.teamtreehouse.com" rel="nofollow external" class="bo">http://www.teamtreehouse.com</a><br>
    Twitter: <a href="http://trhou.se/treehouse-twitter" rel="nofollow external" class="bo">http://trhou.se/treehouse-twitter</a><br>
    Facebook: <a href="http://trhou.se/treehouse-facebook" rel="nofollow external" class="bo">http://trhou.se/treehouse-facebook</a><br>
    Google+: <a href="http://trhou.se/treehouse-google-plus" rel="nofollow external" class="bo">http://trhou.se/treehouse-google-plus</a></p>
    <p>Each week, we’ll release:</p>
    <p>- New episodes of ‘The Treehouse Show’ – up to date news and tips on web design, coding, and more.<br>
    - ‘Quick Tip’ videos – these are short how-to videos on today’s most relevant web technologies.<br>
    - and much more!</p>
    <p>The post <a href="http://blog.teamtreehouse.com/the-web-apps-manifest-firefox-os-quick-tip" rel="nofollow external" class="bo">The Web Apps Manifest | Firefox OS Quick Tip</a> appeared first on <a href="http://blog.teamtreehouse.com" rel="nofollow external" class="bo">Treehouse Blog</a>.</p>
    </div>
]]>
</Body>
<Summary>In this Firefox OS Treehouse Quick Tip, we talk about the Web Apps Manifest.     [Video]    To watch more videos like this, go to http://trhou.se/start-free-yt  And don’t forget to subscribe on...</Summary>
<Website>http://feedproxy.google.com/~r/teamtreehouse/~3/jXoNVOIqDS4/the-web-apps-manifest-firefox-os-quick-tip</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25792/guest@my.umbc.edu/b7a78a35d98940e96e21df12741c2ff2/api/pixel</TrackingUrl>
<Tag>android</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>firefox-os-tutorials</Tag>
<Tag>firefox-os-video-tutorials</Tag>
<Tag>html</Tag>
<Tag>ios</Tag>
<Tag>javascript</Tag>
<Tag>quick-tips</Tag>
<Tag>responsive</Tag>
<Tag>web</Tag>
<Tag>web-apps-manifest</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:30:40 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="25771" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25771">
<Title>Report: Current State and Roadmap of Standards for Web Applications on Mobile</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><a href="http://www.w3.org/2013/02/mobile-web-app-state/" rel="nofollow external" class="bo"><img src="http://www.w3.org/2011/05/webapp-sm.png" alt="Thumbnail of application platform diagram that appears in report" style="max-width: 100%; height: auto;"></a>W3C has published a new edition of <a href="http://www.w3.org/Mobile/mobile-web-app-state/" rel="nofollow external" class="bo">Standards for Web Applications on Mobile</a>, an overview of the various technologies developed in W3C that increase the power of Web applications, particularly in the mobile context.</p>
    <p>A deliverable of the <a href="http://webinos.org/" rel="nofollow external" class="bo">webinos</a> project, this edition of the document highlights changes since November 2012, including the <a href="http://www.w3.org/2012/12/html5-cr.html.en" rel="nofollow external" class="bo">advancement of HTML5 to Candidate Recommendation</a>. This edition integrates and highlights technologies identified in the <a href="http://coremob.github.com/coremob-2012/FR-coremob-20130131.html#specifications-which-address-the-derived-requirements" rel="nofollow external" class="bo">Core Mobile Web Platform 2012</a>, a report published by the <a href="http://www.w3.org/community/coremob/" rel="nofollow external" class="bo">Core Mobile Web Community Group</a>. 
    In addition, key topics now link to related materials on <a href="http://docs.webplatform.org/wiki/" rel="nofollow external" class="bo">WebPlatform Docs</a> or in a <a href="http://www.w3devcampus.com/" rel="nofollow external" class="bo">W3DevCampus on-line training course</a>. The report covers key standards track events as well as upcoming work.</p>
    <p>Learn more about <a href="http://www.w3.org/Mobile/" rel="nofollow external" class="bo">the Web and Mobile Devices</a>.</p>
    </div>
]]>
</Body>
<Summary>W3C has published a new edition of Standards for Web Applications on Mobile, an overview of the various technologies developed in W3C that increase the power of Web applications, particularly in...</Summary>
<Website>http://www.w3.org/News/2013.html#entry-9745</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25771/guest@my.umbc.edu/81312243b993d366db95131da5650040/api/pixel</TrackingUrl>
<Tag>html</Tag>
<Tag>w3</Tag>
<Tag>web-of-devices</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:28:03 -0500</PostedAt>
<EditAt>Mon, 04 Mar 2013 09:28:03 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="25111" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25111">
<Title>Accessibility Hack Day</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <h5><span>by Sara Leidner</span></h5>
    <div><span><br></span></div>
    <div>
    <span>BreakingGround Community Program Grants fund innovative educational projects related to social change developed by UMBC organizations and departments. </span><span>I've been talking to some of this year's grant recipients, asking them to share their ideas and stories. This video features Shaun Kane, a member of UMBC's faculty in Information Systems, who shares the excitement and momentum behind the upcoming </span><a href="http://umbcaccesshackday.wordpress.com/" rel="nofollow external" class="bo">Accessibility Hack Day (tentatively scheduled for April 5-7, 2013)</a><span> ... <a href="http://umbcbreakingground.wordpress.com/2013/03/04/accessibility-hack-day/" rel="nofollow external" class="bo">(continue reading)</a></span>
    </div>
    </div>
]]>
</Body>
<Summary>by Sara Leidner     BreakingGround Community Program Grants fund innovative educational projects related to social change developed by UMBC organizations and departments. I've been talking to some...</Summary>
<Website>http://umbcbreakingground.wordpress.com/2013/03/04/accessibility-hack-day/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25111/guest@my.umbc.edu/fd67391cc9ffe736086be82a23aa46a1/api/pixel</TrackingUrl>
<Group token="bg">UMBC BreakingGround</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/bg</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/xsmall.png?1360169927</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/original.png?1360169927</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/xxlarge.png?1360169927</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/xlarge.png?1360169927</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/large.png?1360169927</AvatarUrl>
<AvatarUrl size="medium">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/medium.png?1360169927</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/small.png?1360169927</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/xsmall.png?1360169927</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/493/e0dc61eceffa1a7dff9d396b4b7c5011/xxsmall.png?1360169927</AvatarUrl>
<Sponsor>UMBC BreakingGround</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/xxlarge.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/xlarge.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/large.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/medium.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/small.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/xsmall.jpg?1362406972</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/025/111/795a87ea31ee42f7f0cdaff766a58238/xxsmall.jpg?1362406972</ThumbnailUrl>
<PawCount>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:23:43 -0500</PostedAt>
<EditAt>Mon, 04 Mar 2013 09:24:05 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="25116" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25116">
<Title>Maryland-isms</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <span>by David Hoffman and Craig Berger</span><br>
    <span><br></span><span>Old Bay, crabs, the loud "O!" during the national anthem, and professional sports teams named for dark birds. We all know the obvious Maryland-isms: the things that make Maryland, Maryland.</span><br>
    <span><br></span>
    <span>But if you're from Maryland and have always lived here, maybe there are some Maryland-isms you don't even realize are unusual and not simply the way things are everywhere. The two of us are migrants from other states (David from California, Craig from Ohio), so we're going to do you the service of naming a few. </span><br>
    <span><br></span>
    <span>Outside of Maryland, it is very rare that ...</span><br>
    <ol>
    <li><span>People identify themselves by which county they grew up in, or which high school they attended.</span></li>
    <li><span>People use (or know) the term "Delmarva."</span></li>
    <li><span>All the place names refer to English royals, nobles and locales.</span></li>
    <li><span>Lacrosse is a big deal. (For David and everyone from Southern California, LAX is an airport).</span></li>
    <li><span>The War of 1812 is a big deal.</span></li>
    <li><span>The place you go to get or renew a driver's license is called the "MVA." (In other states it's called the Department of Motor Vehicles--DMV--or Bureau of Motor Vehicles--BMV).</span></li>
    <li><span>Counties are known by acronyms like BalCo, HoCo or MoCo. (Really, in other states nobody talks about counties!).</span></li>
    <li><span>High school student governments are called SGA's. (In other states they're called student councils).</span></li>
    <li><span>So many people know when the state legislative session begins and ends.</span></li>
    <li><span>So little travel time is required to experience so many different kinds of terrain.</span></li>
    <li><span>The state flag has four different, highly contrasting colors.</span></li>
    <li><span>So many people live in so many rowhouses.</span></li>
    </ol>
    <div>
    <span>What other Maryland-isms belong on this list?</span>
    </div>
    <div>
    <span><br></span>
    </div>
    <div>
    <em><a href="http://cocreateumbc.blogspot.com/" rel="nofollow external" class="bo">Co-Create UMBC</a> is a blog for and about UMBC, written by David Hoffman and Craig Berger from the Office of Student Life. Join the <a href="http://my.umbc.edu/groups/co-create" rel="nofollow external" class="bo">Co-Create UMBC group</a> on MyUMBC. Like <a href="https://www.facebook.com/cocreateumbc" rel="nofollow external" class="bo">Co-Create UMBC on Facebook</a>. And follow <a href="https://twitter.com/CoCreateUMBC" rel="nofollow external" class="bo">David</a> and <a href="https://twitter.com/CraigBerger" rel="nofollow external" class="bo">Craig</a> on Twitter.</em><span> </span>
    </div>
    </div>
]]>
</Body>
<Summary>by David Hoffman and Craig Berger   Old Bay, crabs, the loud "O!" during the national anthem, and professional sports teams named for dark birds. We all know the obvious Maryland-isms: the things...</Summary>
<Website>http://cocreateumbc.blogspot.com/2013/03/maryland-isms.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25116/guest@my.umbc.edu/aa544f8576fa9d89816c445ca926eb16/api/pixel</TrackingUrl>
<Group token="co-create">Co-Create UMBC</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/co-create</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/xsmall.png?1499890363</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/original.jpg?1499890363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/xxlarge.png?1499890363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/xlarge.png?1499890363</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/large.png?1499890363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/medium.png?1499890363</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/small.png?1499890363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/xsmall.png?1499890363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/002/5b8f025dafb56cb8d3088b7259aadcfb/xxsmall.png?1499890363</AvatarUrl>
<Sponsor>Co-Create UMBC</Sponsor>
<PawCount>185</PawCount>
<CommentCount>148</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:19:00 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="25110" important="false" status="posted" url="https://my3.my.umbc.edu/posts/25110">
<Title>How do I access Qualtrics?</Title>
<Body>
<![CDATA[
    <div class="html-content"><div>    <p>
            Page
                <strong>added</strong> by
                        <a href="https://wiki.umbc.edu/display/~amocko1" rel="nofollow external" class="bo">Andrea Mocko</a>
                </p>
            <div>
            <h2>Tell Me</h2>
    <p>You can access Qualtrics by going to <a href="http://qualtrics.umbc.edu/" rel="nofollow external" class="bo">http://qualtrics.umbc.edu/</a></p>
    <h2>Rate this Article</h2>
    <p>
    
    
    
    
    <strong>Was this helpful?</strong>
    <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D34537923&amp;q=0&amp;v=1&amp;s=faq&amp;l=" rel="nofollow external" class="bo">Yes</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D34537923" rel="nofollow external" class="bo">No</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D34537923" rel="nofollow external" class="bo">Correct or Suggest an Article</a>
     | <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D34537923&amp;q=0&amp;v=0&amp;s=faq&amp;l=" rel="nofollow external" class="bo">Request Help</a></p>
    <p><a href="http://my.umbc.edu/help/request" rel="nofollow external" class="bo"><img src="https://wiki.umbc.edu/download/attachments/29853066/RequestHelpicon.png?version=1&amp;modificationDate=1335472984000&amp;api=v2" style="max-width: 100%; height: auto;"></a></p>
        </div>
            <div>
           <a href="https://wiki.umbc.edu/pages/viewpage.action?pageId=34537923" rel="nofollow external" class="bo">View Online</a>
                      </div>
    </div></div>
]]>
</Body>
<Summary>Page             added by                     Andrea Mocko                                  Tell Me  You can access Qualtrics by going to http://qualtrics.umbc.edu/  Rate this Article       Was...</Summary>
<Website>https://wiki.umbc.edu/pages/viewpage.action?pageId=34537923</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/25110/guest@my.umbc.edu/c5ddb910bdc02b0b67ba12ed74957c6c/api/pixel</TrackingUrl>
<Tag>faq</Tag>
<Group token="retired-428">UMBC FAQ</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-428</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/images/avatars/group/1/xsmall.png?1782487666</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/images/avatars/group/1/original.png?1782487666</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/images/avatars/group/1/xxlarge.png?1782487666</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/images/avatars/group/1/xlarge.png?1782487666</AvatarUrl>
<AvatarUrl size="large">https://assets2-my.umbc.edu/images/avatars/group/1/large.png?1782487666</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/images/avatars/group/1/medium.png?1782487666</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/images/avatars/group/1/small.png?1782487666</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/images/avatars/group/1/xsmall.png?1782487666</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/images/avatars/group/1/xxsmall.png?1782487666</AvatarUrl>
<Sponsor>UMBC FAQ</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 09:11:31 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="26014" important="false" status="posted" url="https://my3.my.umbc.edu/posts/26014">
<Title>Animating The Web: We&#8217;re Gonna Need A Bigger API!</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>Everyone likes stuff that moves about on the Web, right? Remember how you cried joyful tears when you first used <code>&lt;marquee&gt;</code>? I do. I nearly sobbed all the water out of my body as I gazed upon “JAKE’S COOL WEBSITE” bobbing back and forth in uppercase serif. Of course, we’re more mature as an industry these days.</p>
    <p>We’ve learned that <strong>users don’t want websites to look like a CSI console having a personal crisis</strong>; instead, we go for smooth transitions that enhance the experience, rather than being the experience themselves. In terms of animation APIs, we’ve been poorly catered to, leaving us to hack around with timers that weren’t really built for animation. Things have been steadily improving in that area, but the new <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/web-anim/index.html" rel="nofollow external" class="bo">Web Animation specification</a> looks set to shake things up a lot.</p>
    <p>So, why do we need a new animation spec? Don’t we have enough ways to animate things already?</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/03/intro.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/03/intro.jpg" alt="Optimizing the way to makes things move" width="500" height="350" style="max-width: 100%; height: auto;"></a><br><em>Optimizing the way to makes things move.</em></p>
    <h3>Let’s Animate A Thing!</h3>
    <p>Imagine we wanted to animate something horizontally from one left position to another, over three seconds, and then do something on completion. We can do this without JavaScript, using <a href="https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_animations" rel="nofollow external" class="bo">CSS animations</a>, but if the start and end positions are programmatically determined, then we’ll need something that we can control from script.</p>
    <h4>Using <code>requestAnimationFrame</code>
    </h4>
    <p>If you’re performing visual updates with JavaScript, then you should be using <code>requestAnimationFrame</code>. It synchronizes itself to real screen updates, giving you as much time as possible to get everything ready for rendering. If the browser is on a 60 Hz screen (most are) and your frames can be constructed in less than a 60th of a second, then you’ll get 60 frames per second (FPS). <code>requestAnimationFrame</code> prevents you creating frames that don’t have time to display. Synchronizing to the screen’s rate is important; 30 FPS looks smoother than 40 FPS because 40 doesn’t divide into the screen’s native 60 Hz. HTML5 Rocks has a <a href="http://www.html5rocks.com/en/tutorials/speed/rendering/" rel="nofollow external" class="bo">great article on syncing to the screen</a>.</p>
    <p>Unfortunately, jQuery <a href="https://github.com/jquery/jquery/blob/caac041fcc31724b8b579939e8053966559483ca/src/effects.js#L692" rel="nofollow external" class="bo">uses <code>setInterval</code></a>, which isn’t as smooth as <code>requestAnimationFrame</code>. <code>requestAnimationFrame</code> doesn’t trigger while the tab or window isn’t visible, which is <em>A Good Thing</em>. Unfortunately, this has created backwards incompatibility with websites that rely on <code>setInterval</code>’s less optimal behavior of continuing to run in the background. You can opt into <code>requestAnimationFrame</code> via a <a href="https://github.com/gnarf37/jquery-requestAnimationFrame" rel="nofollow external" class="bo">plugin</a>. Go and add that to all of your pages using jQuery animation now — I promise to wait for you — just make sure that switching tabs doesn’t break your animations.</p>
    <p><strong>Anyway, enough chatting</strong>. Here’s a <a href="http://jsbin.com/iliket/14/quiet" rel="nofollow external" class="bo">simple animation using <code>raf</code></a>, moving a box horizontally from <code>250px</code> to <code>500px</code>. Note that the box starts at <code>0px</code>, so there’s a jump to <code>250px</code> when the animation starts; this proves we can start the animation from a point other than its current rendered position.</p>
    <p>Here’s the code:</p>
    <pre><code>&#x000A;    // On button press…&#x000A;    animateLeft(elm, '250px', '500px', function() {&#x000A;      console.log("Done!");&#x000A;    });&#x000A;    &#x000A;    // The implementation&#x000A;    function animateLeft(elm, from, to, done) {&#x000A;      // Turn our CSS values into numbers&#x000A;      // We're being lazy and assuming they're in px&#x000A;      from = parseInt(from, 10);&#x000A;      to = parseInt(to, 10);&#x000A;      // Work out the amount we need to move the box&#x000A;      var diff = to - from;&#x000A;    &#x000A;      var duration = 3000;&#x000A;      var startTime = performance.now();&#x000A;    &#x000A;      // Set initial position&#x000A;      elm.style.transform = 'translate(' + from + 'px, 0)';&#x000A;    &#x000A;      function frame(time) {&#x000A;        // How long has the animation been running?&#x000A;        var animTime = time - startTime;&#x000A;        // Are we done?&#x000A;        if (animTime &gt;= duration) {&#x000A;          // It's likely that the last rendered position wasn't the&#x000A;          // final position, so we set it here.&#x000A;          elm.style.transform = 'translate(' + to + 'px, 0)';&#x000A;    &#x000A;          done();&#x000A;        }&#x000A;        else {&#x000A;          // What position should the box be in?&#x000A;          var position = from + (animTime / duration * diff);&#x000A;          elm.style.transform = 'translate(' + position + 'px, 0)';&#x000A;          // Request our next frame&#x000A;          requestAnimationFrame(frame);&#x000A;        }&#x000A;      }&#x000A;      // request our first frame&#x000A;      requestAnimationFrame(frame);&#x000A;    }&#x000A;    </code></pre>
    <p>The above is the ideal according-to-specification code. In the working example, I had to deal with vendor prefixes on <code>requestAnimationFrame</code> and <code>transform</code>. We’re animating using <code>transform</code> and <code>translate</code>, rather than <code>left</code>, because they allow for <a href="http://paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/" rel="nofollow external" class="bo">subpixel positioning and, therefore, smoother animation</a>, one of the advantages that Flash had over HTML for so long.</p>
    <p>This is a <strong>pretty large and stinky chunk of code</strong> to simply animate a thing, and it would get a lot larger if we handled differing CSS units and easing. Of course, you could stick all of the complicated bits in a library and give yourself a simpler API. Here’s the frame-by-frame breakdown:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image02.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image02-500.png" alt="image02-500" width="500" height="327" style="max-width: 100%; height: auto;"></a></p>
    <p>This is the timeline view of Chrome Developer Tools while the animation is running. Each frame executes some JavaScript, recalculates the style and layout, paints the box, and then sends that to the GPU, which composites it to the page. The draw time spikes a few times, resulting in a jolt in the animation. This is caused by delays in interacting with the GPU (the gray spikes) or delays caused by other JavaScript (the yellow spikes).</p>
    <p>This highlights a performance bottleneck of JavaScript-driven animation:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image01.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image01-500.png" alt="image01-500" width="500" height="392" style="max-width: 100%; height: auto;"></a></p>
    <p>Here, another bit of JavaScript does some stuff and takes 250 milliseconds to do it. While this is happening, our animation can’t move. In the real world, <strong>this could be a social-media button waking up and doing something slow</strong>, or it could be some of your own script triggered by a user interaction. In the example above, I made a <a href="http://jsbin.com/iliket/21/quiet" rel="nofollow external" class="bo">button that performs a <code>while</code> loop for 250 milliseconds</a> (I’m pretty sure this code is in every social-media button). If you press it during the animation, it will block the animation and look nasty.</p>
    <p>I recently <a href="http://calendar.perfplanet.com/2012/snow-in-canvas-land/" rel="nofollow external" class="bo">sung the praises of <code>requestAnimationFrame</code> for animating canvas</a>, so why am I hatin’ on it now? JavaScript-driven animations aren’t a bad practice — they give you full control frame by frame and pixel by pixel when combined with <code>&lt;canvas&gt;</code> — but returning to JavaScript land 60 times a second is overkill for DOM animations that have a defined start and end. Ideally, we want to tell the browser all about our animation and <strong>leave it to do its thing</strong>, while we get on with something else.</p>
    <p>Of course, we kinda have this already.</p>
    <h4>Using CSS Transitions</h4>
    <pre><code>&#x000A;    .whatever {&#x000A;       transform: translate(250px, 0);&#x000A;       transition: transform 3s linear;&#x000A;    }&#x000A;    .whatever:hover {&#x000A;       transform: translate(500px, 0);&#x000A;    }&#x000A;    </code></pre>
    <p>CSS transitions and animations let the browser make all kinds of optimizations because it knows the end point of the animation. They’re not blocked by JavaScript on some platforms, such as Chrome for Android and desktop Chrome with threaded compositing enabled in <code>about:flags</code> (expect threaded compositing to arrive in more browsers).</p>
    <p>Let’s script it!</p>
    <pre><code>&#x000A;    function animateLeft(elm, from, to, done) {&#x000A;      // Set initial position&#x000A;      elm.style.transform = 'translate(' + from + ', 0)';&#x000A;      // Define the transition type&#x000A;      elm.style.transition = 'all 3s linear';&#x000A;    &#x000A;      function transitionEnd(event) {&#x000A;        // Beware of bubbled events&#x000A;        if (event.target != elm) { return; }&#x000A;        // Clear the transition&#x000A;        elm.style.transition = '';&#x000A;        // We don't want that listener firing for future anims&#x000A;        elm.removeEventListener('transitionend', transitionEnd);&#x000A;    &#x000A;        done();&#x000A;      }&#x000A;    &#x000A;      // Listen for end of transition&#x000A;      elm.addEventListener('transitionend', transitionEnd);&#x000A;      // start the transition&#x000A;      elm.style.transform = 'translate(' + to + ', 0)';&#x000A;    }&#x000A;    </code></pre>
    <p>Here’s a <a href="http://jsbin.com/iliket/16/quiet" rel="nofollow external" class="bo">live example</a>. It’s much simpler than our <code>raf</code> example, but a bug has crept in. The <code>from</code> is ignored; the animation starts from the element’s current position, even though we’ve explicitly set it to something else. Why?</p>
    <pre><code>&#x000A;    // Set initial position&#x000A;    elm.style.transform = 'translate(' + from + ', 0)';&#x000A;    // Define the transition type&#x000A;    elm.style.transition = 'all 3s linear';&#x000A;    // …and later…&#x000A;    // Start the transition&#x000A;    elm.style.transform = 'translate(' + to + ', 0)';&#x000A;    </code></pre>
    <p>Changing properties in the <code>style</code> object doesn’t change the element’s computed style. The style is computed only when the browser needs to know the impact that those styles will have on the page (for example, when the element needs to be drawn). The element doesn’t need to be drawn between the two assignments to <code>elm.style.transform</code>, so the first assignment is ignored.</p>
    <p>Of course, <strong>we can hack it</strong>:</p>
    <pre><code>&#x000A;    // Set initial position&#x000A;    elm.style.transform = 'translate(' + from + ', 0)';&#x000A;    // Abracadabra!&#x000A;    elm.offsetWidth;&#x000A;    // Define the transition type&#x000A;    elm.style.transition = 'all 3s linear';&#x000A;    // …and later…&#x000A;    // start the transition&#x000A;    elm.style.transform = 'translate(' + to + ', 0)';&#x000A;    </code></pre>
    <p><code>offsetWidth</code> returns the rendered width of an element, including padding. To calculate this, the browser needs to take into account all of the styles on the page, including the <code>transform</code> that we set for the initial position. That works. Check out the <a href="http://jsbin.com/iliket/17/quiet" rel="nofollow external" class="bo">live example</a>.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image03.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image03-500.png" alt="image03-500" width="500" height="279" style="max-width: 100%; height: auto;"></a></p>
    <p>Performance is steady at 60 FPS. And we can see that each frame is a simple composite; all of the heavy lifting is farmed out to the GPU.</p>
    <p>However, relying on <code>offsetWidth</code> to force the element into its starting position is hacky, and it’s conceivable that a <strong>future browser release will find a way to optimize out the reflow</strong>, breaking our hack.</p>
    <p>Reflows are not without cost either:</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image00.png" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2013/02/image00-500.png" alt="image00-500" width="500" height="279" style="max-width: 100%; height: auto;"></a></p>
    <p>The Developer Tools warn us about this use of <code>offsetWidth</code>, because the browser calculates a layout that it never draws. The test page is very basic, so the layout cost is cheap, but things can be very different in the real world.</p>
    <p>So, is there a less hacky, more reliable way?</p>
    <h4>Enter CSS Animations</h4>
    <p><a href="https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_animations" rel="nofollow external" class="bo">CSS animations</a> have explicit keyframe values. Let’s script them:</p>
    <pre><code>&#x000A;    function animateLeft(elm, from, to, done) {&#x000A;      // Create a style element for our animation&#x000A;      var style = document.createElement('style');&#x000A;      // Generate a unique name&#x000A;      var animName = 'anim' + Date.now() + Math.floor(Math.random() * 10000);&#x000A;    &#x000A;      // Build the CSS&#x000A;      style.textContent = '' +&#x000A;        '@keyframes ' + animName + ' { ' +&#x000A;          'from { ' +&#x000A;            'transform: translate(' + from + ', 0);' +&#x000A;          '}' +&#x000A;          'to {'&#x000A;            'transform: translate(' + to + ', 0);' +&#x000A;          '}' +&#x000A;        '}';&#x000A;    &#x000A;      // Add it to the page&#x000A;      document.head.appendChild(style);&#x000A;    &#x000A;      function transitionEnd(event) {&#x000A;        // Beware of bubbled events&#x000A;        if (event.target != elm) { return; }&#x000A;        // Clear the animation&#x000A;        elm.style.animation = '';&#x000A;        // Clean up the DOM&#x000A;        document.head.removeChild(style);&#x000A;        // Retain the final position&#x000A;        elm.style.transform = 'translate(' + to + ', 0)';&#x000A;        // We don't want that listener firing for future anims&#x000A;        elm.removeEventListener('animationend', transitionEnd);&#x000A;    &#x000A;        done();&#x000A;      }&#x000A;    &#x000A;      // Listen for end of transition&#x000A;      elm.addEventListener('animationend', transitionEnd);&#x000A;    &#x000A;      // Start the animation&#x000A;      elm.style.animation = animName + ' 3s linear forwards';&#x000A;    }&#x000A;    </code></pre>
    <p><strong>Ugh! All of that just to move a thing?</strong> <a href="http://jsbin.com/iliket/18/quiet" rel="nofollow external" class="bo">It works</a>, but all of that DOM work is heavy-handed for what we’re trying to achieve. Also, if an animation is cancelled halfway through (for example, if the animation style is changed), then <code>animationend</code> will not fire — meaning that our <code>done</code> callback won’t fire or, worse, it’ll fire at the end of some future unrelated animation. There is no <code>animationcancel</code> event.</p>
    <h4>Web Animations, Save Us From This Mess!</h4>
    <p>It’s early days for the <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/web-anim/index.html" rel="nofollow external" class="bo">Web Animations specification</a>, but it’s pretty exciting. It brings a boatload of animation performance and synchronization features natively to the DOM that JavaScript libraries currently have to hack their way through.</p>
    <p>The specification itself is kinda terrifying. My heart sank as I opened the page and watched the scrollbar get smaller and smaller. But, thankfully, most of it is implementation detail.</p>
    <p>Here’s how we’d script our animation <strong>in the brave new world of Web Animation</strong>:</p>
    <pre><code>&#x000A;    // Set our start position&#x000A;    elm.style.transform = 'translate(250px, 0)';&#x000A;    // Animate to the end position&#x000A;    var anim = elm.animate({&#x000A;      transform: 'translate(500px, 0)'&#x000A;    }, 3);&#x000A;    // Do something on completion&#x000A;    anim.onend = function() {&#x000A;      console.log('Done!');&#x000A;    };&#x000A;    </code></pre>
    <p>Here, <code>elm</code> is an <code>HTMLElement</code>. The API is intuitive, especially if you’ve created animations with something like jQuery.</p>
    <p>Like CSS animations and transitions, it <strong>gives the browser the full story up front</strong>, so we get all of the same optimizations without having to dynamically build CSS. Web Animations solves this by allowing us to tell the browser the full story of what we’re going to do. Then, the browser can go off and animate things itself.</p>
    <p>Web Animations give us the scripting API to browser-driven animation that’s sorely missing. Above is the “Hello world” example. The <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/web-anim/index.html" rel="nofollow external" class="bo">specification</a> includes advanced easing, path-based animation, parallelization, synchronization, interrupting and adapting, all in a way that the browser can take away from JavaScript land and optimize accordingly.</p>
    <p>It’s still very early days, so don’t throw out your animation libraries yet. But if you want to experiment with the new API and provide feedback, a <a href="https://github.com/web-animations/web-animations-js" rel="nofollow external" class="bo">polyfill is tracking</a> the rapidly evolving spec. Exciting times!</p>
    <p><em>(al)</em></p>
    <hr>
    <p><small>© Jake Archibald for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2013.</small></p>
    </div>
]]>
</Body>
<Summary>        Everyone likes stuff that moves about on the Web, right? Remember how you cried joyful tears when you first used &lt;marquee&gt;? I do. I nearly sobbed all the water out of my body as I...</Summary>
<Website>http://www.smashingmagazine.com/2013/03/04/were-gonna-need-a-bigger-api/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/26014/guest@my.umbc.edu/d24650680bebe8ec2a97ce226c0ae186/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>developers-toolbox</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>web</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Mon, 04 Mar 2013 08:48:34 -0500</PostedAt>
</NewsItem>

</News>
