<?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/"
	>

<channel>
	<title>Wizard Mode &#187; Tech</title>
	<atom:link href="http://wizardmode.com/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://wizardmode.com</link>
	<description>Justin de Vesine on life, food, technology, and whimsy</description>
	<lastBuildDate>Tue, 03 Apr 2012 16:08:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Compiling Ruby with Xcode 4.3</title>
		<link>http://wizardmode.com/2012/03/compiling-ruby-with-xcode-4-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=compiling-ruby-with-xcode-4-3</link>
		<comments>http://wizardmode.com/2012/03/compiling-ruby-with-xcode-4-3/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 17:20:22 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[gcc]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[scss]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://wizardmode.com/?p=272</guid>
		<description><![CDATA[Ever since Xcode 4.2, which removed gcc in favor of clang, ruby 1.8 (and some versions of 1.9, and many gems with native code) wouldn&#8217;t compile or wouldn&#8217;t work correctly when compiled. There was a workaround, in the form of the osx-gcc-installer. It was a little bit hacky &#8211; but the work and the author,&#8230;]]></description>
			<content:encoded><![CDATA[<p>Ever since Xcode 4.2, which removed gcc in favor of clang, ruby 1.8 (and some versions of 1.9, and many gems with native code) wouldn&#8217;t compile or wouldn&#8217;t work correctly when compiled.  There was a workaround, in the form of the <a href="https://github.com/kennethreitz/osx-gcc-installer/">osx-gcc-installer</a>.  It was a little bit hacky &#8211; but the work and the author, Kenneth Reitz, were basically responsible for <a href="http://kennethreitz.com/xcode-gcc-and-homebrew.html">making the command-line tools package happen</a>.</p>
<p>Now it&#8217;s very easy to get a full compiler environment, including pure gcc (rather than clang&#8217;s emulation of it), that can build all variants of ruby and gems without an issue. The trivial process goes like this:</p>
<p>First, download and install the <b>Command Line Tools for Xcode</b>.  These can be installed either through Preferences > Downloads > Components in the full Xcode 4.3 install, or by <a href="http://developer.apple.com/downloads">downloading</a> and installing the standalone package.</p>
<p>Next, <a href="https://github.com/mxcl/homebrew/wiki/installation">install homebrew</a>, a fantastic package manager for OS X.  Run <code>brew update</code> to make sure it&#8217;s fully up to date.</p>
<p>Next, add the homebrew &#8220;dupes&#8221; repository (or &#8220;keg&#8221;), some necessary recipes for installation, and the real gcc 4.2:</p>
<pre class="brush: bash; title: ; notranslate">brew tap homebrew/homebrew-dupes
brew install autoconf automake
brew install apple-gcc42
</pre>
<p>Now you can safely build and install various rubies.  <a href="https://rvm.beginrescueend.com/">rvm</a> is a great way to do this without stepping on the system-installed ruby:</p>
<pre class="brush: bash; title: ; notranslate">bash -s stable &lt; &lt;(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
source ~/.rvm/scripts/rvm
rvm get head
rvm install 1.8.7
rvm install 1.9.3-head
</pre>
<p>Now you can install <a href="http://compass-style.org/install/">compass</a> and use <a href="http://sass-lang.com/">scss</a> in style.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardmode.com/2012/03/compiling-ruby-with-xcode-4-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iMania, revisited</title>
		<link>http://wizardmode.com/2012/03/imania-revisited/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=imania-revisited</link>
		<comments>http://wizardmode.com/2012/03/imania-revisited/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 00:17:04 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">http://wizardmode.com/?p=258</guid>
		<description><![CDATA[It&#8217;s been a couple of years since the iPad was first released. It&#8217;s time for a new version; the iPad 3 is reportedly being announced tomorrow. Hey, look at that &#8211; everything I asked for (at least explicitly) when the original iPad came out has come to pass. Backgrounding apps (mostly) works; you can run&#8230;]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a couple of years since the iPad was first released.  It&#8217;s time for a new version; the iPad 3 is reportedly being announced tomorrow.  Hey, look at that &#8211; everything <a href="http://wizardmode.com/2010/01/imania/">I asked for</a> (at least explicitly) when the original iPad came out has come to pass.  Backgrounding apps (mostly) works; you can run Processing.js using one of <a href="http://itunes.apple.com/us/app/processing-for-ios-javascript/id492576043?mt=8">various</a> <a href="http://itunes.apple.com/us/app/pr0c3551n6-processing-ide/id493549542?mt=8">apps</a> (probably several others, too); my sister even got a <del>pony</del> horse of her own, and a second horse, in the meantime.<br />
When I said:</p>
<blockquote><p>On the minus side: Apple has made, and will continue to make, an intentionally crippled and limited device in the name of a better overall user experience.</p></blockquote>
<p>I believe I was and still am entirely accurate; this isn&#8217;t necessarily a bad thing, of course.  The recent concerns about address book privacy illustrate the concern perfectly; unrestricted access can easily lead to a very poor user experience.  </p>
<p>Furthermore, when I said:</p>
<blockquote><p>[The iPad will be] an unbelievable platform, and one which the vast majority of people will find satisfies their needs and exceeds all their expectations.</p></blockquote>
<p>it turns out that I was more right than I expected to be &#8211; people are using iPads as their primary (!) machines, without so much as an external keyboard, for serious writing and content creation.  It doesn&#8217;t satisfy all my needs, but it sure satisfies most of them, and exceeded most of my expectations.</p>
<p>What&#8217;s next? Well, iCloud and various other things have demonstrated that Apple&#8217;s goals point squarely at closer integration of all platforms, less reliance on the continual presence of a particular device itself, and a simpler user experience.  Some of these things are fantastic &#8211; Photo Stream saves me a huge amount of time &#8211; and some of them not so much &#8211; Launchpad on the desktop is a sad joke.  The App Store sandboxing and signing restrictions are very much a reasonable tradeoff (especially with non-App Store developer signatures in the offering for Mountain Lion), but splitting the APIs up so some of them are only available to App Store apps and some of them are only available (or at least useful) to non-App Store apps seems like a nightmare if it continues.</p>
<p>So: the iPad will continue to be a rampaging success.  Apple TV will end up being less about a media box per se and more about a central hub for your devices to cross-connect (or maybe the Apple TV box will be /just/ a media interface, and the next generation of Airport devices will provide the smart hub).  They&#8217;ll (maybe) figure out how to make iCloud not suck so much if you have a bunch of machines connected to the same account all on a local network.  Xcode will continue to be an amazingly headachy IDE wrapped around a progressively more impressive compiler.  Other businesses will continue to violently misunderstand what Apple is doing. They&#8217;ll continue to do unpleasant, walled-garden things in the name of a delightful-but-controlled user experience.  I&#8217;ll keep using Apple products, and a Linux box, and a Windows box (but I&#8217;m probably not going to upgrade to W8 any time soon).</p>
<p>And I&#8217;ll hope that legislation doesn&#8217;t cause the internet to crumble out from under me in the meantime.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardmode.com/2012/03/imania-revisited/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git Flow: it&#8217;s child&#8217;s play</title>
		<link>http://wizardmode.com/2012/01/git-flow-its-childs-play/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-flow-its-childs-play</link>
		<comments>http://wizardmode.com/2012/01/git-flow-its-childs-play/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 16:53:16 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[toys]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://wizardmode.com/?p=203</guid>
		<description><![CDATA[At work, we&#8217;re moving over to use Git Flow. (A moment of background: Git is a &#8220;version control system&#8221;, a way of keeping a history of all the changes you&#8217;ve made to a file or files, in much the same way as one might have &#8220;important_spreadsheet_20120103.xls&#8221;, &#8220;important_spreadsheet_20120104.xls&#8221;, &#8220;important_spreadsheet_original.xls&#8221;, and so forth &#8211; but with much&#8230;]]></description>
			<content:encoded><![CDATA[<p>At work, we&#8217;re moving over to use <a href="http://nvie.com/posts/a-successful-git-branching-model/">Git Flow</a>. (A moment of background: Git is a &#8220;version control system&#8221;, a way of keeping a history of all the changes you&#8217;ve made to a file or files, in much the same way as one might have &#8220;important_spreadsheet_20120103.xls&#8221;, &#8220;important_spreadsheet_20120104.xls&#8221;, &#8220;important_spreadsheet_original.xls&#8221;, and so forth &#8211; but with much less clutter.)</p>
<p>It&#8217;s sometimes hard to visualize what&#8217;s going on with Git when you&#8217;re unfamiliar with it, and not everybody is familiar with the concept of a <a href="http://eagain.net/articles/git-for-computer-scientists/">Directed Acyclic Graph</a>, so to help get everyone up to speed, we ordered a Tinkertoy set.</p>
<p><a href="http://wizardmode.com/wp-content/uploads/2012/01/git-tinkertoy.jpg"><img src="http://wizardmode.com/wp-content/uploads/2012/01/git-tinkertoy-225x300.jpg" alt="" title="Tinkertoy Git" width="225" height="300" class="alignnone size-medium wp-image-204" /></a></p>
<p>There are probably better ways to spend Monday morning at work than putting together a Tinkertoy model of a Git repository, but I can&#8217;t think what they might be.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardmode.com/2012/01/git-flow-its-childs-play/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iMania</title>
		<link>http://wizardmode.com/2010/01/imania/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=imania</link>
		<comments>http://wizardmode.com/2010/01/imania/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 05:39:34 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://wizardmode.com/?p=33</guid>
		<description><![CDATA[The Apple iPad, like many apple products before it, has polarized people. Some people love it, some people hate it. Some people will use it everywhere, some people honestly can’t imagine a single use. As with many products before, I fall somewhere in the middle. On the plus side: It looks like a beautiful piece&#8230;]]></description>
			<content:encoded><![CDATA[<p>The Apple iPad, like many apple products before it, has polarized people. Some people love it, some people hate it. Some people will use it everywhere, some people honestly can’t imagine a single use.</p>
<p>As with many products before, I fall somewhere in the middle.</p>
<p>On the plus side: It looks like a beautiful piece of hardware; every report I have read says that using it is a dream come true to any fan of the various iTouches. Fast, integrated, smooth, and with beautiful user interface decisions; top of the line hardware and (more polish on) groundbreaking software combine to make an unbelievable platform, and one which the vast majority of people will find satisfies their needs and exceeds all their expectations.</p>
<p>On the minus side: Apple has made, and will continue to make, an intentionally crippled and limited device in the name of a better overall user experience. While I wholeheartedly agree with their goals – make it accessible to the common man! – it is simply not what I, as a power user who is otherwise well in the target market, need in many respects.</p>
<p>Any number of minor concessions would solve this problem for me – and these are the same issues I have with any “trusted computing” sort of platform. It is not my best interests that Apple is trying to protect here, either as a developer or as an individual user. It is theirs, and it is not in their best interests to allow me to, for instance, decide whose software I actually trust.</p>
<p>No, I’m not trying to run Linux on the thing. It runs a perfectly acceptable *NIX operating system already, and in fact has a fantastic GUI (for <em>almost</em> every purpose) and software installation procedure (for <em>almost</em> every case) already. I just want to run my instant messenger <em>and</em> Pages. Even just the ability to background one application (with – yes, I realize this – the appropriate time and attention put in to making the experience smooth and complete) would make a huge difference in the overall usability.</p>
<p>I’d <em>really</em> like to run <a href="http://processing.org/" target="_blank">Processing</a> on it. It’s just such a perfect platform for art-programming, and there’s nothing else quite like Processing for that.</p>
<p>But that’s all. I don’t want a pony.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardmode.com/2010/01/imania/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subject Alternative Enlightenment</title>
		<link>http://wizardmode.com/2010/01/subject-alternative-enlightenment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=subject-alternative-enlightenment</link>
		<comments>http://wizardmode.com/2010/01/subject-alternative-enlightenment/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 05:50:53 +0000</pubDate>
		<dc:creator>Justin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[geekery]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://wizardmode.com/?p=41</guid>
		<description><![CDATA[So there&#8217;s this thing called an SSL certificate. Everyone (or at least the vast majority of anyone who is ever likely to read this) knows about SSL, or HTTPS, or at the very least the browser lock symbol. Another time I&#8217;ll talk about a bunch of nonsense regarding the details of SSL and some of&#8230;]]></description>
			<content:encoded><![CDATA[<p>So there&#8217;s this thing called an SSL certificate.  Everyone (or at least the vast majority of anyone who is ever likely to read this) knows about SSL, or HTTPS, or at the very least the browser lock symbol.</p>
<p>Another time I&#8217;ll talk about a bunch of nonsense regarding the details of SSL and some of the strange things that have come out of it, but for the moment, one specific thing stands out.</p>
<p>Part of an X509 certificate is an optional piece of metadata called a <a href="http://www.openssl.org/docs/apps/x509v3_config.html#Subject_Alternative_Name_" >Subject Alternative Name</a>, or SAN.  If you take <abbr title="openssl x509 -in server.crt -text">a peek</abbr> at an SSL certificate that provides one, you&#8217;ll see something like this:</p>
<pre>
Certificate:
    Data:
        [...]
        Subject: C=US, ST=CA, L=Cupertino, O=Apple, Inc., CN=*.example.com
        [...]
        X509v3 extensions:
            [...]
            X509v3 Subject Alternative Name:
                DNS:specific.example.com, DNS:example.com, DNS:*.example.com
</pre>
<p>Normally a client connecting to https://example.com/ will get a domain mismatch certificate error, because the CN *.example.com does not either exactly or via wildcard match example.com.  However, a large number of clients also examine the list of SAN DNS names to validate the domain; since example.com shows up in that list, no error will be displayed.</p>
<p>Every major browser &#8211; IE, Firefox, Opera, Safari, and even the venerable Netscape Navigator have supported SANs since at least 2003.  Surprisingly, Internet Explorer has supported them since Win98 (yes, that means they work in IE6, for those keeping count).  Many mobile devices also recognize them &#8211; certainly the newest crop of WebKit-based and Android mobile browsers, but also things like Symbian 9.2+ and Windows Mobile 5 and 6.</p>
<p>Furthermore, SANs can be used to cause certain mail clients to stop complaining about connecting to a mail server that services multiple domains under one IP.  Since these same mail clients are often configured to recognize an internal CA, rolling up all the possible names into the SAN list on a single certificate can save a pile of headache.</p>
<p>Why hasn&#8217;t this been more widely advertised and well-known?  Because many certificate authorities are more in the habit of selling <i>encryption</i> than <i>verification</i>, and so would very much like to charge you for every single line in the certificate and every single reissue of the same certificate with slightly different metadata (say, a different set of SAN entries, in this case) rather than charging you for their performing trusted due diligence to ensure that you are who you claim to be and that you have the rights you claim to have over the subjects (in this case, domain names) in question.  </p>
<p>Thanks a lot, &#8220;trusted&#8221; authorities.  Way to instill confidence in your services.</p>
<p>There are a few respectable exceptions, of course, and a few web-of-trust CAs which perform the services for free or for reasonable, nominal charges.  The web-of-trust CAs tend to have less or no native browser support, which makes them less suitable for general purpose commerce, but for those in the know (or a known browser demographic) they can be a fantastic alternative.</p>
<p>I&#8217;m currently a fan of <a href="http://www.digicert.com/" >DigiCert</a> for business use, and <a href="http://cert.startcom.org/" >StartCom</a> for personal use.  As a side note, many domain registrars (such as <a href="http://www.gandi.net/" >Gandi</a>) also provide a free basic 1-year SSL certificate with purchase of a domain name.</p>
]]></content:encoded>
			<wfw:commentRss>http://wizardmode.com/2010/01/subject-alternative-enlightenment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

