<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Software As She&#039;s Developed &#124; Software As She&#039;s Developed</title>
	<atom:link href="http://softwareas.com/feed" rel="self" type="application/rss+xml" />
	<link>http://softwareas.com</link>
	<description>Development and UX from Michael Mahemoff, who is putting podcasts in the cloud at Player FM and previously worked at Google and Osmosoft and wrote O&#039;Reilly&#039;s Ajax Design Patterns.</description>
	<lastBuildDate>Sun, 05 May 2013 04:34:27 +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>
	<copyright>Copyright © Software As She&#039;s Developed 2010 </copyright>
	<managingEditor>michael@mahemoff.com (Software As She&#039;s Developed)</managingEditor>
	<webMaster>michael@mahemoff.com (Software As She&#039;s Developed)</webMaster>
	<ttl>1440</ttl>
	<image>
		<url>http://i.imgur.com/bBD0F.png</url>
		<title>Software As She&#039;s Developed</title>
		<link>http://softwareas.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Mahemoff&#039;s Podcast/Blog - Web, Programming, Usability from the Author of &#039;Ajax Design Patterns&#039; (AjaxPatterns.org)</itunes:summary>
	<itunes:keywords>software, agile, html5, web, ajax, programming</itunes:keywords>
	<itunes:category text="Technology">
		<itunes:category text="Software How-To" />
	</itunes:category>
	<itunes:category text="Technology" />
	<itunes:author>Software As She&#039;s Developed</itunes:author>
	<itunes:owner>
		<itunes:name>Software As She&#039;s Developed</itunes:name>
		<itunes:email>michael@mahemoff.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://i.imgur.com/bBD0F.png" />
		<item>
		<title>What Everyone Should Know About REST: Talk at Web Directions Code</title>
		<link>http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code</link>
		<comments>http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code#comments</comments>
		<pubDate>Sun, 05 May 2013 04:34:27 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1921</guid>
		<description><![CDATA[<p>Here are the slides: Slides: What Everyone Should Know About REST Thanks UX Mastery for the sketchnotes, they are awesome! (Seriously, I would be much more swayed to speak at any conference with sketchnotes because it&#8217;s a straightforward permanent memento, &#8230; <a href="http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code">What Everyone Should Know About REST: Talk at Web Directions Code</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Here are the slides:</p>

<p><a href="http://prez.mahemoff.com/rest4all">Slides: What Everyone Should Know About REST</a></p>

<p><a href='https://twitter.com/uxmastery/status/330166800627142656'><img src="https://pbs.twimg.com/media/BJT89LRCEAEaI8H.jpg:large" alt="Sketchnotes" /></a></p>

<p>Thanks UX Mastery for the sketchnotes, they are awesome! (Seriously, I would be much more swayed to speak at any conference with sketchnotes because it&#8217;s a straightforward permanent memento, a better snapshot than slides or video.)</p>

<p>Overall, it was great to be associated with another fine Web Directions conference and the Melbourne Town Hall venue was amazing. I only regret that we were so busy scrambling on the Android app, after launching just a few days earlier, to be around the whole time. But this being my hometown &mdash; I&#8217;ll be back!</p>

<h3>Talk Structure</h3>

<p>I spoke at <a href="http://code13melb.webdirections.org/">Web Directions Code</a> on Friday, a talk on REST. I&#8217;ve been putting a lot of this into practice lately, and the talk was really an attempt to convey the main practical things every developer should know. The structure was:</p>

<ul>
<li>Everyone should know about REST because it&#8217;s not just about websites anymore. Devices, whether computers, fridges, or wearable glasses &#8211; are connected, and device-to-device communication happens with web standards, i.e. HTTP. The talk covered three things about REST: Simplicity+Consistency; Security; Caching.</li>
<li>Simplicity+Consistency: Emphasising Developer Experience (#devexp) was a way to frame the general concepts, ie URLs, HTTP methods, response types.</li>
<li>Security: How the web is becoming SSL-only, and various authentication schemes. I referenced <a href="http://player.fm/1Xdnm">the latest Traffic and Weather</a>, which has a good discussion on this.</li>
<li>Performance+Scalability: Mostly about caching. I&#8217;ve been musing on REST caching quite a bit for Player FM&#8217;s API (<a href="https://plus.google.com/106413090159067280619/posts/jKzaYxgvHTY">most recently</a> thinking about a kind of reverse patch protocol, where the server can send out diffs that get cached), and explained some of the standards and tricks for squeezing efficiency out of the network.</li>
</ul>

<h3>What Wasn&#8217;t Covered</h3>

<ul>
<li>I didn&#8217;t go into the REST acronym or the general theory of REST as an architectural pattern arising from specific forces.</li>
<li>SSL and caching. Good Twitter conversation afterwards about this point, that you can&#8217;t cache in the middle of an SSL connection. The answer is to split the connection in the middle and run SSL on either side, with a trusted cache seeing plain-text in the middle. This is how Cloudflare works, and the CEO Matthew Prince <a href="https://twitter.com/eastdakota/status/329822448654643200">chimed in</a> to say it will be free soon. (At least, SSL from client to Cloudflare.) So that means the SSL-protected web could triple overnight.</li>
</ul>
<p>The post <a href="http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code">What Everyone Should Know About REST: Talk at Web Directions Code</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1921&amp;md5=a23d781a123a7252d9d2e1ee1d1e0e7f" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/what-everyone-should-know-about-rest-talk-at-web-directions-code/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fwhat-everyone-should-know-about-rest-talk-at-web-directions-code&amp;language=en_GB&amp;category=text&amp;title=What+Everyone+Should+Know+About+REST%3A+Talk+at+Web+Directions+Code&amp;description=Here+are+the+slides%3A+Slides%3A+What+Everyone+Should+Know+About+REST+Thanks+UX+Mastery+for+the+sketchnotes%2C+they+are+awesome%21+%28Seriously%2C+I+would+be+much+more+swayed+to+speak+at...&amp;tags=Presentation%2CREST%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>JavaScript swims downstream with the web</title>
		<link>http://softwareas.com/javascript-swims-downstream-with-the-web</link>
		<comments>http://softwareas.com/javascript-swims-downstream-with-the-web#comments</comments>
		<pubDate>Fri, 19 Apr 2013 00:49:41 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1918</guid>
		<description><![CDATA[<p>Roy Fielding&#8217;s original REST dissertation (published in 2000) has an interesting section on Java versus JavaScript, which I&#8217;ve not come across before and has certainly stood the test of time. In particular, the biggest benefit is explained to be nothing &#8230; <a href="http://softwareas.com/javascript-swims-downstream-with-the-web">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/javascript-swims-downstream-with-the-web">JavaScript swims downstream with the web</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Roy Fielding&#8217;s original REST dissertation (published in 2000) has an interesting section on Java versus JavaScript, which I&#8217;ve not come across before and has certainly stood the test of time. In particular, the biggest benefit is explained to be nothing more complicated than performance, obviously a huge deal these days.</p>

<p>Extract below with obligatory <a href="http://www.flickr.com/photos/psd/421186578/">PSD artwork</a>. Emphasis mine.</p>

<p>[Background: Speaking about <a href="http://code13melb.webdirections.org/">REST at Web Directions Code</a> soon and finding myself on a long day of interstate flights, I bit the bullet and finally read <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Roy Fieldings' original REST thesis</a> cover-to-cover. And if anyone has a good way to export highlights from a personal document in Kindle, please let me know as it's apparently unsupported.]</p>

<p><em>
6.5.4.3 Java versus JavaScript
</em></p>

<p><em>
REST can also be used to gain insight into why some media types have had greater adoption within the Web architecture than others, even when the balance of developer opinion is not in their favor. The case of Java applets versus JavaScript is one example.
</em></p>

<p>&#8230;</p>

<p><em>The question is: why is JavaScript more successful on the Web than Java? It certainly isn&#8217;t because of its technical quality as a language, since both its syntax and execution environment are considered poor when compared to Java. It also isn&#8217;t because of marketing: Sun far outspent Netscape in that regard, and continues to do so. It isn&#8217;t because of any intrinsic characteristics of the languages either, since Java has been more successful than JavaScript within all other programming areas (stand-alone applications, servlets, etc.). In order to better understand the reasons for this discrepancy, we need to evaluate Java in terms of its characteristics as a representation media type within REST.</em></p>

<p><em><b>JavaScript better fits the deployment model of Web technology. It has a much lower entry-barrier, both in terms of its overall complexity as a language and the amount of initial effort required by a novice programmer to put together their first piece of working code. JavaScript also has less impact on the visibility of interactions. Independent organizations can read, verify, and copy the JavaScript source code in the same way that they could copy HTML.</b> Java, in contrast, is downloaded as binary packaged archives &#8212; the user is therefore left to trust the security restrictions within the Java execution environment. Likewise, Java has many more features that are considered questionable to allow within a secure environment, including the ability to send RMI requests back to the origin server. RMI does not support visibility for intermediaries.</em></p>

<p><em><b>Perhaps the most important distinction between the two, however, is that JavaScript causes less user-perceived latency. JavaScript is usually downloaded as part of the primary representation, whereas Java applets require a separate request. Java code, once converted to the byte code format, is much larger than typical JavaScript. Finally, whereas JavaScript can be executed while the rest of the HTML page is downloading, Java requires that the complete package of class files be downloaded and installed before the application can begin. Java, therefore, does not support incremental rendering.</b></em></p>

<p><a href='http://www.flickr.com/photos/psd/421186578/'><img src="http://i.imgur.com/NeHz2eI.jpg" alt="Roy Fielding" /></a></p>
<p>The post <a href="http://softwareas.com/javascript-swims-downstream-with-the-web">JavaScript swims downstream with the web</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1918&amp;md5=0fc327460a159efd55dda5976d90d785" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/javascript-swims-downstream-with-the-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fjavascript-swims-downstream-with-the-web&amp;language=en_GB&amp;category=text&amp;title=JavaScript+swims+downstream+with+the+web&amp;description=Roy+Fielding%26%238217%3Bs+original+REST+dissertation+%28published+in+2000%29+has+an+interesting+section+on+Java+versus+JavaScript%2C+which+I%26%238217%3Bve+not+come+across+before+and+has+certainly+stood+the+test+of+time....&amp;tags=software%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Testing HTTPS Locally</title>
		<link>http://softwareas.com/testing-https-locally</link>
		<comments>http://softwareas.com/testing-https-locally#comments</comments>
		<pubDate>Wed, 10 Apr 2013 03:01:37 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Pow]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tunnels]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1916</guid>
		<description><![CDATA[<p>As I&#8217;m migrating the player over to HTTPS, one challenge is partial content, leading to an incomplete padlock and strikethrough domain warning like this: And the harsh but fair warning, upon inspection: &#8220;However, this page includes other resources which are &#8230; <a href="http://softwareas.com/testing-https-locally">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/testing-https-locally">Testing HTTPS Locally</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>As I&#8217;m migrating <a href="http://player.fm">the player</a> over to HTTPS, one challenge is partial content, leading to an incomplete padlock and strikethrough domain warning like this:</p>

<p><img src="http://i.imgur.com/Y23dq7c.png" alt="" /></p>

<p>And the harsh but fair warning, upon inspection: &#8220;However, this page includes other resources which are not secure. These resources can be viewed by others while in transit, and can be modified by an attacker to change the look of the page.&#8221;</p>

<p><img src="http://i.imgur.com/k8vUT1E.png" alt="" /></p>

<p>So to fix this locally, a nice setup for Ruby/Rails devs is <a href="http://pow.cx">Pow</a> + <a href="https://github.com/jugyo/tunnels">Tunnels</a>. Both are super-simple to setup.</p>

<p>Pow is a local server, so if you usually run Rails on http://localhost:3000, you can one-click install Pow and all you need is to symlink your Rails folder to ~/.pow. Then you have a local server, sans port, like http://player.dev. Then, just install Tunnels and it will simply pipe https://player.dev into http://player.dev.</p>

<p>Now you can open Chrome devtools&#8217; resource tab and fish out any connections which are still https. Ideally host them locally, or at least change the links to https ones at possible loss of cache performance. Still, did you see various posts recently about ISPs injecting crapware script tags into people&#8217;s pages? <a href="http://arstechnica.com/tech-policy/2013/04/how-a-banner-ad-for-hs-ok/">OMG</a> <a href="https://news.ycombinator.com/item?id=5482178">I know right!</a> Seriously, https-everywhere is where the web is heading. Even public sites aren&#8217;t immune.</p>
<p>The post <a href="http://softwareas.com/testing-https-locally">Testing HTTPS Locally</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1916&amp;md5=5ee454ba415481735d57b3e7b962071c" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/testing-https-locally/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Ftesting-https-locally&amp;language=en_GB&amp;category=text&amp;title=Testing+HTTPS+Locally&amp;description=As+I%26%238217%3Bm+migrating+the+player+over+to+HTTPS%2C+one+challenge+is+partial+content%2C+leading+to+an+incomplete+padlock+and+strikethrough+domain+warning+like+this%3A+And+the+harsh+but+fair+warning%2C...&amp;tags=HTTPS%2CPow%2CRails%2CSecurity%2CTunnels%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Post hoc ergo propter hoc: Posterous Moved</title>
		<link>http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved</link>
		<comments>http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved#comments</comments>
		<pubDate>Mon, 08 Apr 2013 10:25:58 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Navel-Gazing]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1914</guid>
		<description><![CDATA[<p>For some years, I ran a little posterous blog called Mini Software As She&#8217;s Developed, the little brother to this blog&#8217;s great uncle&#8217;s step-cousin. It was effectively a pastebin to throw random things at. Now that Posterous is to be &#8230; <a href="http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved">Post hoc ergo propter hoc: Posterous Moved</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>For some years, I ran a little posterous blog called <a href="http://mini.softwareas.com">Mini Software As She&#8217;s Developed</a>, the little brother to this blog&#8217;s great uncle&#8217;s step-cousin. It was effectively a pastebin to throw random things at. Now that Posterous is to be decommissioned, I&#8217;ve migrated it to <a href="http://postposter.wordpress.com/">an archival blog on WordPress</a>.</p>

<p>It&#8217;s archival because these days, my glorified pastebins you shouldn&#8217;t subscribe to are:</p>

<ul>
<li><a href="https://gist.github.com/mahemoff">My Gist Stream</a>.</li>
<li><a href="https://plus.google.com/communities/117775747188778032557">My Notes Community</a>. You see, I&#8217;ve stumbled onto a nice Posterous replacement, which is a Google Plus community. Google Plus pages can work that way too, but they are more cumbersome to deal with, requiring a new window each time. G+ is <em>not</em> a Posterous replacement in the sense that you can&#8217;t mail things to it, or tweet them etc, but it&#8217;s quick to share stuff and works nicely from mobile. Plus one thing Posterous never sorted out was commenting &#8211; it required a Posterous login. Whereas anyone on Plus can leave a comment. So it&#8217;s turned into a nice way to create a public thread, but one that won&#8217;t spam followers when published.</li>
</ul>
<p>The post <a href="http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved">Post hoc ergo propter hoc: Posterous Moved</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1914&amp;md5=71d0e545deb5dd91ee5e9afcbe90ddf2" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/post-hoc-ergo-propter-hoc-posterous-moved/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fpost-hoc-ergo-propter-hoc-posterous-moved&amp;language=en_GB&amp;category=text&amp;title=Post+hoc+ergo+propter+hoc%3A+Posterous+Moved&amp;description=For+some+years%2C+I+ran+a+little+posterous+blog+called+Mini+Software+As+She%26%238217%3Bs+Developed%2C+the+little+brother+to+this+blog%26%238217%3Bs+great+uncle%26%238217%3Bs+step-cousin.+It+was+effectively+a+pastebin+to...&amp;tags=Navel-Gazing%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Blinking WebKit</title>
		<link>http://softwareas.com/thoughts-on-blink</link>
		<comments>http://softwareas.com/thoughts-on-blink#comments</comments>
		<pubDate>Thu, 04 Apr 2013 00:54:58 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Blink]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Chromium]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1910</guid>
		<description><![CDATA[<p>Speed. When Alex Russell talks about greater speed [1], I take it fractally. At micro level, it means actual day-to-day web development and debugging is faster; and at macro level, it means browsers and web standards move faster. Google works &#8230; <a href="http://softwareas.com/thoughts-on-blink">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/thoughts-on-blink">Blinking WebKit</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<ul>
<li><p><strong>Speed.</strong> When Alex Russell talks about greater speed [1], I take it fractally. At micro level, it means actual day-to-day web development and debugging is faster; and at macro level, it means browsers and web standards move faster. Google works the same way; it is a company which cares deeply about speed; at macro level, that means pushing Kurzweil&#8217;s broader interpretation of Moore&#8217;s Law to its limit, and at micro level, it means great victory for every nanosecond that can be shaved off a search query.</p></li>
<li><p><strong>Inevitable.</strong> The writing has been on the wall for years. Chrom{e/ium} has been heavily driving WebKit and it&#8217;s only natural they should want to lead the project. Cutting-edge WebKit is already there on desktop and mobile; in the future, it will need to be there in more contexts, i.e. Android webviews, Google TV or what becomes of it, Glass, cars, etc.</p></li>
<li><p><strong>Dart.</strong> I can&#8217;t get a grip on how much Dart is growing, I&#8217;m too out of the loop. But if it is indeed growing to the point that it gets to survive and be blessed internally, it will be part of Blink. No question.</p></li>
<li><p><strong>Safari.</strong> I&#8217;ve read some people say to the effect &#8220;you&#8217;re doing it wrong if not already testing on Safari as they&#8217;re already different&#8221;. Well yeah if you&#8217;re writing a mission-critical trading app. But let&#8217;s be honest; this business about testing on all browsers comes with a big wink and a sizeable nudge. Most of us <em>can</em> and <em>do</em> get by testing only occasionally on Safari. Even more so for Windows developers who don&#8217;t even have access to a modern Safari. I don&#8217;t see Apple adopting Blink anytime soon, I&#8217;m not even sure the importance of this fork will filter up to Apple&#8217;s seniors for some time. And this is a good old fashioned fork; WebKit and Blink <em>will</em> be significantly different. So the net effect for developers is more testing on Safari. And compensated by less testing on &#8230;</p></li>
<li><p><strong>&#8230;Opera.</strong>  My heart sank a little for Opera on reading this news; so it&#8217;s good to know Opera was in on the secret. If not when they made the decision to adopt WebKit, then at least some point before the Blink news dropped. Blink will certainly be stronger for Opera&#8217;s contributions.</p></li>
<li><p><strong>Samsung.</strong> Samsung has to be considered a major part of today&#8217;s browser ecosystem. They get to pick the browser that goes into most smartphones after all, and it&#8217;s no secret they are on a collision path with Google. Last night&#8217;s news of a major collaboration with Mozilla (on Servo) is more evidence of that. Should Samsung start shipping Firefox as the default browser, the web really will have four major mobile engines (including IE here). It feels like battle lines have been drawn, but that&#8217;s probably more about the coincidence of timing. Also worth mentioning Amazon as a similar company with potential to grow into a major influence on the web ecosystem, via Silk. One can assume they will adopt Blink.</p></li>
</ul>

<ol>
<li>http://infrequently.org/2013/04/probably-wrong/</li>
</ol>
<p>The post <a href="http://softwareas.com/thoughts-on-blink">Blinking WebKit</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1910&amp;md5=8c3cca7ee7098a22b1b60d9c961d1a48" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/thoughts-on-blink/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fthoughts-on-blink&amp;language=en_GB&amp;category=text&amp;title=Blinking+WebKit&amp;description=Speed.+When+Alex+Russell+talks+about+greater+speed+%5B1%5D%2C+I+take+it+fractally.+At+micro+level%2C+it+means+actual+day-to-day+web+development+and+debugging+is+faster%3B+and+at+macro+level%2C...&amp;tags=Blink%2CChrome%2CChromium%2CWebKit%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Why Google killed off Google Reader: It was self-defense (GigaOM guest post)</title>
		<link>http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post</link>
		<comments>http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post#comments</comments>
		<pubDate>Sun, 17 Mar 2013 06:27:00 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[GigaOM]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Navel-Gazing]]></category>
		<category><![CDATA[Reader]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1904</guid>
		<description><![CDATA[<p>Guest-posted this on GigaOM today. Backstory is I started writing it on Thursday night after seeing all the Reader tweetstorm and figured it&#8217;s probably of more general interest, so I submitted it there. The original draft was ~1400 words and &#8230; <a href="http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post">Why Google killed off Google Reader: It was self-defense (GigaOM guest post)</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://gigaom.com/2013/03/16/why-google-killed-off-google-reader-it-was-self-defense/">Guest-posted this</a> on GigaOM today.</p>

<p>Backstory is I started writing it on Thursday night after seeing all the Reader tweetstorm and figured it&#8217;s probably of more general interest, so I submitted it there. The original draft was ~1400 words and I wasn&#8217;t sure how seriously they take their guideline fo ~800, so just left it at 1400, but turns out they are, in fact, serious. So we edited it down.</p>

<p>For the record (since some people asked), I used Bloglines for as long as I could cope with its downtime, as I always found Google Reader too magic (unpredictable) with its use of Ajax. Eventually Bloglines was outaging for hours and IIRC whole days, so I made the switch to Reader, but could never get into the web app &#8211; too much Ajax magic &#8211; and instead used Reeder, sync&#8217;d to Reader when it came along. When I switched to Android for my primary device, I couldn&#8217;t find a satisfactory app, so just used Reeder on the iPad occasionally.</p>

<p>Meanwhile, with podcasts, I preferred the cloud approach of Odeo and Podnova, but both sadly died. I tried podcasts with Reader, but it just wasn&#8217;t the right experience so I mostly used iTunes, and then on Android, mixed it up between several apps (DoggCatcher, BeyondPod, PocketCasts, etc&#8230;the usual suspects) until eventually creating my own (still in beta). I really had problems with Listen though, so again, no didn&#8217;t do the Reader sync.</p>

<p>So bottom line is I did use Reader &#8220;somewhat&#8221;, but mostly as an API; and it&#8217;s no great loss to me like I appreciate it is to others. The responses to this article certainly demonstrate how passionate people are about a product they get to know and love, and use on a daily basis. It&#8217;s never easy giving up on muscle memory. The bright side of the equation is exactly what people like about it: RSS and OPML <em>are</em> open, so at least people can move on to Feedly, Newsblur, and so on. And I truly believe this decision ultimately liberates the standard and allows it to thrive among smaller players.</p>
<p>The post <a href="http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post">Why Google killed off Google Reader: It was self-defense (GigaOM guest post)</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1904&amp;md5=f89880f9c608e28782089d2c10a391db" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/why-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fwhy-google-killed-off-google-reader-it-was-self-defense-gigaom-guest-post&amp;language=en_GB&amp;category=text&amp;title=Why+Google+killed+off+Google+Reader%3A+It+was+self-defense+%28GigaOM+guest+post%29&amp;description=Guest-posted+this+on+GigaOM+today.+Backstory+is+I+started+writing+it+on+Thursday+night+after+seeing+all+the+Reader+tweetstorm+and+figured+it%26%238217%3Bs+probably+of+more+general+interest%2C+so+I...&amp;tags=GigaOM%2CGoogle%2CNavel-Gazing%2CReader%2CRSS%2CWriting%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>About WebWait and Caching</title>
		<link>http://softwareas.com/about-webwait-and-caching</link>
		<comments>http://softwareas.com/about-webwait-and-caching#comments</comments>
		<pubDate>Fri, 15 Mar 2013 13:50:16 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[WebWait]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1906</guid>
		<description><![CDATA[<p>I received today a question often asked about WebWait, so I&#8217;ll answer it here for reference. WebWait User asks: I have been using webwait for a while and have a quick question for you. When running multiple calls on the &#8230; <a href="http://softwareas.com/about-webwait-and-caching">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/about-webwait-and-caching">About WebWait and Caching</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I received today a question often asked about <a href="http://webwait.com">WebWait</a>, so I&#8217;ll answer it here for reference.</p>

<p>WebWait User asks:</p>

<p><em>I have been using webwait for a while and have a quick question for you. When running multiple  calls on the same website, is each call downloading the entire page again, or is the information being loaded from the browser cache?</em></p>

<p>My answer:</p>

<p><em>It will do whatever the browser would do if the page was loaded normally, so that would usually mean the 2nd-Nth time it will download from the cache. To counter-act that, you can simply disable your browser cache while performing your tests. Or if you do </em><em>want</em> to test cache performance, just open your site once (either in the browser or WebWait) and then start the WebWait tests, obviously keeping the cache enabled throughout.</p>
<p>The post <a href="http://softwareas.com/about-webwait-and-caching">About WebWait and Caching</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1906&amp;md5=57e508ecad07862a24772744ffe66871" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/about-webwait-and-caching/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fabout-webwait-and-caching&amp;language=en_GB&amp;category=text&amp;title=About+WebWait+and+Caching&amp;description=I+received+today+a+question+often+asked+about+WebWait%2C+so+I%26%238217%3Bll+answer+it+here+for+reference.+WebWait+User+asks%3A+I+have+been+using+webwait+for+a+while+and+have+a...&amp;tags=Caching%2CHTTP%2CWebWait%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Shorthand Parameters</title>
		<link>http://softwareas.com/shorthand-parameters</link>
		<comments>http://softwareas.com/shorthand-parameters#comments</comments>
		<pubDate>Thu, 14 Mar 2013 17:47:02 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[idioms]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1900</guid>
		<description><![CDATA[<p>Here is a weird abuse of default variable values to support shorthand variable names. It&#8217;s valid Ruby. [ruby] def area(r=radius) { Math::pi * r * r } [/ruby] Simple example, but you get the point. It lets you tell the &#8230; <a href="http://softwareas.com/shorthand-parameters">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/shorthand-parameters">Shorthand Parameters</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Here is a weird abuse of default variable values to support shorthand variable names. It&#8217;s valid Ruby.</p>

<p>[ruby]
def area(r=radius) {
  Math::pi * r * r
}
[/ruby]</p>

<p>Simple example, but you get the point. It lets you tell the external world what a parameter is all about, but keeps the implementation shorthand. Obviously it&#8217;s just a simple example here; parameter names can be much more verbose than just this example and functions can be longer, so you don&#8217;t want to keep repeating a long name. For example:</p>

<p>[ruby]
def damage_level(force_exterted_by_car=force) {
  force = 0 if force &lt; 0
  acceleration = mass/force
  &#8230;
}
[/ruby]</p>

<p>Now you might say &#8220;just declare it in the first line&#8221;, but I prefer small code and there could be several such lines.</p>

<p>You might say &#8220;mention it in a comment&#8221;, but I prefer self-documenting code. Comments go out of date and clutter up code. (Strictly speaking, the long name here <em>is</em> a comment, but it&#8217;s more likely to be maintained.)</p>

<p>[Update: I don't often mention Pi, but when I do, it's on March 14: Pi Day. Thanks to the reader who pointed it out!]</p>
<p>The post <a href="http://softwareas.com/shorthand-parameters">Shorthand Parameters</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1900&amp;md5=0ccc12179f7e604ae6da2b400f0c000f" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/shorthand-parameters/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fshorthand-parameters&amp;language=en_GB&amp;category=text&amp;title=Shorthand+Parameters&amp;description=Here+is+a+weird+abuse+of+default+variable+values+to+support+shorthand+variable+names.+It%26%238217%3Bs+valid+Ruby.+%5Bruby%5D+def+area%28r%3Dradius%29+%7B+Math%3A%3Api+%2A+r+%2A+r+%7D+%5B%2Fruby%5D+Simple+example%2C...&amp;tags=Code%2Cidioms%2CRuby%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>Revoking OAuth Tokens From Google, Twitter, etc</title>
		<link>http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc</link>
		<comments>http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc#comments</comments>
		<pubDate>Thu, 14 Mar 2013 00:52:28 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1902</guid>
		<description><![CDATA[<p>The URLs below let you manage and revoke permissions you&#8217;ve given to third parties via Google, Twitter, Facebook, etc. It&#8217;s not only useful for security, but also for testing while developing such tools. By deleting the connection, you can see &#8230; <a href="http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc">Revoking OAuth Tokens From Google, Twitter, etc</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>The URLs below let you manage and revoke permissions you&#8217;ve given to third parties via Google, Twitter, Facebook, etc. It&#8217;s not only useful for security, but also for testing while developing such tools. By deleting the connection, you can see what a user will see the first time they connect.</p>

<ul>
<li><a href='https://accounts.google.com/IssuedAuthSubTokens'>Google App Permissions</a></li>
<li><a href='http://twitter.com/settings/connections'>Twitter App Permissions</a></li>
<li><a href='https://www.linkedin.com/secure/settings?userAgree=&#038;goback=.aas'>LinkedIn App Permissions</a></li>
<li><a href='https://www.dropbox.com/account#applications'>Dropbox App Permissions</a></li>
</ul>

<p>Mainly writing this because I keep searching for these things and don&#8217;t have much luck (as I forgot about MyPermissions). Being personalised URLs, they don&#8217;t show up in searches (which is a wasted opporunity, since they are all static and could have just been public placeholders). Hopefully this post will show up in the future when I search for &#8220;revoke OAuth Tokens&#8221;. You can find links to more of these services on <a href='http://mypermissions.com'>MyPermissions</a>.</p>
<p>The post <a href="http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc">Revoking OAuth Tokens From Google, Twitter, etc</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1902&amp;md5=cde91eb324cffa790d1d93250715d9a0" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/revoking-oauth-tokens-from-google-twitter-etc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Frevoking-oauth-tokens-from-google-twitter-etc&amp;language=en_GB&amp;category=text&amp;title=Revoking+OAuth+Tokens+From+Google%2C+Twitter%2C+etc&amp;description=The+URLs+below+let+you+manage+and+revoke+permissions+you%26%238217%3Bve+given+to+third+parties+via+Google%2C+Twitter%2C+Facebook%2C+etc.+It%26%238217%3Bs+not+only+useful+for+security%2C+but+also+for+testing+while...&amp;tags=software%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
		<item>
		<title>A Bash Logging Utility</title>
		<link>http://softwareas.com/a-bash-logging-utility</link>
		<comments>http://softwareas.com/a-bash-logging-utility#comments</comments>
		<pubDate>Fri, 08 Mar 2013 01:36:54 +0000</pubDate>
		<dc:creator>mahemoff</dc:creator>
				<category><![CDATA[SoftwareDev]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Logging]]></category>

		<guid isPermaLink="false">http://softwareas.com/?p=1899</guid>
		<description><![CDATA[<p>With a long-running script, it&#8217;s convenient to see checkpoint log messages indicating what stage it&#8217;s at and how long it&#8217;s taken. Most scripts simply run &#96;date&#96; to show the boring long date format: Fri Mar 29 21:07:39 MST 2002. Info &#8230; <a href="http://softwareas.com/a-bash-logging-utility">Continue reading &#8594;</a></p><p>The post <a href="http://softwareas.com/a-bash-logging-utility">A Bash Logging Utility</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>With a long-running script, it&#8217;s convenient to see checkpoint log messages indicating what stage it&#8217;s at and how long it&#8217;s taken.</p>

<p>Most scripts simply run &#96;date&#96; to show the boring long date format: <code>Fri Mar 29 21:07:39 MST 2002</code>. Info overload! You don&#8217;t want to know what month it is, whether you&#8217;re in the middle of a weekend, or what timezone you&#8217;re in! More to the point, you want to know how much time has elapsed, not what time it is now; you want to know the script&#8217;s age.</p>

<p>So here&#8217;s a little utility to make it easy. Just call &#8220;age&#8221; and it will output time since the script began in 00:00:00 format.</p>

<p>I also made another function &#8220;announce&#8221; which you can use to announce the current function is running. With larger bash scripts, I tend to break them into functions with a list of calls at the bottom; so I can quickly bypass unnecessary crunching by commenting out the call. &#8220;announce&#8221; makes it easy to see which is running. And if you wanted, you could easily automate announcing for each function&#8230;making <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">aspect-oriented</a> Bash the place to be.</p>

<script src="https://gist.github.com/mahemoff/5113522.js"></script>
<p>The post <a href="http://softwareas.com/a-bash-logging-utility">A Bash Logging Utility</a> appeared first on <a href="http://softwareas.com">Software As She&#039;s Developed</a>.</p> <p><a href="http://softwareas.com/?flattrss_redirect&amp;id=1899&amp;md5=18ea78068108d69cb5424d6e60cf0859" title="Flattr" target="_blank"><img src="http://softwareas.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwareas.com/a-bash-logging-utility/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=mahemoff&amp;popout=1&amp;url=http%3A%2F%2Fsoftwareas.com%2Fa-bash-logging-utility&amp;language=en_GB&amp;category=text&amp;title=A+Bash+Logging+Utility&amp;description=With+a+long-running+script%2C+it%26%238217%3Bs+convenient+to+see+checkpoint+log+messages+indicating+what+stage+it%26%238217%3Bs+at+and+how+long+it%26%238217%3Bs+taken.+Most+scripts+simply+run+%26%2396%3Bdate%26%2396%3B+to+show+the+boring...&amp;tags=Bash%2CLogging%2Csoftware%2Chtml5%2Cweb%2Cprogramming" type="text/html" />
	</item>
	</channel>
</rss>
