<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
	<title>bytex64.net blog</title>
	<link>http://bytex64.net/blog/</link>
	<description>Encapsulated thoughts, mostly meaningless</description>
	<webMaster>webmaster@bytex64.net</webMaster>
	<item>
		<title>Cross-site Authentication in the World of APIs</title>
		<link>http://bytex64.net/blog/e2377</link>
		<guid>http://bytex64.net/blog/e2377</guid>
		<pubDate>Tue, 01 May 2012 00:46:02 -0500</pubDate>
		<description>It used to be that some HTML displayed by your browser was the beginning and end of a website. Nowadays, with the ever expanding mobile world and the apps that go with it, it&#39;s just as important to have an interface built for machines in addition to the one built for humans. The API has become a staple feature of our modern web, and with it brings a new set of challenges for authorizing and authenticating users.

&lt;p&gt;If you&#39;re a frequent reader, you&#39;ll know that I&#39;m a pretty big fan of &lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt;. But while working on some of my newer projects (notably &lt;a href=&quot;http://blerg.cc/&quot;&gt;Bl&amp;euml;rg&lt;/a&gt;), I realized that I couldn&#39;t really use OpenID authentication for the web APIs. The problem is that OpenID relies on working in the context of a browser. It redirects you to a webpage which authenticates you and redirects back. That obviously won&#39;t work if your endpoint is expected to return JSON. I&#39;ve had grand designs of making all of The Dominion of Awesome work with OpenID for some time now, but as APIs become more and more a part of my projects, I&#39;m going to have to leave it behind. I really believe in both OpenID and the utility of web APIs, so this was a really unfortunate choice for me.

&lt;p&gt;As near as I can tell, there&#39;s no good &quot;universal authentication&quot; method for web APIs. There is &lt;a href=&quot;http://developer.yahoo.com/oauth/&quot;&gt;OAuth&lt;/a&gt;, but it&#39;s designed for a wholly different purpose. OAuth allows a website to authorize a remote user to use its resources. It&#39;s not designed to provide authentication. You &lt;i&gt;can&lt;/i&gt; use it to provide a &quot;pseudo-authentication&quot; service where the resource is the user&#39;s account information. OAuth can&#39;t work as a generic authentication service in this way though because the consumer application has to first get an API key and secret from the site providing authorization. This means I could authenticate against a &lt;i&gt;specific&lt;/i&gt; service (like say, Twitter), but I couldn&#39;t allow users to authenticate with a service of their choice like you can with OpenID.

&lt;p&gt;So the best you can do for now is to create your little enclave, and if it gets popular enough, other people can use &lt;i&gt;you&lt;/i&gt; for API authentication if they ask nicely. Lots of sites are doing this now with Twitter or Facebook authentication. This is unfortunate because it means that while there&#39;s a huge breadth of applications and experiences on the web now, control over your identity is increasingly becoming the domain of only a few large entities. Where OpenID provided more freedom and options for users to choose their identity service, the need for APIs and the rise of OAuth is creating the opposite effect.

&lt;p&gt;Where do we go from here, then? Well, the OpenID folks are working on a non-browser API called &lt;a href=&quot;http://openid.net/wg/connect/&quot;&gt;OpenID Connect&lt;/a&gt;. It&#39;s still very much a draft, so who knows when or if we&#39;ll see websites start to adopt it. Personally, I think I&#39;ll just stick with the tried and true method &amp;mdash; use plain username and password-based authentication, and make management of credentials the user&#39;s problem. Hopefully OpenID Connect will come around just in time for something else to disrupt the Web as we know it. :-/</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>On the Buddha Nature of APIs</title>
		<link>http://bytex64.net/blog/e2376</link>
		<guid>http://bytex64.net/blog/e2376</guid>
		<pubDate>Mon, 23 Apr 2012 01:56:29 -0500</pubDate>
		<description>I&#39;ve been working on rewriting &lt;a href=&quot;http://blerg.cc/&quot;&gt;Blërg&lt;/a&gt; in &lt;a href=&quot;http://enyojs.com/&quot;&gt;Enyo 2.0&lt;/a&gt;. It&#39;s forced me to think a lot about code reorganization and encapsulation of functionality, which is great. Enyo encourages encapsulation by giving you a flexible object model and generic event handling, but there&#39;s one sticky point that doesn&#39;t encapsulate well: the API object.

&lt;p&gt;Particularly in the case of APIs involving authentication, an API object needs to keep some kind of state global to the application. Just as critically, an API has to be accessible from many different (and distinctly encapsulated) parts of an application. How do you balance these opposing needs? Or more to the point, how do you balance these opposing needs without doing something that software designers will frown upon?

&lt;h4&gt;A Meditation&lt;/h4&gt;

&lt;p&gt;First, some background on Enyo 2. Enyo classes are called &#39;kinds&#39;, and are defined with an anonymous object full of properties specifying functions, data, and behaviors. It combines functionality and object hierarchy into a single declaration.

&lt;p&gt;Enyo extends the HTML DOM event model to allow the sending and handling of generic events. Events can also carry arbitrary data, making it a kind of message passing system that moves messages up and down an object hierarchy. To send an event up the hierarchy, you &#39;bubble&#39;.

