<?xml version="1.0"?>
<News hasArchived="true" page="7838" pageCount="10769" pageSize="10" timestamp="Tue, 25 Aug 2026 23:54:02 -0400" url="https://my3.my.umbc.edu/posts.xml?mode=activity&amp;page=7838">
<NewsItem contentIssues="true" id="41076" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41076">
<Title>hackUMBC: Overnight Innovation</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <h5>by Randi Williams</h5>
    <div>22 teams of UMBC hackers spent an intense 24 hours late last semester in a battle of creativity and wits aimed at improving campus life. This first-ever UMBC hackathon—hackUMBC--was itself the product of a creative breakthrough, stemming from a conversation I had in a San Francisco Starbucks four months earlier... (<a href="http://umbcbreakingground.wordpress.com/2014/02/06/hackumbc-overnight-innovation/" rel="nofollow external" class="bo">continue reading</a>)</div>
    </div>
]]>
</Body>
<Summary>by Randi Williams  22 teams of UMBC hackers spent an intense 24 hours late last semester in a battle of creativity and wits aimed at improving campus life. This first-ever UMBC...</Summary>
<Website>http://umbcbreakingground.wordpress.com/2014/02/06/hackumbc-overnight-innovation/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41076/guest@my.umbc.edu/1ff98bfcaa8e4cfcb74dfe3b9807ee4a/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/041/076/0e1290a0f5dd521ac317b2fa20bf511a/xxlarge.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/xlarge.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/large.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/medium.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/small.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/xsmall.jpg?1391696443</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/thumbnails/news/000/041/076/0e1290a0f5dd521ac317b2fa20bf511a/xxsmall.jpg?1391696443</ThumbnailUrl>
<PawCount>3</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 06 Feb 2014 09:21:43 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="41075" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41075">
<Title>Techies Toast with Cybertinis</Title>
<Tagline>Baltimore Business Journal</Tagline>
<Body>
<![CDATA[
    <div class="html-content">
    <h4>Maryland General Assembly takes on cyber bills</h4>
    <p><br></p>
    <p>Subscriber content:</p>
    <p><a href="http://www.bizjournals.com/baltimore/print-edition/2014/01/31/maryland-general-assembly-takes-on.html">http://www.bizjournals.com/baltimore/print-edition/2014/01/31/maryland-general-assembly-takes-on.html</a><br></p>
    </div>
]]>
</Body>
<Summary>Maryland General Assembly takes on cyber bills     Subscriber content:  http://www.bizjournals.com/baltimore/print-edition/2014/01/31/maryland-general-assembly-takes-on.html</Summary>
<Website>http://www.bizjournals.com/baltimore/print-edition/2014/01/31/maryland-general-assembly-takes-on.html</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41075/guest@my.umbc.edu/f71d3543ee1956c08b3d68cc4d167f65/api/pixel</TrackingUrl>
<Group token="bwtech">bwtech@UMBC Research and Technology Park</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/bwtech</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/original.png?1760034935</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/large.png?1760034935</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/medium.png?1760034935</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/small.png?1760034935</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxsmall.png?1760034935</AvatarUrl>
<Sponsor>bwtech@UMBC</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 06 Feb 2014 09:06:32 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="41083" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41083">
<Title>Corner Office: Christy Wyatt of Good Technology, on Minding the Details</Title>
<Body>
<![CDATA[
    <div class="html-content">The chief executive of a mobile security company says leaders have to discuss small issues as well as big ones, lest employees jump to conclusions.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F02%2F07%2Fbusiness%2Fchristy-wyatt-of-good-technology-on-minding-the-details.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Corner+Office%3A+Christy+Wyatt+of+Good+Technology%2C+on+Minding+the+Details" 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%2F2014%2F02%2F07%2Fbusiness%2Fchristy-wyatt-of-good-technology-on-minding-the-details.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Corner+Office%3A+Christy+Wyatt+of+Good+Technology%2C+on+Minding+the+Details" 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%2F2014%2F02%2F07%2Fbusiness%2Fchristy-wyatt-of-good-technology-on-minding-the-details.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Corner+Office%3A+Christy+Wyatt+of+Good+Technology%2C+on+Minding+the+Details" 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%2F2014%2F02%2F07%2Fbusiness%2Fchristy-wyatt-of-good-technology-on-minding-the-details.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Corner+Office%3A+Christy+Wyatt+of+Good+Technology%2C+on+Minding+the+Details" 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%2F2014%2F02%2F07%2Fbusiness%2Fchristy-wyatt-of-good-technology-on-minding-the-details.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Corner+Office%3A+Christy+Wyatt+of+Good+Technology%2C+on+Minding+the+Details" 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>
    </div>
]]>
</Body>
<Summary>The chief executive of a mobile security company says leaders have to discuss small issues as well as big ones, lest employees jump to conclusions.      </Summary>
<Website>http://www.nytimes.com/2014/02/07/business/christy-wyatt-of-good-technology-on-minding-the-details.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41083/guest@my.umbc.edu/953742e8bf29c8d7691f98e63380bc47/api/pixel</TrackingUrl>
<Tag>apple-inc-aapl-nasdaq</Tag>
<Tag>executives-and-management-theory</Tag>
<Tag>good-technology</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>wyatt-christy</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, 06 Feb 2014 09:05:17 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="41074" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41074">
<Title>TEDCO Invests $1.3 Million in 13 Maryland Startups</Title>
<Tagline>including Integrata Security</Tagline>
<Body>
<![CDATA[
    <div class="html-content"><div>
                    	<div>
                        	<h6>January 2014</h6>
                            <h4>TEDCO Invests $1.3 Million in 13 Maryland Startups</h4>
                        	<p><strong> </strong><em><em>Organization awards funding through the Technology Commercialization Fund</em></em></p>
    <p><strong>COLUMBIA, Md.</strong> (Jan. 14, 2014) – <strong>The Maryland Technology Development Corporation (TEDCO)</strong>
     announced today that 13 companies have received a total of $1.3 million
     in funding from the organization’s Technology Commercialization Fund 
    (TCF) since July 2013. The funding will be used to advance the companys’
     technology and product commercialization efforts. Funds were awarded to
     startups representing a wide-range of industries including medicine and
     disease treatment, health care, biopharmaceuticals, software 
    development and systems integration. Companies including Allovue, LLC; 
    Altenera Technology, Inc.; An Estuary, LLC; Ariadne Diagnostics, LLC; 
    Citelighter, Inc.; Graftworx, LLC; I-lighting, LLC; Integrata Security, 
    LLC; Maryland Energy and Sensor Technologies, LLC; Noble Life Sciences, 
    Inc.; PrintLess Plans, LLC; Rehabtics, LLC and SurveySnap, Inc. were 
    each awarded $100,000.</p>
    <p>“The Technology Commercialization Fund is a core TEDCO program that 
    makes critical early-stage funding available to promising companies in 
    Maryland,” said Rob Rosenbaum, president and executive director of 
    TEDCO. “The diversity in technology and industry that spans our TCF 
    portfolio is impressive and TEDCO is energized and optimistic about the 
    promise of these 13 companies.”</p>
    <p>TCF provides funding to companies which want to develop 
    technology-based products in collaboration with the universities and/or 
    federal labs in the state. To be eligible for an award, companies must 
    be collaborating with a federal lab or university, be located in an 
    affiliate incubator company in the state, be involved in either the 
    ACTiVATE® or INNoVATE programs, or participate in TEDCO’s Rural Business
     Initiative (RBI²). In addition, companies must have fewer than 16 
    employees, be a university spin-off less than five-years-old or have 
    venture investments under $500,000. All companies must have more than 50
     percent of their employees present in the state.</p>
    <p>Since the program’s inception, 192 companies have received TCF 
    funding and completed their projects. With an investment of almost $14 
    million these companies have gone on to receive more than $563 million 
    in downstream funding from angel and venture investors, federal awards 
    and other resources. Companies that have been awarded TCF funding since 
    July 2013 include:</p>
    <p>• Allovue, LLC, located in Baltimore, streamlines school financial 
    management processes into one data visualization application that helps 
    school leaders navigate the budget process, manage multiple funding 
    streams, track expenses, allocate spending money to teachers, identify 
    trends over time, and plan for future capital investments.</p>
    <p>• Altenera Technology, Inc., located in Bethesda, has a goal to 
    provide innovative alternatives to resolve some of the challenges common
     to current clean energy solutions on the market.</p>
    <p>• An Estuary, LLC, located in Baltimore, builds social platform 
    technology and technology-integrated professional development solutions 
    for educators.</p>
    <p>• Ariadne Diagnostics, LLC, located in Rockville, is developing 
    companion diagnostic tests in the areas of metastatic colorectal cancer 
    and neurodegenerative/neuromuscular diseases based on proprietary panels
     of biomarkers.</p>
    <p>• Citelighter, Inc., located in Baltimore, is a research and writing 
    platform that helps students organize and access materials for writing 
    papers and also lets teachers track their students’ progress before they
     turn in their papers.</p>
    <p>• Graftworx, LLC, located in Bel Air, is an early stage medical 
    device company developing a novel solution for detecting blockages of 
    peripheral arterial bypass grafts.</p>
    <p>• I-lighting, LLC, located in North East, maximizes the longevity and
     performance of LED lighting with its patented Easy PlugTM Installation 
    System and low voltage DC power supplies.</p>
    <p>• Integrata Security, LLC, located in Baltimore, develops and 
    implements highly innovative solutions that increase the resiliency of 
    information systems for enterprises and government agencies that require
     the highest level of information security.</p>
    <p>• Maryland Energy and Sensor Technologies, LLC, located in College 
    Park, is developing commercial applications of thermoelastic cooling 
    technology and is the exclusive licensee of this cost effective highly 
    efficient green technology.</p>
    <p>• Noble Life Sciences, Inc., located in Gaithersburg, provides in 
    vitro and in vivo preclinical drug development services including 
    experimental design and testing, animal and cellular disease models, 
    cell line development and protein production, selection and validation 
    of biomarkers, and vivarium services.</p>
    <p>• PrintLess Plans, LLC., located in Baltimore, develops large format 
    auxiliary displays offering architecture, engineering, and construction 
    professionals a durable, mobile means to view libraries of digital 
    drawings in their original size.</p>
    <p>• Rehabtics, LLC, located in Baltimore, is developing a software 
    system for physical rehabilitation using motion-controlled video games 
    for use both in institutions and at home.</p>
    <p>• SurveySnap, Inc., located in Columbia, develops software for 
    architecture, engineering and construction industry professionals that 
    do site-surveys, building assessments and job estimating.</p>
    <p>Applications for funding programs are accepted continually and 
    reviewed every two months by the TEDCO funding review team, which 
    includes representatives from TEDCO, the Maryland Department of Business
     and Economic Development and affiliated venture capital groups. 
    Applicants must submit a proposal, commercialization plan for the 
    technology to be developed, scope of work and budget to be considered 
    for funding.</p>
    <p><strong><span>The Maryland Technology Development Corporation (TEDCO)</span></strong>
     is the go-to source for entrepreneurial support and guidance for 
    start-ups and early-stage companies engaged in bringing innovative ideas
     to market. For more than a decade, the organization has provided 
    funding, mentoring and networking opportunities to support Maryland’s 
    innovation ecosystem. While founded by the Maryland General Assembly, 
    TEDCO is an independent entity that makes seed/early-stage investments 
    and manages private capital for angel and venture capital funds. It is 
    frequently ranked as one of the most active seed/early-stage investors 
    in the nation. The organization plays a key role in bringing research 
    created in Maryland’s educational institutions and federal laboratories 
    into the commercial marketplace. For more information on TEDCO and its 
    programs and resources, visit <a href="http://www.tedco.md/" rel="nofollow external" class="bo">www.TEDCO.md</a>.</p>
                        </div>
                    </div></div>
]]>
</Body>
<Summary>January 2014                           TEDCO Invests $1.3 Million in 13 Maryland Startups                         Organization awards funding through the Technology Commercialization Fund...</Summary>
<Website>http://tedco.md/press/tedco-invests-1-3-million-in-13-maryland-startups/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41074/guest@my.umbc.edu/feae9feb6d43b132b30e8808d3c35a8a/api/pixel</TrackingUrl>
<Group token="bwtech">bwtech@UMBC Research and Technology Park</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/bwtech</GroupUrl>
<AvatarUrl>https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="original">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/original.png?1760034935</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xlarge.png?1760034935</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/large.png?1760034935</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/medium.png?1760034935</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/small.png?1760034935</AvatarUrl>
<AvatarUrl size="xsmall">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xsmall.png?1760034935</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/410/afff9420ec03574fa84c6bb85b54a3e3/xxsmall.png?1760034935</AvatarUrl>
<Sponsor>bwtech@UMBC</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 06 Feb 2014 08:39:48 -0500</PostedAt>
<EditAt>Thu, 06 Feb 2014 08:41:01 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="41085" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41085">
<Title>Q&amp;A: Picking a Flavor of Linux</Title>
<Body>
<![CDATA[
    <div class="html-content">Plus, opting out of Google Plus auto backup.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F02%2F07%2Ftechnology%2Fpersonaltech%2Fpicking-a-flavor-of-linux.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Picking+a+Flavor+of+Linux" 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%2F2014%2F02%2F07%2Ftechnology%2Fpersonaltech%2Fpicking-a-flavor-of-linux.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Picking+a+Flavor+of+Linux" 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%2F2014%2F02%2F07%2Ftechnology%2Fpersonaltech%2Fpicking-a-flavor-of-linux.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Picking+a+Flavor+of+Linux" 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%2F2014%2F02%2F07%2Ftechnology%2Fpersonaltech%2Fpicking-a-flavor-of-linux.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Picking+a+Flavor+of+Linux" 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%2F2014%2F02%2F07%2Ftechnology%2Fpersonaltech%2Fpicking-a-flavor-of-linux.html%3Fpartner%3Drss%26emc%3Drss&amp;t=Q%26A%3A+Picking+a+Flavor+of+Linux" 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>
    </div>
]]>
</Body>
<Summary>Plus, opting out of Google Plus auto backup.      </Summary>
<Website>http://www.nytimes.com/2014/02/07/technology/personaltech/picking-a-flavor-of-linux.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41085/guest@my.umbc.edu/84ff9f30f77160f734cd652105bfd4b6/api/pixel</TrackingUrl>
<Tag>canonical-ltd</Tag>
<Tag>google-inc-goog-nasdaq</Tag>
<Tag>linux-operating-system</Tag>
<Tag>new</Tag>
<Tag>tablet-computers</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, 06 Feb 2014 08:23:13 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="41069" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41069">
<Title>Bits: When Identity Theft Hits Home</Title>
<Body>
<![CDATA[
    <div class="html-content">What happens when your credit card information is among the millions stolen from a major retailer? Nothing good.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fbits.blogs.nytimes.com%2F2014%2F02%2F06%2Fwhen-identity-theft-hits-home%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits%3A+When+Identity+Theft+Hits+Home" 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%2F2014%2F02%2F06%2Fwhen-identity-theft-hits-home%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits%3A+When+Identity+Theft+Hits+Home" 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%2F2014%2F02%2F06%2Fwhen-identity-theft-hits-home%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits%3A+When+Identity+Theft+Hits+Home" 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%2F2014%2F02%2F06%2Fwhen-identity-theft-hits-home%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits%3A+When+Identity+Theft+Hits+Home" 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%2F2014%2F02%2F06%2Fwhen-identity-theft-hits-home%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=Bits%3A+When+Identity+Theft+Hits+Home" 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/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/sc/36/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/187557476129/u/0/f/640387/c/34625/s/36c939f4/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>What happens when your credit card information is among the millions stolen from a major retailer? Nothing good.      </Summary>
<Website>http://bits.blogs.nytimes.com/2014/02/06/when-identity-theft-hits-home/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41069/guest@my.umbc.edu/2a37b954dff94b46890602651d9f4e57/api/pixel</TrackingUrl>
<Tag>computer-security</Tag>
<Tag>computers-and-the-internet</Tag>
<Tag>credit-cards</Tag>
<Tag>cyberattacks-and-hackers</Tag>
<Tag>debit-cards</Tag>
<Tag>hotels-and-travel-lodgings</Tag>
<Tag>identity-theft</Tag>
<Tag>neiman-marcus-group</Tag>
<Tag>new</Tag>
<Tag>security</Tag>
<Tag>shopping-and-retail</Tag>
<Tag>target-corporation</Tag>
<Tag>target-corporation-tgt-nyse</Tag>
<Tag>technology</Tag>
<Tag>united-states</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, 06 Feb 2014 08:03:31 -0500</PostedAt>
<EditAt>Thu, 06 Feb 2014 11:52:30 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="41070" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41070">
<Title>DealBook: Glassdoor, a Jobs Website, Hires a Finance Chief</Title>
<Body>
<![CDATA[
    <div class="html-content">Glassdoor is set to announce that it has hired Adam C. Spiegel as chief financial officer, potentially setting up an initial public offering of the company down the line.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2014%2F02%2F06%2Fglassdoor-a-jobs-website-hires-a-finance-chief%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Glassdoor%2C+a+Jobs+Website%2C+Hires+a+Finance+Chief" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/twitter.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/facebook/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2014%2F02%2F06%2Fglassdoor-a-jobs-website-hires-a-finance-chief%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Glassdoor%2C+a+Jobs+Website%2C+Hires+a+Finance+Chief" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/facebook.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/linkedin/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2014%2F02%2F06%2Fglassdoor-a-jobs-website-hires-a-finance-chief%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Glassdoor%2C+a+Jobs+Website%2C+Hires+a+Finance+Chief" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/linkedin.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/gplus/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2014%2F02%2F06%2Fglassdoor-a-jobs-website-hires-a-finance-chief%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Glassdoor%2C+a+Jobs+Website%2C+Hires+a+Finance+Chief" rel="nofollow external" class="bo"><img src="http://res3.feedsportal.com/social/googleplus.png" style="max-width: 100%; height: auto;"></a> <a href="http://share.feedsportal.com/share/email/?u=http%3A%2F%2Fdealbook.nytimes.com%2F2014%2F02%2F06%2Fglassdoor-a-jobs-website-hires-a-finance-chief%2F%3Fpartner%3Drss%26emc%3Drss&amp;t=DealBook%3A+Glassdoor%2C+a+Jobs+Website%2C+Hires+a+Finance+Chief" 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/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/1/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/1/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/2/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/2/rc.img" style="max-width: 100%; height: auto;"></a><br><a href="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/3/rc.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/sc/25/rc/3/rc.img" style="max-width: 100%; height: auto;"></a><br><br><a href="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/186530305337/u/0/f/640387/c/34625/s/36c939ec/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>Glassdoor is set to announce that it has hired Adam C. Spiegel as chief financial officer, potentially setting up an initial public offering of the company down the line.      </Summary>
<Website>http://dealbook.nytimes.com/2014/02/06/glassdoor-a-jobs-website-hires-a-finance-chief/?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41070/guest@my.umbc.edu/4de995408fa190af3ce5d3cc00baf77c/api/pixel</TrackingUrl>
<Tag>glassdoor-inc</Tag>
<Tag>initial-public-offerings</Tag>
<Tag>new</Tag>
<Tag>rpx-corporation</Tag>
<Tag>rpx-corporation-rpxc-nasdaq</Tag>
<Tag>technology</Tag>
<Tag>tiger-global-management-llc</Tag>
<Tag>venture-capital</Tag>
<Tag>york</Tag>
<Tag>zynga-inc</Tag>
<Tag>zynga-inc-znga-nasdaq</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, 06 Feb 2014 07:58:48 -0500</PostedAt>
<EditAt>Thu, 06 Feb 2014 10:02:51 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="41068" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41068">
<Title>Applying Transformations To Responsive Web Design</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>To most Web developers, it sounds controversial until you hear the punchline: Last summer, the developers in charge of Google’s Chrome browser floated a <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/zIg2KC7PyH0" rel="nofollow external" class="bo">proposal</a> that went virtually unnoticed by the technology press, which was to remove support for an established W3C standard that every other browser vendor still supports. The standard in question? Extensible Stylesheet Language Transformations, otherwise known as XSLT.</p>
    <p>In reaction to this news, most Web developers would likely shrug and say “So what?” That’s unfortunate.</p>
    <p>Transformations are a simple yet <strong>powerful technique for separating content and presentation</strong> in Web applications. Yet, outside of enterprise and data-processing circles, transformations have failed to gain popularity through XSLT. As a result, Web developers are liable to think that transformations “don’t apply to me,” even though they work with HTML, a structured format ripe for transformation. Thankfully, new transformation frameworks are on the horizon, including work by the inventor of Sass, that hold the promise of a revival.</p>
    <p>In this article, we will reintroduce transformations and explore their applications to mobile and responsive design. We will not only teach the old dog new tricks, but show that transformations are relevant to everyone who deals with HTML.</p>
    <h3>Separating Content And Presentation</h3>
    <p>A transformation is simply a system that transforms its input into an output according to a set of predefined rules.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-opt.jpg" width="500" height="130" alt="The data flow of a transform" style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow of a transformation. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>The key thing about transformations isn’t the action they perform but the capability they enable. Transformations create an <strong>abstraction that decouples content and functionality from presentation.</strong> This separation is a design goal of many frameworks, but transformations facilitate it in powerful and unique ways.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-opt.jpg" width="500" height="150" alt="The transformation data flow recast as a separation of concerns" style="max-width: 100%; height: auto;"></a><br>
    <em>The transformation data flow recast as a separation of concerns. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>A powerful example of this decoupling occurs in <a href="https://github.com/cgrand/enlive" rel="nofollow external" class="bo">Enlive</a>, a transformation and templating system written in Clojure. Most templating engines use a customized markup language to mix HTML with programming constructs such as loops and variables. Take PHP, for example:</p>
    <pre><code>&lt;ul&gt;&#x000A;      &lt;?php foreach ($task_list as $task) { ?&gt; &#x000A;        &lt;li&gt; &lt;?php echo $task ?&gt; &lt;/li&gt;&#x000A;      &lt;?php } ?&gt; &#x000A;    &lt;/ul&gt;&#x000A;    </code></pre>
    <p>By contrast, Enlive templates use the same plain old HTML that you would get from your designer or PSD slicer. For example, a simple <code>hello-world.html</code> Enlive template might look like this:</p>
    <pre><code>&#x000A;    &lt;html&gt;&#x000A;    	&lt;body&gt;&#x000A;    		&lt;h1 id="output"&gt;Lorem Ipsum&lt;/h1&gt;&#x000A;    	&lt;/body&gt;&#x000A;    &lt;/html&gt; &#x000A;    </code></pre>
    <p>Instead of embedding logic in the markup, Clojure code that is associated with the HTML transforms it into output:</p>
    <pre><code>&#x000A;      (deftemplate helloworld &#x000A;        "hello-world.html" &#x000A;        [] &#x000A;        [:h1#output] &#x000A;        (content "Hello World!"))&#x000A;    </code></pre>
    <p>Completely understanding the code above is not important, but you’ll probably recognize the <code>h1#output</code> argument as a CSS selector. In this example, a template named <code>helloworld</code> is being defined, in which the <code>h1#output</code> element’s content is replaced by “Hello World!” When executed, this template would output the following:</p>
    <pre><code>&#x000A;    &lt;html&gt;&#x000A;    	&lt;body&gt;&#x000A;    		&lt;h1 id="output"&gt;Hello World&lt;/h1&gt;&#x000A;    	&lt;/body&gt;&#x000A;    &lt;/html&gt;&#x000A;    </code></pre>
    <p>For more on Enlive, I recommend David Nolen’s <a href="https://github.com/swannodette/enlive-tutorial" rel="nofollow external" class="bo">excellent tutorial</a>. But the key point is that content and presentation have been decoupled. Website changes, A/B tests and even a redesign could be as easy as getting new HTML from your designer and dropping it in. In addition, the designer doesn’t need to know anything about the templating language and may use HTML classes and IDs, concepts that they already know.</p>
    <p>While you don’t need to build a website in this way, the situation is analogous to building a Web page without a style sheet. True, you could design a page purely with inline styles (that is, using only the <code>style</code> attribute), and novice developers often code this way out of expediency. But experienced developers know that <strong>a style sheet improves workflow and productivity at scale</strong>.</p>
    <p>Similarly, by separating content and presentation, you will unlock more productivity and agility for your team. In effect, transformations truly separate the front end from the back end and create a new workspace for the visual design team to operate independently of the rest of the system. In an industry where even simple things like the <a href="http://blog.hubspot.com/blog/tabid/6307/bid/20566/The-Button-Color-A-B-Test-Red-Beats-Green.aspx" rel="nofollow external" class="bo">color of a button can affect conversion rates</a>, enabling your visual design team to iterate more quickly and continually could deliver tremendous value to the bottom line.</p>
    <h3>Responsive Retrofitting</h3>
    <p>Transformations are not just useful in a templating system. This decoupling of content and presentation can also be applied to an existing website, enabling developers to apply a new presentation regardless of how the original website was built. This combination of <strong>separating content and presentation and its applicability to existing websites</strong> is what makes transformations so powerful and useful to a broader audience than currently use them. I’ll illustrate this by responsively retrofitting an existing website using a transformation technology that’s in every browser today (at least for now), XSLT.</p>
    <p><a href="http://en.wikipedia.org/wiki/XSLT" rel="nofollow external" class="bo">XSLT</a> was introduced in the late 1990s as a language for transforming XML and XHTML documents. During the ascendency of XML, XSLT was seen as a solution for separating content and presentation in Web applications built on XML data formats. The W3C recommended XSLT as a standard, and almost every major browser incorporated support for some form of the language.</p>
    <p>Now that Google’s Chrome and Blink team has <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/zIg2KC7PyH0%5B51-75-false%5D" rel="nofollow external" class="bo">proposed</a> dropping support for XSLT, some might be concerned about using it long term. However, at the time of writing, XSLT is supported in all major browsers, including Chrome and the latest versions of the iPhone and Android browsers. In addition, XSLT may be used both server- and client-side. Server-side implementation works regardless of browser support, and open-source and commercial XSLT engines are available. Finally, JavaScript implementations of XSLT, such as <a href="http://www.saxonica.com/ce/index.xml" rel="nofollow external" class="bo">Saxon-CE</a>, could also fill the gap client-side if Google does indeed decide to drop support for XSLT.</p>
    <p>Responsive retrofitting is the process of grafting responsive Web design techniques onto an existing website that was not built to be responsive. Although a lot of resources and tutorials on building a responsive website from scratch are out there, retrofitting has curiously received far less attention, despite its enormous value. A lot more old websites exist than new ones, and significant capital and effort have been invested in them.</p>
    <p>A long responsive rebuild might not meet the budget or time-to-market requirements for many of these websites. Transformations provide <strong>an effective way to make a website responsive without the expense of rebuilding it</strong>.</p>
    <p>The natural first step would be to retrofit the website purely in CSS. <a href="https://github.com/sparkbox/Responsive-Retrofitting" rel="nofollow external" class="bo">Ben Callahan’s bookmarklet</a> for example, inserts a custom CSS file to make a given website more responsive. However, adding CSS gets you only so far. Eventually, the layout, nesting and order of elements in the original HTML will restrict your design options. <a href="http://www.xmlbook.info/9-XSL-XSLT.phtml" rel="nofollow external" class="bo">John Shirrel describes this</a> as an inherent flaw of CSS:</p>
    <blockquote>
    <p>“You have discovered the weakness of using CSS… CSS does not allow you to transform your document. Elements must remain in the order they appear… There is no real decision-making power in CSS.”</p>
    </blockquote>
    <p>Fundamentally, this process breaks down because CSS and HTML do not purely separate presentation and content. Whenever you’ve found yourself needing to wrap an element in an extra <code>div</code> or <code>span</code> to make the design work, you’ve encountered that breakdown. This is where transformations come in, restoring the abstraction (surprisingly) by enabling us to manipulate the document.</p>
    <p>To demonstrate the technique, I’ve created an <a href="https://s3-us-west-1.amazonaws.com/smashing/hacker-news-xhtml-xslt-stylesheet.xml" rel="nofollow external" class="bo">sample retrofit</a> of Hacker News’ home page, by making the top navigation responsive, using ZURB’s <a href="http://foundation.zurb.com/" rel="nofollow external" class="bo">Foundation</a> framework. Naturally, additional design changes beyond these would be required, but it should serve to illustrate the process. Why Hacker News? First, using code from a real website helps to demonstrate the power of the technique. Secondly, the HTML on this website is Goldilocks-sized: not so small that it’s a toy, but not so big as to make our example complicated.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-3-hackernews-500-opt.png" width="270" height="480" alt="Hacker News' HTML, with Foundation's responsive top bar added by transformations" style="max-width: 100%; height: auto;"><br>
    <em>Hacker News’ HTML, with Foundation’s responsive top bar added by transformations.</em></p>
    <p>The most relevant file in this retrofit is the XSL style sheet <code>transformer.xsl</code>, which you can <a href="https://s3-us-west-1.amazonaws.com/smashing/transformer.xsl" rel="nofollow external" class="bo">download directly</a>. In the paragraphs below, we’ll highlight some key points about the code in <code>transformer.xsl</code>. While a full explanation of XSLT is beyond the scope of this article, a quick crash course should make these explanations more understandable:</p>
    <ul>
    <li>
    <strong>Syntax</strong><br>
    The XSLT programming language is written in a form of XML. For example, an <code>if</code> statement in XSLT would be <code>&lt;xsl:if&gt;&lt;/xsl:if&gt;</code> element.</li>
    <li>
    <strong>Parameters</strong><br>
    Parameters to statements like <code>&lt;xsl:if&gt;</code> are specified in the attributes and child nodes of the element.</li>
    <li>
    <strong>Matching elements</strong><br>
    A common parameter is the <code>match</code> attribute, which selects a collection of nodes. For example, the template specified by the <code>&lt;xsl:template match="body/center"&gt;</code> rule would be applied when the XSLT engine encounters the <code>&lt;center&gt;</code> element that is the child of the <code>&lt;body&gt;</code>.</li>
    <li>
    <strong>Embedding HTML</strong><br>
    Finally, you can embed bare HTML in a style sheet.</li>
    </ul>
    <p>The first thing we need to do is tell the browser to use the rules in <code>transformer.xsl</code>. To do this, we change the document’s <code>Content-Type</code> to <code>text/xml</code> (alternatively, in some browsers, you can simply change the file’s extension from <code>.html</code> to <code>.xml</code>) and add an <code>&lt;?xml-stylesheet&gt;</code> tag like the following to the top of the document:</p>
    <pre><code>&#x000A;    &lt;?xml-stylesheet type="text/xsl" href="transformer.xsl"?&gt;&#x000A;    </code></pre>
    <p>When the browser encounters this tag, it will transform the document according the XSLT rules specified in the style sheet before rendering it. This will execute the transformation in the browser (i.e. client-side). But <strong>transformations can also be performed server-side</strong>. Doing transformations server-side could result in better performance, but we’re doing transformations client-side to make our example accessible to anyone with a browser. For those interested in using this technique client-side, <a href="http://stackoverflow.com/questions/434976/how-do-i-profile-and-optimize-an-xslt" rel="nofollow external" class="bo">optimization techniques and tools</a> are available for writing performant XSLT.</p>
    <p>Another issue is how XSLT handles unspecified elements. By default, XSLT strips out any elements not specified in the transformation rules. This is a design decision that makes sense for XML documents, which typically represent data. However, when transforming a fully formed Web page, you will usually want to change only a relatively small part of the document, and specifying every single element we need to be preserved would be laborious. Thankfully, we can add a construct called the <a href="http://en.wikipedia.org/wiki/Identity_transform" rel="nofollow external" class="bo">identity transform</a> to the <code>transformer.xsl</code> style sheet:</p>
    <pre><code>&#x000A;    &lt;!-- XSLT identity transform allows most of the input to pass through to the output. --&gt;&#x000A;    &lt;xsl:template match="@* | node()"&gt;&#x000A;      &lt;xsl:copy&gt;&#x000A;        &lt;xsl:apply-templates select="@* | node()"/&gt;&#x000A;      &lt;/xsl:copy&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>The code above might appear cryptic, but in essence it tells the XSLT engine to copy (i.e. <code>&lt;xsl:copy&gt;</code>) every element node and attribute in the input to the output. Adding this to our style sheet will effectively change the default behavior from stripping out elements to passing them through.</p>
    <p>The next step is to add Foundation to the document. For example, the following code would add Foundation’s CSS (<code>foundation.css</code>) and its dependencies (<code>normalize.css</code> and Modernizr) to the top of the <code>&lt;head&gt;</code>:</p>
    <pre><code>&#x000A;    &lt;!-- Install and initialize Foundation --&gt;&#x000A;    &lt;!-- Note the match attribute targeting the document's head element --&gt;&#x000A;    &lt;xsl:template match="head"&gt;&#x000A;      &lt;link rel="stylesheet" href="normalize.css" /&gt;&#x000A;      &lt;link rel="stylesheet" href="foundation.css" /&gt;    &#x000A;      &lt;script src="custom.modernizr.js"&gt;&lt;/script&gt;&#x000A;      &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>Likewise, to add Foundation to the bottom of the <code>&lt;body&gt;</code> element, you would write this:</p>
    <pre><code>&#x000A;    &lt;xsl:template match="body"&gt;&#x000A;      &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;      &lt;script src="zepto.js"&gt;&lt;/script&gt;&#x000A;      &lt;script src="foundation.min.js"&gt;&lt;/script&gt;&#x000A;      &lt;script&gt;$(document).foundation();&lt;/script&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>The chief difference between the two code samples above are the <code>match</code> attribute values (<code>head</code> versus <code>body</code>, indicating the element being targeted) and the placement of the <code>&lt;xsl:apply-templates&gt;</code> tag (which controls whether our new content will appear before or after the existing content).</p>
    <p>Finally, to add the responsive header, we inline new HTML that matches the structure of <a href="http://foundation.zurb.com/docs/components/top-bar.html" rel="nofollow external" class="bo">Foundation’s top bar</a>, and we use the <code>for-each</code> and <code>copy-of</code> commands to populate it with the relevant links from the existing header.</p>
    <pre><code>&#x000A;    &lt;!-- Add our Foundation top bar --&gt;&#x000A;       &lt;xsl:template match="body/center"&gt;&#x000A;         &lt;nav class="top-bar"&gt;&#x000A;    	&#x000A;    	&lt;!-- Boilerplate removed for clarity --&gt;&#x000A;    &#x000A;            &lt;section class="top-bar-section"&gt;&#x000A;              &lt;ul class="right"&gt;&#x000A;    &#x000A;                &lt;!-- Pull the menu links from the old header into our new Foundation header --&gt;&#x000A;                &lt;xsl:for-each select="//span[@class='pagetop']/a"&gt;&#x000A;                  &lt;li&gt;&lt;xsl:copy-of select="." /&gt;&lt;/li&gt;&#x000A;                &lt;/xsl:for-each&gt;&#x000A;    &#x000A;              &lt;/ul&gt;&#x000A;            &lt;/section&gt;&#x000A;         &lt;/nav&gt;&#x000A;         &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;       &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>There are <strong>some caveats to this approach the reader should be aware of</strong>. First, in this retrofitting example the transformations were performed by the browser but executing the transformations server-side has a couple of advantages. Server-side transformation reduces the burden on mobile devices, which have less processing, power, and memory capabilities than the server.</p>
    <p>The server is also the appropriate place to segment your content to avoid sending unnecessary data over the network and to improve performance. Lastly, you can update the server transformation engine and keep it consistent, instead of dealing with potentially different quirks and levels of XSLT support among browsers. (For example, while XSLT 1.0 is supported in most browsers, XSLT 2.0 is not supported in any, although Saxon-CE is one attempt to add it via JavaScript.)</p>
    <p>Second, XSLT’s roots in functional programming make it inaccessible to the average Web developer. It isn’t simply a matter of learning a new syntax. <strong>The recursive processing model of XSLT requires a new way of thinking</strong> that is unfamiliar to developers of imperative languages, especially developers from a design background who do not have formal training in computer science.</p>
    <p>Finally, a larger challenge is that this technique works only for Web pages that are in XHTML (a flavor of HTML that is XML-compliant), because XSLT can transform only XML, not HTML. According to W3Techs, <a href="http://w3techs.com/technologies/details/ml-xhtml/all/all" rel="nofollow external" class="bo">55% of websites are in XHTML</a>. While this is a majority, it still leaves out a large number of websites. In fact, for this retrofitting example, I worked around this limitation by running Hacker News’ HTML code through an <a href="http://www.it.uc3m.es/jaf/html2xhtml/" rel="nofollow external" class="bo">HTML to XHTML converter</a>.</p>
    <p>In the next section, we’ll explore how the Tritium transformation language was built to address these issues.</p>
    <h3>Responsive Delivery</h3>
    <p>In the example above, we’ve used transformations in the browser to create a responsive experience for an existing website, but conceptually the two approaches overlap. Because responsive Web design is itself about <strong>changing presentation across multiple screen sizes</strong>, transformations can help in that process as well. Instead of simply pairing different CSS styles to the same fixed HTML as in typical responsive design, we can leverage transformations to change the HTML across devices.</p>
    <p>As we explored earlier, the ability to manipulate the HTML (which is missing from CSS alone) not only creates flexibility but actually improves the separation between presentation and content. As a result, maintainability becomes easier because the content is more semantic and less tied to layout. In essence, think of this as moving the breakpoints in responsive design to the transformation layer.</p>
    <p>At <a href="http://www.moovweb.com/?utm_source=d_smashingmag&amp;utm_medium=d_article&amp;utm_campaign=d_smashingmag" rel="nofollow external" class="bo">Moovweb</a>, we’ve leveraged these insights about transformations to implement a technique called responsive delivery, which draws inspiration from responsive Web design, RESS and adaptive design. With responsive delivery, transformations are used to adapt an existing website to different touch points, such as smartphones and tablets.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-opt.jpg" width="500" height="200" alt="TThe data flow in this responsive delivery configuration transforms desktop HTML for mobile and tablet end points." style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow in this responsive delivery configuration transforms desktop HTML for mobile and tablet end points. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>Because the transformed website inherits directly from the desktop, responsive delivery provides the unified content and functionality across touch points that you get with responsive Web design, while the majority of the processing is done server-side. And because <strong>transformations can be used to manipulate the HTML</strong>, we get the benefits that we saw earlier: independent and precise control over the look and feel for each touch point, thanks to an abstraction that separates content from layout.</p>
    <p>In some sense, we can think of responsive delivery as part of a larger trend of <a href="http://www.slideshare.net/yiibu/adaptation-why-responsive-design-actually-begins-on-the-server/" rel="nofollow external" class="bo">weaving adaptive design techniques</a> into responsive design and moving more processing to the server, as in <a href="http://www.lukew.com/ff/entry.asp?1392" rel="nofollow external" class="bo">RESS</a>.</p>
    <p>Also worth noting is that responsive delivery can power desktop websites. In the ideal scenario, the back end would produce semantic but unstyled HTML (affectionately called “wireframe HTML”), and the responsive delivery layer would transform the output for all user touch points.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-opt.jpg" width="500" height="255" alt="The data flow in this responsive delivery configuration uses wireframe HTML as the source data for transformations that output to mobile, tablet, app and desktop end points." style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow in this responsive delivery configuration uses wireframe HTML as the source data for transformations that output to mobile, tablet, app and desktop end points. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>Especially in large organizations, this makes for a powerful decoupling of teams. Back-end engineers can focus purely on functionality (i.e. producing the “wireframe HTML”), and front-end designers can focus on the experience (i.e. transforming the wireframe HTML into a styled Web page). Because the channel between both teams is simply HTML, both teams understand it, and passing through implementation details that are inherited by the front end (such as styles and JavaScript) becomes easy.</p>
    <p><strong>Consider a simple autocomplete widget.</strong> With a responsive delivery approach, the back-end engineer would write the server code to support an autocomplete API and embed the corresponding JavaScript that powers the widget in the wireframe HTML. The designer could then style the widget using CSS and transformations and, if necessary, add JavaScript beyond the stub provided by the back-end engineer. The key point is that HTML is used as a flexible carrier of both content and functionality, as opposed to XML or JSON, which represent only data.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-opt.jpg" width="500" height="255" alt="Shown here are the wireframe HTML and the transformed mobile and desktop output used to power Remix Moovweb." style="max-width: 100%; height: auto;"></a><br>
    <em>Shown here are the <a href="http://kirby-production.herokuapp.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">wireframe HTML</a> and the transformed <a href="http://m.remix.moovweb.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">mobile</a> and <a href="http://remix.moovweb.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">desktop</a> output used to power Remix Moovweb. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>One way of applying this approach is to use a software-as-a-service platform to process transformations in the cloud. This is the service that we built at Moovweb to power mobile websites and apps for Macy’s and 1-800-Flowers, among others, using our own open-source transformation language, called Tritium. Tritium was designed by Hampton Catlin, inventor of the CSS preprocessor <a href="http://sass-lang.com/" rel="nofollow external" class="bo">Sass</a>. He used his experience to create a transformation language that’s accessible to Web designers and developers. Some features that we felt would be important to the language are the following:</p>
    <ul>
    <li>
    <strong>Familiar syntax</strong><br>
    The syntax should be similar to CSS and jQuery so that it’s more familiar and readable than XSLT’s XML syntax.</li>
    <li>
    <strong>Imperative style</strong><br>
    We wanted to use an imperative programming style, instead of the function and recursive processing model of XSLT.</li>
    <li>
    <strong>Input transparency</strong><br>
    The input is passed directly to the output, so there is no need for a construct like the identity transformation (as is the case with XSLT). Stated differently, the identity transformation is an empty document.</li>
    <li>
    <strong>HTML-compatible</strong><br>
    Tritium was designed to process regular HTML, so it can be used on any website, not just XHTML websites (as with XSLT).</li>
    </ul>
    <p>For a simple “Hello world” example, the following Tritium script will select all of the HTML table elements with an ID of <code>foo</code> and change their <code>width</code> attributes to <code>100%</code>:</p>
    <pre><code>&#x000A;    # Select all HTML nodes that are table elements with ID of foo.&#x000A;    &#x000A;    # The $$() function takes a regular CSS selector&#x000A;    $$("table#foo") {&#x000A;            # change the width attributes to "100%""&#x000A;            attribute("width", "100%")&#x000A;    }&#x000A;    </code></pre>
    <p>The Tritium language has its own <a href="http://tritium.io" rel="nofollow external" class="bo">official website</a>, and Moovweb has scheduled to open-source the language in 2014. Developers interested in contributing are encouraged to check out the public <a href="https://github.com/moovweb/tritium" rel="nofollow external" class="bo">GitHub repository</a> for the core Tritium parser library.</p>
    <p>To compare an example, the analogous Tritium code for adding Foundation to an HTML document, as we did earlier with XSLT, would be this:</p>
    <pre><code>&#x000A;      # Install Foundation in the document&#x000A;      $$("head") {&#x000A;        inject_top('&lt;link rel="stylesheet" href="normalize.css" /&gt;&#x000A;                    &lt;link rel="stylesheet" href="foundation.css" /&gt;&#x000A;                    &lt;script src="custom.modernizr.js"&gt;&lt;/script&gt;')&#x000A;      }&#x000A;      $$("body") {&#x000A;        inject_bottom('&lt;script src="zepto.js"&gt;&lt;/script&gt;&#x000A;                       &lt;script src="foundation.min.js"&gt;&lt;/script&gt;&#x000A;                       &lt;script&gt;$(document).foundation();&lt;/script&gt;')&#x000A;      }   &#x000A;    </code></pre>
    <p>Recall that, in the case of XSLT, the relative placement of new content in the document relies on the judicious placement of the <code>&lt;xsl:apply-templates&gt;</code> tag. However, in the Tritium code just above, the straightforwardly named functions <code>inject_top</code> and <code>inject_bottom</code> are used to insert the boilerplate HTML that installs Foundation.</p>
    <p>In practice, the Moovweb SDK offers a <a href="http://developer.moovweb.com/training/advanced/foundation" rel="nofollow external" class="bo">Foundation scaffold</a> that installs the Foundation boilerplate for you. The scaffold also offers convenience functions to use other components in the Foundation framework. For example, we would use the following functions to create the responsive top bar for Hacker News:</p>
    <pre><code>foundation.tbar() {&#x000A;      foundation.tbar_title("Hacker News", "", "menu-icon")&#x000A;      foundation.tbar_section("right") {&#x000A;        move_here("//span[@class='pagetop']//a"){&#x000A;          wrap("li")&#x000A;        }&#x000A;      }&#x000A;    }&#x000A;    </code></pre>
    <p>As in the XSLT example, the XPath selector <code>"//span[@class='pagetop']//a"</code> is used to select the links for the menu, but the <code>foundation.tbar*()</code> convenience functions make it easier and spare us from having to know the details of the top bar’s HTML format.</p>
    <p>As a final example, a full project implementing the responsive retrofit of Hacker News with Tritium is <a href="https://github.com/moovweb-demos/responsive-retrofit-example" rel="nofollow external" class="bo">available on GitHub</a> for you to run and play with using the Moovweb SDK. Unlike the XSLT version, which uses HTML downloaded from Hacker News (due to the need to run it through an XHTML converter), you can run this project with the live version of the website.</p>
    <h3>Transform Your Thinking</h3>
    <p>Closures once sat obscurely in functional languages until languages such as JavaScript and Ruby brought them into the mainstream. Likewise, transformations have been buried in frameworks that are alien to the average developer, and the popularity of the transformation approach has been married to the fate of XSLT.</p>
    <p>This is unfortunate because transformations are more about a new way of thinking than about any particular technology. They <strong>enable a powerful separation of content and logic from presentation</strong>, and the usefulness of this separation is important in a number of ways. As we move into the post-PC era, transformations provide one part of the answer to serving websites across a wide array of form factors.</p>
    <p>Furthermore, the separation enabled by transformations enhances productivity and accelerates the iteration cycle for visual design teams. Meanwhile, for developers who rearrange DOM objects via JavaScript or jQuery, transformations are a new lens on their current workflow, and they open up new doors to optimizing tasks, such as server-side transformation.</p>
    <p>In an industry that has no shortage of new ideas, sometimes the most useful thing is to connect new concepts with old ones to make them more digestible. That is what this article has tried to do with transformations. Hopefully, we’ve demonstrated the power of thinking in transformations, showing its relevance to anyone who works with HTML.</p>
    <p><em>(al, ea)</em></p>
    <hr>
    <p><small>© Ishan Anand for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2014.</small></p>
    </div>
]]>
</Body>
<Summary>        To most Web developers, it sounds controversial until you hear the punchline: Last summer, the developers in charge of Google’s Chrome browser floated a proposal that went virtually...</Summary>
<Website>http://www.smashingmagazine.com/2014/02/06/applying-xsl-transformations-to-responsive-web-design/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41068/guest@my.umbc.edu/63f7db90ef4e95ef13383989c43a175a/api/pixel</TrackingUrl>
<Tag>content</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mobile</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>techniques</Tag>
<Tag>web</Tag>
<Tag>web-design</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, 06 Feb 2014 05:13:14 -0500</PostedAt>
<EditAt>Thu, 06 Feb 2014 05:13:14 -0500</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="41067" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41067">
<Title>Applying XSLT Transforms For Responsive Web Design</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>To most Web developers, it sounds controversial until you hear the punchline: Last summer, the developers in charge of Google’s Chrome browser floated a <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/zIg2KC7PyH0" rel="nofollow external" class="bo">proposal</a> that went virtually unnoticed by the technology press, which was to remove support for an established W3C standard that every other browser vendor still supports. The standard in question? Extensible Stylesheet Language Transformations, otherwise known as XSLT.</p>
    <p>In reaction to this news, most Web developers would likely shrug and say “So what?” That’s unfortunate.</p>
    <p>Transformations are a simple yet <strong>powerful technique for separating content and presentation</strong> in Web applications. Yet, outside of enterprise and data-processing circles, transformations have failed to gain popularity through XSLT. As a result, Web developers are liable to think that transformations “don’t apply to me,” even though they work with HTML, a structured format ripe for transformation. Thankfully, new transformation frameworks are on the horizon, including work by the inventor of Sass, that hold the promise of a revival.</p>
    <p>In this article, we will reintroduce transformations and explore their applications to mobile and responsive design. We will not only teach the old dog new tricks, but show that transformations are relevant to everyone who deals with HTML.</p>
    <h3>Separating Content And Presentation</h3>
    <p>A transformation is simply a system that transforms its input into an output according to a set of predefined rules.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-opt.jpg" width="500" height="130" alt="The data flow of a transform" style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow of a transformation. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-1-transform-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>The key thing about transformations isn’t the action they perform but the capability they enable. Transformations create an <strong>abstraction that decouples content and functionality from presentation.</strong> This separation is a design goal of many frameworks, but transformations facilitate it in powerful and unique ways.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-opt.jpg" width="500" height="150" alt="The transformation data flow recast as a separation of concerns" style="max-width: 100%; height: auto;"></a><br>
    <em>The transformation data flow recast as a separation of concerns. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-2-separation-of-concerns-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>A powerful example of this decoupling occurs in <a href="https://github.com/cgrand/enlive" rel="nofollow external" class="bo">Enlive</a>, a transformation and templating system written in Clojure. Most templating engines use a customized markup language to mix HTML with programming constructs such as loops and variables. Take PHP, for example:</p>
    <pre><code>&lt;ul&gt;&#x000A;      &lt;?php foreach ($task_list as $task) { ?&gt; &#x000A;        &lt;li&gt; &lt;?php echo $task ?&gt; &lt;/li&gt;&#x000A;      &lt;?php } ?&gt; &#x000A;    &lt;/ul&gt;&#x000A;    </code></pre>
    <p>By contrast, Enlive templates use the same plain old HTML that you would get from your designer or PSD slicer. For example, a simple <code>hello-world.html</code> Enlive template might look like this:</p>
    <pre><code>&#x000A;    &lt;html&gt;&#x000A;    	&lt;body&gt;&#x000A;    		&lt;h1 id="output"&gt;Lorem Ipsum&lt;/h1&gt;&#x000A;    	&lt;/body&gt;&#x000A;    &lt;/html&gt; &#x000A;    </code></pre>
    <p>Instead of embedding logic in the markup, Clojure code that is associated with the HTML transforms it into output:</p>
    <pre><code>&#x000A;      (deftemplate helloworld &#x000A;        "hello-world.html" &#x000A;        [] &#x000A;        [:h1#output] &#x000A;        (content "Hello World!"))&#x000A;    </code></pre>
    <p>Completely understanding the code above is not important, but you’ll probably recognize the <code>h1#output</code> argument as a CSS selector. In this example, a template named <code>helloworld</code> is being defined, in which the <code>h1#output</code> element’s content is replaced by “Hello World!” When executed, this template would output the following:</p>
    <pre><code>&#x000A;    &lt;html&gt;&#x000A;    	&lt;body&gt;&#x000A;    		&lt;h1 id="output"&gt;Hello World&lt;/h1&gt;&#x000A;    	&lt;/body&gt;&#x000A;    &lt;/html&gt;&#x000A;    </code></pre>
    <p>For more on Enlive, I recommend David Nolen’s <a href="https://github.com/swannodette/enlive-tutorial" rel="nofollow external" class="bo">excellent tutorial</a>. But the key point is that content and presentation have been decoupled. Website changes, A/B tests and even a redesign could be as easy as getting new HTML from your designer and dropping it in. In addition, the designer doesn’t need to know anything about the templating language and may use HTML classes and IDs, concepts that they already know.</p>
    <p>While you don’t need to build a website in this way, the situation is analogous to building a Web page without a style sheet. True, you could design a page purely with inline styles (that is, using only the <code>style</code> attribute), and novice developers often code this way out of expediency. But experienced developers know that <strong>a style sheet improves workflow and productivity at scale</strong>.</p>
    <p>Similarly, by separating content and presentation, you will unlock more productivity and agility for your team. In effect, transformations truly separate the front end from the back end and create a new workspace for the visual design team to operate independently of the rest of the system. In an industry where even simple things like the <a href="http://blog.hubspot.com/blog/tabid/6307/bid/20566/The-Button-Color-A-B-Test-Red-Beats-Green.aspx" rel="nofollow external" class="bo">color of a button can affect conversion rates</a>, enabling your visual design team to iterate more quickly and continually could deliver tremendous value to the bottom line.</p>
    <h3>Responsive Retrofitting</h3>
    <p>Transformations are not just useful in a templating system. This decoupling of content and presentation can also be applied to an existing website, enabling developers to apply a new presentation regardless of how the original website was built. This combination of <strong>separating content and presentation and its applicability to existing websites</strong> is what makes transformations so powerful and useful to a broader audience than currently use them. I’ll illustrate this by responsively retrofitting an existing website using a transformation technology that’s in every browser today (at least for now), XSLT.</p>
    <p><a href="http://en.wikipedia.org/wiki/XSLT" rel="nofollow external" class="bo">XSLT</a> was introduced in the late 1990s as a language for transforming XML and XHTML documents. During the ascendency of XML, XSLT was seen as a solution for separating content and presentation in Web applications built on XML data formats. The W3C recommended XSLT as a standard, and almost every major browser incorporated support for some form of the language.</p>
    <p>Now that Google’s Chrome and Blink team has <a href="https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/zIg2KC7PyH0%5B51-75-false%5D" rel="nofollow external" class="bo">proposed</a> dropping support for XSLT, some might be concerned about using it long term. However, at the time of writing, XSLT is supported in all major browsers, including Chrome and the latest versions of the iPhone and Android browsers. In addition, XSLT may be used both server- and client-side. Server-side implementation works regardless of browser support, and open-source and commercial XSLT engines are available. Finally, JavaScript implementations of XSLT, such as <a href="http://www.saxonica.com/ce/index.xml" rel="nofollow external" class="bo">Saxon-CE</a>, could also fill the gap client-side if Google does indeed decide to drop support for XSLT.</p>
    <p>Responsive retrofitting is the process of grafting responsive Web design techniques onto an existing website that was not built to be responsive. Although a lot of resources and tutorials on building a responsive website from scratch are out there, retrofitting has curiously received far less attention, despite its enormous value. A lot more old websites exist than new ones, and significant capital and effort have been invested in them.</p>
    <p>A long responsive rebuild might not meet the budget or time-to-market requirements for many of these websites. Transformations provide <strong>an effective way to make a website responsive without the expense of rebuilding it</strong>.</p>
    <p>The natural first step would be to retrofit the website purely in CSS. <a href="https://github.com/sparkbox/Responsive-Retrofitting" rel="nofollow external" class="bo">Ben Callahan’s bookmarklet</a> for example, inserts a custom CSS file to make a given website more responsive. However, adding CSS gets you only so far. Eventually, the layout, nesting and order of elements in the original HTML will restrict your design options. <a href="http://www.xmlbook.info/9-XSL-XSLT.phtml" rel="nofollow external" class="bo">John Shirrel describes this</a> as an inherent flaw of CSS:</p>
    <blockquote>
    <p>“You have discovered the weakness of using CSS… CSS does not allow you to transform your document. Elements must remain in the order they appear… There is no real decision-making power in CSS.”</p>
    </blockquote>
    <p>Fundamentally, this process breaks down because CSS and HTML do not purely separate presentation and content. Whenever you’ve found yourself needing to wrap an element in an extra <code>div</code> or <code>span</code> to make the design work, you’ve encountered that breakdown. This is where transformations come in, restoring the abstraction (surprisingly) by enabling us to manipulate the document.</p>
    <p>To demonstrate the technique, I’ve created an <a href="https://s3-us-west-1.amazonaws.com/smashing/hacker-news-xhtml-xslt-stylesheet.xml" rel="nofollow external" class="bo">sample retrofit</a> of Hacker News’ home page, by making the top navigation responsive, using ZURB’s <a href="http://foundation.zurb.com/" rel="nofollow external" class="bo">Foundation</a> framework. Naturally, additional design changes beyond these would be required, but it should serve to illustrate the process. Why Hacker News? First, using code from a real website helps to demonstrate the power of the technique. Secondly, the HTML on this website is Goldilocks-sized: not so small that it’s a toy, but not so big as to make our example complicated.</p>
    <p><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-3-hackernews-500-opt.png" width="270" height="480" alt="Hacker News' HTML, with Foundation's responsive top bar added by transformations" style="max-width: 100%; height: auto;"><br>
    <em>Hacker News’ HTML, with Foundation’s responsive top bar added by transformations.</em></p>
    <p>The most relevant file in this retrofit is the XSL style sheet <code>transformer.xsl</code>, which you can <a href="https://s3-us-west-1.amazonaws.com/smashing/transformer.xsl" rel="nofollow external" class="bo">download directly</a>. In the paragraphs below, we’ll highlight some key points about the code in <code>transformer.xsl</code>. While a full explanation of XSLT is beyond the scope of this article, a quick crash course should make these explanations more understandable:</p>
    <ul>
    <li>
    <strong>Syntax</strong><br>
    The XSLT programming language is written in a form of XML. For example, an <code>if</code> statement in XSLT would be <code>&lt;xsl:if&gt;&lt;/xsl:if&gt;</code> element.</li>
    <li>
    <strong>Parameters</strong><br>
    Parameters to statements like <code>&lt;xsl:if&gt;</code> are specified in the attributes and child nodes of the element.</li>
    <li>
    <strong>Matching elements</strong><br>
    A common parameter is the <code>match</code> attribute, which selects a collection of nodes. For example, the template specified by the <code>&lt;xsl:template match="body/center"&gt;</code> rule would be applied when the XSLT engine encounters the <code>&lt;center&gt;</code> element that is the child of the <code>&lt;body&gt;</code>.</li>
    <li>
    <strong>Embedding HTML</strong><br>
    Finally, you can embed bare HTML in a style sheet.</li>
    </ul>
    <p>The first thing we need to do is tell the browser to use the rules in <code>transformer.xsl</code>. To do this, we change the document’s <code>Content-Type</code> to <code>text/xml</code> (alternatively, in some browsers, you can simply change the file’s extension from <code>.html</code> to <code>.xml</code>) and add an <code>&lt;?xml-stylesheet&gt;</code> tag like the following to the top of the document:</p>
    <pre><code>&#x000A;    &lt;?xml-stylesheet type="text/xsl" href="transformer.xsl"?&gt;&#x000A;    </code></pre>
    <p>When the browser encounters this tag, it will transform the document according the XSLT rules specified in the style sheet before rendering it. This will execute the transformation in the browser (i.e. client-side). But <strong>transformations can also be performed server-side</strong>. Doing transformations server-side could result in better performance, but we’re doing transformations client-side to make our example accessible to anyone with a browser. For those interested in using this technique client-side, <a href="http://stackoverflow.com/questions/434976/how-do-i-profile-and-optimize-an-xslt" rel="nofollow external" class="bo">optimization techniques and tools</a> are available for writing performant XSLT.</p>
    <p>Another issue is how XSLT handles unspecified elements. By default, XSLT strips out any elements not specified in the transformation rules. This is a design decision that makes sense for XML documents, which typically represent data. However, when transforming a fully formed Web page, you will usually want to change only a relatively small part of the document, and specifying every single element we need to be preserved would be laborious. Thankfully, we can add a construct called the <a href="http://en.wikipedia.org/wiki/Identity_transform" rel="nofollow external" class="bo">identity transform</a> to the <code>transformer.xsl</code> style sheet:</p>
    <pre><code>&#x000A;    &lt;!-- XSLT identity transform allows most of the input to pass through to the output. --&gt;&#x000A;    &lt;xsl:template match="@* | node()"&gt;&#x000A;      &lt;xsl:copy&gt;&#x000A;        &lt;xsl:apply-templates select="@* | node()"/&gt;&#x000A;      &lt;/xsl:copy&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>The code above might appear cryptic, but in essence it tells the XSLT engine to copy (i.e. <code>&lt;xsl:copy&gt;</code>) every element node and attribute in the input to the output. Adding this to our style sheet will effectively change the default behavior from stripping out elements to passing them through.</p>
    <p>The next step is to add Foundation to the document. For example, the following code would add Foundation’s CSS (<code>foundation.css</code>) and its dependencies (<code>normalize.css</code> and Modernizr) to the top of the <code>&lt;head&gt;</code>:</p>
    <pre><code>&#x000A;    &lt;!-- Install and initialize Foundation --&gt;&#x000A;    &lt;!-- Note the match attribute targeting the document's head element --&gt;&#x000A;    &lt;xsl:template match="head"&gt;&#x000A;      &lt;link rel="stylesheet" href="normalize.css" /&gt;&#x000A;      &lt;link rel="stylesheet" href="foundation.css" /&gt;    &#x000A;      &lt;script src="custom.modernizr.js"&gt;&lt;/script&gt;&#x000A;      &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>Likewise, to add Foundation to the bottom of the <code>&lt;body&gt;</code> element, you would write this:</p>
    <pre><code>&#x000A;    &lt;xsl:template match="body"&gt;&#x000A;      &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;      &lt;script src="zepto.js"&gt;&lt;/script&gt;&#x000A;      &lt;script src="foundation.min.js"&gt;&lt;/script&gt;&#x000A;      &lt;script&gt;$(document).foundation();&lt;/script&gt;&#x000A;    &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>The chief difference between the two code samples above are the <code>match</code> attribute values (<code>head</code> versus <code>body</code>, indicating the element being targeted) and the placement of the <code>&lt;xsl:apply-templates&gt;</code> tag (which controls whether our new content will appear before or after the existing content).</p>
    <p>Finally, to add the responsive header, we inline new HTML that matches the structure of <a href="http://foundation.zurb.com/docs/components/top-bar.html" rel="nofollow external" class="bo">Foundation’s top bar</a>, and we use the <code>for-each</code> and <code>copy-of</code> commands to populate it with the relevant links from the existing header.</p>
    <pre><code>&#x000A;    &lt;!-- Add our Foundation top bar --&gt;&#x000A;       &lt;xsl:template match="body/center"&gt;&#x000A;         &lt;nav class="top-bar"&gt;&#x000A;    	&#x000A;    	&lt;!-- Boilerplate removed for clarity --&gt;&#x000A;    &#x000A;            &lt;section class="top-bar-section"&gt;&#x000A;              &lt;ul class="right"&gt;&#x000A;    &#x000A;                &lt;!-- Pull the menu links from the old header into our new Foundation header --&gt;&#x000A;                &lt;xsl:for-each select="//span[@class='pagetop']/a"&gt;&#x000A;                  &lt;li&gt;&lt;xsl:copy-of select="." /&gt;&lt;/li&gt;&#x000A;                &lt;/xsl:for-each&gt;&#x000A;    &#x000A;              &lt;/ul&gt;&#x000A;            &lt;/section&gt;&#x000A;         &lt;/nav&gt;&#x000A;         &lt;xsl:apply-templates select="@* | *"/&gt;&#x000A;       &lt;/xsl:template&gt;&#x000A;    </code></pre>
    <p>There are <strong>some caveats to this approach the reader should be aware of</strong>. First, in this retrofitting example the transformations were performed by the browser but executing the transformations server-side has a couple of advantages. Server-side transformation reduces the burden on mobile devices, which have less processing, power, and memory capabilities than the server.</p>
    <p>The server is also the appropriate place to segment your content to avoid sending unnecessary data over the network and to improve performance. Lastly, you can update the server transformation engine and keep it consistent, instead of dealing with potentially different quirks and levels of XSLT support among browsers. (For example, while XSLT 1.0 is supported in most browsers, XSLT 2.0 is not supported in any, although Saxon-CE is one attempt to add it via JavaScript.)</p>
    <p>Second, XSLT’s roots in functional programming make it inaccessible to the average Web developer. It isn’t simply a matter of learning a new syntax. <strong>The recursive processing model of XSLT requires a new way of thinking</strong> that is unfamiliar to developers of imperative languages, especially developers from a design background who do not have formal training in computer science.</p>
    <p>Finally, a larger challenge is that this technique works only for Web pages that are in XHTML (a flavor of HTML that is XML-compliant), because XSLT can transform only XML, not HTML. According to W3Techs, <a href="http://w3techs.com/technologies/details/ml-xhtml/all/all" rel="nofollow external" class="bo">55% of websites are in XHTML</a>. While this is a majority, it still leaves out a large number of websites. In fact, for this retrofitting example, I worked around this limitation by running Hacker News’ HTML code through an <a href="http://www.it.uc3m.es/jaf/html2xhtml/" rel="nofollow external" class="bo">HTML to XHTML converter</a>.</p>
    <p>In the next section, we’ll explore how the Tritium transformation language was built to address these issues.</p>
    <h3>Responsive Delivery</h3>
    <p>In the example above, we’ve used transformations in the browser to create a responsive experience for an existing website, but conceptually the two approaches overlap. Because responsive Web design is itself about <strong>changing presentation across multiple screen sizes</strong>, transformations can help in that process as well. Instead of simply pairing different CSS styles to the same fixed HTML as in typical responsive design, we can leverage transformations to change the HTML across devices.</p>
    <p>As we explored earlier, the ability to manipulate the HTML (which is missing from CSS alone) not only creates flexibility but actually improves the separation between presentation and content. As a result, maintainability becomes easier because the content is more semantic and less tied to layout. In essence, think of this as moving the breakpoints in responsive design to the transformation layer.</p>
    <p>At <a href="http://www.moovweb.com/?utm_source=d_smashingmag&amp;utm_medium=d_article&amp;utm_campaign=d_smashingmag" rel="nofollow external" class="bo">Moovweb</a>, we’ve leveraged these insights about transformations to implement a technique called responsive delivery, which draws inspiration from responsive Web design, RESS and adaptive design. With responsive delivery, transformations are used to adapt an existing website to different touch points, such as smartphones and tablets.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-opt.jpg" width="500" height="200" alt="TThe data flow in this responsive delivery configuration transforms desktop HTML for mobile and tablet end points." style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow in this responsive delivery configuration transforms desktop HTML for mobile and tablet end points. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-5-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>Because the transformed website inherits directly from the desktop, responsive delivery provides the unified content and functionality across touch points that you get with responsive Web design, while the majority of the processing is done server-side. And because <strong>transformations can be used to manipulate the HTML</strong>, we get the benefits that we saw earlier: independent and precise control over the look and feel for each touch point, thanks to an abstraction that separates content from layout.</p>
    <p>In some sense, we can think of responsive delivery as part of a larger trend of <a href="http://www.slideshare.net/yiibu/adaptation-why-responsive-design-actually-begins-on-the-server/" rel="nofollow external" class="bo">weaving adaptive design techniques</a> into responsive design and moving more processing to the server, as in <a href="http://www.lukew.com/ff/entry.asp?1392" rel="nofollow external" class="bo">RESS</a>.</p>
    <p>Also worth noting is that responsive delivery can power desktop websites. In the ideal scenario, the back end would produce semantic but unstyled HTML (affectionately called “wireframe HTML”), and the responsive delivery layer would transform the output for all user touch points.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-opt.jpg" width="500" height="255" alt="The data flow in this responsive delivery configuration uses wireframe HTML as the source data for transformations that output to mobile, tablet, app and desktop end points." style="max-width: 100%; height: auto;"></a><br>
    <em>The data flow in this responsive delivery configuration uses wireframe HTML as the source data for transformations that output to mobile, tablet, app and desktop end points. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-6-wireframe-responsive-delivery-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>Especially in large organizations, this makes for a powerful decoupling of teams. Back-end engineers can focus purely on functionality (i.e. producing the “wireframe HTML”), and front-end designers can focus on the experience (i.e. transforming the wireframe HTML into a styled Web page). Because the channel between both teams is simply HTML, both teams understand it, and passing through implementation details that are inherited by the front end (such as styles and JavaScript) becomes easy.</p>
    <p><strong>Consider a simple autocomplete widget.</strong> With a responsive delivery approach, the back-end engineer would write the server code to support an autocomplete API and embed the corresponding JavaScript that powers the widget in the wireframe HTML. The designer could then style the widget using CSS and transformations and, if necessary, add JavaScript beyond the stub provided by the back-end engineer. The key point is that HTML is used as a flexible carrier of both content and functionality, as opposed to XML or JSON, which represent only data.</p>
    <p><a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-large-opt.jpg" rel="nofollow external" class="bo"><img src="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-opt.jpg" width="500" height="255" alt="Shown here are the wireframe HTML and the transformed mobile and desktop output used to power Remix Moovweb." style="max-width: 100%; height: auto;"></a><br>
    <em>Shown here are the <a href="http://kirby-production.herokuapp.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">wireframe HTML</a> and the transformed <a href="http://m.remix.moovweb.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">mobile</a> and <a href="http://remix.moovweb.com/listrophy/desktop-kirby" rel="nofollow external" class="bo">desktop</a> output used to power Remix Moovweb. (<a href="http://media.smashingmagazine.com/wp-content/uploads/2014/02/transforms-7-wireframe-example-large-opt.jpg" rel="nofollow external" class="bo">Large view</a>)</em></p>
    <p>One way of applying this approach is to use a software-as-a-service platform to process transformations in the cloud. This is the service that we built at Moovweb to power mobile websites and apps for Macy’s and 1-800-Flowers, among others, using our own open-source transformation language, called Tritium. Tritium was designed by Hampton Catlin, inventor of the CSS preprocessor <a href="http://sass-lang.com/" rel="nofollow external" class="bo">Sass</a>. He used his experience to create a transformation language that’s accessible to Web designers and developers. Some features that we felt would be important to the language are the following:</p>
    <ul>
    <li>
    <strong>Familiar syntax</strong><br>
    The syntax should be similar to CSS and jQuery so that it’s more familiar and readable than XSLT’s XML syntax.</li>
    <li>
    <strong>Imperative style</strong><br>
    We wanted to use an imperative programming style, instead of the function and recursive processing model of XSLT.</li>
    <li>
    <strong>Input transparency</strong><br>
    The input is passed directly to the output, so there is no need for a construct like the identity transformation (as is the case with XSLT). Stated differently, the identity transformation is an empty document.</li>
    <li>
    <strong>HTML-compatible</strong><br>
    Tritium was designed to process regular HTML, so it can be used on any website, not just XHTML websites (as with XSLT).</li>
    </ul>
    <p>For a simple “Hello world” example, the following Tritium script will select all of the HTML table elements with an ID of <code>foo</code> and change their <code>width</code> attributes to <code>100%</code>:</p>
    <pre><code>&#x000A;    # Select all HTML nodes that are table elements with ID of foo.&#x000A;    &#x000A;    # The $$() function takes a regular CSS selector&#x000A;    $$("table#foo") {&#x000A;            # change the width attributes to "100%""&#x000A;            attribute("width", "100%")&#x000A;    }&#x000A;    </code></pre>
    <p>The Tritium language has its own <a href="http://tritium.io" rel="nofollow external" class="bo">official website</a>, and Moovweb has scheduled to open-source the language in 2014. Developers interested in contributing are encouraged to check out the public <a href="https://github.com/moovweb/tritium" rel="nofollow external" class="bo">GitHub repository</a> for the core Tritium parser library.</p>
    <p>To compare an example, the analogous Tritium code for adding Foundation to an HTML document, as we did earlier with XSLT, would be this:</p>
    <pre><code>&#x000A;      # Install Foundation in the document&#x000A;      $$("head") {&#x000A;        inject_top('&lt;link rel="stylesheet" href="normalize.css" /&gt;&#x000A;                    &lt;link rel="stylesheet" href="foundation.css" /&gt;&#x000A;                    &lt;script src="custom.modernizr.js"&gt;&lt;/script&gt;')&#x000A;      }&#x000A;      $$("body") {&#x000A;        inject_bottom('&lt;script src="zepto.js"&gt;&lt;/script&gt;&#x000A;                       &lt;script src="foundation.min.js"&gt;&lt;/script&gt;&#x000A;                       &lt;script&gt;$(document).foundation();&lt;/script&gt;')&#x000A;      }   &#x000A;    </code></pre>
    <p>Recall that, in the case of XSLT, the relative placement of new content in the document relies on the judicious placement of the <code>&lt;xsl:apply-templates&gt;</code> tag. However, in the Tritium code just above, the straightforwardly named functions <code>inject_top</code> and <code>inject_bottom</code> are used to insert the boilerplate HTML that installs Foundation.</p>
    <p>In practice, the Moovweb SDK offers a <a href="http://developer.moovweb.com/training/advanced/foundation" rel="nofollow external" class="bo">Foundation scaffold</a> that installs the Foundation boilerplate for you. The scaffold also offers convenience functions to use other components in the Foundation framework. For example, we would use the following functions to create the responsive top bar for Hacker News:</p>
    <pre><code>foundation.tbar() {&#x000A;      foundation.tbar_title("Hacker News", "", "menu-icon")&#x000A;      foundation.tbar_section("right") {&#x000A;        move_here("//span[@class='pagetop']//a"){&#x000A;          wrap("li")&#x000A;        }&#x000A;      }&#x000A;    }&#x000A;    </code></pre>
    <p>As in the XSLT example, the XPath selector <code>"//span[@class='pagetop']//a"</code> is used to select the links for the menu, but the <code>foundation.tbar*()</code> convenience functions make it easier and spare us from having to know the details of the top bar’s HTML format.</p>
    <p>As a final example, a full project implementing the responsive retrofit of Hacker News with Tritium is <a href="https://github.com/moovweb-demos/responsive-retrofit-example" rel="nofollow external" class="bo">available on GitHub</a> for you to run and play with using the Moovweb SDK. Unlike the XSLT version, which uses HTML downloaded from Hacker News (due to the need to run it through an XHTML converter), you can run this project with the live version of the website.</p>
    <h3>Transform Your Thinking</h3>
    <p>Closures once sat obscurely in functional languages until languages such as JavaScript and Ruby brought them into the mainstream. Likewise, transformations have been buried in frameworks that are alien to the average developer, and the popularity of the transformation approach has been married to the fate of XSLT.</p>
    <p>This is unfortunate because transformations are more about a new way of thinking than about any particular technology. They <strong>enable a powerful separation of content and logic from presentation</strong>, and the usefulness of this separation is important in a number of ways. As we move into the post-PC era, transformations provide one part of the answer to serving websites across a wide array of form factors.</p>
    <p>Furthermore, the separation enabled by transformations enhances productivity and accelerates the iteration cycle for visual design teams. Meanwhile, for developers who rearrange DOM objects via JavaScript or jQuery, transformations are a new lens on their current workflow, and they open up new doors to optimizing tasks, such as server-side transformation.</p>
    <p>In an industry that has no shortage of new ideas, sometimes the most useful thing is to connect new concepts with old ones to make them more digestible. That is what this article has tried to do with transformations. Hopefully, we’ve demonstrated the power of thinking in transformations, showing its relevance to anyone who works with HTML.</p>
    <p><em>(al, ea)</em></p>
    <hr>
    <p><small>© Ishan Anand for <a href="http://www.smashingmagazine.com" rel="nofollow external" class="bo">Smashing Magazine</a>, 2014.</small></p>
    </div>
]]>
</Body>
<Summary>        To most Web developers, it sounds controversial until you hear the punchline: Last summer, the developers in charge of Google’s Chrome browser floated a proposal that went virtually...</Summary>
<Website>http://www.smashingmagazine.com/2014/02/06/applying-xslt-transforms-for-responsive-web-design/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41067/guest@my.umbc.edu/58c5e157bc29ec467d06e9ddc93e272c/api/pixel</TrackingUrl>
<Tag>content</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mobile</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>sql</Tag>
<Tag>techniques</Tag>
<Tag>web</Tag>
<Tag>web-design</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, 06 Feb 2014 05:13:14 -0500</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="41071" important="false" status="posted" url="https://my3.my.umbc.edu/posts/41071">
<Title>European Hardship Hurts Vodafone&#8217;s Sales</Title>
<Body>
<![CDATA[
    <div class="html-content">The British cellphone carrier said operations in Europe struggled because of the Continent’s economic woes but turnover rose in emerging markets.<br><div><table border="0"><tbody><tr><td>
    <a href="http://share.feedsportal.com/share/twitter/?u=http%3A%2F%2Fwww.nytimes.com%2F2014%2F02%2F07%2Fbusiness%2Finternational%2Feuropean-hardship-hurts-vodafones-sales.html%3Fpartner%3Drss%26emc%3Drss&amp;t=European+Hardship+Hurts+Vodafone%E2%80%99s+Sales" 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%2F2014%2F02%2F07%2Fbusiness%2Finternational%2Feuropean-hardship-hurts-vodafones-sales.html%3Fpartner%3Drss%26emc%3Drss&amp;t=European+Hardship+Hurts+Vodafone%E2%80%99s+Sales" 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%2F2014%2F02%2F07%2Fbusiness%2Finternational%2Feuropean-hardship-hurts-vodafones-sales.html%3Fpartner%3Drss%26emc%3Drss&amp;t=European+Hardship+Hurts+Vodafone%E2%80%99s+Sales" 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%2F2014%2F02%2F07%2Fbusiness%2Finternational%2Feuropean-hardship-hurts-vodafones-sales.html%3Fpartner%3Drss%26emc%3Drss&amp;t=European+Hardship+Hurts+Vodafone%E2%80%99s+Sales" 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%2F2014%2F02%2F07%2Fbusiness%2Finternational%2Feuropean-hardship-hurts-vodafones-sales.html%3Fpartner%3Drss%26emc%3Drss&amp;t=European+Hardship+Hurts+Vodafone%E2%80%99s+Sales" 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>
    </div>
]]>
</Body>
<Summary>The British cellphone carrier said operations in Europe struggled because of the Continent’s economic woes but turnover rose in emerging markets.      </Summary>
<Website>http://www.nytimes.com/2014/02/07/business/international/european-hardship-hurts-vodafones-sales.html?partner=rss&amp;emc=rss</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/41071/guest@my.umbc.edu/9ac11e87278ddbda7dce87998c138213/api/pixel</TrackingUrl>
<Tag>alcatel-lucent-alu-nyse</Tag>
<Tag>at-and-t-inc-t-nyse</Tag>
<Tag>cellular-telephones</Tag>
<Tag>company-reports</Tag>
<Tag>new</Tag>
<Tag>technology</Tag>
<Tag>verizon-communications-inc-vz-nyse</Tag>
<Tag>vodafone-group-plc-vod-nasdaq</Tag>
<Tag>wireless-communications</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, 06 Feb 2014 05:08:02 -0500</PostedAt>
<EditAt>Thu, 06 Feb 2014 05:08:02 -0500</EditAt>
</NewsItem>

</News>
