<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>TerrenceRyan.com</title>
	
	<link>http://blog.terrenceryan.com</link>
	<description>I'm a 35 year old redhead geek from Philly.</description>
	<lastBuildDate>Thu, 09 May 2013 19:32:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Terrenceryan" /><feedburner:info uri="terrenceryan" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Terrenceryan" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FTerrenceryan" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Facebook Chatheads in CSS</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/N86IY36wTNQ/</link>
		<comments>http://blog.terrenceryan.com/facebook-chatheads-in-css/#comments</comments>
		<pubDate>Wed, 01 May 2013 01:45:09 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/?p=543</guid>
		<description><![CDATA[Replicating Facebook's Chathead interface in HTML and CSS. ]]></description>
				<content:encoded><![CDATA[<p>If you haven&#8217;t seen Facebook&#8217;s &#8220;chat head&#8221; interface, here is the quick lowdown. There are little circular icons that will float on the side of your mobile device&#8217;s screen to tell you that a message has arrived from a friend. It&#8217;s part of the Facebook Home thing, but even if you are on iOS, the Facebook App uses them.  I think this will be one of those UI things you either love or hate.</p>
<p><img class="alignright size-medium wp-image-552" alt="fb-ch-single" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-single1-300x215.png" width="300" height="215" /></p>
<p>However, from an HTML angle, I thought they were interesting. Could you do this interface in HTML/CSS?  The answer is yes, and it is quite easy. Just some borders, border-padding and negative margin.</p>
<p><script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=1.html"></script><br />
<script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=1.css"></script><br />
<img class="alignright size-medium wp-image-551" alt="fb-ch-single-ss" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-single-ss1-300x174.png" width="300" height="174" /></p>
<p><a href="http://terrenceryan.com/max/2013/practicalcss/code/facebook/chatheads/single.html">Demo</a></p>
<p>That was relatively simple, but it gets more complex when you have a multi-person conversation. Facebook takes the most recent person in the thread and makes them take up half of the &#8220;chat head.&#8221; Then come the next two, taking up a quarter each.  Then the rest are hidden.</p>
<p>Okay, so I need to pull out of nth child magic to selectively style the first 3 items in a collection of images. Set overflow to hidden, play with some more border radii and BOOM, &#8220;chat heads&#8221; done.</p>
<p><script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=2.html"></script><br />
<script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=2.css"></script><br />
<img class="alignright size-medium wp-image-546" alt="fb-ch-multi-ss" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-multi-ss1-300x214.png" width="300" height="214" /></p>
<p><a href="http://terrenceryan.com/max/2013/practicalcss/code/facebook/chatheads/multiple.html">Demo</a></p>
<p>Okay, so that&#8217;s all been pretty straightforward, so I&#8217;d like them to be interactive.  If I click on a multi-member conversation &#8220;chat head&#8221; I&#8217;d like it to expand out the rest of the members. This is very easy. Just a little JavaScript and some class swapping.</p>
<p><script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=3.css"></script><br />
 <img class="alignright size-full wp-image-549" alt="fb-ch-multi-x-ss" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-multi-x-ss1.png" width="353" height="1039" /></p>
<p><a href="http://terrenceryan.com/max/2013/practicalcss/code/facebook/chatheads/multiple-expand.html">Demo</a></p>
<p>&nbsp;</p>
<p>So done, Facebook native interface done in CSS/HTML.  But I think we can do better.  One of my issues about this interface and one that would prevent me from using it in a web based application is that it obscures the content beneath it, it just hangs out covering up anything unfortunate enough to be below it. For me, if I was using it I would want it to float instead of absolutely position. So I can do a few tweaks to make that happen. </p>
<p><script type="text/javascript" src="https://gist.github.com/tpryan/5486052.js?file=4.css"></script><br />
<img class="alignright size-full wp-image-548" alt="fb-ch-multi-x-float-ss" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-multi-x-float-ss1.png" width="544" height="1464" /></p>
<p><a href="http://terrenceryan.com/max/2013/practicalcss/code/facebook/chatheads/multiple-expand-exclude.html">Demo</a></p>
<p>Now in my demonstration, I pulled the text to be right aligned instead of left aligned, to show the float edge better.  But I&#8217;m still not happy with it. Why? Because each of those circles carve a giant square out of the text. And that&#8217;s kinda lame because they&#8217;re circles.  A few weeks ago a colleague of mine at Adobe, Bem Jones-Bey wrote an article about using shaped exclusions from the CSS Shapes and Exclusion spec.  It seemed like a perfect fit.  So if you have Chrome Canary installed, and the experimental features turned on, you get a much different result:</p>
<p><a href="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-multi-x-float-canary-ss.png"><img class="alignright size-full wp-image-537" alt="fb-ch-multi-x-float-canary-ss" src="http://blog.terrenceryan.com/wp-content/uploads/2013/04/fb-ch-multi-x-float-canary-ss.png" width="518" height="1466" /></a></p>
<p><a href="http://terrenceryan.com/max/2013/practicalcss/code/facebook/chatheads/multiple-expand-exclude.html">Demo</a> [View in Canary]</p>
<p>The secret sauce here being the -webkit-shape-outside property.  It basically allows me to exclude a circle from the underlying text around each of the &#8220;chat heads&#8221;. To find out more about using shape-outside, be sure to check out Bem&#8217;s article. It&#8217;s just one of the ways that the browser is becoming more capable of rendering a greater number of visual layouts and effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/facebook-chatheads-in-css/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/facebook-chatheads-in-css/</feedburner:origLink></item>
		<item>
		<title>Quick MAX Post</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/cN0hVB8aUPM/</link>
		<comments>http://blog.terrenceryan.com/quick-max-post/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 20:50:14 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[adobemax13]]></category>
		<category><![CDATA[Appearances]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/?p=533</guid>
		<description><![CDATA[Just a preview of what's to come at Max this year.]]></description>
				<content:encoded><![CDATA[<p><a href="http://max.adobe.com/">MAX</a> is coming. I&#8217;m in total, heads down, write-the-presos mode. I wanted to share what I&#8217;m heads down working on.  I&#8217;ll have 4 sessions at MAX:</p>
<p><a href="https://www.adobe-max.com/scheduler/sessionDetails.do?SESSION_ID=8529">Responsive Design in Action</a> (Lab)</p>
<p>This session is a lab intended to get people up and running with Responsive Web Design. We start in Reflow, to get some of the basics, and then move to code to show how to do it as simply and cleanly as possible.</p>
<p><a href="https://www.adobe-max.com/scheduler/sessionDetails.do?SESSION_ID=8587">Programming in CSS</a></p>
<p>This is a run down of how to be more productive in CSS.  It will include some best practices, an overview of some modern techniques, and an overview of some tools to make writing CSS less of a pain.</p>
<p><a href="https://www.adobe-max.com/scheduler/sessionDetails.do?SESSION_ID=8747">Goal Oriented CSS</a></p>
<p>The idea behind this session to break down a design comp, figure out how to markup the vision, and write the CSS it takes to implement it.  I&#8217;ll try and tackle a few common design metaphors in the process. A few examples: iOS buttons, framed pictures with shadows, and vignettes to name a few.</p>
<p><a href="https://www.adobe-max.com/scheduler/sessionDetails.do?SESSION_ID=9325">Fast Performance with CSS on Mobile</a></p>
<p>I have the pleasure of tagging along with <a href="http://paulirish.com/">Paul Irish</a> on the tools and techniques of writing high performance CSS targeting mobile devices.  It will also introduce you to ways of testing on devices that sometimes may be a little bit difficult to get into.</p>
<p>There are <a href="https://www.adobe-max.com/scheduler/catalog/catalog.jsp?sy=1">tons of other sessions</a>, and of course there is the promise of a year&#8217;s subscription to Creative Cloud for all attendees.</p>
<p>If that wasn&#8217;t enough, here&#8217;s a discount code for $300 off: MXSM13.</p>
<p>So what are you waiting for, <a href="http://max.adobe.com/">sign up</a>! I hope to see you all in LA!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/quick-max-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/quick-max-post/</feedburner:origLink></item>
		<item>
		<title>Upcoming Appearances – August 2012</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/Lngf1r3iI80/</link>
		<comments>http://blog.terrenceryan.com/upcoming-appearances-august-2012/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 18:10:07 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Appearances]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/?p=522</guid>
		<description><![CDATA[I&#8217;ve got two events coming up in August that I want to let you know about. First, I&#8217;ll be giving a general update of what Adobe is up to in the HTML world at the August Times Open meeting. I&#8217;ll be one of three speakers, the others beingAlex Komoroske of Google, and Eric Schorr from the New York [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve got two events coming up in August that I want to let you know about.</p>
<p>First, I&#8217;ll be giving a general update of what Adobe is up to in the HTML world at the August Times Open meeting. I&#8217;ll be one of three speakers, the others being<a href="https://plus.google.com/103330502635338602217/posts">Alex Komoroske</a> of Google, and <a href="https://twitter.com/jerseyschorr">Eric Schorr</a> from the New York Times.  If you don&#8217;t know about Times Open, it&#8217;s a series of small conferences run by the <a href="http://www.nytimes.com/">New York Times</a> about technology for web developers in the New York area. It&#8217;s my first time there, but I&#8217;ve seen the rest of the work that the tech team at the Times does, so I&#8217;m very excited about this.  If you&#8217;re in New York, definitely check this out.</p>
<p>From New Amsterdam, I&#8217;ll be headed to the old one. I&#8217;ll be joining the rest of my team, <a href="http://blog.kevinhoyt.com/">Kevin Hoyt</a>, <a href="http://corlan.org/">Mihai Corlan</a>, and <a href="http://hsivaram.com/tech/">Haresh Sivaramakrishnan</a> in Amsterdam for<a href="http://www.adobeusergroup.nl/meetings/meeting/aug-presents-adobe-camp?p=uitnodiging">Adobe Camp</a> (link is in Dutch).  It promises to be an afternoon of Adobe HTML goodness. We&#8217;ll take a look at a number of Adobe HTML initiatives in some depth. It will be a great event.</p>
<p><a href="http://www.nytimes.com/marketing/timesopen/2012.html">Times Open</a><br />
August 15<br />
7:00 PM &#8211; 10:00 PM</p>
<p>The New York Times<br />
15th Floor<br />
620 Eighth Ave<br />
New York, NY</p>
<p><a href="http://www.adobeusergroup.nl/meetings/meeting/aug-presents-adobe-camp?p=uitnodiging">Adobe Camp Amsterdam</a><br />
August 23rd<br />
12:00 &#8211; 18:30</p>
<p>Pakhuis de Zwijger, Amsterdam<br />
Piet Heinkade 179<br />
1019 HC Amsterdam</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/upcoming-appearances-august-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/upcoming-appearances-august-2012/</feedburner:origLink></item>
		<item>
		<title>Embedded with the Web Platform Team – Features</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/YQh8YRxMU2s/</link>
		<comments>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-features/#comments</comments>
		<pubDate>Wed, 18 Jul 2012 14:53:24 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[adobemax13]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/embedded-with-the-web-platform-team-features</guid>
		<description><![CDATA[<p>Sort of like "How a bill becomes a law" but with less anthropomorphized documents.</p>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m wrapping up being embedded with the <a href="http://blogs.adobe.com/webplatform/">Web Platform Team</a> this week.  It&#8217;s been an awesome experience, and I want to share some of what I learned. Here&#8217;s some of it. </p>
<p>Getting a feature into browsers is <strong>hard</strong>.</p>
<p>For the past few months I&#8217;ve been showing off a bit of this team&#8217;s work while talking to people.  CSS Regions, CSS Shaders, CSS Exclusions are the ones I usually hit. I always get hit with the question &#8220;When will this be in browsers?&#8221;  I never give a good answer to this, because I&#8217;ve never gotten a good answer to this, because there are not good answers to this.</p>
<p>So why is that? Because getting a feature into a browser is one of those iceberg things where what you see on the outside is only a fraction of the work involved.  </p>
<p>The engineers told me repeatedly that some of the prototypes for advanced features were demonstrable after a few weeks of work on their part.  They&#8217;re smart people who can do awesome things fast. But the prototype is just one piece of that, for us it only works in a specific build of WebKit, and can only handle what the engineers were trying to accomplish in the first place.</p>
<p>So how do go from there to other browsers as a whole?  Well you write a spec.  The spec tells the browser manufacturers what you want the feature to do, what the API of the feature will look like, what options are available, etc.  You write the spec and share it with other browser groups and they will tell you the spec is impossible because they&#8217;re engineers.  So, you whip out your prototype and show that it isn&#8217;t impossible. Take that, browser makers!</p>
<p>So to punish you for that, they tell you your spec is awful, and you need to rewrite the whole thing.  </p>
<p>This part of the process seems to go on multiple times. </p>
<p>Then as you are perfecting your spec, some bleary-eyed engineer at one of the browser manufacturers pokes his head out of his cube and says &#8220;Look at this awesome thing I did!&#8221; and it will look a lot like the feature you have specced out. He or she didn&#8217;t see all the work on the spec, because they were too busy making the exact same thing happen. Except the API will be completely different.  And not, &#8220;they name this thing height, and we call it clientHeight&#8221; different.  No, it will be like the episode of <a href="http://en.wikipedia.org/wiki/Darmok">Star Trek: the Next Generation where they find that culture that talks in metaphor</a>, so you&#8217;ll call it &#8220;clientHeight&#8221; and they call it &#8220;Hixie and Zeldman at Tenagra.&#8221; </p>
<p>So now you need to &#8220;reconcile&#8221; your APIs.  And by reconcile, I mean &#8220;argue that your way is better until you make the other guys ear gush out pink fluid.&#8221; Then who ever is left standing just does it the way they wanted. </p>
<p>Then it gets into a few browsers, and people start using it.  Then they start complaining that other browsers don&#8217;t have it. This puts pressure on browser makers to implement the spec. Then someone creates a good polyfill to get the feature to work in said browser, and the pressure deflates. </p>
<p>And that my friends is how an feature idea becomes a browser feature.</p>
<p>Now obviously I jest in some of this.  People aren&#8217;t always arguing or asking for rewrites out of revenge. All of the people in this process are passionate about what they do, and want to see things implemented in the web developer friendliest, most secure, most contingency meeting way possible.  But sometimes they are human beings who want to reduce their own work, follow their own agendas, and put browser maker concerns over browser developer, or browser users concerns. It&#8217;s human, it isn&#8217;t malicious, and a lot of time noise will make them do the right thing.</p>
<p>So my friends, when you ask &#8220;When will this feature be in browsers?&#8221; and I say, &#8220;I&#8217;m not sure&#8221; here&#8217;s why. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-features/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-features/</feedburner:origLink></item>
		<item>
		<title>Embedded with the Web Platform Team – Questions?</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/ZwM7d46Wk2U/</link>
		<comments>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-questions/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 12:28:41 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[adobemax13]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/embedded-with-the-web-platform-team-questions</guid>
		<description><![CDATA[For two weeks, I&#8217;m embedded with the Web Platform team here at Adobe.  What does that mean?  It means, I&#8217;m acting like I&#8217;m part of the team, going to all the scrum meetings, taking a (very small) bit of work off their hands, and trying desperately not to screw anything up.  For those that don&#8217;t [...]]]></description>
				<content:encoded><![CDATA[<p><img style="float: right; margin-left: 10px; margin-bottom:10px;" src="/blog/assets/content/adobe_logo.jpg" alt="" width="130" height="163" />For two weeks, I&#8217;m embedded with the Web Platform team here at Adobe.  What does that mean?  It means, I&#8217;m acting like I&#8217;m part of the team, going to all the scrum meetings, taking a (very small) bit of work off their hands, and trying desperately not to screw anything up. </p>
<p>For those that don&#8217;t know, the Web Platform team at Adobe is the group responsible for writing the specs, implementing the code, and shepherding the technologies that make up Adobe&#8217;s contributions to the W3C and WebKit. If you&#8217;ve seen our work on  <a href="http://html.adobe.com/webstandards/cssregions/">CSS Regions</a>, <a href="http://html.adobe.com/webstandards/cssexclusions/">CSS Exclusions</a>, <a href="http://html.adobe.com/webstandards/cssshaders/">CSS Shaders</a>, <a href="http://html.adobe.com/webstandards/cssexclusions/">CSS Compositing</a>, or <a href="http://html.adobe.com/webstandards/csstransforms/">CSS Transforms</a> then you have seen the fruits of this team&#8217;s labor.  I&#8217;m embedded with a subset of that larger group &#8211; the engineers that actually write the code.</p>
<p>I&#8217;m going to post some of my first week observations tomorrow or Monday, but I figured I&#8217;d put things out to you guys. Is there anything you&#8217;d like to know? Any part of the process that you&#8217;d like more insight into? Anything that you&#8217;d like investigated or answered while I&#8217;m here?</p>
<p>And don&#8217;t worry, the team might be in your browser rendering your coolness, but I will not be. The work I&#8217;m doing is all HTML work that will be run by the browser.  So no worries.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-questions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/embedded-with-the-web-platform-team-questions/</feedburner:origLink></item>
		<item>
		<title>New ColdFusion Evangelist</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/z9QnVvD2HNM/</link>
		<comments>http://blog.terrenceryan.com/new-coldfusion-evangelist/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 09:41:28 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/new-coldfusion-evangelist</guid>
		<description><![CDATA[<p>There is a new dedicated ColdFusion Evangelist</p>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m late to the party, but I&#8217;m happy to <a href="http://blogs.coldfusion.com/post.cfm/elishia-dvorak-joins-as-coldfusion-solution-consultant-and-product-evangelist">repeat the word that we have a new dedicated ColdFusion Evangelist</a>, <a href="https://twitter.com/#!/elishdvorak">Elishia Dvorak</a>. Elishia isn&#8217;t new to the ColdFusion world, having worked as a support engineer for Allaire, Macromedia and Adobe. She rejoins the team from <a href="http://www.supportobjective.com/">Support Objective</a>, a consulting company specializing in high quality Coldfusion Support.</p>
<p>Please <a href="https://twitter.com/#!/elishdvorak">follow her on twitter</a>, and welcome her to her new role.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/new-coldfusion-evangelist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/new-coldfusion-evangelist/</feedburner:origLink></item>
		<item>
		<title>PhoneGap Build Watcher</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/mTgLFlYsZbs/</link>
		<comments>http://blog.terrenceryan.com/phonegap-build-watcher/#comments</comments>
		<pubDate>Wed, 23 May 2012 17:33:05 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Devices]]></category>
		<category><![CDATA[PhoneGap]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/phonegap-build-watcher</guid>
		<description><![CDATA[<p>Announcing PhoneGap Build Watcher, an application to give you mobile notification that your apps are done, and prompts you to download them.</p>]]></description>
				<content:encoded><![CDATA[<p><img style="float: right; margin: 0 0 5px 5px;" src="/blog/assets/content/pgbwatcher.png" alt="" width="350" height="350" />I love PhoneGap Build.  I love not having to have anywhere from 3 to 7 different IDE/SDK rigs to get apps that run on multiple platforms. That being said, IDEs do give something that PhoneGap Build (henceforth referred to as PGB) lacks &#8211; workflow.</p>
<p>My current workflow with PGB goes something like this:</p>
<ul>
<li>Push changes to PGB</li>
<li>Leave PGB open in browser tab</li>
<li>Get bored</li>
<li>Wander away to other browser tabs</li>
<li>Remember that I am working on a mobile app</li>
<li>Go back and check PGB</li>
<li>See that it has updated</li>
<li>Pick up device</li>
<li>Click download link</li>
<li>Reinstall</li>
</ul>
<p>It&#8217;s not the best workflow.  Yeah, I could fix it by being more disciplined. But evidence suggests that&#8217;s not going to happen. I could solve my problem with technology. PGB has an API for answering questions like &#8220;Is the Android version of my app currently built?&#8221; So I put together a little mobile app to take advantage of that API. I call it PhoneGap Build Watcher. It does what you would expect:</p>
<ul>
<li>You enter your PGB credentials</li>
<li>You get a list of all of your projects</li>
<li>You choose one</li>
<li>Any time that project gets updated you get sound, vibration and notification alerts.</li>
<li>From that alert you can click on the download link and install the new version of your application.</li>
</ul>
<p>This has really helped my workflow with PGB, and I hope some of you out there can use it to do the same.</p>
<p>See it in action:</p>
<p><iframe src="http://player.vimeo.com/video/42728484" frameborder="0" width="500" height="281"></iframe></p>
<p>It&#8217;s of course <a href="https://github.com/tpryan/PhoneGap-Build-Watcher">Open Source and hosted on GitHub</a>.</p>
<p>I&#8217;ve put it up on <a href="https://play.google.com/store/apps/details?id=com.terrenceryan.pgbwatche">Google Play</a>, but was unable to get it into the App Store.  I should have realized it before trying but Apple doesn&#8217;t like applications that prompt you to download applications. No worries. Great thing about PhoneGap apps, they&#8217;re just web apps, so I have a web app version running at <a href="http://pgbwatcher.com">http://pgbwatcher.com</a> if any iOS users want to give it a try.</p>
<p>Let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/phonegap-build-watcher/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/phonegap-build-watcher/</feedburner:origLink></item>
		<item>
		<title>Using Ant and Say Command for Notification</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/V72072RCFw0/</link>
		<comments>http://blog.terrenceryan.com/using-ant-and-say-command-for-notification/#comments</comments>
		<pubDate>Wed, 23 May 2012 12:11:50 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[ANT]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/using-ant-and-say-command-for-notification</guid>
		<description><![CDATA[I use ANT to automate a lot of the work I do around the web.  Some things are so tedious I don&#8217;t want to have to do them.  Others just take a long time, and I would rather the computer spend that time instead of me. The difficulty with that is ANT doesn&#8217;t notify you [...]]]></description>
				<content:encoded><![CDATA[<p>I use <a href="http://ant.apache.org/">ANT</a> to automate a lot of the work I do around the web.  Some things are so tedious I don&#8217;t want to have to do them.  Others just take a long time, and I would rather the computer spend that time instead of me.</p>
<p>The difficulty with that is ANT doesn&#8217;t notify you when it is done.  Sure it prints a message that it&#8217;s done in the terminal window, but unless you&#8217;re looking there, you&#8217;ll never know. I stumbled on an easy way of getting notifications that are flexible and easy to work with on OS X:</p>
<p>The <code>say</code> command</p>
<p>In OS X, go to your command line and type </p>
<p><code>say hello</code></p>
<p>Your Mac should respond in creepy robotic tones &#8220;Hello.&#8221;</p>
<p>You can get it to say anything&#8230; Okay, get all the immature juvenile tricks out now. My personal favorite:</p>
<p><code>say "I've got the collywobbles."</code></p>
<p>Okay. You can make it say anything, so you can make it say:</p>
<p>say &#8220;I&#8217;m done uploading all of your files to the website.&#8221;</p>
<p>So make an ANT task like: </p>
<p>
<script src="https://gist.github.com/2776139.js?file=build1.xml"></script>
</p>
<p>And join it with another ANT task like:</p>
<p>
<script src="https://gist.github.com/2776139.js?file=build2.xml"></script>
</p>
<p>Call them both from an ANT task like:</p>
<p>
<script src="https://gist.github.com/2776139.js?file=build3.xml"></script>
</p>
<p>And there you have it. ANT with notification. Creepy creepy robotic notifications.</p>
<p>What I like about this over say, sound effects, is that this method allows me to label specifically what each notification means, which helps if I run a few concurrent processes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/using-ant-and-say-command-for-notification/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/using-ant-and-say-command-for-notification/</feedburner:origLink></item>
		<item>
		<title>PhoneGap Starter Project – Productivity</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/HR3ENIefxZ4/</link>
		<comments>http://blog.terrenceryan.com/phonegap-starter-project-productivity/#comments</comments>
		<pubDate>Mon, 14 May 2012 13:08:03 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[PhoneGap]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/phonegap-starter-project-productivity</guid>
		<description><![CDATA[<p>I've written up some helper ANT scripts for PhoneGap Build, and posted them to github as part of Ryan Stewart's PhoneGap Starter projects.</p>]]></description>
				<content:encoded><![CDATA[<p><img style="float: right;" src="/blog/assets/content/PhoneGap-Build.png" alt="" width="290" height="190" />A few weeks back <a href="http://blog.digitalbackcountry.com/2012/04/the-phonegap-starter-project/">Ryan Stewart posted on his idea</a> for <a href="https://github.com/phonegap-starter">PhoneGap Starter</a> projects. They were designed to take some of the grief out of getting started with various aspects of PhoneGap and PhoneGap Build projects.  I&#8217;ve contributed a project based on one of pet peeves with <a href="https://build.phonegap.com/">PhoneGap Build</a>: the lack of productivity.</p>
<p>Don&#8217;t get me wrong. I love PhoneGap Build.  I love not having to open multiple IDEs to work on mobile apps. I love working on HTML apps in HTML tools &#8211; but you lose a few things in the trade. You lose being able to click one button and have your work available on your device.  You miss being able to click and get a pop up that says your work is ready to view on the device.</p>
<p>These things seem small, but having tried to build actual projects in PhoneGap Build, I found them critical.  I would go kick off a build, and then have to wait for the build to be complete.  I&#8217;d open a browser windows while I waited. 20 minutes later, I would cycle through my Chrome windows and remember that I was waiting for a build to complete.  </p>
<p>A few months back I tried my hand and solving this and came up with a <a href="/blog/post.cfm/one-click-phonegap-build-to-android-device-script">shell script that handled this for Android</a>.  Over the past few weeks, I&#8217;ve added to, improved, and modified it. I now have a solution in ANT that does the following:</p>
<ul>
<li>Uploads files to PhoneGap Build triggering a rebuild</li>
<li>Polls for IOS and Android to be finished</li>
<li>Downloads ipa and apk files when ready</li>
<li>Installs them onto connected iOS and Android devices</li>
<li>Uses the &#8220;say&#8221; command to let you know when things are done.</li>
</ul>
<p>It takes the form of an ANT build file, some properties, and 2 shell scripts. I&#8217;ve posted the whole thing as <a href="https://github.com/phonegap-starter/Productivity">PhoneGap Starter Productivity</a> on github. As far as I know this will only work on OS X, which I hope isn&#8217;t a huge problem for anyone, and I&#8217;m willing to collaborate with someone to make them more cross platform friendly.</p>
<p>Also I feel it&#8217;s important to note, that while these scripts mean you don&#8217;t have to use the IDE to accomplish these tasks, you still have to have Xcode and the Android SDK on your machine to use them. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/phonegap-starter-project-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/phonegap-starter-project-productivity/</feedburner:origLink></item>
		<item>
		<title>D2WC Next Week</title>
		<link>http://feedproxy.google.com/~r/Terrenceryan/~3/DS3-ZyNNMTs/</link>
		<comments>http://blog.terrenceryan.com/d2wc-next-week/#comments</comments>
		<pubDate>Wed, 09 May 2012 14:33:37 +0000</pubDate>
		<dc:creator>Terrence Ryan</dc:creator>
				<category><![CDATA[Appearances]]></category>

		<guid isPermaLink="false">http://blog.terrenceryan.com/d2wc-next-week</guid>
		<description><![CDATA[<p>I'll be at D2WC next week. Find out more.</p>]]></description>
				<content:encoded><![CDATA[<p><img style="float: right;" src="/blog/assets/content/d2wclogo.png" alt="" width="360" height="101" />Next week, I&#8217;ll be speaking at <a href="http://d2wc.com/">D2WC</a>, a designer/developer workflow conference in Kansas City, Missouri. </p>
<p>I&#8217;ll be talking about Using PhoneGap Build to simplify your mobile development life. One of the great things about PhoneGap is that it allows you to use HTML JS and CSS to build your applications, but you still have to use native tools to build your apps. PhoneGap Build helps immensely with this, but you make some productivity sacrifices. This session will show you how to maximize your work, and touch as little of the IDE as possible. </p>
<p>First time for me at this conference, but from what I understand it&#8217;s a great conference that tackles a specific topic: getting development and design to work together better. Great goal, really looking forward to it.</p>
<p><strong>D2WC</strong><br /> May 16-18<br /> Kansas City Marriott Country Club Plaza<br /> 4445 Main Street<br /> Kansas City, Missouri 64111 <br /> USA</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.terrenceryan.com/d2wc-next-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.terrenceryan.com/d2wc-next-week/</feedburner:origLink></item>
	</channel>
</rss>
