<?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>Curtis Tasker &#187; Technology</title>
	<atom:link href="http://curtistasker.com/blog/technology/feed" rel="self" type="application/rss+xml" />
	<link>http://curtistasker.com</link>
	<description>&#99;&#117;&#114;&#116;&#105;&#115; (at) &#116;&#97;&#115;&#107;&#101;&#114; (dot) &#110;&#101;&#116;</description>
	<lastBuildDate>Sat, 24 Jul 2010 22:42:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>E-book Readers</title>
		<link>http://curtistasker.com/blog/technology/534/e-book-readers</link>
		<comments>http://curtistasker.com/blog/technology/534/e-book-readers#comments</comments>
		<pubDate>Sat, 23 May 2009 00:06:58 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[e-book]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[sony reader]]></category>
		<category><![CDATA[stanza]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=534</guid>
		<description><![CDATA[Yesterday I was out partaking in some fine English brown ale and Chicago deep dish pizza, when the waiter noticed me reading something on my iPod Touch. He started asking the usual &#8220;Is that a Touch or an iPhone?&#8221; and &#8220;Do all iPhone apps work on the Touch?&#8221; questions, which I&#8217;ve grown used to at [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was out partaking in some fine English brown ale and Chicago deep dish pizza, when the waiter noticed me reading something on my iPod Touch. He started asking the usual &#8220;Is that a Touch or an iPhone?&#8221; and &#8220;Do all iPhone apps work on the Touch?&#8221; questions, which I&#8217;ve grown used to at this point. Then he surprised me, by telling me about the Kindle app for the iPhone, and generally gushing about the Kindle hardware. I ended up discussing some of my first-hand experiences with various e-book readers, and eventually we subsided into trading favorite authors.<br />
<span id="more-534"></span><br />
What struck me as interesting about this whole conversation is that he only knew about the Kindle and its iPhone app. He was considering buying one or both of these, and he had never even heard of the alternatives, neither on the hardware nor software sides of the equation. I find it amusing that in such a short time the Kindle has established itself as a stronger brand in the marketplace than Sony, who has been at it for two years longer.</p>
<h2>Requirement: Quality Screen</h2>
<p>When it comes to a replacement for my beloved paperbacks, I have one key requirement, and the rest is all hopes and dreams. Since I&#8217;m going to be reading books on this thing, I need a high quality screen. <a href="http://en.wikipedia.org/wiki/E-ink">E-ink</a> is acceptable, as long as the text is crisp, page turn is instant, and it has uniform lighting for nighttime reading.</p>
<p>I do appreciate durable design, portable form factor, a screen size that&#8217;s just right, and plenty of battery life. As far as functionality goes, I appreciate having a built in dictionary and easy to use bookmarks. I do require access to both free and paid bookstores (customizable, I don&#8217;t want just the device manufacturer&#8217;s stores), and I also need support for plenty of formats, with <a href="http://en.wikipedia.org/wiki/Epub">EPUB</a> and <a href="http://en.wikipedia.org/wiki/Pdf">PDF</a> being the minimum I will accept.</p>
<h2>My Thoughts on the Current Hardware</h2>
<p>The <a href="http://en.wikipedia.org/wiki/Amazon_Kindle">Kindle</a> devices I just can&#8217;t take seriously: their keyboards are awkward and unnecessary (hello touchscreen!), the design is just unprepossessing, purchases are locked-in to Amazon&#8217;s ecosystem, and there is no native EPUB support. I&#8217;ll pass.</p>
<p>I did own a <a href="http://en.wikipedia.org/wiki/Sony_Reader">Sony PRS-700 Reader</a> for about a week; it was close, but not quite, what I want in an e-book reader. The screen quality was not what I had hoped for, due to a badly designed touchscreen layered on top of the e-ink display. The touchscreen caused horrible glare, and blurred the text beneath it slightly.  The touchscreen functionality itself was below average. The reader did support EPB, and the PDF support was pretty slick (and fast!). The previous model, PRS-500, had a much better screen, but its PDF performance was lacking, as was its interface and design. There are plenty of other e-ink based readers from different vendors, but nothing that really stands head and shoulders above the rest of the pack.</p>
<p>After returning the Sony, I ended up delving into the various e-book readers for the iPod Touch.  <a href="http://www.fictionwise.com/help/iphonefaq.htm">eReader</a> was decent, <a href="http://www.amazon.com/gp/feature.html?docId=1000301301">Kindle&#8217;s app</a> was so-so, and <a href="http://www.lexcycle.com/">Stanza</a> just blew me away.  I&#8217;ve read a dozen books on Stanza, and that number is climbing rapidly.  The iPod Touch is already a permanent fixture in my pocket, so the portability and convenience factor is high. Even though the screen is a bit small, I&#8217;ve grown used to holding the device slightly closer to my eyes than a usual book to compensate.</p>
<p>When the next round of e-ink readers hits the streets, its going to be a touch choice between a paperback-sized dedicated reader and an application on my iPod Touch or iPhone. Perhaps <a href="http://farm4.static.flickr.com/3476/3403421202_77b436bb69.jpg?v=0">Whispersync</a> will have made its way into a few more applications by then. The thought of moving from e-book reader to iPhone to web page to iPod Touch, keeping my bookmarks and current page in sync, gives me shivers of delight.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/534/e-book-readers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handbrake encoding, and a rare Quicktime crash</title>
		<link>http://curtistasker.com/blog/technology/508/handbrake-encoding-and-a-rare-quicktime-crash</link>
		<comments>http://curtistasker.com/blog/technology/508/handbrake-encoding-and-a-rare-quicktime-crash#comments</comments>
		<pubDate>Sun, 26 Apr 2009 15:55:47 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[handbrake]]></category>
		<category><![CDATA[language code]]></category>
		<category><![CDATA[mp4]]></category>
		<category><![CDATA[muxing]]></category>
		<category><![CDATA[quicktime]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=508</guid>
		<description><![CDATA[I compiled the latest Handbrake source code a few weeks ago and started testing it out on both my Mac and PC. I&#8217;ve got a collection of video that I&#8217;d like to have in H.264 format, and I want the files to work on the iPod Touch, iPhone, stream to the Xbox 360, and maintain [...]]]></description>
			<content:encoded><![CDATA[<p>I compiled the latest <a href="http://en.wikipedia.org/wiki/Handbrake">Handbrake</a> source code a few weeks ago and started testing it out on both my Mac and PC. I&#8217;ve got a collection of video that I&#8217;d like to have in <a href="http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC">H.264</a> format, and I want the files to work on the iPod Touch, iPhone, stream to the Xbox 360, and maintain enough quality to look good on a 40&#8243; television.<br />
<span id="more-508"></span></p>
<h2>Apple Universal</h2>
<p>Some time scanning the <a href="http://forum.handbrake.fr/">Development Forum</a> yielded a <a href="http://forum.handbrake.fr/viewtopic.php?f=4&#038;t=9096&#038;p=51939#p51625">profile</a> which looks on track to become the latest &#8216;Apple Universal&#8217; profile in the next stable release. The CLI string for the profile is as follows, and I was able to easily get it working on both the Mac and PC:</p>
<pre>-e x264 -q 20.0 -a 1,1 -E faac,ac3 -B 160,auto -R 48,Auto -6 dpl2,auto -f mp4
-X 720 -P -m -x level=30:cabac=0:ref=2:mixed-refs=1:me=umh:no-fast-pskip=1</pre>
<p>The preset creates files which are fully compatible with my devices, and although the file size is a little larger than normal, it offers very good quality. The main problem with creating a &#8216;Universal&#8217; profile seems to be that the portable devices can&#8217;t handle the latest <a href="http://en.wikipedia.org/wiki/H.264#Profiles">candy</a>, which allows the same quality a much smaller file size. Oh well.</p>
<h2>An Odd Problem</h2>
<p>All of my video worked fine with this profile, with the exception of 3 files. These files would open fine in <a href="http://en.wikipedia.org/wiki/Vlc">VLC</a> (Mac/PC, 0.9.9a), <a href="http://en.wikipedia.org/wiki/Media_player_classic">Media Player Classic</a> (PC, 6.4.9.1), <a href="http://en.wikipedia.org/wiki/Windows_media_player">Windows Media Player</a> (PC, 11), iTunes (Mac, 8.1.1) and <a href="http://en.wikipedia.org/wiki/Quicktime">Quicktime</a> (PC, 7.6). When opened in Quicktime (Mac, 7.6), they would crash the player every single time. This irked me.</p>
<p>My efforts to fix the problem started with re-encoding from the source using several different compression settings, and this yielded no results. I started looking closely at the source and encoded video with several tools and players, and compared working video with crash-happy video. The only difference I could see was the audio tracks.  In all my working video, the audio track was labeled &#8216;English&#8217;; In my crash happy files, the audio track was labeled &#8216;Unknown&#8217;.</p>
<p>I decided to try forcing the language to English at encode time using Handbrake&#8217;s CLI options. This allowed me to change the label for the language, but didn&#8217;t do anything to help the problem. Next, I tried remuxing the files using <a href="http://mp4creator.sourceforge.net/">MP4Creator</a> and its GUI front end <a href="http://www.dvbportal.de/projects/mp4muxer/">MP4Muxer</a>; That helped just as little.</p>
<h3>Language Codes</h3>
<p>I now suspected one or more audio tracks were being tagged with improper language codes, so I read up on the <a href="http://wiki.multimedia.cx/index.php?title=QuickTime_container">Quicktime Container</a> spec. Each mp4 file contains a moov/trak/mdia/mdhd atom for each video and audio track, along with 2 bytes of language data for each atom. Using MP4Muxer, I opened the working and non-working files to compare the atoms. For all working mp4 files, the atoms for the audio tracks was <code>0x15c7</code>. For my crash-happy mp4 files, atoms were <code>0x55c4</code>. I figured that changing this value would fix things, but I wasn&#8217;t entirely sure it was possible with MP4Muxer. I was also curious as to what these values actually meant.</p>
<p>According to the container specification, the language code&#8217;s 2 byte value contains a 3 digit language code. The code follows the <a href="http://en.wikipedia.org/wiki/ISO_639">ISO 639 language codes</a>, and to save space it splits the 16 bytes into three 5 bit blocks; Each block represents a letter of the country code, using the <a href="http://en.wikipedia.org/wiki/Ascii">ASCII</a> value of the letter minus <code>0x60</code>. The short of it is, 1=a, 2=b, and so on. If you take the <code>0x55c4</code> value from my probe, you get <code>10101 01110 00100</code> in binary. Broken into groups of 5 bits and converted to letters, and you get <code>10101=21=u</code>, <code>01110=14=n</code>, <code>00100=4=d</code>, or &#8216;und&#8217; as our 3 digit code. This is the special code for undetermined, and apparently the cause of my problems. Applying the same process to the <code>0x15c7</code>, we get &#8216;eng&#8217; as our language code, for English.</p>
<h2>Solution</h2>
<p>I found another muxer called <a href="http://gpac.sourceforge.net/doc_mp4box.php">MP4Box</a>, which supports language codes. Running this simple command took seconds, and rewrote the language code for all my crash-happy files:</p>
<pre>mp4box -lang en VideoFile.m4v</pre>
<p>Presto, the files no longer crash Quicktime (Mac, 7.6)!  I later discovered a tool from Apple called <a href="http://developer.apple.com/quicktime/quicktimeintro/tools/">Dumpster</a> that allows both browsing and editing the container data. I tried fixing the language codes for the audio tracks of a file using this tool, and it worked equally well.</p>
<p>I&#8217;m not entirely sure who&#8217;s at fault here. Is the creator of the source video at fault for not tagging the audio tracks with a language? Is Handbrake at fault for not forcing English as a default when an undefined audio track is found? Or is Quicktime (Mac, 7.6) at fault for crashing trying to open a file with an undefined audio track? I&#8217;m inclined to call Quicktime (Mac, 7.6) out on this one here, as every other program I tried had zero problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/508/handbrake-encoding-and-a-rare-quicktime-crash/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Radio Love-Hate</title>
		<link>http://curtistasker.com/blog/technology/269/radio-love-hate</link>
		<comments>http://curtistasker.com/blog/technology/269/radio-love-hate#comments</comments>
		<pubDate>Fri, 10 Apr 2009 03:34:59 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pandora]]></category>
		<category><![CDATA[radio]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=269</guid>
		<description><![CDATA[I&#8217;ve had a love-hate relationship with radio for years. On the one hand, I love not having to choose the next song. If you&#8217;ve been in the car with me and my iPod on shuffle play, you&#8217;ll often see me skip dozens of songs until I pick one that interests me. Having that ability taken away from [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had a love-hate relationship with radio for years. On the one hand, I love not having to choose the next song. If you&#8217;ve been in the car with me and my iPod on shuffle play, you&#8217;ll often see me skip dozens of songs until I pick one that interests me. Having that ability taken away from me is cathartic, and I&#8217;m happier for it. I also love that the radio will make me listen to new music I haven&#8217;t heard before. It broadens my musical horizons, and introduces me to some great bands.<br />
<span id="more-269"></span><br />
The problems I have with radio are as follows: bad songs, commercials, and DJs deciding to talk. All three of these interrupt the flow of good music to my brain, and I&#8217;m not a fan of that. The only recourse here is to change stations or turn the radio off. Often I&#8217;ll scan every station in the band, only to be thwarted by the trio of problems again and again on every station.</p>
<p>The good news is, I&#8217;ve discovered the wonders of internet radio. I&#8217;m not talking about a standard radio station broadcasting on the internet, but services that tailor the music to your tastes. Two such services stand out, and I use both of them on a daily basis.</p>
<p>With <a href="http://pandora.com">Pandora</a>, I can seed a station with a song/artist that I like, and it uses an algorithm to find songs that sound the same. It continually improves the station as I give songs a thumbs up/down, I can add variety to a station by adding new songs/artists to the mix. <a href="http://last.fm">Last.fm</a> works much the same, except is uses user metrics rather than an algorithm to determine music I&#8217;d like. That is, if 87% of people who like song A also like song B, then it will play song B if I say I like song A.</p>
<p>While I prefer Pandora&#8217;s approach, I&#8217;m just in love with last.fm&#8217;s metrics.  I submit every song I listen to, either by iTunes or Pandora, to last.fm, though a process known as scrobbling. You can look at my <a href="http://www.last.fm/user/curttasker">profile</a> and see all sorts of interesting details about my taste in music.  Honestly I never realized I liked Pearl Jam so much.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/269/radio-love-hate/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Audio Hardware</title>
		<link>http://curtistasker.com/blog/technology/254/audio-hardware</link>
		<comments>http://curtistasker.com/blog/technology/254/audio-hardware#comments</comments>
		<pubDate>Sat, 17 Jan 2009 19:50:38 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[pandora]]></category>
		<category><![CDATA[radio]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=254</guid>
		<description><![CDATA[I remember my father&#8217;s 8-track player, and the stack of music that dwarfed the workbench in the garage for years after the advent of cassette players.

Before I aged to the double digits, I had acquired my first Walkman, which was followed by a Discman, and then I ignored portable music players altogether for several years. [...]]]></description>
			<content:encoded><![CDATA[<p>I remember my father&#8217;s <a href="http://en.wikipedia.org/wiki/8-track_tape">8-track</a> player, and the stack of music that dwarfed the workbench in the garage for years after the advent of <a href="http://en.wikipedia.org/wiki/Compact_Cassette">cassette</a> players.<br />
<span id="more-254"></span><br />
Before I aged to the double digits, I had acquired my first <a href="http://en.wikipedia.org/wiki/Walkman">Walkman</a>, which was followed by a <a href="http://en.wikipedia.org/wiki/Discman">Discman</a>, and then I ignored portable music players altogether for several years. At one point I had myself almost talked into a <a href="http://en.wikipedia.org/wiki/Minidisc">MiniDisc</a> player, but thankfully I never followed through.</p>
<h2>Into the digital age</h2>
<p>In college I discovered MP3s, and quickly converted my optical media to digital files. I filled my <a href="http://en.wikipedia.org/wiki/Jaz_Drive">Jaz</a> discs with music, lamented the fact that playing MP3s took 90% of my cpu, and eagerly awaited each new <a href="http://en.wikipedia.org/wiki/Winamp">Winamp</a> beta.</p>
<p>My younger brother got a <a href="http://en.wikipedia.org/wiki/Rio_(digital_audio_players)">64mb MP3 player</a> for christmas, and I was amused by the 64kbps file size used to estimate the number of songs it would hold. Despite its limitations, I coveted it, but I resolved to hold out until the players had matured significantly. Since I spend the bulk of my life tethered to a computer, I had little need to carry around my music.</p>
<p>The better part of a decade passed, and I made due. For a year I was into listening to terrestrial radio over the internet, but that phase soon passed. At one point I had an old laptop with a 2.1gb hard drive running Winamp hooked up to my car, complete with a cassette adapter, dc adapter, and a gamepad to control playback. That proved to draw too many awkward stares from passengers, and I soon fell back on radio. A new car brought with it my first in-dash cd player, followed by an upgrade to a trunk mounted cd changer.</p>
<h2>Making the final plunge</h2>
<p>During this draught of portable MP3 hardware, Apple rolled out the iPod, and soon began to dominate the market; Still I resisted. When the i<a href="http://en.wikipedia.org/wiki/Ipod_nano">Pod Nano 1g</a> debuted, and caved in and bought one. I took the sleek black 4gb device and covered it with a transparent protective skin, and then encased it in aluminum. I spent countless hours tweaking it, adding album art to songs, and doing everything in my power to avoid installing iTunes for Windows. Coupled with an overpriced car adapter, I was able to ditch the cd changer and listen to my MP3s in the car again. That little player served me well for several years, and is currently sporting 30 minutes max of battery life. I&#8217;m still not entirely sure why I keep it around.</p>
<p>At some point I went back to the radio; I just needed to hear new music. After a few frustrating weeks of voice memos to myself to keep track of new artists and songs I liked, I found a little song ID app for my mobile that would identify songs through the mic, and email me the artist and title. Soon I built up a library of new songs, and I gladly shut off the radio DJs and commercials in favor of actual music.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Ipod_shuffle">iPod Shuffle 2g</a> was the next player to catch my eye, and its 1gb of space is still filled with power songs for running. The <a href="http://en.wikipedia.org/wiki/Ipod_touch">iPod Touch 2g</a> managed to reel me in this year, and I spend at least an hour a day using it.  Its permanently in my pocket or in my hand. The funny thing is though, I hardly listen to MP3s on it.</p>
<p>Sure, I use it in the car, but that&#8217;s about it. I haven&#8217;t played an MP3 in months on the computer. Streaming music has become my musical vehicle of choice, with <a href="http://www.pandora.com/people/curtis52">Pandora</a> and <a href="http://www.last.fm/user/curttasker">last.fm</a> fighting for my affections. I&#8217;ve discovered dozens of fantastic new bands, and generated some eye opening metrics about my listening preferences.</p>
<p>I look at the collection of music I have, and it seems like such a waste. I spent a decent chunk of time encoding, tagging, and organizing my music. I bought cd after cd when all I really wanted was a song or two, not to mention the cassettes I replaced with cds of the same music. Physical media is long dead in my eyes, and even digital copies are beginning to lose their luster. When I want to listen to music, I just stream it from the internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/254/audio-hardware/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Input Driven</title>
		<link>http://curtistasker.com/blog/technology/256/input-driven</link>
		<comments>http://curtistasker.com/blog/technology/256/input-driven#comments</comments>
		<pubDate>Thu, 18 Dec 2008 21:04:23 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[scancode]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=256</guid>
		<description><![CDATA[I seem to chew through and spit out peripherals yearly. I suppose when you spend as much time as I do in front of a computer, you feel compelled to have the perfect input devices.

Finding Perfection
I started out with a standard IBM PC keyboard, one of those giant clackers, and a dreary old grey mouse with [...]]]></description>
			<content:encoded><![CDATA[<p>I seem to chew through and spit out peripherals yearly. I suppose when you spend as much time as I do in front of a computer, you feel compelled to have the perfect input devices.<br />
<span id="more-256"></span></p>
<h2>Finding Perfection</h2>
<p>I started out with a standard IBM PC keyboard, one of those giant clackers, and a dreary old grey mouse with my first computer.  Since then I&#8217;ve gone through literally dozens of upgrades. Ball mice gave way to optical mice, which in turn gave way to laser mice. In the past few years I&#8217;ve gone through half a dozen gaming mice, before finally settling on a <a href="http://en.wikipedia.org/wiki/Logitech_G9">Logitech G9</a>. Most of my relatives have a castoff mouse that once graced my desk, but my right hand is finally happy.</p>
<p>My keyboard churn has followed the same breakneck pace. I&#8217;ve gone through keyboards with built in <a href="http://en.wikipedia.org/wiki/Trackpoint">trackpoints</a>, purportedly ergonomic split keyboards, a dozen near-disposable $10 keyboards, a <a href="http://www.daskeyboard.com/">Das Keyboard</a> (100% blank, of course), and two backlit keyboards. I started with loud clicky keys, moved to silent soft keys, then back to clicky, then back to soft. I never did find one I was happy with.</p>
<p>That changed when the aluminum <a href="http://www.apple.com/keyboard/">Apple Keyboard</a> caught my eye. After a trek to an Apple Store and half an hour coding away on it (to the mild amusement of the staff), I brought one home. I&#8217;ve since moved to the wireless version, and aside from my occasional lapses when I try to use the nonexistent Numpad or Home/End PgUp/PgDn keys, I&#8217;m happy. In fact, the quality of the typing experience was so good that it factored in heavily to my MacBook Air purchase.</p>
<h2>Windows Support</h2>
<p>Despite both the wired and wireless keyboards being fairly fantastic as far as the hardware goes, the software support for Windows is severely lacking. The default <a href="http://support.apple.com/kb/HT1167">mapping</a> isn&#8217;t ideal.  The software offered by Apple for bootcamp is difficult to find for a Windows user, and once found is just not up to the task. When I first bought the wired keyboard, I spent hours putting together a melange of hacks to turn the keyboard into a usable device on Windows.</p>
<h3>A few of the problems:</h3>
<ul>
<li>Media &amp; Volume keys are nonfunctional</li>
<li>Command key where Alt key should be, but acts like Windows key</li>
<li>Option key where Windows key should be, but acts like Alt key</li>
<li>Right Control key acts like Right Alt key</li>
<li>Fn key where Insert key should be (wired keyboard only)</li>
<li>Clear key where NumLock key should be (wired keyboard only)</li>
</ul>
<p>That covers most of the big issues, but the list of minor issues can go on for some time.  I used <a href="http://sharpkeys.codeplex.com/">SharpKeys</a> to remap the F7-F12 <a href="http://en.wikipedia.org/wiki/Scan_codes">scancodes</a> to the windows media keyboard equivalents, turn F13-F15 into the PrintScreen, Scroll Lock, and Pause keys, and make the Ctrl and Alt keys work properly.  This proved to be an adequate solution at the time.</p>
<p>After I got my Macbook Air, I wanted more parity between how the keyboard on my laptop and desktop worked. Since I had upgraded to the wireless Apple Keyboard around the same time, I particularly needed shortcuts to replicate the lost buttons.  Again using scancodes, I turned the Command key into Ctrl, to make cut/copy/paste use the same gesture as the Mac. I used a scripting language called <a href="http://www.autohotkey.com/">AutoHotkey</a> to add some additional functionality, namely Ctrl+ArrowKeys shortcuts for Home/End/PgUp/PgDn, and Fn+Backspace for Delete. </p>
<h3>More Problems Arise</h3>
<p>All was well until I started beta testing new program, and my mapping fell apart. You see, this program bypassed the standard Windows keyboard device driver, and used their own instead. This made things problematic as my scancode mappings were thus ignored. The program used Ctrl + # and Alt + # heavily, and the Ctrl and Alt keys were just not where my fingers expected them to be. In addition, Command started acting like the Windows key again, launching the start menu when pressed. Words cannot adequately express how highly annoying this all was.</p>
<p>I tried to code my way out of this problem with more scripting, and ended up realizing that scancodes just weren&#8217;t doing the job anymore. I decided the only viable solution was to replicate all the key mapping functionality in my script instead.</p>
<h2>An Easy Solution</h2>
<p>Before I got too involved in this project, I did a little digging on the net, and a program called <a href="http://code.google.com/p/uawks/">UAWKS</a> caught my eye. It had been released just weeks prior, and it basically does everything my scancode remapping and scripting did, with a slick bit of user interface thrown on top. I swapped over entirely to this program, with minimal tweaks to the underlying code to suit my needs.</p>
<p>There are a few lingering issues, but I wholeheartedly recommend <a href="http://code.google.com/p/uawks/">UAWKS</a> to anybody running an Apple keyboard under Windows.  It is a requirement to get the proper Windows behavior out of the keyboard.</p>
<p>Of course, all this is going to be a moot point once I replace my desktop with a Mac.  At least I&#8217;ll be able to use the same mouse and keyboard, without all the hassle.  At this point, my lust for new input devices is sated.  Of course, who can say what the next year&#8217;s product line will bring?</p>
<p><strong>Update (03/25/2009):</strong>  Just spent an hour on the Wacom Intuos4. <em>*sigh*</em> With a little willpower, perhaps I can keep the tablet consumption rate down to something reasonable.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/256/input-driven/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Router Problems</title>
		<link>http://curtistasker.com/blog/technology/293/router-problems</link>
		<comments>http://curtistasker.com/blog/technology/293/router-problems#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:40:16 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[repairs]]></category>
		<category><![CDATA[router]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=293</guid>
		<description><![CDATA[The main router at the office died a few days ago, and I got to spend the morning fixing the problem.  It seems like every other week I get a summons to deal with a technical oddity.  At least this week&#8217;s problem directly affects me, as I hold my internet connection dear to [...]]]></description>
			<content:encoded><![CDATA[<p>The main router at the office died a few days ago, and I got to spend the morning fixing the problem.  It seems like every other week I get a summons to deal with a technical oddity.  At least this week&#8217;s problem directly affects me, as I hold my internet connection dear to my heart.<br />
<span id="more-293"></span></p>
<h2>Diagnosis</h2>
<p>After a little prodding with a multimeter, I determined that the router was probably fine, and that the power supply had failed. After an hour searching through my vast collection of computer parts, I couldn&#8217;t find a power supply that would serve as a replacement. Oddly enough, I did find another product by the same manufacturer, that took the same power supply. Unfortunately, its power supply had been lost ten years ago when I moved. I pondered why I was even storing this piece of hardware that had no power supply, then just tossed it back in the bin. It might be useful someday.</p>
<p>I ran a quick patch from the WAN port to my laptop for direct internet access, and started searching for a replacement. The router was well out of warranty, and the manufacturer doesn&#8217;t sell individual power supplies. There were a few overseas companies that made compatible power supplies, but they couldn&#8217;t ship them very quickly. I ended up finding a guy in Florida who does computer part salvage and sells his parts on eBay, and he had just what I needed. I was able to get a replacement part for a very good price with second day shipping.</p>
<h2>Rewiring</h2>
<p>Of course, the office can&#8217;t run very well without the internet, so in the interim I had to cobble together a fix. Now, I had one other working router on-site, but it was in another room being used as a wireless access point. The power cable was behind a filled bookcase and was very obnoxious to get at.  I wasn&#8217;t in the mood to dig it out, only to put it back a few days later. Instead, I used the in-wall cat5 and just patched the WAN line directly into the spare router. I reconfigured the router to act as a gateway, then ran a length of wire across the hall to another room with a free jack, then used this in-wall line to run a LAN port back down to the server room.</p>
<p>There are three switches in this room, all connected to the now unpowered main router.  I rewired them to all connect to each other, rather than the router, then patched the LAN connection from the spare router into one of the switches. Presto, we have internet.</p>
<p>Or so I thought; One computer seemed fine, but most were inexplicably unable to retrieve an IP, or they&#8217;d retrieve an IP but in the wrong subnet. After half an hour of trying to deal with this, I patched my laptop directly into the internet again to dig for a little help. This proved to not be very helpful, and I went back to the server room and started looking at the wiring again, to make sure I hadn&#8217;t messed something up.</p>
<p>As it turns out, I had. Switch A was connected to Switch B and Switch C, as I had intended, but I had failed to notice one little patch cable connecting switch B to switch C. This created a circular loop, and needless to say was the causing all sorts of odd things to happen. Unhooking this cable eliminated the network wonkiness, and all computers were getting on the internet just fine.</p>
<p>Of course, an hour later somebody tried to print to one of the networked printers, and it failed. I started digging into the printer&#8217;s config menu, and it turns out I had originally set it up with a static IP address, rather than with DHCP. I&#8217;m not sure why at this point, as its been several years. The problem here was that the spare router was using an entirely different IP than the main router, and the printer was configured to connect through the main router&#8217;s IP only. I was unwilling to change the IP address of the spare router at this point, so I toggled the printer to DHCP and tried to print something.</p>
<p>Of course, nothing happened, and more digging produced yet another configuration oddity. When I had installed this printer on all the computers, I had configured the computers to print directly to the static IP address I had assigned the printer. Again, I&#8217;m not quite sure why I did it this way. I think it had something to do with trying to avoid an Epson driver issue. In any case, I switched all the computers over to printing to the printer using its NetBIOS name, and all was well. <em>Finally.</em></p>
<h2>Problem Solved</h2>
<p>So all told, the power supply of the router dying caused me to spend my morning finding a replacement part, rewiring the network temporarily, reconfiguring the printer, and reconfiguring the printer drivers on all the computers. The upshot here is that fixing those configuration problems will make life easier in the future.</p>
<p>Two days later the part arrived, and I rewired everything back to normal. Thankfully there were no further issues, and everything is running smoothly;  At least, until the next piece of technology goes haywire.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/293/router-problems/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Printers &amp; Page Description Languages</title>
		<link>http://curtistasker.com/blog/technology/116/printers-page-description-languages</link>
		<comments>http://curtistasker.com/blog/technology/116/printers-page-description-languages#comments</comments>
		<pubDate>Tue, 02 Sep 2008 03:03:34 +0000</pubDate>
		<dc:creator>Curtis</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[pdl]]></category>
		<category><![CDATA[postscript]]></category>
		<category><![CDATA[printer]]></category>
		<category><![CDATA[ps]]></category>

		<guid isPermaLink="false">http://curtistasker.com/?p=116</guid>
		<description><![CDATA[The general idea behind printing is to get things on the printed page looking the same as they do on your screen.  The program you&#8217;re using makes API calls to the OS to draw text and graphics on your screen.  These calls can also be used to draw the same content on the [...]]]></description>
			<content:encoded><![CDATA[<p>The general idea behind printing is to get things on the printed page looking the same as they do on your screen.  The program you&#8217;re using makes <acronym title="Application Programming Interface">API</acronym> calls to the <acronym title="Operating System">OS</acronym> to draw text and graphics on your screen.  These calls can also be used to draw the same content on the printer.  The printer driver acts as a middleman in most situations, converting native API calls into one of two things:  raw data or a page description language.</p>
<p><span id="more-116"></span></p>
<h2>Host Based Printing</h2>
<p>Host based printing utilizes a your computer&#8217;s processing power to render the printed page.  The printer driver takes the program&#8217;s API calls and renders the content in memory.  Once rendered, the driver sends a compressed bitmap to the printer.</p>
<p>The advantage in having the computer doing all the processing is that it negates the need for a fast processor on your printer.  This allows for cheaper, less complex printers.  Often the price difference between a host based printer and a printer that supports a standard page description language is $50-100.</p>
<p>The downside is that the printer is relatively &#8216;dumb&#8217;, and can only print raw bitmaps.  In order to be fed these bitmaps, every host based printer needs a custom driver for every operating system.  This leads to problems installing the printer in nonstandard and older operating systems.  If a print driver does not exist for your operating system of choice, you will not be able to print.  Every printer supports the 32-bit flavors of Windows, most support OS X <abbr title="Tiger">10.4</abbr> and possibly <abbr title="Leopard">10.5+</abbr>, a small but growing number support 64-bit Windows, and Linux support is increasing.</p>
<h2>Page Description Languages</h2>
<p>Page Description Languages are standardized languages for passing data to a printer.  The printer driver does no rendering of graphics or text.  Instead, it converts the data it receives into <acronym title="Page Description Language">PDL</acronym>, and passes the data onto the printer.  The printer then renders the page according to the commands it received.</p>
<p>The key advantage of using a <acronym title="Page Description Language">PDL</acronym> based printer is driver support.  A manufacturer only has to write a single driver to support the language, and then every printer in their lineup will work with that driver.  Obviously, the manufacturer can still release a custom driver based off their generic one with added support for other features (toner levels, custom color settings, etc).</p>
<p>There are <a href="http://en.wikipedia.org/wiki/Page_description_language">many</a> different languages, with most major vendors offering their own flavor for their printers.  Two languages have gained such widespread acceptance that they&#8217;re widely used across manufacturer boundaries:</p>
<h3><acronym title="Printer Control Language">PCL</acronym></h3>
<p><acronym title="Hewlett Packard">HP</acronym> developed their own printer language, which is popular enough that even some competing manufacturers use it.  PCL6 is the most recent version, with PCL5 being a common fallback choice.  The main advantage to PCL6 is that the commands are very similar to the Windows <acronym title="Graphics Device Interface">GDI</acronym> rendering commands;  the printer driver has to do very little work to convert between the output of a Windows application and PCL6.</p>
<h3>PostScript</h3>
<p>Adobe&#8217;s printer language, <acronym title="PostScript">PS</acronym> was once the de facto standard for distributing documents meant for publication.  It has since been since been largely supplanted by PDF, which is based on a subset of PS.  Despite its fall from grace as a publication format, PS is still an extremely popular and widely used printer language.</p>
<p>Every major manufacturer offers PS support on some subset of their printers.  Just about every operating system has access to a generic driver which will work with any <acronym title="PostScript">PS</acronym> printer.  There are also a host of utilities and programs that understand the language, and it gives you a lot of options.</p>
<h2>Choosing a new printer</h2>
<p>I used a host based printer for 5 years, and it was a great little workhorse.  It even hooked up to my Time Capsule and worked seamlessly over my network.  That is, up until the point where I installed Vista x64 on my main box and suddenly my perfectly good printer was rendered useless.  The manufacturer has no plans to write 64-bit drivers, so I&#8217;m basically out of luck.</p>
<p>With PDL printers, you may see slower print times and more expensive hardware.  The processor in a printer is much slower than a modern CPU, and will often render pages a bit slower.  It is not uncommon to see a printer line with a base model that has a slow processor, limited memory, and often no <acronym title="Page Description Language">PDL</acronym> support at all.  For an extra $100, the high end model supports multiple <acronym title="Page Description Languages">PDLs</acronym> , has a faster processor, a network card, and a little more memory.</p>
<p>When buying any printer, just be aware of these issues.  If you run basic Windows or plan on upgrading your printer once or twice a decade, chances are you&#8217;ll be fine with a host-based printer.  If you use OS X/Linux or plan on keeping your printer around for a long time, you may want to find one that supports PCL6 or PS.  And if you&#8217;re networking your printer, <acronym title="Page Description Language">PDL</acronym> support can greatly ease the pain of installing printer drivers across your network.  The generic <acronym title="Page Description Language">PDL</acronym> drivers can get users printing with minimal fuss.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtistasker.com/blog/technology/116/printers-page-description-languages/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
