<?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>studioblīp</title>
	<atom:link href="http://www.studiobleep.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.studiobleep.com/blog</link>
	<description>digital artifacts.</description>
	<lastBuildDate>Fri, 14 May 2010 18:22:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Picked up my car today</title>
		<link>http://www.studiobleep.com/blog/2010/05/14/picked-up-my-car-today/</link>
		<comments>http://www.studiobleep.com/blog/2010/05/14/picked-up-my-car-today/#comments</comments>
		<pubDate>Fri, 14 May 2010 17:56:52 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Driving]]></category>

		<guid isPermaLink="false">http://www.studiobleep.com/blog/?p=27</guid>
		<description><![CDATA[53,000 miles, and plenty of track days apparently is about all my cat could take.  I was down at least 60 horsepower with no check engine light except for a random misfire code that popped up once.  With new plugs, coils and plug wires for good measure, it&#8217;s running like new.  Sweet.

]]></description>
			<content:encoded><![CDATA[<p>53,000 miles, and plenty of track days apparently is about all my cat could take.  I was down at least 60 horsepower with no check engine light except for a random misfire code that popped up once.  With new plugs, coils and plug wires for good measure, it&#8217;s running like new.  Sweet.</p>
<p><a href="http://www.studiobleep.com/blog/wp-content/uploads/2010/05/lolcatalyst1.jpg"><img class="alignnone size-medium wp-image-31" title="lolcatalyst" src="http://www.studiobleep.com/blog/wp-content/uploads/2010/05/lolcatalyst1-300x225.jpg" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2010/05/14/picked-up-my-car-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New song for Maura and Joe</title>
		<link>http://www.studiobleep.com/blog/2009/09/28/new-song-for-maura-and-joe/</link>
		<comments>http://www.studiobleep.com/blog/2009/09/28/new-song-for-maura-and-joe/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:10:48 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.studiobleep.com/blog/?p=14</guid>
		<description><![CDATA[My friend Maura approached Ryan, my bandmate in (and the frontman of) The Franklin Kite and me before her recent wedding to ask if we&#8217;d help her flesh out and perform a song with her at her wedding reception as a gift to her husband and our other great friend, Joe.  Ryan and I were, [...]]]></description>
			<content:encoded><![CDATA[<p>My friend Maura approached Ryan, my bandmate in (and the frontman of) The Franklin Kite and me before her recent wedding to ask if we&#8217;d help her flesh out and perform a song with her at her wedding reception as a gift to her husband and our other great friend, Joe.  Ryan and I were, of course, stoked.  We only got one full-group writing/rehearsal session in before the reception, but I think it came together really well.  Maura wrote the melody and played violin, Ryan the lyrics and guitar, and I did some arrangement and the usual laptop jockeying.</p>
<p>After the wedding a couple of friends asked about the tune and I thought it would be fun to put together a quick recording of it to commemorate the event, which was a truly amazing weekend with great friends new and old.  With Ryan moving to Durham, England three weeks after the wedding and Maura with her typically hectic travel schedule, I managed to sit them both down, individually, for about 45 minutes in my apartment to get their tracks laid down.  Hope you enjoy listening to the tune at least some small fraction of the amount we enjoyed writing it.</p>
<p>So here&#8217;s the Mp3&#8230; right click to download it.  It&#8217;s even got cover art if you pull it into iTunes.  I know.  So profesh.</p>
<p><a href="http://www.studiobleep.com/blog/wp-content/uploads/2009/09/some-will-dream.mp3">Some Will Dream</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2009/09/28/new-song-for-maura-and-joe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.studiobleep.com/blog/wp-content/uploads/2009/09/some-will-dream.mp3" length="3422990" type="audio/mpeg" />
		</item>
		<item>
		<title>Favorite new tool: named_scope</title>
		<link>http://www.studiobleep.com/blog/2008/11/09/favorite-new-tool-named_scope/</link>
		<comments>http://www.studiobleep.com/blog/2008/11/09/favorite-new-tool-named_scope/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 18:07:38 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Technology]]></category>
<category></category><category></category><category></category>
		<guid isPermaLink="false">http://www.studiobleep.com/blog/2008/11/09/favorite-new-tool-named_scope/</guid>
		<description><![CDATA[Update: I&#8217;ve been using named_scope for a bit longer now and totally don&#8217;t agree with my former self about naming conventions when creating named_scopes.  I now do what comes natural.  Love, me.
I&#8217;ve been using the new-ish Rails feature named_scope for a couple days now, and I love it.  The expressiveness was something I really missed [...]]]></description>
			<content:encoded><![CDATA[<p><em>Update: I&#8217;ve been using named_scope for a bit longer now and totally don&#8217;t agree with my former self about naming conventions when creating named_scopes.  I now do what comes natural.  Love, me.</em></p>
<p>I&#8217;ve been using the new-ish Rails feature named_scope for a couple days now, and I love it.  The expressiveness was something I really missed jumping from OpenACS, a &#8220;framework&#8221; where you&#8217;re encouraged to write powerful queries in raw SQL.  So you get the best of both worlds: modular business logic and (relatively) powerful queries.  I wish Rails had more features to enable INNER JOINs using finders in a way that still allows the pre-fetching of associated objects, but that&#8217;s another matter entirely.  Some observations, though:</p>
<p><span id="more-11"></span></p>
<p><strong>Naming named_scopes</strong></p>
<p>I&#8217;ve now come to the conclusion that all objects in the titles of named_scopes should be singular (unless there&#8217;s a complex case I haven&#8217;t encountered yet where it makes sense).  So CourseMembership#in_sections_of_term should be CourseMembership#in_section_of_term, etc, even if the named_scope might return multiple rows &#8212; in fact, most do.  My reasoning is that you&#8217;ll typically be operating on something singular (a model class), and you&#8217;re really describing a criterion, not the result set.  Also named_scopes should never be nouns or they may collide with attribute or association names.  They should be adjectives or predicates (in the grammar sense), like:</p>
<p>Car#red (obviously a Car doesn&#8217;t belong_to or has_one Red: it probably has an attribute named &#8220;color&#8221;)<br />
Course#live (Live is an adjective. Course doesn&#8217;t have a Live: it has a belongs_to association to CourseItem which in turn has a live_revision_id attribute)<br />
User#is_student (This is tricky: i was tempted to call it User#student, but the User might well have a Student &#8211; though I don&#8217;t know how that might be defined)</p>
<p>Moral of the story is that named_scopes need to be named carefully so they don&#8217;t confuse the programmer into thinking that they&#8217;re calling an association or attribute instead.  named_scopes return proxies to arrays of the class in question where obviously associations and attributes return proxies to arrays or objects of different classes.</p>
<p><strong>named_scopes on associated objects</strong></p>
<p>The one thing that is preventing named_scopes from being as DRY as possible is that you can define all these fancy named_scopes on your models, but then there is no way to talk to the named_scope of an associated object in order to scope your own object.</p>
<p>For instance: at Berklee&#8217;s online extension school we&#8217;ve got Sections (of courses).  Each one has a starts_on date, ends_on date, closes_on date (after which you can&#8217;t post anymore), and archived_until date (after which you can&#8217;t see the course).  So I&#8217;ve got a bunch of named scopes on the Section class, including current (between start and end), open (between start and close), archived (between close and archived_until).  They work great.  But there&#8217;s a possiblity that these implementations might actually need to become more complicated, so it&#8217;s critical that this code be DRY.</p>
<p>So the kicker is that I need to be able to find enrollments based on those criteria.  There&#8217;s even a comment in the HasFinder blog post (HasFinder is the progenitor of named_scope) <a title="Request for integration of named_scope into associations" href="http://pivots.pivotallabs.com/users/nick/blog/articles/284-hasfinder-it-s-now-easier-than-ever-to-create-complex-re-usable-sql-queries#559">requesting something along these lines</a>.  But I consider that to be a bit of a special case of the general problem.  I see there being two ways to grapple with it.  Either find() needs a way of letting you specify named_scopes to fire on :included associations (which is very powerful but gets away from the uber-fancy named_scope compositions that are currently allowed), or perhaps there is an even more sugary solution: What if there were an alternate form of named_scope that let you steal and alias named_scopes from associated classes?  For example, in the Enrollment class we could have:</p>
<p>named_scope :in_current_section, :inherit_from =&gt; :section, :scope_name =&gt; :current</p>
<p>Then I could find all the enrollments in Music Theory 101 by calling:</p>
<p>Enrollment.in_current_section.in_section_of_course(Course.live.find_by_title(&#8220;Music Theory 101&#8243;).course_item)</p>
<p>Sugary and DRY like Cap&#8217;n Crunch.</p>
<p>My gut is that you&#8217;d want both the finder enhancement and the aliasing options because there may be some objects that you need to scope a ton of ways based on inherited named_scopes, and you wouldn&#8217;t want to have to name all of them if they&#8217;re used relatively few times each.  Also, the semantics of the finder vs. aliasing approach would be different.  The aliased scope would additionally require that the association_table.primary_key be NOT NULL so that the scoping will actually have an effect on the result set of the primary object (or maybe this would be an additional boolean parameter to the named_scope call), whereas from the finder you might geniuinely want to return an unscoped set of objects, but have a pre-scoped set of children available to play with without hitting the database again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2008/11/09/favorite-new-tool-named_scope/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is there hope of automated Oracle Calendar iCalendar export?</title>
		<link>http://www.studiobleep.com/blog/2007/09/22/is-there-hope-of-automated-oracle-calendar-icalendar-export/</link>
		<comments>http://www.studiobleep.com/blog/2007/09/22/is-there-hope-of-automated-oracle-calendar-icalendar-export/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 19:57:50 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Technology]]></category>
<category>c</category><category>google calendar</category><category>ical</category><category>icalendar</category><category>iphone</category><category>libsyncml</category><category>oracle</category><category>syncml</category>
		<guid isPermaLink="false">http://www.studiobleep.com/blog/2007/09/22/is-there-hope-of-automated-oracle-calendar-icalendar-export/</guid>
		<description><![CDATA[At work, we use Oracle&#8217;s calendaring software.  Oracle is nice because it can be synced via SyncML.  This worked great with my Treo thanks to Synthesis&#8217; PalmOS client software.  But sadly, my iPhone is hopelessly tethered to Apple iCal.  Ironically an iPhone on PC would have no problems since you can [...]]]></description>
			<content:encoded><![CDATA[<p>At work, we use Oracle&#8217;s calendaring software.  Oracle is nice because it can be synced via SyncML.  This worked great with my Treo thanks to <a href="http://www.google.com/url?sa=t&amp;ct=res&amp;cd=3&amp;url=http%3A%2F%2Fwww.synthesis.ch%2F&amp;ei=4Wf1Rri-AaLSet-L7fQO&amp;usg=AFQjCNFibZoQ18Zio43mZimEgJ2Bb00o9w&amp;sig2=bvxos7dMPduYXJq3EttwaA">Synthesis&#8217;</a> PalmOS client software.  But sadly, my iPhone is hopelessly tethered to Apple iCal.  Ironically an iPhone on PC would have no problems since you can sync an <a href="http://www.apple.com/iphone/easysetup/getready.html">iPhone with Outlook</a>, and sync <a href="http://www.funambol.com/opensource/downloads.html">Outlook with Oracle Calendar</a> via SyncML.  But being attached to iCal is a decided problem.  It&#8217;s just not used by enough corporate types that it gets that kind of attention.  The only sync tool I found,  <a href="http://www.spanningsync.com/">Spanning Sync</a>, hooked iCal up to Google Calendar which is a big win for me, since I do my personal calendar stuff in Google Calendar.  So we&#8217;re 50% of the way to having my calendaring life mobile.</p>
<p><span id="more-9"></span>But the only solution I currently have to get my Oracle calendar data onto my iPhone is to manually export it in <a href="http://en.wikipedia.org/wiki/ICalendar">iCalendar</a> format &#8211; a format that existed before iCal but has since been conflated with the Apple product, even in Google&#8217;s own usage: <em>&#8220;If you know the address to a calendar (in iCal format), you can type in the address here.</em><em>&#8220;</em></p>
<p>Exporting iCalendar files into iCal to get a one-time dump of upcoming meetings works fine, but it&#8217;s not exactly clean and easy (especially in contrast to Spanning Sync).  My obsession with elegant solutions (or some might say fundamental laziness) prevents me from accepting this in the long term.</p>
<p>So, what to do?  Well, as I mentioned, Oracle Calendar offers SyncML synchronization.  So if I could theoretically get a SyncML frontend for iCal, I&#8217;d be golden, but that appears not to exist.  Just to taunt me, recent iterations of iSync apparently support SyncML in order to talk with various SmartPhones that have standardized on the protocol.  But that&#8217;s SyncML over USB or SyncML over Bluetooth, and instead of implementing a SyncML client, iSync is implementing the server end of the transaction.</p>
<p>But, seriously, I don&#8217;t have much need for bidirectional sync with my Oracle calendar.  I rarely have to stuff a meeting into my calendar when I&#8217;m not sitting at my laptop &#8212; I&#8217;m at my desk all day long.  I would just like to be able to glance at what&#8217;s coming up when I&#8217;m on the go.  So what about a SyncML client that dumps its results to iCalendar format?  Better yet, in web app form (perhaps with caching so that it doesn&#8217;t completely kill the Oracle server every time you hit it), so that the iCalendar feed can have a URL?  Then I could get my Oracle data via Google or iCal (both support remote iCalendar feeds).</p>
<p>So it looks like there are a few libs out there that might help.  I downloaded <a href="http://libsyncml.opensync.org/">libsyncml</a> (which is not to be confused with this <a href="http://libsyncml.sourceforge.net/">defunct libsyncml project</a>), and compiled it.  To my immediate and utter joy, I discovered the lib came with a few utility/demo applications.  One was called syncml-http-client.  It is completely undocumented save for the &#8211;help output, which it seems to share with syncml-http-server and syncml-obex-client.  Some of the features seem like they&#8217;d be more relevant to a server than a client.  And as far as I can tell, syncml-http-client completely ignores the rather important issue of authenticating itself.  The library seems to be tailored more for acting as a single-user server or client than as a client of a major multiuser application.  Ethereal dumps of the SyncML conversations seem to indicate that syncml-http-client and Oracle are indeed speaking the same language, but syncml-http-client is completely confused when asked by Oracle to authenticate itself.</p>
<p>So I&#8217;m going to dust off my previously meager and now practically nonexistent C chops and see what can be done about it.  Luckily SyncML is an open protocol, so the only limitation is my own ineptitude.</p>
<p>Would that all Oracle calendar instances did out-of-the-box what <a href="http://wiki.case.edu/Oracle_Calendar">Case Western&#8217;s does</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2007/09/22/is-there-hope-of-automated-oracle-calendar-icalendar-export/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Perpetual Novice</title>
		<link>http://www.studiobleep.com/blog/2007/09/21/the-perpetual-novice/</link>
		<comments>http://www.studiobleep.com/blog/2007/09/21/the-perpetual-novice/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 02:53:01 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Driving]]></category>
<category>audi club</category><category>beginner</category><category>club racing</category><category>mazda</category><category>racing school</category><category>rx 8</category><category>scca</category>
		<guid isPermaLink="false">http://www.studiobleep.com/blog/?p=8</guid>
		<description><![CDATA[ This is an article I wrote back in May for the forthcoming issue of the North Atlantic Audi Club newsletter, Hubcentric. 
Most people have the good sense to stick with what they do well.  Unfortunately I am not most people, and that sad fact has led me on a whirlwind tour (or as [...]]]></description>
			<content:encoded><![CDATA[<p> <em>This is an article I wrote back in May for the forthcoming issue of the <a href="http://www.naaclub.org/">North At</a><a href="http://www.naaclub.org/">lantic Audi Club</a> newsletter, <strong>Hubcentric</strong>. </em></p>
<p>Most people have the good sense to stick with what they do well.  Unfortunately I am not most people, and that sad fact has led me on a whirlwind tour (or as my girlfriend might describe it, were she not so charitable, a downward spiral) of different cars and plans since my relatively recent introduction to the world of motorsport with the Audi club.  In the process I&#8217;ve met great friends, brought five different cars to the track, gone from green student to instructor and learned quite a bit about the finer points of driving, car setup and maintenance.  The most humbling lesson of all, though, is this: Don&#8217;t get cocky.  You&#8217;re still a rank <span id="st" name="st" class="st">novice</span> in somebody&#8217;s book, and you probably always will be.  And now I have the SCCA Club Racing <span id="st" name="st" class="st">Novice</span> Logbook to prove it.</p>
<p>Now, most people looking to go closed-wheel road racing in New England will wisely call up Andy Bettencourt at Flatout Motorsports or Dick Shine of Shine Racing Service and rent an arrive-and-drive race car for the one of the SCCA&#8217;s mandatory licensing schools.  No need to keep your eye on fuel, oil levels, tire pressures, or even worry about blown transmissions or spent clutches.  Their crews will keep your rig up and running so you can focus on the act of driving.  Like a true <span id="st" name="st" class="st">novice</span>, I thought of a better idea.<br />
<span id="more-8"></span><br />
I&#8217;ve been driving a Mazda RX-8 on track for the past year, and a more intuitive, well balanced, free revving and fun rear wheel drive sports car you will not find (at least not new) for the money.  I loved mine so much that when in January, Steven Burkett&#8217;s T-3 RX-8 race car showed up for sale on an SCCA forum, it turned my entire plan for going racing inside out.  Rather than find a ratty RX-8 to laboriously build up over time, I could jump right into a lap-record-holding car with a scant 7,000 miles on the clock that had been meticulously prepared and raced by the co-owner of one of the St. Louis region&#8217;s most respected rotary race shops.  I flew out the following weekend and left him a deposit.</p>
<p>When I got home, I whipped out a pen and paper and began tallying the costs for the first season.  Tow vehicle, trailer, registration, insurance, tires, brake pads, rotors, fluids, gas, racing schools, SCCA licensing, entry fees, and then what about failures or (gasp) damage?  My wallet cried itself to sleep that night.</p>
<p>In the morning I began shopping for the seediest-looking middle-aged diesel panel van that very-little-money could buy, a mission the outcome of which can only be described as a resounding success.  The van I purchased is a 132k mile white 1995 Econoline one-ton with barely legible outlines of the former vinyl emblem reading &#8220;White&#8217;s Oil Heat&#8221; on the side.  The upside is 15 mpg towing.  The downside is the suspicious looks I get whenever driving through a school zone.  Supplemented with a brand spankin&#8217; new Dively EconoTrailer that is through some bizarre Internet logic rivaled in price only by ten-year-old dilapidated examples of the same model on Craigslist, I was ready to tow.  Throw in a new race seat and custom bracket fabricated to mate it to the the sadistically designed floorpan of the Mazda with the expert help of Tyler Brown, and I was ready to go racing.</p>
<p>If you&#8217;ve ever been to one of the excellent high performance driving schools put on by the Audi club, you probably know the welcoming, laid-back atmosphere of knowledge sharing and encouragement that they embody.  My SCCA racing school this April at New Hampshire International Speedway was a little different.</p>
<p>First they broke us up into our race groups by class rather than experience.  Group 1 was Miata central, and the largest group by far.  Group 2 was the open wheel and spec racer crowd.  Group 3 was the catch-all closed-wheel group where I found myself, which meant a potential range of about 700 horsepower.  The evening before, I&#8217;d noted with some apprehension that there was a GT-1 car in the group, knowing full-well how scary it might be to find a student at a racing school who&#8217;d never been on track before in an 800 horsepower race car.  I was pleased to discover that it was a misprint and it was actually a quick driver in an ITB Mk 1 Volkswagen GTI.  One who would even kindly lend me a fuel can and funnel when I ran out of gas (twice).</p>
<p>The morning&#8217;s class began with a brief introduction of the Group 3 instructors, which devolved quickly into a debate over who the biggest cheater among them was.  Ultimately the group leader&#8217;s bid prevailed.  Then after a brief look at the track map it was time to go over flags.  We&#8217;d been given the run-down on the flags by the Flagging and Communications chair the night before, but this morning&#8217;s session had one key difference.  The full course yellow flag, we&#8217;d been told previously, meant: no passing, slow down.  Our fearless leader promptly dispelled this harebrained notion.  The full course yellow really means: no passing, speed up!  Obviously, avoid the obstruction, but the racer&#8217;s next priority is to close the gap to the pace car and make back as much time on the leaders as possible before a restart.</p>
<p>The same attitude was evident from the on-track sessions as well, where instructors would go out in their own cars and taunt students with late-braking passes, line crowding and three-wide moves through the NASCAR south oval.  On two occasions during the school, I was forced to drive off track to avoid being hit by other students, one who didn&#8217;t see me making an obvious pass, and another who overcooked a corner and spun with me right on his bumper.  On neither occasion was the incident even mentioned in the post-session wrap-up.  In another run, after I made a pass attempt on an instructor in turn three, left him a generous amount of space on the outside to complete his turn, and got smoked on the exit as a result, I was berated by my instructor for the weak attempt.  Needless to say, I loved everything about it.  This was motorsport in its pure form.  Taking calculated risks is the name of the game, and your aggressiveness should only be tempered by your desire to finish the race without balling up your car or getting penalized.  All else is fair game, and everybody on track agrees.  Perfect.</p>
<p>After two days of open track, qualifying and practice starts (which were usually gridded by the fiendish instructors, putting the fast cars in the back and the slow cars up front just to make for added first-lap drama), we were all pretty tired, but the last event of the school was a full-length race.  With a grin, the group leader gridded me second to last with an ITE M3, the clear overdog of the group, in tow.  Given the length of the race and the large speed differential of the cars, Bruce the M3 driver and I knew that we could bide our time and still make it to the front.  The trick would be to make it through the pack without incident.  So off we went on the parade lap, dragging the brakes and darting from side to side to get some heat in the rotors and tires, forming up as we rounded NASCAR turns three and four.  The green flag flew.  I mashed the gas.  My brain switched off long-term memory to save a few cycles, and I woke up 30 minutes later as I passed the checker, not quite sure what position I was in.  I vaguely remember negotiating turn 11 with somebody&#8217;s dropped rear exhaust on-line and getting around a spinning BMW in Turn three, but I can&#8217;t really guarantee that those didn&#8217;t happen in other sessions.  The intense focus of wheel-to-wheel racing was something I&#8217;d never experienced before, and something I knew I&#8217;d have to experience again: soon, and often.</p>
<p>At the party that followed, we exhausted students were recognized for our progress.  And, along with many in my race group, I was signed off for regional competition.  I was ready, yet again, to be a full-blown<span id="st" name="st" class="st"> novice</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2007/09/21/the-perpetual-novice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geeking out with iPhone</title>
		<link>http://www.studiobleep.com/blog/2007/09/21/geeking-out-with-iphone/</link>
		<comments>http://www.studiobleep.com/blog/2007/09/21/geeking-out-with-iphone/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 02:23:14 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Technology]]></category>
<category>arm</category><category>darwin</category><category>firefox</category><category>hack</category><category>iphone</category><category>laptop</category><category>phone as modem</category><category>safari</category><category>socks</category><category>unix</category>
		<guid isPermaLink="false">http://www.studiobleep.com/blog/?p=7</guid>
		<description><![CDATA[I&#8217;m not gonna lie.  I began fantasizing about the iPhone back in January when it was announced at MacWorld.  But I really had no practical need for the thing, given that I already had a Treo 650 that could do all the usual SmartPhone bits, and that my existing iPod nano had hung [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not gonna lie.  I began fantasizing about the iPhone back in January when it was announced at MacWorld.  But I really had no practical need for the thing, given that I already had a Treo 650 that could do all the usual SmartPhone bits, and that my existing iPod nano had hung out in my car pretty much since I got it and served exclusively as a CD-changer replacement (with an increasingly stale copy of my iTunes library).</p>
<p>So I held out when the big launch came.  I probably read more of the iPhone hype on Wired.com than the people who actually bought them.  Being a UNIX geek, the greed welled up within me when I learned that people had been successful at installing an SSH server and standard set of command line utilities on the phone.  And this wasn&#8217;t like reflashing your iPod to run Linux, thereby throwing out all of the excellent software that it came with, making the device less useful.  Nope, the iPhone ran a full multitasking protected-memory Darwin kernel.  Jobs hadn&#8217;t been overstating the fact that the phone ran OS X (which I half snorted at when I heard it last year).</p>
<p>Then came the price drop.  I still held firm for another two weeks, but ultimately my resolve crumbled.  I had to have it.<span id="more-7"></span></p>
<p>So I&#8217;m not going to give you a review, or a how-to.  There are many sites that have done a much better job on those subjects.  But I will say, having tried out some of the command line tools, they&#8217;re not quite as rock solid as you might dream.  I suppose that shouldn&#8217;t come as a surprise since they&#8217;re entirely unauthorized ports written for a hardware/software platform that, while made up of some standard bits (an ARM processor and Darwin kernel) is wholly undocumented.</p>
<p>The one nagging problem with the iPhone (besides its inability to synchronize directly with my Oracle calendar at work) is that it doesn&#8217;t have a phone-as-modem mode.  For all its networking prowess with built-in Wifi and (pokey but reasonably reliable) 2.5G EDGE network connection, it wouldn&#8217;t share its good fortune with my lowly laptop.  Luckily, clever iPhoners had discovered long before I picked mine up how to compile srelay, an open source SOCKS proxy, for the device.  Naturally it was the first thing I installed after getting the usual command line tools.  I mean, what is a UNIX system without grep and vim?</p>
<p>I really didn&#8217;t know anything about SOCKS.  Proxies in general have always seemed like a really awkward idea to me.  If you&#8217;ve got the ability to do NAT and stateful packet inspection in a firewall, why break the abstraction on the client side?  In fact, I&#8217;m not really sure what about the routing details inside of the iPhone&#8217;s network stack prevent somebody from installing a proper DHCP server and NATing router on it.  But nonetheless, in this case I&#8217;ll take whatever I can get, &#8217;cause I haven&#8217;t got a clue how to set up gcc to cross compile for Darwin on ARM, let alone write network subsystem code for it.  So it turns out SOCKS can proxy <a href="http://www.macosxhints.com/article.php?story=20060831091645414">just about any service</a> if you give it enough loving.  It seems it would be a lot more convenient if the SOCKS client were implemented at the OS level then.  In OS X, it sort of is.  There is an OS global SOCKS configuration, but it seems that it&#8217;s only an FYI for applications that can choose to implement SOCKS client features on their own.  Basically, that means that Safari is about the only thing that pays attention to the setting.  Of course I use Firefox, so I&#8217;m pretty much hosed.  If I want to switch back and forth it&#8217;s not as simple as changing Networking locations, but rather changing my Firefox config and whatever else.</p>
<p>Also, ssh (or any other command line tool for that matter) isn&#8217;t down with SOCKS.  But this is where <a href="http://tsocks.sourceforge.net/">tsocks</a> comes in, or so I thought.  But, it turns out that wrapping ssh in tsocks is a sure fire way to lock up my iPhone.  I&#8217;m not sure if it&#8217;s a memory issue, or what.  But it sure ain&#8217;t happy.</p>
<p>Of course it&#8217;s not strictly necessary since I can just ssh to the iPhone and then out from there to wherever I&#8217;ve got to go.  Dropbear, the iPhone&#8217;s SSH server claims to even support X11 forwarding, though I&#8217;ve yet to get that to work.  So, overall, the phone-as-modem support works in a pinch.  And as an added benefit, if you just have to use the web, the phone&#8217;s built-in browser is really an amazing thing.  It almost doesn&#8217;t suck to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2007/09/21/geeking-out-with-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jones Remixed.</title>
		<link>http://www.studiobleep.com/blog/2007/09/21/jones-remixed/</link>
		<comments>http://www.studiobleep.com/blog/2007/09/21/jones-remixed/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 00:32:08 +0000</pubDate>
		<dc:creator>jmileham</dc:creator>
				<category><![CDATA[Music]]></category>
<category>ableton</category><category>backbeat</category><category>facebook</category><category>kip jones</category><category>laptop</category><category>mp3</category><category>remix</category>
		<guid isPermaLink="false">http://www.studiobleep.com/blog/?p=3</guid>
		<description><![CDATA[On Wednesday, I happened into my Facebook account (which is a pretty rare occurance for me &#8211; I think I&#8217;m getting old already), and noticed that one of my good friends from college, Kip Jones, had posted a new song he&#8217;d written, recorded and mixed last weekend.  Kip is a phenomenal violinist, multi-instrumentalist in [...]]]></description>
			<content:encoded><![CDATA[<p>On Wednesday, I happened into my Facebook account (which is a pretty rare occurance for me &#8211; I think I&#8217;m getting old already), and noticed that one of my good friends from college, <a href="http://www.kipjones.net/">Kip Jones</a>, had posted a <a href="http://www.kipjones.net/music/run_and_hide.mp3">new song</a> he&#8217;d written, recorded and mixed last weekend.  Kip is a phenomenal violinist, multi-instrumentalist in general, and all around interesting guy.</p>
<p>The tune intrigued me, particularly how nicely the backbeat sat among some fancier time signatures and harmonic stuff.  So I went home and remixed it that night.  Since Kip had skillfully performed all of the parts acoustically on real instruments, and mixed it down without any effects, I figured I would take the opposite approach.  I used nothing but the mp3 for source material, and didn&#8217;t touch anything but my laptop.</p>
<p>Download: <a href="http://www.studiobleep.com/blog/wp-content/uploads/2007/09/run-and-hide-john-mileham-remix.mp3" title="Run and Hide Remix">Run and Hide Remix</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.studiobleep.com/blog/2007/09/21/jones-remixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.kipjones.net/music/run_and_hide.mp3" length="5744260" type="audio/mpeg" />
<enclosure url="http://www.studiobleep.com/blog/wp-content/uploads/2007/09/run-and-hide-john-mileham-remix.mp3" length="2603094" type="audio/mpeg" />
		</item>
	</channel>
</rss>
