<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Skookum Blog</title>
	
	<link>http://skookum.com</link>
	<description>We're a web development firm jumping into product development and sharing everything we learn about design, development, and marketing as we go.</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:46:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/skookum/blog" /><feedburner:info uri="skookum/blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>35.227192</geo:lat><geo:long>-80.844193</geo:long><item>
		<title>Scraping Poorly Formatted Data with cURL and phpQuery</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/PsQGUMG7J6Q/</link>
		<comments>http://skookum.com/blog/scraping-poorly-formatted-data-with-curl-and-phpquery/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 16:55:31 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data scraping]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpQuery]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1716</guid>
		<description><![CDATA[cURL is a fantastic way to scrape data from websites. It&#8217;s pretty ubiquitous on LAMP servers nowadays, so you probably don&#8217;t even have to do anything to enable it and start using it. You can essentially get data that&#8217;s behind a login form by spoofing a browser logging into the site. I&#8217;m not going to do a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://skookum.com/wp-content/uploads/2012/02/poorly_formatted_data.png"><img class="alignright size-medium wp-image-1720" title="poorly_formatted_data" src="http://skookum.com/wp-content/uploads/2012/02/poorly_formatted_data-300x153.png" alt="" width="300" height="153" /></a><a href="http://curl.haxx.se/" target="_blank">cURL</a> is a fantastic way to scrape data from websites. It&#8217;s pretty ubiquitous on LAMP servers nowadays, so you probably don&#8217;t even have to do anything to enable it and start using it. You can essentially get data that&#8217;s behind a login form by spoofing a browser logging into the site.</p>
<p>I&#8217;m not going to do a dissertation on the nuances of using cURL. Instead, I&#8217;d like to discuss how to process data after you&#8217;ve gotten the HTML string from a page using the <span style="font-family: monospace;">curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);</span> setting. The general process using cURL to get the data from a password protected site goes something like this:</p>
<ol>
<li>Make sure your &#8220;cookie jar&#8221; is set up and working so that your session can be saved while you&#8217;re scraping other pages after login.</li>
<li>Get the HTML for the login page.</li>
<ol>
<li>Get the form post location.</li>
<li>Get any special tokens or hidden variables.</li>
</ol>
<li>Post to the login script with your authorized username and password.</li>
<li>Scrape any pages you need to get and process them.</li>
</ol>
<h2>Getting auth tokens and stuff</h2>
<p>Sometimes login pages make it difficult to figure out what to post because of &#8220;authentication tokens&#8221; or similar variables that change every time a page is hit and then have to be posted <em>back</em> along with the username and password. This is most common among .NET applications since it&#8217;s built right in to the .NET form creation classes. The process of finding these variables is made a lot easier if you use <a href="http://code.google.com/p/phpquery/" target="_blank">phpQuery</a>. It&#8217;s a project that attempts to replicate what jQuery does but with PHP. You pass phpQuery a string with all the HTML content in it and then you can perform <a href="http://api.jquery.com/category/selectors/" target="_blank">selectors</a> and <a href="http://api.jquery.com/category/traversing/" target="_blank">traverse</a> the DOM just like with jQuery. What you do with the HTML after that is up to you.</p>
<script src="https://gist.github.com/1752657.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1752657">Gist</a>.</p></noscript>
<p>In the above example, I already had the HTML string of the login page and simply used phpQuery to get all the inputs on the page with a very jQuery-like selector syntax and then looped through the results to get all my input fields for the form so I could use them in my next call to post the data back to the login script.</p>
<h2>Getting poorly formatted data and stuff</h2>
<p>I consider &#8220;well formatted&#8221; data to be in formats like JSON, XML, CSV, etc. that are specifically meant for data transfer. But what heppens when you need to scrap data from HTML tables or DIVs?</p>
<p>phpQuery to the rescue! You can do the same thing as above but parse the newly acquired HTML string of the data you&#8217;re looking for. Here&#8217;s an example of looking at a two column table of data to get all sorts of neat stuff and format it into an array. Then I check for an element outside of the table loop and set another variable.</p>
<script src="https://gist.github.com/1752759.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1752759">Gist</a>.</p></noscript>
<h2>Using the data and stuff</h2>
<p>After you&#8217;re done with that, you have all this useful data in an array and you can basically do whatever you want to it. Since this example I created originated from code used in a real life client project (with variable names changed to protect the innocent), I went on to take that array and save it out to a JSON file that I could easily read in and do what I wanted to with the data.</p>
<p>You may need to go through some tests to get the right kind of cleaning or data sanitization for your values, but phpQuery makes it really easy to scrape this kind of data if you&#8217;re used to jQuery&#8217;s selectors and traversing. Instead of scraping the site each time to get the data, I like saving out the html string to a file and then playing with selectors and traversing to get the data I want form a local file so I don&#8217;t put a lot of strain on the server.</p>
<h2>And don&#8217;t forget stealth&#8230;</h2>
<p>If you&#8217;re not sure how friendly the server (or serveradmin) is to you doing this, make sure you set the cURL user agent for each request. I like  pretending I&#8217;m GoogleBot, but any common user agent string would suffice so that the server doesn&#8217;t explicitly know you&#8217;re PHP trying to log in.</p>
<p>By default, cURL spits out a user agent like this (changes based on operating system and version of cURL):</p>
<pre>curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5</pre>
<p>If a serveradmin sees that in their logs, they might freak out&#8230; so  I like these user agent strings for sneaky data pulls:</p>
<pre>Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7</pre>
<h2>Audience participation</h2>
<p>How do you use cURL and phpQuery? Any useful scripts or resources to point people to other than their respective documentation sites?</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/PsQGUMG7J6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/scraping-poorly-formatted-data-with-curl-and-phpquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/scraping-poorly-formatted-data-with-curl-and-phpquery/</feedburner:origLink></item>
		<item>
		<title>Charlotte Programming Company Helps Business Clients Go Digital</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/O3Z3EHs4Le4/</link>
		<comments>http://skookum.com/blog/charlotte-programming-company-helps-business-clients-go-digital/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 20:17:08 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Culture]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1693</guid>
		<description><![CDATA[Along with being ranked one of the Best Places to Work in Charlotte, North Carolina, James Hartsell—SDW&#8217;s co-founder and CEO ,was recently profiled by the Charlotte Business Journal. The Q&#038;A is reprinted below. Tell us a little about what Skookum Digital Works does and how it was founded? Skookum Digital Works is a technical partner [...]]]></description>
			<content:encoded><![CDATA[<p><em>Along with being ranked one of the <a href="http://www.bizjournals.com/charlotte/print-edition/2011/11/11/best-places-to-work-top-ranked-small.html?page=all">Best Places to Work in Charlotte, North Carolina</a>, James Hartsell—SDW&#8217;s co-founder and CEO ,was recently profiled by the <a href="http://www.bizjournals.com/charlotte/print-edition/2012/01/27/helping-business-clients-go-digital.html">Charlotte Business Journal</a>. The Q&#038;A is reprinted below.</em></p>
<p><img src="http://skookum.com/wp-content/uploads/2012/01/james_headshot_wide.jpg" alt="Charlotte, North Carolina computer software mobile programming" title="James Hartsell, CEO of Skookum Digital Works" width="620" height="423" class="aligncenter size-full wp-image-1695" /></p>
<p><strong>Tell us a little about what Skookum Digital Works does and how it was founded?</strong><br />
Skookum Digital Works is a technical partner for anyone with a startup dream. We mainly work with entrepreneurs—building out their products or customizing software for businesses. </p>
<p>My co-founder and I, Bryan Delaney, founded Skookum in 2005. We were roommates at UNC Charlotte, both graduated with computer science degrees, and both went to work for the Department of Defense for a few years before deciding we had a better mousetrap. </p>
<p>Bryan and I are Charlotte natives, and we&#8217;re happy to have located our office Uptown. </p>
<p><strong>Do you specialize in any particular types of apps or client base?</strong><br />
I don&#8217;t think its crass of me to say we like to work with <em>funded</em> startups. Our typical client is the non-technical entrepreneur; someone with business skills and ideas but with no programming background. We allow a non-technical entrepreneur to get started on their digital product without having to find a technical co-founder or trying to hire engineers they are not qualified to vet. </p>
<p>Our clients have often heard the word &#8220;No&#8221; elsewhere. We have expertise in the mobile web, complicated software integrations, and real-time web collaboration. </p>
<p><strong>What are some examples of apps Skookum has created?</strong><br />
A publishing company wanted a marketing tool to promote their books. SDW gave them a <a href="http://itunes.apple.com/us/app/mascot-talk/id420673475?mt=8">digital revenue stream</a>.</p>
<p>Some D.C. folks knew independent voters were eager to take collective action. <a href="http://ruck.us">SDW built them a data mining and people matching system</a>.</p>
<p>A group of investors-and-avid-golfers hated the 100+ scoring apps already available. <a href="http://gtgapp.com/">We made players&#8217; phones talk to each other</a>. (!)</p>
<p>A neighborhood of New York businesses disliked Groupon keeping their margins. We created a <a href="http://www.inbundles.com/">localized model they collectively controlled</a>. </p>
<p><strong>What do you think will be the next innovation in smartphone applications?</strong><br />
Mobile apps are going to be easier to download and live outside the walls of the Apple iTunes store and the Android Marketplace. <a href="http://vimeo.com/35539107">Companies can now place their applications on iPhones and iPads without Apple taking 30% of the cut</a>. </p>
<p>Mobile applications are also slowing making their way into retail. Most stores know they can use smartphones and tablet devices to enhance their store experience, but the smaller chains (and certainly the local guys) are waiting to see what the big guys do before making the investment. </p>
<p><strong>Charlotte isn’t really seen as a tech town. Will that ever change?</strong><br />
It&#8217;s fundamentally a marketing problem and one that <a href="http://www.flickr.com/photos/skookumdigitalworks/sets/72157627684737754/">we and 70+ other Charlotte tech leaders have addressed face to face with Mayor Foxx</a>. Aside from numerous <a href="http://www.quora.com/What-are-the-top-startups-in-the-Charlotte-NC-area">local startups</a> and technical partners like ourselves, all of the banks are essentially technology companies. </p>
<p>For just one example, If you took all the programmers out of Bank of America, they would comprise the tenth largest tech company in the world. BoA has technology needs that make engineers at IBM cry. </p>
<p>We like to think we&#8217;re doing our part recruiting talent to the area and flying the flag in front of national entrepreneurs. We have clients all over the place happy to come see us and come visit Charlotte. </p>
<p>Charlotte is already a tech hub, but the city definitely needs to get better about spreading that message. </p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/O3Z3EHs4Le4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/charlotte-programming-company-helps-business-clients-go-digital/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/charlotte-programming-company-helps-business-clients-go-digital/</feedburner:origLink></item>
		<item>
		<title>Debugging with the Weinre</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/ZrXHrm7nBNE/</link>
		<comments>http://skookum.com/blog/debugging-with-the-weinre/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 17:24:04 +0000</pubDate>
		<dc:creator>dustan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[strange library names]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1645</guid>
		<description><![CDATA[weinre. A rather odd accronym indeed. It could be pronounced why • ner • ree. Or wee • ner (which my training of the English language biases me towards). weinre. Web Inspector Remote. This is what happens when developers make and market a product. weinre. Weinre is a tool for remotely debugging your web pages. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>weinre</strong>. A rather odd accronym indeed. It could be pronounced <code>why • ner • ree</code>.<br />
Or <code>wee • ner</code> (which my training of the English language biases me towards).</p>
<p><strong>weinre.</strong> Web Inspector Remote. This is what happens when developers make and market a product.</p>
<h2>weinre.</h2>
<p>Weinre is a tool for remotely debugging your web pages. Let’s say you’re building a responsive web site or a mobile web app. iOS’s Debug Console certainly can’t be the most helpful option for peeking behind the curtain. This is where weinre comes in.</p>
<p>Recently being brought into the Phonegap fold (and therefore Apache and the Apache Incubator), weinre is undergoing active development. You can learn about weinre at<br />
<a href="https://phonegap.github.com/weinre/Home.html">phonegap.github.com/weinre/Home.html</a> or <a href="https://callback.github.com/callback-weinre">callback.github.com/callback-weiner</a> (callback is the Apache Incubator github account).</p>
<blockquote class="float-right">
<p style="margin-top: 0;">Watch a demo<br />
on <a href="http://www.youtube.com/watch?v=gaAI29UkVCc">Youtube</a></p>
</blockquote>
<p>Here, you’ll learn that if you’re on OSX there is <a href="https://nodeload.github.com/pmuellr/weinre/zipball/1.4.0">an app</a> to get you up and running fast. You’ll learn that it’s a javascript-only implementation of the Webkit Inspector. You’ll learn that there are three parts (each with the word “Debug” in it’s name). But what you won’t learn is how to open up your localhost development server to outside devices. For that you came here.</p>
<p>To begin using weinre to remotely debug your projects, simply follow this six step program.</p>
<ol>
<li>Download the mac package from <a href="https://github.com/callback/callback-weinre/archives/master">https://github.com/callback/callback-weinre/archives/master</a></li>
<li>Create the directory and file
<pre>~/.weinre/server.properties</pre>
<p>with the following content:</p>
<pre>boundHost:  -all-</pre>
</li>
<li>Grab this bookmarklet <a href="javascript: (function(d,t,a){ var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; g.src=a.protocol+"//"+a.host+':8080/target/target-script-min.js'; s.parentNode.insertBefore(g,s) })(document, 'script', location);"> Weinrize it!</a></li>
<li>Launch weinre</li>
<li>Run local server and weinre on the same machine while opening the website on your remote device.</li>
<li>Bask in the glory of Webkit Inspector and iOS Development.</li>
</ol>
<p style="font-size: .875em; color: #777;">Disclaimer: Opening up your computer with all boundHosts has security implications.</p>
<p>Happy debugging.</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/ZrXHrm7nBNE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/debugging-with-the-weinre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/debugging-with-the-weinre/</feedburner:origLink></item>
		<item>
		<title>Automated WordPress Plugin Deployment</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/LhyTfROJJlw/</link>
		<comments>http://skookum.com/blog/automated-wordpress-plugin-deployment/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 16:43:30 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1618</guid>
		<description><![CDATA[Have you ever found a tool that made things so much easier you had to tell as many people about it as soon as possible? Yeah, that just happened to me. A little back story: I wrote a pretty neat WordPress plugin and had it hosted on GitHub. Basically, it takes an iTunes App Store [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever found a tool that made things so much easier you had to tell as many people about it as soon as possible? Yeah, that just happened to me.</p>
<p><img class="aligncenter size-full wp-image-1636" title="sdw_spacer" src="http://skookum.com/wp-content/uploads/2012/01/sdw_spacer.jpg" alt="" width="600" height="15" /></p>
<h2>A little back story:</h2>
<p>I wrote a pretty neat WordPress plugin and had it <a href="https://github.com/markrickert/App-Display-Page">hosted on GitHub</a>. Basically, it takes an iTunes App Store application ID and fetches all the data about it and displays it on a WordPress site (while caching it for you in the WordPress database).</p>
<p>So I wanted to release it to the world using the WordPress plugin directory&#8230; the go-to location for finding plugins. If it didn&#8217;t live there, it basically had zero chance of getting any usage whatsoever. Nobody goes <a href="https://github.com/search?type=Everything&amp;language=PHP&amp;q=wordpress+plugin">searching GitHub</a> for WordPress plugins.</p>
<p><img class="aligncenter size-full wp-image-1636" title="sdw_spacer" src="http://skookum.com/wp-content/uploads/2012/01/sdw_spacer.jpg" alt="" width="600" height="15" /></p>
<h2>There was <em>one</em> problem&#8230;</h2>
<p>WordPress uses SVN as the required source code management tool for publishing plugins. You <s>clone</s> check out the repository, make your changes, commit them and then tag the new version and the WordPress plugin directory detects the change and within a few minutes, your updated plugin is released to the world and every site that is using your plugin gets a little message at the top of the admin bar asking them to update their version of the plugin.</p>
<p>Except I haven&#8217;t used SVN <a href="http://www.ear-fung.us/2009/11/20/git-versioning-system-just-blew-my-mind/" target="_blank">in about 4 years</a>. Basically the whole world has moved to GIT. There&#8217;s been a exodus from SVN, CVS, Perforce, Mercurial, etc. because of GIT&#8217;s <a href="http://whygitisbetterthanx.com/" target="_blank">ease of use and distributed model</a>.</p>
<p><img class="aligncenter size-full wp-image-1636" title="sdw_spacer" src="http://skookum.com/wp-content/uploads/2012/01/sdw_spacer.jpg" alt="" width="600" height="15" /></p>
<h2>GIT to the rescue</h2>
<p>Recent versions of GIT have really focused on integrating SVN as much as possible. The git-svn command is powerful enough to clone an entire SVN repository and allow you to work on it like it&#8217;s a GIT repository, then commit your history back to the SVN server, and the SVN server is none the wiser.</p>
<p>So I <em>knew</em> there had to be an easy and/or automated way to publish and then submit subsequent updates to my application.</p>
<p><img class="aligncenter size-full wp-image-1636" title="sdw_spacer" src="http://skookum.com/wp-content/uploads/2012/01/sdw_spacer.jpg" alt="" width="600" height="15" /></p>
<h2>tl;dr bro</h2>
<p>I know, I know&#8230;</p>
<p><img class="aligncenter size-full wp-image-1636" title="sdw_spacer" src="http://skookum.com/wp-content/uploads/2012/01/sdw_spacer.jpg" alt="" width="600" height="15" /></p>
<h2>Which brings me to my point:</h2>
<p>With a little Google-fu, I found <a href="http://find.brentshepherd.com/" target="_blank">Brent Shepherd&#8217;s</a> blog post about his <a href="http://thereforei.am/2011/04/21/git-to-svn-automated-wordpress-plugin-deployment/" target="_blank">Automated WordPress Plugin Deployment script</a>. Basically, it&#8217;s a bash script that you download and put into every plugin repos and change a few variables. When you&#8217;re don&#8217;e working on some features, just run ./deploy.sh and it automatically, checks out the SVN plugin, updates it with all your changes, making sure to ignore your GitHub &#8220;README.md&#8221; and the deploy script itself. Then it tags the new version and commits everything back to the WordPress server. It even aborts if it detects your readme.txt file stable version number doesn&#8217;t match your plugin&#8217;s declared version.</p>
<p>Thanks, Brent, for the fantastic deploy script. It worked flawlessly on the first try and my new plugin <a href="http://wordpress.org/extend/plugins/app-display-page/" target="_blank">has been published</a>.</p>
<p>Octocat to the rescue.<br />
<a href="https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh"><img class="size-thumbnail wp-image-1623 alignnone" title="Well, technically, the Octocat only has 5 arms in the image, but I'm assuming that the rest are perfectly in line with the front legs." src="http://skookum.com/wp-content/uploads/2012/01/github-150x150.png" alt="Well, technically, the Octocat only has 5 arms in the image, but I'm assuming that the rest are perfectly in line with the front legs." width="150" height="150" /></a></p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/LhyTfROJJlw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/automated-wordpress-plugin-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/automated-wordpress-plugin-deployment/</feedburner:origLink></item>
		<item>
		<title>Open an iOS App from an Email</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/ho-k7ye12TE/</link>
		<comments>http://skookum.com/blog/open-an-ios-app-from-an-email/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 15:33:49 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1585</guid>
		<description><![CDATA[Apple has allowed iOS apps to register their own URL schemes on your devices for a while now, but I&#8217;ve never used this functionality in-depth &#8217;till just recently. Having your app register a URL scheme on a device means that you can open an installed application on a user&#8217;s iPhone or iPad in ONE CLICK from their email (or [...]]]></description>
			<content:encoded><![CDATA[<p>Apple has allowed iOS apps to register their own URL schemes on your devices for a while now, but I&#8217;ve never used this functionality in-depth &#8217;till just recently.</p>
<p>Having your app register a URL scheme on a device means that you can open an installed application on a user&#8217;s iPhone or iPad in ONE CLICK from their email (or the web, or another application). There are all sorts of apps <a href="http://wiki.akosma.com/IPhone_URL_Schemes" target="_blank">already using this functionality</a>.</p>
<h2>Use Case</h2>
<p>We just used this for a project where the client would send confirmation emails to the user after signup. The email would contain an link to a URL. The URL opens in mobile Safari, then launches the app and seamlessly logs the user into the app.</p>
<p>That&#8217;s one use case; there&#8217;s probably others (let us know yours). Another one could be a URL embeded in text—say someone is reading on their iPad and the content could prompt them to hop over to the app.</p>
<h2>Try It Out</h2>
<p>If a user has your app installed on their device, all you have to do is send them to my-great-app://whatever/ and Safari will resign to the background and your app will open. Why don&#8217;t you try it? I <em>know</em> you&#8217;ve got the Facebook app installed on your iPhone. Just clear your address bar and type (or click the link): <a href="fb://profile" target="_blank">fb://profile</a></p>
<p>Go ahead, I&#8217;ll wait.</p>
<p>It opened the Facebook app and took you to your profile page (or gave you a big fat cryptic error message if you don&#8217;t have the Facebook app installed). Facebook allows <a href="http://wiki.akosma.com/IPhone_URL_Schemes#Facebook" target="_blank">a LOT of options</a> that you can pass to the application to take you into various parts of the app.</p>
<h2>Process</h2>
<p>So enough about the Facebook app. What does a developer do if they want to pass a bunch of data to the app—without actually defining what needs to be passed using a bunch of if/else or switch statements?</p>
<p>It&#8217;s fairly trivial to add url scheme to your application&#8217;s Info.plist:</p>
<ol>
<li>Register the url scheme in your Info.plist. Lets say: my-great-app://</li>
<li>In the application delegate, implement this method and return YES:
<pre><a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html" target="_blank">application:openURL:sourceApplication:annotation:</a></pre>
</li>
<li>That&#8217;s it!</li>
</ol>
<p>I wrote a method you can add to your application that allows the passing of data through the url with key/pair values like so:</p>
<p>my-great-app://user_id/27/token/really9385long5892data/email/user@yourservice.com/</p>
<p>When the user clicks a link like that, or you auto-redirect them from your site to that URL, you can parse the URL into an NSDictionary with this code. Here&#8217;s the method and an example implementation along with some pretty badass comments so you know what the heck is going on:</p>
<script src="https://gist.github.com/1507673.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1507673">Gist</a>.</p></noscript>
<p>Let me know in the comments if you find this useful at all or if you make changes to it.</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/ho-k7ye12TE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/open-an-ios-app-from-an-email/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/open-an-ios-app-from-an-email/</feedburner:origLink></item>
		<item>
		<title>Who Says Speed Kills?</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/OKY4l1akgcw/</link>
		<comments>http://skookum.com/blog/who-says-speed-kills/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 18:20:05 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1550</guid>
		<description><![CDATA[Skookum Digital Works is wicked fast. Speed to market. Speed to prototype. Speed to minimum viable product. Never is developmental speed more apparent than when I think back to my pre-SDW sales life. I ran a software company. Same industry. Same clients. Same challenges. And two completely different approaches to solving those same business needs. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://skookum.com/blog/who-says-speed-kills/speedkills_web/" rel="attachment wp-att-1556"><img src="http://skookum.com/wp-content/uploads/2011/12/speedkills_web.jpg" alt="" title="speedkills_web" width="600" height="339" class="aligncenter size-full wp-image-1556" /></a><br />
Skookum Digital Works is wicked fast. <strong>Speed to market. Speed to prototype. Speed to minimum viable product.</strong> </p>
<p>Never is developmental speed more apparent than when I think back to my pre-SDW sales life. </p>
<p>I ran a software company. </p>
<p>Same industry.<br />
Same clients.<br />
Same challenges.<br />
And two <strong>completely different approaches</strong> to solving those same business needs. </p>
<p><a href="http://skookum.com/blog/who-says-speed-kills/nun_web/" rel="attachment wp-att-1560"><img src="http://skookum.com/wp-content/uploads/2011/12/nun_web.jpg" alt="" title="nun_web" width="77" height="83" class="alignright size-full wp-image-1560" /></a>Perhaps my impressionable years of growing up in a Parochial school operated by nuns armed with wooden rulers lead to habits that played a role in my partiality for an inflexible, doctrinaire approach to application development.</p>
<p>I thought our 350+ page specifications documents were awesome. I thought our inflexible system produced predictable results. I thought our lumbering process equated thoroughness.</p>
<p>That all changed when I fell in love with Skookum. SDW was the company I always <em>envisioned</em> building. </p>
<p>SDW was nimble.<br />
SDW was able to change course and turn on a dime.<br />
SDW was fast, unfussy, AND thorough.  </p>
<p>Importantly, <strong>SDW also had a full toolbox.</strong> At my .NET shop, we had one hammer, so every problem looked like a nail. </p>
<p>Skookum has its own creative department. Instead of waiting for innovation to come from Microsoft, SDW makes their own. Gone are the square buttons and pull downs of the .NET environment (and expensive licensees), and instead, I can now give clients, chic, state-of-the art solutions emphasizing <strong>intuitive design</strong> and <strong>natural functionality</strong>. </p>
<p>I admit it, I&#8217;ve become an <strong>Agile convert</strong> and enjoy nothing more than winning over clients both former and new. I like showing how they too can be better, faster, and more nimble. Ahead of schedule, and under budget. No fuss, just <strong>shipped code</strong>. </p>
<p>I used to think complex web-based application development meant one thing—mass. </p>
<p>Now I know I was wrong. Whoever said “Speed Kills…” has obviously never worked with Skookum Digital Works before.</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/OKY4l1akgcw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/who-says-speed-kills/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/who-says-speed-kills/</feedburner:origLink></item>
		<item>
		<title>Don’t Let String Sanitization Slow You Down</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/tQpZPJZQKcE/</link>
		<comments>http://skookum.com/blog/dont-let-string-sanitization-slow-you-down/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 13:48:10 +0000</pubDate>
		<dc:creator>Corey Ballou</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Experimental Dev]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1518</guid>
		<description><![CDATA[If you&#8217;ve ever taken a gander at a string sanitization class or library, you&#8217;ve probably noticed the amount of code necessary to keep the script kiddies at bay. We&#8217;re talking about slow string manipulations, i.e. string replacements and regular expressions. Most MVC Frameworks today come with some form of sanitization or input filtering class built [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever taken a gander at a string sanitization class or library, you&#8217;ve probably noticed the amount of code necessary to keep the <a href="http://en.wikipedia.org/wiki/Script_kiddie" target="_blank">script kiddies</a> at bay. We&#8217;re talking about slow string manipulations, i.e. <em>string replacements</em> and <em>regular expressions</em>.</p>
<p>Most <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC </a>Frameworks today come with some form of sanitization or input filtering class built in. The problem with many of these libraries is that they fail to clean some of the more creative attack vectors. To combat this, some people use drop in libraries like <a href="https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project" target="_blank">OWASP AntiSamy</a> or <a href="http://htmlpurifier.org/" target="_blank">HTML Purifier</a> to ensure their data is getting scrubbed clean. HTMLPurifier, for instance, uses a Smoke Test via the <a href="http://ha.ckers.org/xss.html" target="_blank">ha.ckers.org</a> XSS attack list (the de-facto standard for finding attack vectors to test, might I add) to ensure they&#8217;re cleaning anything and everything.<span id="more-1518"></span></p>
<h2 style="margin-top:30px">So What&#8217;s The Problem?</h2>
<p>Cleaning a string is slow, to say the least. A slow load time is the bane of your site&#8217;s existence. Customers and visitors hate waiting. The tools mentioned above, as well as any equivalent unmentioned tools, accomplish the task via brute force stripping of characters and numerous regular expressions. Here are a few examples of some common XSS filters out there:</p>
<ul style="margin-bottom: 20px">
<li><a href="http://api.drupal.org/api/drupal/includes--common.inc/function/filter_xss/7" target="_blank">Drupal: filter_xss</a></li>
<li><a href="http://kohanaframework.org/3.0/guide/api/Security#xss" target="_blank">Kohana 3: Security::xss</a></li>
<li><a href="https://github.com/chriso/node-validator/blob/master/lib/xss.js" target="_blank">node-validator: xss.js</a></li>
<li><a href="http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html" target="_blank">Rails 3: SanitizeHelper</a>
</ul>
<p>To optimize these libraries, we need to step back a minute and think about what it is we&#8217;re trying to accomplish. In this case, <em>how can we go about skipping all of the string manipulations and pattern matching with no loss in security?</em></p>
<h2 style="margin-top:30px">So What&#8217;s The Solution?</h2>
<p>There is no catch-all solution, especially if you&#8217;re trying to sanitize HTML coming in from a WYSIWYG editor. There is, however, a very worth-while tweak you can use to make your site&#8217;s sanitization much, much faster under most circumstances. The simple solution is to start your sanitization with a conditional statement which checks to see if the string is already clean of tom-foolery, and return it if so. Grunt work avoided. The reason such a simple trick works is because 99.9% of user input is going to be alpha-numeric with a few sprinkles of punctuation. Don&#8217;t quote me on that.</p>
<script src="https://gist.github.com/1476491.js"></script><noscript><p>View the code on <a href="https://gist.github.com/1476491">Gist</a>.</p></noscript>
<h2 style="margin-top:30px">The Wrap-Up</h2>
<p>It&#8217;s debatable as to what additional characters you can add to this without overly complicating the solution and potentially introducing security holes. I&#8217;ll leave it up to you as the reader to suggest alternative whitelist regexes or punch holes in the solution (like <em><strong>hey guy, how do you know if the character set is in utf-8?</strong></em>). </p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/tQpZPJZQKcE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/dont-let-string-sanitization-slow-you-down/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/dont-let-string-sanitization-slow-you-down/</feedburner:origLink></item>
		<item>
		<title>SDW Logo Photoshop Fun</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/CyHson1BVSc/</link>
		<comments>http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 17:18:45 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[Culture]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1453</guid>
		<description><![CDATA[As the SDW ranks are growing, so too are the office non-sequiturs. Back in the spring, we had the fabulous Aaron Draplin re-work our logo which is just ripe for interpretation. We&#8217;ve heard it called everything from the &#8220;mother ship&#8221; to the &#8220;alien egg&#8221; to (my favorite) the &#8220;space volcano.&#8221; (Also, I&#8217;m the one who [...]]]></description>
			<content:encoded><![CDATA[<p>As the <a href="http://skookum.com/jobs">SDW ranks are growing</a>, so too are the office non-sequiturs. </p>
<p>Back in the spring, we had the fabulous <a href="http://draplin.com">Aaron Draplin</a> re-work our logo which is just ripe for interpretation. We&#8217;ve heard it called everything from the &#8220;mother ship&#8221; to the &#8220;alien egg&#8221; to (my favorite) the &#8220;space volcano.&#8221; (Also, I&#8217;m the one who says &#8220;space volcano.&#8221;)</p>
<p><a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/skookum_draplin/" rel="attachment wp-att-1493"><img src="http://skookum.com/wp-content/uploads/2011/12/skookum_draplin.jpg" alt="" title="Skookum Digital Works by Aaron Draplin" width="600" height="396" class="aligncenter size-full wp-image-1493" /></a></p>
<p>Recently, our SDW design whizzes have been leading ad-hoc Photoshop classes for the guys who do nothing but stare at the Terminal all day. One of those forays quickly resulted in a round-robin PSD free-for-all with the results included below. </p>
<p><a href="http://draplin.com"><img src="http://skookum.com/wp-content/uploads/2011/12/draplin.png" alt="Aaron Draplin" title="WTF have you done to my logo?" width="76" height="105" class="alignright size-full wp-image-1488" /></a>I know the one, Mr. Draplin would be horrified to see his meticulously crafted logo butchered in all manners presented; I hope to do a full writeup on the identity process at some point to show off some of the other great things we&#8217;ve yet unleashed. </p>
<p><img src="http://skookum.com/wp-content/uploads/2011/10/sdw_spacer.jpg" alt="" title="whatwhat" width="600" height="15" class="aligncenter size-full wp-image-1368" /><br />
<img src="http://skookum.com/wp-content/uploads/2011/10/sdw_spacer.jpg" alt="" title="whatwhat" width="600" height="15" class="aligncenter size-full wp-image-1368" /></p>
<h3>Skookum Digital Works Logo Photoshop Roundup (<a href="http://gizmodo.com/5586968/17-ways-sports-could-be-spiced-up-with-tech">Gizmodo Style</a>).</h3>
<p><img src="http://skookum.com/wp-content/uploads/2011/10/sdw_spacer.jpg" alt="" title="whatwhat" width="600" height="15" class="aligncenter size-full wp-image-1368" /></p>
<h2>Honorable Mentions</h2>
<p>From the Land of Obvious&#8230;nice try, Jason (probably the first time he&#8217;s used PSD, so good effort there).<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/obvious1/" rel="attachment wp-att-1463"><img src="http://skookum.com/wp-content/uploads/2011/12/obvious1.jpg" alt="" title="Skookum Digital Works Bat Signal" width="600" height="340" class="aligncenter size-full wp-image-1463" /></a></p>
<p>Body Art from <a href="http://twitter.com/#!/HunterLoftis">Hunter</a> and <a href="http://twitter.com/#!/jameshartsell">James</a>, respectively.<br />
<a href="http://skookum.com/wp-content/uploads/2011/12/body.jpg"><img src="http://skookum.com/wp-content/uploads/2011/12/body.jpg" alt="" title="body" width="600" height="436" class="aligncenter size-full wp-image-1466" /></a></p>
<p>The I-see-what-you-did-there from <a href="http://twitter.com/#!/iamdustan">Dustan</a>.<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/barrack-for-skookum1/" rel="attachment wp-att-1470"><img src="http://skookum.com/wp-content/uploads/2011/12/barrack-for-skookum1.jpg" alt="" title="Barrack for Skookum Digital Works" width="600" height="800" class="aligncenter size-full wp-image-1470" /></a></p>
<p>An homage to the Carolinas, also from Jason (learning quickly).<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/racing/" rel="attachment wp-att-1473"><img src="http://skookum.com/wp-content/uploads/2011/12/racing.jpg" alt="" title="Skookum Digital Works Race Team" width="600" height="301" class="aligncenter size-full wp-image-1473" /></a></p>
<p>If you pay your bills to SDW, you pay them to Don. And Don likes golf.<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/tiger/" rel="attachment wp-att-1474"><img src="http://skookum.com/wp-content/uploads/2011/12/tiger.jpg" alt="" title="tiger" width="190" height="304" class="aligncenter size-full wp-image-1474" /></a></p>
<p>Banksy from <a href="http://twitter.com/#!/rrobinson81">Rich</a>.<br />
<a href="http://skookum.com/wp-content/uploads/2011/12/one-nation.jpg"><img src="http://skookum.com/wp-content/uploads/2011/12/one-nation.jpg" alt="" title="Skookum Digital Works Banksy" width="600" height="567" class="aligncenter size-full wp-image-1467" /></a></p>
<h2>Winners</h2>
<p>5. Tron from <a href="http://twitter.com/#!/snodgrass23">Jim</a>.<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/5_tron1/" rel="attachment wp-att-1477"><img src="http://skookum.com/wp-content/uploads/2011/12/5_tron1.jpg" alt="" title="5_tron1" width="600" height="319" class="aligncenter size-full wp-image-1477" /></a></p>
<p>4. &#8220;Starbury&#8221; from <a href="http://twitter.com/#!/CRManley">Chris</a> (this got some laughs).<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/4_starbury1/" rel="attachment wp-att-1478"><img src="http://skookum.com/wp-content/uploads/2011/12/4_starbury1.jpg" alt="" title="4_starbury1" width="600" height="338" class="aligncenter size-full wp-image-1478" /></a></p>
<p>3. Mischief. Mayhem. Node. From <a href="http://twitter.com/#!/rrobinson81">Rich</a> again.<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/3_mischief-mayhem-node/" rel="attachment wp-att-1479"><img src="http://skookum.com/wp-content/uploads/2011/12/3_mischief-mayhem-node.png" alt="" title="Skookum Digital Works Fight Club" width="600" height="689" class="aligncenter size-full wp-image-1479" /></a></p>
<p>2. Skookums Helped Build the Pyramids, from <a href="http://twitter.com/#!/snodgrass23">Jim</a> again (two top fives, nice).<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/2_hieroglyphs1/" rel="attachment wp-att-1480"><img src="http://skookum.com/wp-content/uploads/2011/12/2_hieroglyphs1.jpg" alt="" title="2_hieroglyphs1" width="600" height="396" class="aligncenter size-full wp-image-1480" /></a></p>
<p>1. 2001, from <a href="http://twitter.com/#!/joshoakhurst">your&#8217;s truly</a>.<br />
<a href="http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/1_2001_1/" rel="attachment wp-att-1481"><img src="http://skookum.com/wp-content/uploads/2011/12/1_2001_1.jpg" alt="" title="2001 Space Odyessy Skookum Digital Works" width="600" height="334" class="aligncenter size-full wp-image-1481" /></a></p>
<h2>Rigged</h2>
<p>This was my blog post; you didn&#8217;t thing I was going to lose, right? (Also, I&#8217;m the only cinefile here, so I accept this first place award in protest. Y&#8217;all need to get right with Kubrick.) </p>
<p>Would you like to <a href="http://dl.dropbox.com/u/21723787/skookum.psd.zip">play</a>? </p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/CyHson1BVSc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/skookum-digital-works-aaron-draplin-logo-photoshop-fun/</feedburner:origLink></item>
		<item>
		<title>Web &amp; Mobile Developers Turned Windows Developers, Overnight?</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/105YJAxIx5U/</link>
		<comments>http://skookum.com/blog/web-and-mobile-html5-developers-turned-windows-8-developers-overnight/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 15:56:38 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1427</guid>
		<description><![CDATA[Buried in a June announcement and first public demo of Windows 8, Microsoft—the uncool, lumbering, gray-haired, monolith that inspires exactly zero new developers to take up the practice1, let loose an off-hand remark saying their new development platform would be based on HTML5 and JavaScript. Yeah, wow. It&#8217;s a little surprising this revelation has not [...]]]></description>
			<content:encoded><![CDATA[<p>Buried in a <a href="http://arstechnica.com/microsoft/news/2011/06/microsoft-gives-the-first-official-look-of-windows-8-touch-interface.ars">June announcement and first public demo of Windows 8</a>, Microsoft—the uncool, lumbering, gray-haired, monolith that inspires exactly zero new developers to take up the practice<sup>1</sup>, let loose an off-hand remark saying their new development platform would be based on <a href="http://arstechnica.com/microsoft/news/2011/06/html5-centric-windows-8-leaves-microsoft-developers-horrified.ars">HTML5 and JavaScript</a>. </p>
<p>Yeah, wow.</p>
<p>It&#8217;s a little surprising this revelation has not received further attention from [allow me, cough] <em>progressive</em> web and mobile application developers given the basis of their existing skill-set can soon be applied to the desktop development. It could be, perhaps, that a lot of <em>forward-leaning</em> <a href="http://skookum.com/blog/digital-manufacturing-in-a-21st-century-economy/">digital manufacturers</a> don&#8217;t USE Microsoft products and therefore are ambivalent to advancements in its production environment. Though for the business-minded application development shop, it&#8217;s hard to overstate this new opportunity.</p>
<p>And for <a href="http://forums.silverlight.net/post/562123.aspx">lifelong</a> .NET, VisualStudio, and Silverlight software developers who long ago exclusively hitched their wagon to whatever-came-out-of-Redmond, their reaction to news relating to the downgrade of their respective skill-sets falls somewhere between the <a href="http://forums.silverlight.net/t/230502.aspx"> bothersome and ulcer-inducing.</a> Understandably. </p>
<p>Since Microsoft Vice President Julie Larson-Green first spoke of this transition, the company has mostly been mum on the issue. Their silence has largely <a href="http://www.zdnet.com/blog/microsoft/microsoft-needs-to-tell-windows-8-developers-now-about-jupiter-and-silverlight/9608">not been comforting</a> to their installed developer base. Not all the Windows 8 details have been worked out, and since their marketing and product development teams are still honing their message prior to an expected <a href="http://windows8beta.com/tag/windows-8-release-date">Windows 8 Spring 2012 release date</a>, Microsoft may continue to be working on features (i.e. some throwback SDK tooling) that will calm the fears of their existing devs.</p>
<p>For Microsoft, switching over to technologies aimed at <a href="http://www.zdnet.com/blog/microsoft/microsoft-needs-to-tell-windows-8-developers-now-about-jupiter-and-silverlight/9608"> &#8220;invigorating their Windows-developer ecosystem&#8221;</a> is an extremely intelligent business move. The sheer number of worldwide HTML5 and JavaScript professionals vastly outnumbers Microsoft &#8220;Sofities&#8221; (apparently, what Microsoft Windows devs call themselves, who knew?). </p>
<p>It&#8217;s rumored all the &#8220;cool&#8221; Windows 8 UI will be powered by this new-to-them dev stack—one of the main features being visual scalability of the apps to work across Windows 8 powered touchscreen tablets. (In other words, responsive Microsoft software.) Old-school Windows applications will still run and will still be produced using hammers and chisels<sup>2</sup>, but only in that weird-OS 9-to-OS X-classic-environment way. That&#8217;s a <a href="http://news.cnet.com/8301-10805_3-20070775-75/windows-8-and-anxiety-over-html5/">working</a> <a href="http://www.wired.com/gadgetlab/2011/06/microsoft-developers-windows-8/2/">theory</a>, anyway.</p>
<p>At Skookum Digital Works, we&#8217;ve now got a little skin in the Microsoft game. We&#8217;ve already been using HTML5 options to power cross platform mobile (iOS, Android, Blackberry, tablet, etc.) experiences that <em>also</em> look great on a larger browsers from desktops or laptops. In addition, we&#8217;re experts at bridging the browser-software-to-desktop-software chasm; to <em>now</em> think we&#8217;re now in the business of all web, all mobile, AND all (new) Windows platform apps is quite exciting. </p>
<p>Though anyone&#8217;s who&#8217;s spent hours or days rewriting IE rules can say&#8230;how <em>exactly</em> Microsoft decides to adopt HTML5 and JavaScript will be in the details. </p>
<p><sup>1</sup> hyberbole<br />
<sup>2</sup> there too</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/105YJAxIx5U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/web-and-mobile-html5-developers-turned-windows-8-developers-overnight/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/web-and-mobile-html5-developers-turned-windows-8-developers-overnight/</feedburner:origLink></item>
		<item>
		<title>In The Future, All Golf Balls Will Hit Themselves…</title>
		<link>http://feedproxy.google.com/~r/skookum/blog/~3/K-ShUtNo9YI/</link>
		<comments>http://skookum.com/blog/in-the-future-all-golf-balls-will-hit-themselves/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 17:11:05 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://skookum.com/?p=1408</guid>
		<description><![CDATA[&#8230;but until then, it&#8217;s our job to go out there and whack them around. Two makes it a ritual Though Skookum Digital Works was founded in 2005, the (official) first annual golf trip didn&#8217;t happen until 2010. Funny enough, it came at my expense. See, just a little more than a year ago, I was [...]]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/32572937" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>&#8230;but until then, it&#8217;s our job to go out there and whack them around. </p>
<h2>Two makes it a ritual</h2>
<p>Though Skookum Digital Works was founded in 2005, the (official) first annual golf trip didn&#8217;t happen until 2010. Funny enough, it came at my expense. </p>
<p>See, just a little more than a year ago, I was a client. I was the digital guy at an agency in New England, and the crew at SDW had built out a bunch of executions for me over a couple years. </p>
<p>And I totally screwed them.</p>
<p>The details won&#8217;t be interested to anyone outside of advertising, but on a Friday during a known, several-month timeline, I called in a nuke. I begged to have three of SDW&#8217;s finest crank over the weekend. They made it so I could make my client happy—I sent them a fat check.</p>
<p>Though we had a great relationship, Founder &#038; VP Bryan needed some convincing.<em>&#8220;Dude, If I do this for you, I&#8217;m actually going to shut down for a day next week to  apologize to my team for ruining their weekend. Like, I&#8217;m literally going to take part of your rush money and bring everyone golfing.&#8221;</em></p>
<p>Over the phone, I laughed because I knew he was serious. Also, I was fine with this arrangement. </p>
<h2>Second Time Around</h2>
<p>SDW makes non-office company time a priority, so we plan group outings on the reg. (*See also: <a href="http://skookum.com/blog/iphone-vs-android-paintball-edition/">paintball</a>.)</p>
<p>However, sometimes getting away as a group is very hard. We are teaming with startup businesses and custom software development, so our shop is slammed. Alas, a few us had to stay behind and tend projects at headquarters (better luck next time with the short straws Corey, Hunter, Chris S., Jon, Kenny, Rebecca). </p>
<p>And as you can see from the video, the 2nd Annual Skookum Digital Works Golf Outing was long on smiles and short on technique. We hope to share even more of these fun moments as our studio continues to grow. (And grow, and grow, and G R O W.)</p>
<p><a href="http://skookum.com/jobs/">Join the team</a>, will &#8216;ya? Besides, how many other places can you play golf a week before Thanksgiving? (Charlotte FTW.)</p>
<img src="http://feeds.feedburner.com/~r/skookum/blog/~4/K-ShUtNo9YI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://skookum.com/blog/in-the-future-all-golf-balls-will-hit-themselves/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://skookum.com/blog/in-the-future-all-golf-balls-will-hit-themselves/</feedburner:origLink></item>
	</channel>
</rss>