&lt;pre&gt;this.bubble(&#39;onDoSomething&#39;, {data: &quot;stuff&quot;});&lt;/pre&gt;

&lt;p&gt;And likewise, to send an event to all your children, you &#39;waterfall&#39;.

&lt;pre&gt;this.waterfall(&#39;onDoSomething&#39;, {data: &quot;stuff&quot;});&lt;/pre&gt;

&lt;p&gt;With these, you can have objects send messages to other parts of the code without knowing where those parts are. For example, I have a login widget that bubbles a &#39;onTryLogin&#39; event to the main object, which makes an API call and waterfalls the result (an &#39;onLogin&#39; or &#39;onLogout&#39; event) so that any object in the application can react appropriately. That last bit is really sweet &amp;mdash; it completely decouples the UI changes for logout and login from the actual logic.

&lt;p&gt;Events are handled in one of two ways. The first is to directly specify a handler function. This handles any events generated from the object or its children.

&lt;pre&gt;{kind: &quot;onyx.Button&quot;, content: &quot;Login&quot;, onclick: &quot;trySomething&quot;}&lt;/pre&gt;

&lt;p&gt;This handles a click event by running the &lt;code&gt;trySomething&lt;/code&gt; function in the current object. (Event names that derive from DOM events are lower case. Generic events use camelCase.)

&lt;p&gt;The other is to specify a &lt;code&gt;handlers&lt;/code&gt; object in your object definition. This handles any events from your object or its children.

&lt;pre&gt;enyo.create({
    name: &quot;MyObject&quot;,
    kind: &quot;Component&quot;,
    handlers: {
        onDoSomething: &quot;trySomething&quot;
    },
    components: [
        // Any of these sending &#39;onDoSomething&#39; will
        // be handled by &#39;trySomething&#39;
    ]
});&lt;/pre&gt;

&lt;h4&gt;A Koan&lt;/h4&gt;

&lt;p&gt;So back to our poser. How do we create an API object with global state but proper encapsulation? Well, the first obvious solution most of us come up with is to simply create a single instance and make it global. But that&#39;s not terribly elegant, and in slavish adherence to OOP style, you decide to instead make it a member of your &quot;root&quot; class, then pass it around to all the objects that need it. You go to bed at night knowing that your CS225 teacher won&#39;t yell at you for using a global object, but deep in that niggling contrary part of your brain, you know that the object merry-go-round you&#39;ve created isn&#39;t very clean and it&#39;ll be a pain to maintain. But it works.

&lt;p&gt;Then JavaScript&#39;s asynchronous nature throws a wrench in the works. I &lt;i&gt;could&lt;/i&gt; make all the API functions take success/failure callbacks, but I&#39;d really like to use Enyo&#39;s slick event system. Many separate objects in the application would like to get events from the API, but there&#39;s only one API object. Making it global or passing it around doesn&#39;t help, either, because Enyo 2 does not currently expose a way to add event handlers at runtime (which is honestly pretty silly).

&lt;p&gt;Well, the first thing I came up with was and elaborate event routing system. The object bubbles a service request event, which reaches the main object, which passes the request on to the API object. The API object bubbles the response, which reaches the main object, which is waterfalled down and eventually makes it back to the requesting object. Beyond the obvious inefficiencies, it becomes a hot potato nightmare of event passing. You need four functions in the main class just to route events, plus at least three event types! For one request! There has to be a better way.

&lt;h4&gt;The Middle Path&lt;/h4&gt;

&lt;p&gt;The solution I came up is the judicious use of static class data. Static class data doesn&#39;t get much respect, since it&#39;s pretty much the better dressed cousin of global data. But it&#39;s there because sometimes it makes sense. And here it very much makes sense.

&lt;p&gt;So what you do is you put all the data that needs to be global in a &lt;code&gt;statics&lt;/code&gt; section of your API object. The rest of your API is regular instance methods and data. Then you create an instance of the API object wherever you need it. Each instance has its own event handling, but the shared data is consistent across the application. Here&#39;s an example skeleton API class that shows what I&#39;m talking about.

&lt;pre&gt;
enyo.kind({
    name: &quot;API&quot;,
    kind: &quot;Component&quot;,
    statics: [
        sessionId: 0
    ],  
    getThing: function() {
        API.sessionID++;

        // This is typically asychronous, but because of event handling,
        // the result is the same either way.
        var response = makeRequest(API.sessionID);

        this.bubble(&#39;onThing&#39;, {thing: response});
    }
});
&lt;/pre&gt;

&lt;p&gt;Note that the static data is accessed by using the kind name instead of &lt;code&gt;this&lt;/code&gt;. Static data doesn&#39;t live in your instance, it lives in the global kind object (which is very much like a constructor function in the classical JS object system). Then, in some object elsewhere, you add the API object and use it.

&lt;pre&gt;
enyo.kind({
    name: &quot;Application&quot;,
    kind: &quot;Control&quot;,
    components: [
        {kind: &quot;Button&quot;, content: &quot;Get Thing&quot;, onclick: &quot;getThingClick&quot;},
        {name: &quot;api&quot;, kind: &quot;API&quot;, onThing: &quot;processThing&quot;}
    ],
    getThingClick: function() {
        this.$.api.getThing();
    },
    processThing: function(inSender, inEvent) {
        // We now have our thing in inEvent.thing
    }
});
&lt;/pre&gt;

&lt;p&gt;Which is pretty darn clean, at least from the API user&#39;s perspective. Hopefully it doesn&#39;t keep anyone up at night. And in the case of web programming, you already have global state like cookies or the window object, so you&#39;re damned from the start. I hope this was enlightening for someone. :)</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Beatrice Shepard, Galactic Badass</title>
		<link>http://bytex64.net/blog/e2375</link>
		<guid>http://bytex64.net/blog/e2375</guid>
		<pubDate>Fri, 13 Apr 2012 04:05:32 -0500</pubDate>
		<description>You may know some stories surrounding Commander Shepard. But how well do you really know the legendary Commander? You probably think her name is John or Jane, but you&#39;re wrong. Allow me to introduce to you...

&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://bytex64.net/media/Beatrice%20Shepard.jpg&quot;&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Beatrice Shepard&lt;/em&gt;&lt;/strong&gt;.

&lt;p&gt;Beatrice Shepard fought off the Reapers, but she wasn&#39;t happy about it. She&#39;d just as soon stay out of it if it didn&#39;t mean the end of all civilization. Here are some more facts you probably didn&#39;t know about Beatrice Shepard:

&lt;ul&gt;
&lt;li&gt;Beatrice Shepard has a bumper sticker on the Normandy that says &quot;Guns don&#39;t kill Geth. I kill Geth.&quot;&lt;/li&gt;
&lt;li&gt;Salarian scientists have calculated the number of fucks Beatrice Shepard gives. That number is precisely zero.&lt;/li&gt;
&lt;li&gt;Beatrice Shepard once killed a Krogan just to watch him die... twice.&lt;/li&gt;
&lt;li&gt;Sha&#39;ira has to book a visit with Beatrice Shepard months in advance.&lt;/li&gt;
&lt;li&gt;Beatrice Shepard can drive the Mako up &lt;i&gt;any&lt;/i&gt; slope.&lt;/li&gt;
&lt;li&gt;Before killing Saren in the Battle of the Citadel, Beatrice Shepard made him cry and beg for his mother. Then she called him a little crybaby bitch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ain&#39;t nobody fucks with Beatrice Shepard. Nobody.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Forza 4 Pals: Fugly Ford Ka</title>
		<link>http://bytex64.net/blog/e2374</link>
		<guid>http://bytex64.net/blog/e2374</guid>
		<pubDate>Fri, 23 Mar 2012 03:54:22 -0500</pubDate>
		<description>When I told Erickson about my superpowered Datsun 510, he immediately thought about doing the same thing to the Ford Pinto. The Pinto has the lowest Performance Index in the game at a measly 100. Unfortunately, the Pinto is a DLC car, so he got the next best thing: the Ford Ka. It also shares the pitiful 100 PI rating, and like the 510, it can be tuned through the roof.

&lt;p&gt;&lt;a href=&quot;http://bytex64.net/media/Fugly%20Ka.jpg&quot;&gt;&lt;img src=&quot;http://bytex64.net/media/Fugly%20Ka%20small.jpg&quot; style=&quot;float: left; margin: 0 1em 1em 0; border-width: 0&quot;&gt;&lt;/a&gt;

After heavy tuning, Erickson gave it a paint job that I can only describe as &quot;cringeworthy&quot;. It&#39;s like the car was the bukakke recipient at a pastel teletubby orgy. Pink, purple, green, blue, and a splatter of reddish brown make a patchwork horror of light and color that is somehow made even more ridiculous by the red tow-hook tongue hanging out of the grille. When I asked him what possessed him to make such a design, he stated rather matter-of-factly, &quot;Art designed to be unattractive like this is it&#39;s own calling.&quot;

&lt;p&gt;Under the hood is a bored-out and twin-turbo&#39;d 2.8L Ford Focus engine good for 531HP. All that power gets to the ground through an all-wheel-drive system ripped out of the Escort Cosworth. At just 2226 lbs, it gets off the line like a jackrabbit. And for having such a short wheelbase, the Ka is surprisingly pinned down. While there&#39;s always a little drama in such a highly strung car, the Ka is pretty much just point and shoot. The light weight and stiff suspension will get you in trouble though, if you&#39;re not careful.

&lt;p style=&quot;clear: both&quot;&gt;&lt;a href=&quot;http://bytex64.net/media/Fugly%20Ka%20Wheelie.jpg&quot;&gt;&lt;img src=&quot;http://bytex64.net/media/Fugly%20Ka%20Wheelie%20small.jpg&quot; style=&quot;float: right; margin: 0 0 1em 1em; border-width: 0&quot;&gt;&lt;/a&gt;

Pronounced rumble strips tend to act like ramps, making the Ka fly off of them like the shiny chrome orb in a pinball machine. The edge between a perfect corner and screaming while you tumble end-over-end is a pretty thin one. In one race around the Nürburgring, Erickson managed to land it on his roof. I kindly went back to nudge him back on his wheels, but the car was pretty much shot at that point. Great fun, though. :)

&lt;p style=&quot;clear: both&quot;&gt;Next up, we have a Volkswagen Rabbit GTI I call &quot;Hot Dog&quot; (Did I say it was a Golf? Same difference), and Alex bit the DLC bullet to put the Ford Pinto through its paces with explosive results! Don&#39;t touch that dial!</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Forza 4 Pals: The Green Machine</title>
		<link>http://bytex64.net/blog/e2373</link>
		<guid>http://bytex64.net/blog/e2373</guid>
		<pubDate>Wed, 21 Mar 2012 05:18:59 -0500</pubDate>
		<description>Forza has always had a really good car modification system. In particular, they enable a range of engine and drivetrain swaps that allows for some truly spectacular creations. I&#39;ve &lt;a href=&quot;http://bytex64.net/blog/e2278&quot;&gt;talked about my RWD CRX before&lt;/a&gt;. My friends and I at the Dominion of Awesome have been busy making our own little Frankensteins: the F-class supercar.

&lt;p&gt;For the uninitiated, F-class is the lowest class in Forza. It&#39;s where you find such great cars as the &lt;a href=&quot;http://en.wikipedia.org/wiki/Toyota_Aygo&quot;&gt;Toyota Aygo&lt;/a&gt; or the &lt;a href=&quot;http://en.wikipedia.org/wiki/Chevrolet_Spark&quot;&gt;Chevrolet Spark&lt;/a&gt;. Cars so unremarkable they don&#39;t even sell them in America. So I thought, &quot;I wonder how far you could increase the performance on these? Could I get them into A class? Or beyond?&quot;

&lt;p&gt;The answer is yes. Very yes.

&lt;p&gt;My first experiement was the &lt;a href=&quot;http://en.wikipedia.org/wiki/Datsun_510&quot;&gt;Datsun 510&lt;/a&gt;. The 510 was a classic small two-box sedan in the late 60&#39;s and early 70&#39;s. It actually has a fair amount of racing history, so it shouldn&#39;t be too hard to soup it up. And it wasn&#39;t. Behold, the Green Machine.

&lt;p&gt;&lt;a href=&quot;http://bytex64.net/media/Green%20Machine.jpg&quot;&gt;&lt;img src=&quot;http://bytex64.net/media/Green%20Machine%20small.jpg&quot; style=&quot;border-width: 0; margin: 0 0 1em 1em; float: right&quot;&gt;&lt;/a&gt;

The Green Machine sports a Skyline GT-R AWD drivetrain coupled to a SR20DET out of the S15 Silvia. This puts it well into the R3 class with over 700HP. Or, with a VQ35DE from the 350Z and a honking huge turbo, it puts out 767HP, getting it just barely into the R2 class. Tire smoke is the name of the game, and the Green Machine can play all day.

&lt;p style=&quot;clear: both&quot;&gt;&lt;a href=&quot;http://bytex64.net/media/Green%20Machine%20drift.jpg&quot;&gt;&lt;img src=&quot;http://bytex64.net/media/Green%20Machine%20drift%20small.jpg&quot; style=&quot;border-width: 0; margin: 0 1em 1em 0; float: left&quot;&gt;&lt;/a&gt;

With a stab of the accelerator, the back end comes out and the Green machine will execute beautiful four wheel drifts. You can drive it fast or drive it sideways. It&#39;s an easy choice for me. :)

&lt;p style=&quot;clear: both&quot;&gt;Stay tuned for more. Later I&#39;ll be showing you the rest of the F-class supercars in the Dominion of Awesome&#39;s stable. Next up, we&#39;ll have a pink and purple Ford Ka, then later a VW Golf GTI that wants to be a hot dog, and a Ford Pinto that is &quot;The Bomb&quot;.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Super Productive Weekend!</title>
		<link>http://bytex64.net/blog/e2371</link>
		<guid>http://bytex64.net/blog/e2371</guid>
		<pubDate>Tue, 13 Mar 2012 04:40:02 -0500</pubDate>
		<description>Alex went up to Chicago this weekend, leaving me to my own devices. Oh no, what do I do!?

&lt;p&gt;I dunno, how about EVERYTHING?

&lt;p&gt;I...

&lt;ul&gt;
&lt;li&gt;watched four episodes of Parks and Recreation, and three episodes of My Little Pony: Friendship is Magic, and The Big Lebowski;

&lt;p&gt;[And you wouldn&#39;t think there&#39;s any overlap between those last two, but 

&lt;a href=&quot;http://bytex64.net/media/My%20Little%20Lebowski.jpg&quot;
onMouseOver=&quot;document.getElementById(&#39;My%20Little%20Lebowski_jpg-efe896c9-9278-4782-bdd8-dee5b053fcfd&#39;).style.setProperty(&#39;display&#39;,&#39;block&#39;,&#39;&#39;)&quot;
onMouseOut=&quot;document.getElementById(&#39;My%20Little%20Lebowski_jpg-efe896c9-9278-4782-bdd8-dee5b053fcfd&#39;).style.setProperty(&#39;display&#39;,&#39;none&#39;,&#39;&#39;)&quot;
&gt;there it is&lt;/a&gt;&lt;span id=&quot;My%20Little%20Lebowski_jpg-efe896c9-9278-4782-bdd8-dee5b053fcfd&quot; style=&quot;display: none; position: absolute; border: 1px solid black; background-color: white; padding: 5px;&quot;&gt;http://bytex64.net/media/My%20Little%20Lebowski.jpg
&lt;br&gt;&lt;img src=&quot;http://bytex64.net/media/My%20Little%20Lebowski.jpg&quot;&gt;&lt;/span&gt;

. If you look closely earlier in the episode, you can spot an equine Jesus, as well. My Little Pony: the best kids&#39; show for adults.]

&lt;/li&gt;
&lt;li&gt;made a new &lt;a href=&quot;http://dominionofawesome.com/snm/#12&quot;&gt;Saturday Night Mix&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;created a new Hack, &lt;a href=&quot;http://dominionofawesome.com/hacks/slidingtext/&quot;&gt;Sliding Text&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;completed half of the League of Legends (lol) season in Forza 4;&lt;/li&gt;
&lt;li&gt;pretty much completed my Enyo 2 rewrite of WCDS;&lt;/li&gt;
&lt;li&gt;and did a load of laundry (I am more proud of this than I should be).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think I&#39;ve actually been starved for some &quot;me time&quot;, so it was good to catch up with myself. The only downer is that I missed this year&#39;s &lt;a href=&quot;http://eoh.ec.uiuc.edu/&quot;&gt;Engineering Open House&lt;/a&gt;. :[

&lt;p&gt;Now if you&#39;ll excuse me, I&#39;m going to go for a drive because it&#39;s beautiful out.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>(M)ass Effect</title>
		<link>http://bytex64.net/blog/e2370</link>
		<guid>http://bytex64.net/blog/e2370</guid>
		<pubDate>Sat, 10 Mar 2012 05:06:55 -0600</pubDate>
		<description>I went out to my parents&#39; for some Swedish meatballs and games. I didn&#39;t want to pass up the opportunity to play Forza 4 in HD, so I packed up the game and threw the save up on XBox Live&#39;s cloud storage. That worked fine, but my parents&#39; internet is so poor that it couldn&#39;t resync the save file to the Internet. Now that I&#39;m home, I can&#39;t play my save because it hasn&#39;t synced. I&#39;m probably going to have to go back to my parents&#39; house and rescue the data with a USB drive.

&lt;p&gt;But that&#39;s OK...

&lt;p&gt;Because when I went home to my parents&#39;, I picked up a couple of other games I can play: Armored Core: for answer, and Mass Effect 2. AC4 is my brother&#39;s game, and ME2 was a gift from Nancy, who had a spare copy because she lent it out and didn&#39;t want to wait for it to be returned. I was just going to start there, but I&#39;d played the ME3 demo and was so impressed with it that I bought the first Mass Effect so I can start from the beginning.

&lt;p&gt;While I was playing, I thought... &quot;There has to be a parody called Ass Effect. There just has to be.&quot; And, of course, &lt;a href=&quot;http://www.somethingawful.com/d/news/mass-effect.php&quot;&gt;there is&lt;/a&gt;. I&#39;m sure if you tried just a little harder than I did, you could find something pornographic.

&lt;p&gt;The game itself is excellent, but I&#39;m sure I don&#39;t need to tell you that. If you haven&#39;t played it in the last five years, you probably don&#39;t care. Just go play it.

&lt;p&gt;And speaking of videogames and sci-fi, Quantic Dream just released another stunning tech demo entitled &lt;a href=&quot;http://www.youtube.com/watch?v=j-pF56-ZYkY&quot;&gt;Kara&lt;/a&gt;.  It&#39;s only seven minutes long, but it&#39;s  probably one of the best sci-fi short stories I&#39;ve ever experienced &amp;mdash; it gives me chills every time I watch it. If they make a game out of this concept (like they did with the &lt;a href=&quot;http://www.youtube.com/watch?v=cEtSi9a8oNI&quot;&gt;Heavy Rain: The Casting&lt;/a&gt;), I want to play it. Badly.</description>
		<slash:comments>1</slash:comments>
	</item>
	<item>
		<title>A &quot;New&quot; Idea</title>
		<link>http://bytex64.net/blog/e2369</link>
		<guid>http://bytex64.net/blog/e2369</guid>
		<pubDate>Tue, 28 Feb 2012 05:48:08 -0600</pubDate>
		<description>I just had the most wonderful idea for a simple UNIXy notification system. Back to basics &amp;mdash; the simplest way of storing a list of items is a directory of files. So the events are actually text files, probably organized with some metadata about the notification&#39;s origin, possible actions, etc. Then you have a program that notifies you when new files are added, and one to let you read and delete them, and you&#39;re golden.

&lt;p&gt;But you don&#39;t have to stop there. You could create a daemon that can accept notifications over the network and store them in your notification directory. Then you can get notifications from other machines like your phone or even a web service.

&lt;p&gt;...

&lt;p&gt;Oh dear, it seems I&#39;ve reinvented the UNIX mail system. :-/</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Gaming on the Other Side</title>
		<link>http://bytex64.net/blog/e2367</link>
		<guid>http://bytex64.net/blog/e2367</guid>
		<pubDate>Mon, 27 Feb 2012 04:19:14 -0600</pubDate>
		<description>So I recently purchased an Xbox 360. I&#39;d been eyeing one since Forza 4 came out. I can&#39;t exactly cite anything about Forza 4 that makes it superior to GT5, but it is still a very solid racing game. At nearly the same time, my friends Alex and Erickson got 360s, so we&#39;ve been occasionally playing together. It&#39;s nice, but I can&#39;t say I really like the 360. I don&#39;t really like the PS3, either. The purchase was more of a matter of peer pressure and weighing which choice was least terrible.

&lt;p&gt;I&#39;ve played on both the 360 and the PS3, and &lt;acronym title=&quot;In My Not So Humble Opinion&quot;&gt;IMNSHO&lt;/acronym&gt;, they&#39;re both flawed.  They&#39;re both game systems with services attached. You can watch Netflix and Youtube. Each has an online game store, each has multiplayer services, and each have compelling console exclusives. That&#39;s cool, but it&#39;s not really enough for me. I&#39;ve long been a member of the 

&lt;a href=&quot;http://bytex64.net/media/glorious_pc_gaming_master_race.jpg&quot;
onMouseOver=&quot;document.getElementById(&#39;glorious_pc_gaming_master_race_jpg-5ecacc77-c867-40f1-a3f2-4022d385c733&#39;).style.setProperty(&#39;display&#39;,&#39;block&#39;,&#39;&#39;)&quot;
onMouseOut=&quot;document.getElementById(&#39;glorious_pc_gaming_master_race_jpg-5ecacc77-c867-40f1-a3f2-4022d385c733&#39;).style.setProperty(&#39;display&#39;,&#39;none&#39;,&#39;&#39;)&quot;
&gt;Glorious PC Gaming Master Race&lt;/a&gt;&lt;span id=&quot;glorious_pc_gaming_master_race_jpg-5ecacc77-c867-40f1-a3f2-4022d385c733&quot; style=&quot;display: none; position: absolute; border: 1px solid black; background-color: white; padding: 5px;&quot;&gt;http://bytex64.net/media/glorious_pc_gaming_master_race.jpg
&lt;br&gt;&lt;img src=&quot;http://bytex64.net/media/glorious_pc_gaming_master_race.jpg&quot;&gt;&lt;/span&gt;

, and the tradeoffs made on both the 360 and the PS3 seem arbitrary and frustrating. The 360 is trying so desperately not to be a PC even though Microsoft clearly &lt;i&gt;could&lt;/i&gt; make it feature-equivalent, and the PS3 is so desperately trying to be a PC but Sony won&#39;t commit because they&#39;re afraid of PC-style piracy (and what they do have is rather poorly implemented). So, in a competition for which system is the best at providing features I want, they both lose.

&lt;p&gt;The real crux of the decision is the fact that while both Microsoft and Sony are providing a frustratingly locked-down consumer-only system, Microsoft is at least competent enough to not have their online service wholesale cracked into and user information stolen (but it seems that &lt;a href=&quot;http://www.thesixthaxis.com/2012/02/26/xbox-live-accounts-still-being-hacked/&quot;&gt;something is rotten in Redmond&lt;/a&gt;). Sony clearly does not give a shit about their users.

&lt;p&gt;The Forza/GT comparison is also interesting. I&#39;ve spent considerable time playing both now, and I&#39;d like to state for the record that both series are absolutely wonderful. In my mind, there&#39;s not really a competition between them. If you&#39;re really a car nut, you&#39;d be silly not to play both. That&#39;s usually impractical, though, so you should just get whichever one is on your system, because you&#39;re going to be happy either way. Which is not to say they don&#39;t have their differences. From outside the automotive simulation genre, they look like near perfect copies, but like any finely crafted product, the important differences are always in the details.

&lt;p&gt;Forza&#39;s focus is pretty strictly on racing. The breadth of events and types has grown over the years, but Forza&#39;s bread and butter is still the circuit race. Forza 4 has only strengthened this position. The original Forza had night tracks, but Forza 2 lost them. Forza 3 held on to the New York City circuit, but it too has disappeared in Forza 4. With only a few exceptions, all of Forza 4&#39;s tracks are racing circuits. And they&#39;re all daytime courses in dry conditions -- there&#39;s no nighttime races, nor any races in rain, snow, or off-road. Forza also has a very detailed focus on car modification. Forza allows extensive and detailed changes, as well as engine swaps, aspiration conversions, and even drivetrain swaps. Car customization goes even further with paint and decals to change the look of your car.

&lt;p&gt;Gran Turismo, on the other hand, is all about the experience of driving. The cars look slightly better than Forza, and the environments look absolutely gorgeous. The course list in GT5 covers city courses, permanent circuits, and off-road venues. I personally think the track design for fictional courses in the GT series is superior to Forza. Many tracks support not only day/night, but also dynamic weather and daylight transitions. One particular challenge has you racing a rally course as dusk turns to night. As you&#39;re driving, the sky lights up with fireworks all around you. It&#39;s just a fantastic experience. The downside of GT is the limited amount of fully-modeled &quot;premium&quot; cars, which are only visually modifiable with paint colors you&#39;ve unlocked, plus rims and wings. The performance modifications are rather generic and limited. Also, compared to Forza 3 and 4&#39;s heavily directed career mode, GT feels very open-ended, which can be frustrating when you&#39;re trying to find the right combination of car and performance tuning to go race. But despite all that, it&#39;s just amazing when it comes together.

&lt;p&gt;So you see, they&#39;re both very different and both provide a worthwhile experience. I&#39;m currently loving the perverse and twisted ways you can modify cars in Forza (ask me about the Datsun 510-R). Do I miss GT? Sure. But I do have GT1-4 that I can play on my PS2, and that is still a whole lot of game. I&#39;ll get around to it eventually, probably after Sony decides not to make the PS4.</description>
		<slash:comments>1</slash:comments>
	</item>
	<item>
		<title>Archives!</title>
		<link>http://bytex64.net/blog/e2364</link>
		<guid>http://bytex64.net/blog/e2364</guid>
		<pubDate>Sat, 25 Feb 2012 16:57:03 -0600</pubDate>
		<description>As promised in the previous post, I&#39;ve made a new archives page which you can find in the navigation above (or to the side, or wherever I&#39;ve put it now). It&#39;s organized by year, month, and day going back to 2003. Now you can easily browse all my cringeworthy emo bullshit from college! (Oh God Why...) I&#39;ve also simplified the page navigation at the bottom so it&#39;s not a huge list of page numbers. Just next and previous now. Simple.</description>
		<slash:comments>2</slash:comments>
	</item>
	<item>
		<title>Aaaaaand we&#39;re back</title>
		<link>http://bytex64.net/blog/e2363</link>
		<guid>http://bytex64.net/blog/e2363</guid>
		<pubDate>Fri, 24 Feb 2012 04:16:18 -0600</pubDate>
		<description>I&#39;ve been away from my blog for some time, and that just won&#39;t do. I could make excuses and say that I&#39;ve been busy with work, or that I had a temporary lapse of sanity, but the fact of the matter is, I&#39;ve just been lazy. I&#39;ve become stuck in a rut, and getting back into the habit of writing is part of my N-step plan to be more awesome. Or to put a bit finer point on it, I caught up with reading &lt;a href=&quot;http://steampunknancy.posterous.com/&quot;&gt;Nancy&#39;s blog&lt;/a&gt;, and she&#39;s quite frankly kicking my ass.

&lt;p&gt;If you&#39;re not staring directly into the jagged maw of my blog, I encourage you to pay it a visit. I&#39;ve created a whole new style with fancy serifed webfonts and tastefully minimal imagery from Alice in Wonderland. I think it&#39;s a better fit with the literary style of the blog. The titles are a fun rough font called &lt;a href=&quot;http://www.dafont.com/handserif.font&quot;&gt;Handserif&lt;/a&gt;, and the main text is &lt;a href=&quot;http://www.fontsquirrel.com/fonts/alegreya&quot;&gt;Alegreya&lt;/a&gt;.

&lt;p&gt;Do you remember how I &lt;a href=&quot;http://bytex64.net/blog/e2291&quot;&gt;wrote a JavaScript shim to force the handheld media type for small screens&lt;/a&gt;? I&#39;m happy to say that I&#39;ve heaved it in favor of &lt;a href=&quot;http://www.w3.org/TR/css3-mediaqueries/&quot;&gt;media queries&lt;/a&gt;, which does exactly the same thing faster and easier. I&#39;ve even used it to add a couple of easter eggs to the style. :)

&lt;p&gt;In addition to changing the style, I&#39;ve changed the date/time format to be more fuzzy and human. I think that&#39;s the part I&#39;m most proud of out of all of it. Based on feedback from Erickson (who is working on a redesign of his own), I&#39;ll also be cleaning up the page flipper down at the bottom and creating a proper archives browser.

&lt;p&gt;That&#39;s all for now, I&#39;ve got to get some sleep.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>A Cheer for the Juicemakers</title>
		<link>http://bytex64.net/blog/e2359</link>
		<guid>http://bytex64.net/blog/e2359</guid>
		<pubDate>Wed, 11 Jan 2012 05:29:12 -0600</pubDate>
		<description>Most people, when they go shopping, arrive at the juice aisle and think, &quot;Wow, there sure are a lot of kinds of juice to choose from!&quot; They ponder the available selections, pick one, and go on their way.

&lt;p&gt;Other people, perhaps stranger or more adventurous folks, arrive at the juice aisle and think, &quot;Wow, look at all the juice that &lt;i&gt;isn&#39;t&lt;/i&gt; here!&quot; They ponder combinations of juices yet undreamt. They ponder the fruits of far away places, and what their juices would be like. They ponder fruits unimagined by man, lying in wait on distant worlds and in the minds of similarly curious botanists. They might grab a few bottles and maybe head back to the produce section, wild-eyed and curious.

&lt;p&gt;So here&#39;s to the artists, the explorers, the creators, and the dreamers. Here&#39;s to everyone who makes the world a more interesting place to live (and drink juice) in. :)</description>
		<slash:comments>3</slash:comments>
	</item>
	<item>
		<title>Nokia E6: Day 2</title>
		<link>http://bytex64.net/blog/e2354</link>
		<guid>http://bytex64.net/blog/e2354</guid>
		<pubDate>Mon, 14 Nov 2011 12:03:01 -0600</pubDate>
		<description>Nope, fuck it. I don&#39;t like this. Back to the Pixi.

&lt;p&gt;It&#39;s not that the E6 is a bad phone. It&#39;s really not. It&#39;s plenty capable, it just doesn&#39;t fit the way I do things. Over the past few days, I&#39;ve realized I have two distinct use cases for a phone:

&lt;p&gt;&lt;ol&gt;
&lt;li&gt;When in my home area, I rely heavily on messaging and searching websites like Wikipedia and IMDB.&lt;/li&gt;
&lt;li&gt;When traveling, I rely heavily on mapping, phone calls, and some messaging/web searching.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Pixi is really good at case 1, and the E6 is really good at case 2. But I don&#39;t spend the same amount of time in each case. I&#39;m in case 1 waaaaay more often than case 2. So if we&#39;re optimizing for the common case (and as a computer scientist, I&#39;m duty bound to), it just doesn&#39;t make sense to keep the E6. WebOS is just waaaay more streamlined for those everyday communication and search tasks. Even with the performance penalty, it&#39;s probably still faster at getting things done.

&lt;p&gt;The E6 is also not as fast or as battery efficient as I&#39;d hoped. Symbian is a much lighter system than webOS, and yet the E6 sat and chugged on some simple tasks. There was a noticeable redraw delay for some things like the mail widget or the conversation display, and Qt apps took their sweet time loading. The Pixi and the E6 were nearly matched in performance (806MHz vs 680MHz ARM11 and 256MB of RAM), but the E6 still seemed like it was struggling. I even ran out of RAM once. Either Palm really did some magic getting Linux down to Pixi size, or Nokia really doesn&#39;t know what they&#39;re doing with Symbian. It&#39;s hard to say which is less likely.

&lt;p&gt;And the way Symbian multitasks is just awkward compared to the fluidity with which webOS manages applications. Symbian^3 is a good example of how UX decisions are made based on the inertia of past successes. Palm moved past their 90&#39;s success and made webOS. Nokia is only just now doing the same by licensing Windows Phone.

&lt;p&gt;I&#39;m furthermore coming to realize that the sins of Android &amp;mdash; inconsistent UI, platform fragmentation, and unintuitive multitasking &amp;mdash; were invented by Symbian S60. And while both platforms are moving forward, they are still living up to the expectations set by smartphones a decade ago. That&#39;s not a world I want to live in.

&lt;p&gt;So I&#39;m sticking with Palm for now, even though they are now twice dead. I&#39;m holding out hope that someone will make a worthy successor someday. Right now, there isn&#39;t one.</description>
		<slash:comments>3</slash:comments>
	</item>
	<item>
		<title>Nokia E6: Day 1</title>
		<link>http://bytex64.net/blog/e2353</link>
		<guid>http://bytex64.net/blog/e2353</guid>
		<pubDate>Sat, 12 Nov 2011 02:41:22 -0600</pubDate>
		<description>My shiny new E6 arrived yesterday, and I&#39;ve been having a lot of fun getting used to it. Wait, did I say fun? That&#39;s not the right word. What&#39;s the word I&#39;m thinking of... hmm. Oh, yes. That&#39;s it. &quot;Trouble&quot;. I&#39;ve been having a lot of &lt;i&gt;trouble&lt;/i&gt; getting used to it. You know those dreams where you wake up in an unfamiliar place and you&#39;re trying to leave, but none of the doors lead to the outside and you can&#39;t find anything to break the windows? It&#39;s kind of like that. (The psychoanalyst line forms to the right...) Which is not to say that it&#39;s all bad, but &lt;i&gt;whew&lt;/i&gt;, is it different.

&lt;p&gt;First off, the obvious: The hardware is brilliant and the call quality is excellent. The glass and stainless steel case feels solid and weighty. It&#39;s likely that if I hurled it at someone, it would actually hurt them. That&#39;s important to me. The 8MP camera is good for a phone camera &amp;mdash; it does the cool stuff like face tracking and 720p video. A plethora of buttons means that functions are always at your fingertips. In addition to the qwerty keyboard, you have call, end, home, mail, calendar, contacts, volume, record, directional, select, and power buttons. One really cool innovation is the sliding lock key. To unlock the phone, just slide it down. Slide again to lock. And here&#39;s a really neat trick: hold the slider down to light up the flash LEDs as a flashlight. Stuff like this shows that Nokia put a lot of thought into how people use their phone.

&lt;p&gt;There are a few more cool party tricks, as well. The phone comes with an app called &lt;a href=&quot;http://www.vlingo.com/&quot;&gt;Vlingo&lt;/a&gt; that does speech recognition to do basic tasks like sending messages and searching the web. Just hold down the record button, talk, and it does its thing. The phone will also do AV-out throught the headphone jack and USB-OTG so you can plug USB devices into the phone.

&lt;p&gt;Symbian Anna adds some modern features on top of the classic Symbian experience. You get several homescreens with widgets, which feels a lot like Android. There&#39;s an app switcher that shows thumbnails that feels a bit like webOS. The interface is better laid out for touch, and the apps integrate with social networking services like Facebook and Twitter. It&#39;s still Symbian, though, which means the smartphone experience is pretty damn oldschool.

&lt;p&gt;This becomes painfully clear at times because the E6 has a brilliant 640x480 LCD screen (that&#39;s half of an iPhone 4 screen). A lot of software (even some of the stuff that&#39;s built-in) still assumes more modest resolutions, so reading things often becomes a squint-fest. And using S60 or J2ME apps can be an exercise in frustration because they were designed for older phones with a 12-key keypad. It&#39;s a little absurd when I have to hit an options soft-key to pop up a list of actions and then select Send when I have a perfectly good Enter key.

&lt;p&gt;And then there&#39;s Symbian itself. I really expected it to be a little snappier coming from webOS, but it is at times pretty slow. Sometimes it&#39;ll just stop responding for a bit (typically after installing a new application). The messaging app has a threaded view, but it&#39;s a bit awkward to use &amp;mdash; Enter inserts a newline, and the send button is way up at the top of the screen. Starting a conversation is three clicks at best. The applications menu isn&#39;t searchable, unless you use the Search app or widget, which works but isn&#39;t configurable. There are a hundred tiny little annoyances, but the worst part is that I can&#39;t really tinker with the insides and fix them.

&lt;p&gt;Some of the software is really good, though. Opera Mobile is probably the best mobile browser out there. The video player is the only one I&#39;ve seen that supports MKVs with subtitles. And Ovi Maps is probably the best mapping application ever made. But those are a few gems in an otherwise barren landscape. If the webOS App Catalog seems small, the Ovi Store is kind of a ghost town. Angry Birds, Snake, a handful of apps, and several hundred themes. Of course, there&#39;s a large library of old S60 apps, but I&#39;ve already explained the problem with that idea. :-/

&lt;p&gt;And then there&#39;s mail. I set up my IMAP account the first time unsecured because I hadn&#39;t yet installed the &lt;a href=&quot;http://wiki.dreamhost.com/NDN_Certificate&quot;&gt;Dreamhost NDN CA certificate&lt;/a&gt;. I set the fetch frequency to &quot;soonest&quot;, which ironically failed to fetch anything at all. After converting the NDN CA cert from PEM format to DER, I got it installed and set up my email account again with encryption. Mysteriously, &quot;soonest&quot; was gone and my best option was &quot;every 5 minutes&quot;. I guess Nokia doesn&#39;t believe in IMAP IDLE. At least I&#39;m getting mail now. I&#39;ve also tried to get Windows Live synced via Exchange ActiveSync, but all I managed to do was nuke my address book (restored from VCF with no issues, thankfully).

&lt;p&gt;Battery life is also not quite as good as I had expected. After a typical day&#39;s use I&#39;m down to 42%. I&#39;m beginning to realize now how well optimized the Pixi is; similar use would see the Pixi at about 20-30% by now. Considering that the E6 has 15% more battery capacity, it&#39;s not doing a whole lot better. I guess smartphones are still smartphones. &quot;If you use it, you lose it.&quot;

&lt;p&gt;So... not looking so good right now. Amazon gives me 30 days to return it, and right now, I&#39;m feeling like that&#39;s a likely outcome. We&#39;ll see how I feel about it after a week or so.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Mobile-Go-Round</title>
		<link>http://bytex64.net/blog/e2352</link>
		<guid>http://bytex64.net/blog/e2352</guid>
		<pubDate>Wed, 09 Nov 2011 03:11:22 -0600</pubDate>
		<description>Lately I&#39;ve been through a lot of phones. Well, only three, really, but that&#39;s more than anyone should go through in a month. Let&#39;s rewind.

&lt;p&gt;I was doing some remote terminal work on my Palm Pixi, and a long string of output bogged it down. I sat it aside, and had dinner. I came back to it later completely locked up, and after a reboot, I got a deluge of messages from a failed machine at work. &quot;No,&quot; I thought, &quot;This cannot stand. I need a dependable phone for work.&quot;

&lt;p&gt;So I thought deeply about that for a while, then disregarded those thoughts and bought an HP Veer.

&lt;p&gt;The Veer was a spiritual successor to the Pixi, but it didn&#39;t quite fill the same square. Where the Pixi was a fully featured but slow candybar, the Veer was a tiny hobbled slider. Most of the reviews for the Veer kept saying &quot;It&#39;s too small!&quot; but that wasn&#39;t really the problem. A small smartphone is a great idea (as evidenced by the Pixi), but the Veer was a victim of excessive compromise to achieve that ideal.

&lt;p&gt;For some reason, Palm decided that a slider was superior to the candybar. The slider, unfortunately, adds weight and bulk inside the case. Folded up, the Veer is shorter than the Pixi, but it&#39;s thicker and heavier. Unfolded, it&#39;s practically the same size. WebOS devices are power hungry, so they wedged as much battery as they could in the rest of the case &amp;mdash; and this meant it was non-removable. Because of the lack of space inside the case, they ditched the headphone jack and USB port, instead connecting it through a magnetic jack reminiscent of the Nokia pop-port. And that port was really the misfeature that killed it. In order to listen to music, you had to keep around a dongle. Ditto for USB and wired charging. And that means you have two more things to lose. What do you think the odds are of finding a Veer USB cable if you forget yours at home? Slim-to-fucking-nil. So that just wasn&#39;t going to work for me.

&lt;p&gt;(As an aside, I gave the Veer to my brother, and he loves it.)

&lt;p&gt;At this point, Alex scrounged up the old Pre 2 that we had worked with on a mobile game for EOH. And that worked pretty well for a while even though the keyboard was frustratingly cramped. And then I dropped it on cobblestones and fried the LCD display. So I bought a replacement on eBay. And that one worked pretty well for a couple of days until I realized it was failing to notify me of new messages. :-/

&lt;p&gt;So we&#39;re back at the beginning now. I&#39;ve switched back to the Pixi, which is actually quite a relief after all of that. I really do like the Pixi. It&#39;s a brilliant little phone whose only flaw is that it&#39;s slower than Congress passing a bill to raise taxes on the rich. I&#39;d still like something a little more reliable, too.

&lt;p&gt;So I&#39;m looking at Nokia again, because if anyone can make a phone that never fails, it&#39;s Nokia. Not that they always do, mind you, but they have. My first phone was a Nokia 6010. It never needed to be rebooted, lasted a week on a charge, and had excellent sound and signal quality. I&#39;ve ordered an &lt;a href=&quot;http://www.nokiausa.com/us-en/products/phone/e6-00/&quot;&gt;E6-00&lt;/a&gt; to try out, and I&#39;m hopeful that it&#39;ll be not terrible enough to work for me. Flawed though it is, webOS has unparalleled (and often imitated) UX design. It&#39;s going to be hard to give that up. On the other hand, not having to charge the phone every day is nice, too. And Symbian^3 is going to get updates until 2016. The latest release, Symbian Belle, is coming soon for the E6, and adds a proper notification system. So maybe it won&#39;t be that bad.

&lt;p&gt;We&#39;ll see in a couple of days when it arrives. :)</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>The Garfleburgers of Spalagnatz IV</title>
		<link>http://bytex64.net/blog/e2350</link>
		<guid>http://bytex64.net/blog/e2350</guid>
		<pubDate>Thu, 25 Aug 2011 20:21:13 -0500</pubDate>
		<description>&quot;Do you remember the garfleburgers of Spalagnatz IV? No, I guess you probably don&#39;t. Even nowadays putting a brain in a tin can is a tricky procedure, and it was downright dangerous when you were transcribed. I&#39;m sure a lot of good memories got lost then, but it&#39;s not like we had much of a choice. But don&#39;t worry, I&#39;m here to help recover some of those memories.

&lt;p&gt;&quot;Anyway, the garfleburgers... You begged mom to let you go to Spalagnatz IV for spring break, and she would only let you go if I came along. I wasn&#39;t too happy about having to play chaperone, but I was glad to get out of the house. So that July you and I hopped a spaceliner to Spalagnatz IV where we found the garfleburgers... Well, I should back up a bit.

&lt;p&gt;&quot;Spalagnatz IV was a natural paradise planet in the Hyperion cluster. It orbits a yellow star much like the sun, but it burned a little brighter, so the native plants were blue-green. Humans immediately saw its large tropical zone as an opportunity and turned it into the biggest beach party in the universe.

&lt;p&gt;&quot;After checking in at the hotel, you met this guy, his name was Venutias. Half Beloran, I think. He was also on spring break, and had been to Spalagnatz IV a couple of times before, so he offered to show you around. I, of course, didn&#39;t trust him one bit, so I made a point of it by tagging along.

&lt;p&gt;&quot;We went to the beach which was completely crowded despite there being several thousand miles of it. Their sand is pink... something to do with extra iron in the soil or something. We swam and had a good time. Turns out Venutias was an alright guy. Some stellahead jock tripped over our towel and then started giving you crap for it. Venutias told him in no uncertain terms to get lost, and the jock left without a fight.

&lt;p&gt;&quot;Anyway, we had dinner at this little burger shack he knew about which had the &#39;best garfleburgers on the planet.&#39; A garfle was apparently a native animal. Seemed kind of touristy. Their idea of a hamburger was pretty strange, too. Burger, chili sauce, onion, green pepper, marshmallow creme, and cream cheese in a small pie shell. Frickin&#39; weird. It was alright, though. You could barely taste the garfle over all the toppings, but I guess that was the point. I looked it up the other day. A garfle is a small scavenger animal, like a squirrel. Apparently they run rampant all over Spalagnatz IV, and selling garfleburgers to tourists is just one of the ways they keep the population under control.

&lt;p&gt;&quot;By the time we left, you definitely had a crush on Venutias. But like most interstellar romances, it was just not meant to happen. We went back to Earth and he went home to Balora, and we never saw him again. I suppose it was for the best. After you died and they translated your mind to digital, there wasn&#39;t much left for you in the physical world. Maybe some day I&#39;ll get to see what it&#39;s like in there.

&lt;p&gt;&quot;Anyway, I have to get back to work. I&#39;ll see you later, sis. I love you.&quot;</description>
		<slash:comments>1</slash:comments>
	</item>
	<item>
		<title>Like rats boarding a sinking ship</title>
		<link>http://bytex64.net/blog/e2349</link>
		<guid>http://bytex64.net/blog/e2349</guid>
		<pubDate>Wed, 24 Aug 2011 03:09:27 -0500</pubDate>
		<description>After HP gave up on webOS devices, they incited a bit of a panic. The announcement was so abrupt that webOS users everywhere have been recovering from whiplash and wondering where to go next. HP says &lt;a href=&quot;http://www.precentral.net/hp-not-walking-away-webos-say-execs-all-hands-webos-gbu-meeting&quot;&gt;they&#39;re not abandoning the platform&lt;/a&gt;, but at this point, I don&#39;t think anyone&#39;s willing to believe them. Even the faithful are helpfully &lt;a href=&quot;http://www.precentral.net/switching-away-webos-spe-has-you-covered-1&quot;&gt;providing exit options&lt;/a&gt; for their flock. By all accounts, webOS is a sinking ship.

&lt;p&gt;But it is the strangest sinking ship you&#39;ve ever seen.

&lt;p&gt;HP slashed the prices on the Touchpad to $100/$150 to clear out inventory, resulting in it completely selling out last Sunday. Best Buy&#39;s 250K units they couldn&#39;t sell? Gone. My good friend Alex said he was one of only a couple of people returning his, while there was a line out the door for people showing up to buy. Overnight, the webOS community grew by likely 300,000 users, with &lt;a href=&quot;http://www.precentral.net/coming-soon-touchpad-fire-sale-part-2&quot;&gt;more on the way&lt;/a&gt;. And the old guard is &lt;a href=&quot;http://www.precentral.net/new-touchpad-tips-apps-accessories&quot;&gt;welcoming them with open arms&lt;/a&gt;.

&lt;p&gt;This &quot;&lt;a href=&quot;http://www.precentral.net/accidental-userbase&quot;&gt;accidental userbase&lt;/a&gt;&quot; has caused a sharp spike in webOS interest. PreCentral was having trouble staying up under the load, and apparently app sales are &quot;Way up.&quot; HP wanted to be #2 after the iPad, and it looks like they might succeed at this rate. And all they had to do was kill the brand and lose $200 on every unit sold. This enthusiasm will wane, of course, since the Touchpad has no future. But where HP has given up, homebrewers and hackers are likely to keep the platform going for some time.

&lt;p&gt;The software of webOS has always been a little... quirky, and the hardware hasn&#39;t always been up to snuff. But the community behind webOS has always been the most solid part of the platform. Emboldened by the fire sale gains, some are &lt;a href=&quot;http://www.precentral.net/webos-o-s-campaign-save-our-platform&quot;&gt;banding together to help save webOS&lt;/a&gt; (for whatever that&#39;s worth). I mentioned PreCentral&#39;s welcome above, and webOSroundup has a &lt;a href=&quot;http://www.webosroundup.com/2011/08/the-webos-community-its-personal/&quot;&gt;pretty good introduction to where to look for help from the community&lt;/a&gt;. WebOS fans have been through hell and just got shot in the back for their trouble, so they&#39;re more than willing to help someone out if they&#39;re struggling. As long as those die-hards are still there, then webOS isn&#39;t truly dead.

&lt;p&gt;So here&#39;s to webOS&#39;s meteoric rise to the bottom!</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Oh, look, just what I always wanted!</title>
		<link>http://bytex64.net/blog/e2348</link>
		<guid>http://bytex64.net/blog/e2348</guid>
		<pubDate>Sat, 20 Aug 2011 03:26:35 -0500</pubDate>
		<description>I&#39;m sure by now you&#39;ve heard the &lt;a href=&quot;http://www.precentral.net/breaking-hp-shutting-down-webos-device-operations-will-continue-explore-options&quot;&gt;death knell&lt;/a&gt; &amp;mdash; HP is quitting the webOS device business. Where that leaves the software business is anyone&#39;s guess right now. In fact, nearly everyone has been guessing about what&#39;s going to happen. Apparently not AT&amp;T or even the webOS GBU (nee Palm) knew that this decision was being made. We do know one thing from this, though: this whole thing is being handled &lt;i&gt;extremely poorly&lt;/i&gt;.

&lt;p&gt;So I&#39;m sitting here, typing this on a now defunct device, reflecting on the whole thing. Yesterday was mostly going through the six stages of grief:

&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Denial&lt;/b&gt; - Nigga what?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Anger&lt;/b&gt; - Why the fuck would they do this a month and a half after the launch!?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Bargaining&lt;/b&gt; - It&#39;s OK, the homebrew community will pick up the slack.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Depression&lt;/b&gt; - Now I&#39;ll never get to sell the apps I&#39;ve been working on...&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Acceptance&lt;/b&gt; - You know what? My Touchpad still works just as well as it did yesterday. Everything will be fine.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Wry humor&lt;/b&gt; - Hmm, I&#39;ve lost nearly $500 in virtual money playing Vegas Klondike solitaire. That&#39;s sort of like if I&#39;d bought a Touchpad when it was new. Oh wait. I did.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So it may be the end of the webOS world, but you know what? I feel fine. I took a step back and looked at my technological life and realized that nearly everything I use is obsolete or discontinued. I absolutely &lt;i&gt;thrive&lt;/I&gt; in the deadpools of consumer progress. I am like a &lt;a href=&quot;http://en.wikipedia.org/wiki/Plecostomus&quot;&gt;Plecostomus&lt;/a&gt;, sucking up the detritus of yesterday&#39;s products and turning it into something I can use and grow with. To wit:

&lt;ul&gt;
&lt;li&gt;My work laptop is a ten year old IBM ThinkPad T23. Next to it sits a homebrew AM2 Athlon PC, hooked up to a VGA-only 1280x1024 LCD screen that I keep around because I like its 5:4 aspect ratio. My keyboard is a Model M that&#39;s older than both of my brothers (which, for those of you not counting, is 23 years).&lt;/li&gt;
&lt;li&gt;My newest game console is a PS2, hooked up to a CRT TV through a mechanical switchbox that shares the TV with a Sony SMP-N100 media player.&lt;/li&gt;
&lt;li&gt;My media server is a dual Socket 940 Opteron server, which displays its console via a 20 year old DEC VT420 (for which I fabricated my own MMJ-DB9 adapter). The drives are hooked up via a PCI SATA adapter because the motherboard has neither PCIe nor SATA onboard.&lt;/li&gt;
&lt;li&gt;My car is a 1988 Honda CRX with 206,000 miles on it that starts every time and runs like clockwork.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So really, I just got what I always wanted: A tablet that works with me, is powerful and hackable, and is now obsolete. All is right with the world. :)</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>Web Workers: Not quite ready for prime-time</title>
		<link>http://bytex64.net/blog/e2347</link>
		<guid>http://bytex64.net/blog/e2347</guid>
		<pubDate>Thu, 11 Aug 2011 15:43:01 -0500</pubDate>
		<description>One of the near-future browser enhancements I&#39;m pretty excited about is &lt;a href=&quot;http://www.w3.org/TR/workers/&quot;&gt;Web Workers&lt;/a&gt;. Web Workers are a kind of heavyweight concurrency system, where you create separate worker threads and then pass messages between them. It&#39;s not the cleanest or most transparent concurrency model, but it works pretty well in the JavaScript world, where multithreading doesn&#39;t exist.

&lt;p&gt;A web worker is basically a separate JS context with a few helper functions and a message passing interface to your main browser thread. A Worker can proceed without interrupting the UI thread, enabling all kinds of things you&#39;d normally do in a timer loop. Typically this speeds things up significantly because you&#39;re not stuck waiting for UI to render or the timer to re-fire. I recently modified &lt;a href=&quot;http://dominionofawesome.com/cryptobox/&quot;&gt;Cryptobox&lt;/a&gt; to use web workers, and the speedup is pretty enormous.

&lt;p&gt;But...

&lt;p&gt;The Web Workers standard is currently a draft, and browser support is spotty. In particular, IE9 doesn&#39;t support it (not that I can blame them). In Opera, workers run in the same thread as the browser, meaning you won&#39;t get any speedup on multi-core systems. Chrome has the best support right now, followed shortly by Safari with Firefox somewhat further behind. Most mobile browsers don&#39;t support it, with the Blackberry Playbook being the notable exception (their browser is probably the most complete mobile browser out there).

&lt;p&gt;Workers come in the standalone variety or a shared version. The shared version allows you to share a worker across multiple windows/tabs, which could allow you to make a single database backend worker with caching, and share that cache across any number of windows that need it. It&#39;s a slick idea, but it&#39;s less supported than the regular Worker. Firefox doesn&#39;t have it, for example.

&lt;p&gt;Debugging support is practically nonexistent. Chrome has a Debug checkbox in its inspector, but it doesn&#39;t seem to do anything. Mostly, if any error happens in a Worker that stops its execution, you have to guess at what happened, make changes, and hope it worked. It&#39;s rather stone-age. Without proper debugging support, Web Workers are just a cool browser hack that will be used mostly by people who understand the spec (which is probably like three or four people right now).

&lt;p&gt;I look forward to it being finished, but for now, don&#39;t bother.</description>
		<slash:comments>0</slash:comments>
	</item>
	<item>
		<title>The post-PC world</title>
		<link>http://bytex64.net/blog/e2346</link>
		<guid>http://bytex64.net/blog/e2346</guid>
		<pubDate>Sun, 17 Jul 2011 03:57:07 -0500</pubDate>
		<description>Two weeks ago I went out and bought a Touchpad. I had been struggling with justification for the purchase, but when it came right down to it, it was really just a &quot;for fun&quot; purchase. The upcoming post-PC world is exciting, and I wanted to play around. So I got one.

&lt;p&gt;The device itself is great. WebOS 3.0 is fast and responsive. Improvements to Just Type allow me to add any search engine I come across. It searches applications, contacts, emails, browser history, calendar appointments, plus applications can add their own plugins to search their content, too. Also, I can start an email, message, facebook post, and more, directly from the card view. It&#39;s a system designed to feed information addiction, and it does it extremely well.

&lt;p&gt;Of course it also has the best multitasking and notifications of any mobile system, and it has a small but growing library of games ported from iOS and Android. It is a competent little system. Oh, and it does Flash.

&lt;p&gt;Of course, it does have its share of bugs and disappointments. After you install or remove an app, searching for apps with Just Type breaks. You have to restart before it&#39;ll work again. The browser crashes on some sites. The promised Kindle app is missing, as well HP Play and document editing. All of this tells me that the launch was rushed. All of it will be fixed in time.

&lt;p&gt;Some of the things on the horizon are really interesting to me. My prediction about the Touchpad running X has already come true &amp;mdash; I have a little debian chroot system set up so I have my Linux workstation inside my ultraportable tablet. I even got a bluetooth keyboard with the expectation of having something that could truly replace my laptop. But that&#39;s where PC and post-PC crashed headlong into each other at 75 MPH.

&lt;p&gt;The problem is that the keyboard mappings for webOS are designed strictly for webOS. In any application, I have no control over the Control, Escape, Tab, or any of the function keys. As you can imagine, that makes a Linux workstation pretty unusable. I&#39;m sure the webOS Internals folks are working on that, but it&#39;s pretty frustrating to be so close yet so far.

&lt;p&gt;And the keyboard integration in webOS itself is surprisingly poor. The Esc key is now a key that pops up the notifications area. Handy, but once you have that open, the keyboard does nothing to actually delete or activate the notifications. The windows key works like the center button, throwing you back into card view. But once you&#39;re there, you can&#39;t navigate the cards or activate an application. And Just Type is really handy when you can type quickly, but you can&#39;t explore any of the options it gives you without reaching up for the touchscreen. You&#39;d further expect to be able to scroll using the arrow keys in the browser. Nope. I don&#39;t even get Ctrl-C/Ctrl-V for copy/paste.

&lt;p&gt;Not that the keyboard is useless, mind you. I&#39;m typing this up on the Touchpad, but that&#39;s pretty much all the keyboard is expected to do on this system &amp;mdash; type up documents.

&lt;p&gt;So far, it seems like post-PC has taken away more than it&#39;s given. But these are all solvable problems, and there are enough nerds out there that they&#39;ll get solved one way or another. Probably by Microsoft. Mobile computing is really still in the pre-pubescent &quot;gee whiz&quot; stage where a lot of new ideas are coming out, but very few of them are actually improving our digital lives. Mostly, it&#39;s just a lot of exercises in design that would never get accepted in mainstream computing (like hiding apps that are running in the background &amp;mdash; didn&#39;t we get rid of that in the 80&#39;s?). It&#39;s a new and fun and exciting time where we get to reinvent the wheel in the name of progress.

&lt;p&gt;But if you&#39;re looking to get stuff done, you should probably come back in a few years.</description>
		<slash:comments>0</slash:comments>
	</item>
</channel>
</rss>

