<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Computation, Caffeination, and Conflagration</title>
      <link>http://www.exothermia.net/comcafcon/</link>
      <description>A geek amidst rockstars, and a rockstar amidst geeks.</description>
      <language>en</language>
      <copyright>Copyright 2006</copyright>
      <lastBuildDate>Wed, 18 Oct 2006 16:32:54 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Job switch!</title>
         <description><![CDATA[<p>Goodbye <a href="http://www.yahoo.com/">Yahoo</a>, hello <a href="http://tinyurl.com/brhb4">...</a></p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/10/job_switch.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/10/job_switch.html</guid>
         <category></category>
         <pubDate>Wed, 18 Oct 2006 16:32:54 -0800</pubDate>
      </item>
            <item>
         <title>Its my birthday</title>
         <description><![CDATA[<p>And I want <a href="http://tinyurl.com/kb9tw">presents!</a></p>

<p>That is all.</p>

<p><em>UPDATE 2006-07-23 23:30:00 PST</em></p>

<p>My parents have launched a denial of service attack on that Amazon.com Wish List by ordering the whole lot and shipping it to me.  How on Earth am I supposed to figure out which one to read first?</p>

<p>Might I suggest <a href="http://www.virgingalactic.com/en/when.asp">some</a> <a href="http://unitednuclear.com/uranium.htm">possible</a> <a href="http://shopping.yahoo.com/search/all?cop=mss&p=rubber+ducks">alternatives</a>?</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/07/its_my_birthday.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/07/its_my_birthday.html</guid>
         <category></category>
         <pubDate>Wed, 19 Jul 2006 17:31:15 -0800</pubDate>
      </item>
            <item>
         <title>Radio Shack: You&apos;ve got questions...</title>
         <description><![CDATA[<ul>
<li>We've got RC cars</li>
<li>We've got cellphones</li>
<li>We've got blank stares</li>
</ul>

<p>I've long needed a way to quantify my mounting frustration with Radio Shack.  Today, as I trudged home from my local store empty handed, it came to me.  My absolute measure of Radio Shack's fall from grace is <em>fractions of a radio.</em>  That is, if one were to start with a clean slate, an empty desk with no tools or parts, what fraction of a radio could one construct using only that which one could purchase from Radio Shack?</p>

<p>The answer to that question seems to be a strictly decreasing function.  Some of Radio Shack's recent tragic product discontinuations include: MOSFETs, LED detectors, their entire catalog of digital integrated circuits (except for TTL quad buffers for some reason),  most of their analog integrated circuits, crystal oscillators, proto board, DTMF dialers (that was a long time ago, okay?)... the list goes on and on.</p>

<p>Today I walked to Radio Shack in search of a particular item: a single magnetic reed switch.  I didn't see them.  A helpful Radio Shack employee saw my plight (and my empty hands) and immediately concluded that I needed a cellphone.  Though my wife would surely agree, this was presently not the case.</p>

<p>The woman looked up magnetic reed switches in the computer, and asked "Is this a security product?"  I pondered for a moment and conceded that it could be used in a security system, though I had no intention of using it that way.  Discontinued.</p>

<p>And though each time leave disappointed, I claim each time that <em>this time</em> I'm going to swear off Radio Shack for good, something gives me a glimmer of hope.  Somewhere in every Radio Shack there is a high shelf, usually wedged in a corner of the store between UHF antenna mounts and soldering guns, above last year's model RC car.  On that shelf are aged, leaking bottles of ferric chloride acid, used for etching printed circuit boards.  If you ask a Radio Shack employee where it is, he will react with incomprehension, then flickering recognition, and finally disbelief.  "You use that stuff?"</p>

<p>I never buy it there.  If I did, they wouldn't restock it, and then I'd never go back.</p>

<p><b>Radio Shack.  You've got questions, we've got mutherfucking ferric chloride.</b></p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/06/radio_shack_youve_got_question.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/06/radio_shack_youve_got_question.html</guid>
         <category></category>
         <pubDate>Fri, 30 Jun 2006 21:39:51 -0800</pubDate>
      </item>
            <item>
         <title>Ten Days Off</title>
         <description><![CDATA[<p>I left the office around 3pm, and will not return for nine days.  I feel like I'm on Spring Break.</p>

<p>How did I get nine days off?  To start, the office closed early today in anticipation of the long weekend.  I fully endorse this logic.  The office will remain closed Monday and Tuesday, in celebration of Independence Day.  I am a great supporter of freedom.  I justified taking Wednesday off in the following way: "Its hard enough to be productive on Monday after a normal weekend.  How can I be productive after a <em>four day</em> weekend?"</p>

<p>To understand how I rationalized Thursday away, you must understand that the office will once again close early next Friday.  Santa Monica Yahoos are to pack up their cubicles, put stickers on their boxes, and make preparations to be moved over the weekend to our new offices.  Everyone must be out by 12pm.  From a certain perspective, this makes next weekend a three day weekend.  And you know how hard it is to stay productive on the day before a three day weekend.  There goes Thursday.</p>

<p>And, if I had the forethought to <em>linger</em> just a ilttle bit after the office closed this afternoon and pack up my spartan cubicle, then my presence next Friday will only slow everyone else down.  And then there's that weekend...</p>

<p>My brother rightly points out that in a certain way I'm "begging the question."  My logic is fundamentally flawed, and its natural extension suggests that I cannot possibly be productive on Monday, having just returned from a nine day weekend and should therefore stay home.</p>

<p>And though I'm forced to concede his point... Independence sure feels good.</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/06/ten_days_off.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/06/ten_days_off.html</guid>
         <category></category>
         <pubDate>Fri, 30 Jun 2006 20:49:21 -0800</pubDate>
      </item>
            <item>
         <title>Meetings</title>
         <description><![CDATA[<p>At YMG, we have a lot of meetings.  We have meetings to schedule meetings, which are cancelled and replaced by meetings to discuss the process by which we schedule meetings.  New meetings are invariably scheduled to repeat by default; not to suggest that they will actually repeat at fixed intervals, but rather because finding a meeting room can be like a turf war, and it never hurts to plan ahead just in case.</p>

<p>We have face-to-face meetings, one-on-one meetings, phone meetings, video meetings.  We have meetings conducted in every possible combination of those modes.  We have video meetings with simultaneous phone meetings, because the microphones on the video conference machines are on the fritz.</p>

<p>Yesterday morning, I participated in an early morning telephone conference meeting using my cellphone on my way to work.  I arrived just in time to rush to a video conferencing room to dial in for my weekly team meeting.  The room on the other end of the connection was dark and empty.  I was shortly informed via IM that our meeting had been postponed a half hour, and in the interim I should dial in to another phone conference meeting (which included all but one of the participants of the weekly team meeting).  A half hour later, my teammates excused themselves from that meeting, and thirty seconds later appeared on my video conferencing screen.  My boss showed up and we conducted our meeting.  We got kicked out of the room thirty minutes hence, and my boss suggested that we continue our discussion over the phone (though he could sadly not attend, having another meeting to attend.)  We continued our discussion over the phone (with the help of SubEthaEdit) until I had to excuse myself to have a lunch meeting with our principal architect.  Our team resumed our meeting after lunch until we finished an hour later.  My boss, meanwhile had finished his meeting, and since he is so rarely in LA he thought we should have a one-on-one meeting.  We met over coffee until I had to excuse myself to attend the second part of the earlier phone conference meeting which our team meeting had so untimely interrupted.  Get all that?</p>

<p>I spent the last thirty minutes of the work day at my desk, IM off, email closed, earplugs in my ears.  I tried in vain to find a syntax error to correct; a line of code missing a semicolon; a minor bug to fix.  Nothing.</p>

<p>It used to puzzle me that there are so few conference rooms, and a nonexistent conference room scheduling system, making room-squatting so prevalent.  But today I realized the genius of this scheme.  The conference room shortages are planned&mdash;supply is kept doggedly in check.  This ensures that at all times, some fraction of the workforce is forced to be at their desks getting actual work done.   Its brilliant.  But some days it just doesn't work.</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/06/meetings.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/06/meetings.html</guid>
         <category></category>
         <pubDate>Wed, 28 Jun 2006 16:19:21 -0800</pubDate>
      </item>
            <item>
         <title>Plot data in realtime with GNU graph</title>
         <description><![CDATA[<p>I'm trying to diagnose the MIDI output of my velocity poi base station.  This base station receives normalized velocity telemetry via RF on two channels (418MHz and 433 MHz) and outputs MIDI data.  In this case, I'm trying to examine the Control Change MIDI message (a number in the interval [0, 127]).  Because there's noise in the system, I'm written hardware smoothing functions, and I wanted to understand the effect these smoothing functions have on my MIDI output---in real time.  I wanted an "oscilloscope" for digital data.</p>

<p>And of course I discovered that the software I wanted already exists...</p>

<p>The GNU Graph program, part of the venerable plotutils package, can act as a "real-time filter" of data.  I used darwinports to install plotutils and began poking around in GNU Graph.  I discovered the following things from the documentation: in order to plot in real-time, the -x and -y (bounds) arguments must be specified, and data to graph is read from stdin.</p>

<p>My first naive attempt to plot data in real-time failed because pipes are inherently page buffered.  In order to connect a program which is producing time-dependent data to graph via a pipe, this buffering must first be inhibited.  But how?</p>

<p>One solution is to use the "unbuffer" program bundled with Expect.  The other way (and the way I did it) is to use the Expect perl module.  The important part here is to stty the terminal to raw (using Expect here seemed to be the easiest way to stty the terminal.)</p>

<p>The following code, then, plots data output by the Perl script in realtime:</p>

<pre>
#!/usr/bin/perl
use Expect;
use Time::HiRes qw(gettimeofday sleep);

<p>use constant {<br />
  DURATION => 30,<br />
  INCREMENT => 0.25,<br />
};</p>

<p>my $start = gettimeofday();<br />
my $end = DURATION;</p>

<p>my $exp = new Expect->new();<br />
$exp->slave->stty(qw(raw));</p>

<p>my $graph = $exp->spawn("graph -T X -x 0 $end -y 0 127");<br />
open my $graph, "|graph -T X -x 0 $end -y 0 127");<br />
for (my $i=0; $i&lt;(DURATION*(1/INCREMENT)); $i++) {<br />
  my $val = rand(127);<br />
  print $graph gettimeofday()-$start ." $val\n";<br />
  sleep(0.25);<br />
  flush <br />
}<br />
</pre></p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/06/plot_data_in_realtime_with_gnu.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/06/plot_data_in_realtime_with_gnu.html</guid>
         <category></category>
         <pubDate>Mon, 26 Jun 2006 16:26:18 -0800</pubDate>
      </item>
            <item>
         <title>MacOS X: Virtual MIDI sources</title>
         <description><![CDATA[<p>In developing my velocity-aware poi, I needed to read acceleration telemetry from the serial port, and transmit MIDI packets from a virtual source to which other MIDI programs on my Mac could subscribe.</p>

<p>Apple's developer documentation is "sufficient," but there are a number of important concepts I had to understand first before I could begin coding.</p>

<p>CoreMIDI defines MIDI clients, which are actors that transmit and receive MIDI packets.  These clients may own MIDIEndpoints: MIDI Sources and MIDI Destinations (abstracted by the generic MIDIEndpointRef).</p>

<p>The CoreMIDI documentation is quite easy to follow if you wish to create a MIDIClient, create a MIDISource, and transmit MIDI packets directly to a destination (identified by name.)  However, in my limited MIDI experience, I do know that MIDI sources can generate MIDI packets and transmit them <em>without a particular destination in mind.</em>  Other MIDI applications (in my case, Ableton Live) can enumerate the virtual and physical MIDI sources in the computer, and "subscribe" to the output of that MIDI Source.</p>

<p>Roughly, the methodology for accomplishing this (on the Source side (the side I was writing)) is to:<br />
<ol><br />
<li>create a MIDIClientRef</li><br />
<li>create a MIDISourceRef owned by that client ref</li><br />
<li>generate your MIDI data in a byte buffer (the MIDIPacket struct is <em>not</em> necessary)</li><br />
<li>add your MIDI data to a MIDIPacketList</li><br />
<li>call MIDIReceived(midi_source, &pktlist)</li><br />
</ol></p>

<p>If that last step has you scratching your head, trust me you're not alone.  The order to transmit MIDI from a MIDI Source is neither past-tense, nor related to "receiving."  This functionality is documented in the CoreMIDI pdf, but it is far from clear.  Perhaps Apple could have named this important method in a way that doesn't suggest its a callback function?</p>

<p>But no matter.  I have created a virtual source and I am now successfully transcoding data read from a serial port to a virtual MIDI generator, and controlling Ableton Live using that signal.  The output MIDI signal is a "Modulation Control Change" signal <tt>[176:1:val]</tt>. My efforts were rewarded by the sight of Ableton Live's volume slider under direct control of my wireless accelerometer poi.</p>

<p>Having met success in this endeavor, I'm inclined to screw it to hell and disintermediate the computer entirely.  I originally chose to upload my data to the computer using serial because I wanted the flexibility to produce signals other than MIDI from the output of my sensor.  However, after struggling with tcsetattr, ioctl, fcntl, and the arcane constants required to properly configure a serial port (especially an uncooperative Keyspan USB-Serial adaptor), I'm going to produce MIDI output directly from the microcontroller.  I gain the flexibility of being able to hook it up to any MIDI host.  And I realize now that configuring and using MIDI under CoreMIDI is not as difficult as I originally thought.  I'll let my MIDI host controller do the work of injecting the data into my computer, and subscribe to that MIDI data like any other program.</p>

<p>And now, for your edification, the code.  I've never worked with CoreServices before, and so I'm probably doing all sorts of things wrong here.  There's idioms I don't know, and I couldn't find the CoreServices analog of strerror. Comment if you know this stuff better than I do, <em>please!</em></p>

<pre>
#include "midi.h"
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;CoreMIDI/CoreMIDI.h&gt;

<p><br />
MIDIEndpointRef *MIDIInit()<br />
{<br />
  MIDIClientRef midi_client;<br />
  MIDIPortRef midi_port;<br />
  MIDIEndpointRef *midi_source;<br />
  midi_source = malloc(sizeof(MIDIEndpointRef));</p>

<p>  OSStatus err;</p>

<p>  CFStringRef client_name_cf = CFStringCreateWithCString(NULL, "poi_client", kCFStringEncodingUTF8);</p>

<p>  err = MIDIClientCreate(client_name_cf, NULL, NULL, &midi_client);<br />
  if (err != noErr) {<br />
    fprintf(stderr, "MIDIClientCreate had problems\n");<br />
    exit(1);<br />
  }</p>

<p>  CFStringRef port_name_cf = CFStringCreateWithCString(NULL, "poi_port", kCFStringEncodingUTF8);<br />
  err = MIDIOutputPortCreate(midi_client, port_name_cf, &midi_port);<br />
  if (err != noErr) {<br />
    fprintf(stderr, "MIDIOutputPortCreate had problems\n");<br />
    exit(1);<br />
  }</p>

<p>  CFStringRef source_name_cf = CFStringCreateWithCString(NULL, "poi", kCFStringEncodingUTF8);<br />
  err = MIDISourceCreate(midi_client, source_name_cf, midi_source);<br />
  if (err != noErr) {<br />
    fprintf(stderr, "MIDISourceCreate had problems\n");<br />
    exit(1);<br />
  }</p>

<p>  return midi_source;<br />
}</p>

<p>void MIDISendControl(MIDIEndpointRef *midi_source, unsigned char val)<br />
{<br />
  MIDIPacketList pktlist;<br />
  MIDIPacket p;<br />
  Byte data[3];<br />
  p_head = MIDIPacketListInit(&pktlist);<br />
  data[0] = 176; // Control change<br />
  data[1] = 1;   // Modulation<br />
  data[2] = val; // Value<br />
  MIDIPacketListAdd( &pktlist, sizeof(p), p_head, 0, 3, data);<br />
  MIDIReceived(*midi_source, &pktlist);<br />
}<br />
</pre></p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/06/macos_x_virtual_midi_sources.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/06/macos_x_virtual_midi_sources.html</guid>
         <category></category>
         <pubDate>Mon, 12 Jun 2006 14:59:40 -0800</pubDate>
      </item>
            <item>
         <title>Preserve our rights... act locally!</title>
         <description><![CDATA[<p>I woke up today with the NSA on my mind.  Our government has been spying on us.  They've colluded with the purveyors of our telecommunications infrastructure.  They've recorded private details about our phone usage, and analyzed our internet traffic.  This story broke nearly five months ago, and as days go by more damning evidence emerges.  But this morning, I was acutely embarrassed to realize I could summon only a vague notion of the NSA's abuse of our privacy.
</p><p>
How did this important issue fail to capture my undivided attention?  Can it be that I've become so accustomed to betrayal after betrayal by this administration that I no longer examine each breach of law and ethics individually---but rather in aggregate, with a general sense of dread?
</p><p>
In 2001, I participated in a grassroots effort to free Dmitri Skylarov.  This visiting Russian programmer had provoked Adobe Corporation by revealing how Adobe sought to mask poor DRM protections with law.  Sklyarov was arrested and jailed when he presented his findings in the US.
</p><p>
The Digital Millenium Copyright Act (DMCA) and Dmitri's unjust treatment were issues I understood.  More importantly, I felt I could make a difference.  I helped raise public awareness of the impact of the DMCA on our lives.  To the best of my ability, I explained the politics and law of the situation to anyone who would listen: at rallies I helped organize, in flyers I wrote and distributed.  Did my efforts truly make a difference?  Who can say?  
</p><p>
But for a time, I felt empowered to effect change.  I found a cause meaningful to me, and I was proud to be an activist.  September 11, 2001 happened shortly thereafter, and eclipsed public interest in matters of our electronic freedom.
</p><p>
This morning, I woke up and realized the time to be an activist had come again.  I will not sacrifice freedom for security.  I will not stand idly by while public awareness of the erosion of our privacy wanes.
</p><p>
Today, the illegal NSA spying is a sexy piece of news.  Tomorrow, who knows what crisis or celebrity divorce will capture attention?  Weblogs and the long tail effect can keep important issues from attention-death.  That medium reaches a global, over-worked audience which is already largely of like-mind on electronic privacy.  How can we reach more diverse audience?
</p><p>
I'm a Los Angeleno.  In Los Angeles recently, hundreds of thousands of immigrants and their supporters took to the streets to demonstrate solidarity in a cause.  Every one of this city's six million residents is affected by this administration's long war on our freedoms and privacy.  But how many of us would actually take to the streets to show our dissatisfaction?
</p><p>
We have a collective attention-deficit in this country.  If we don't act visibly, NSA spying will fade in with the "background radiation" of this administration's other heinous acts.  How can we can act locally to make this issue stick?
</p><p>
I searched in vain for a Los Angeles mutual-support group for people who feel like they're living in a panopticon.  But there's nothing.
</p><p>
What can we do as communities to effect change?
</p><p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/05/preserve_our_rights_act_locall.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/05/preserve_our_rights_act_locall.html</guid>
         <category></category>
         <pubDate>Fri, 19 May 2006 14:20:58 -0800</pubDate>
      </item>
            <item>
         <title>An enlightening statistic</title>
         <description><![CDATA[<p>I work for Yahoo.  This is the largest company I have ever worked for.  In fact, just the Vice Presidents (VPs) of Yahoo, taken as a group, outnumber the <em>entire staff</em> of any company I have ever worked for.</p><p>Just thought you'd like to know.</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/05/an_enlightening_statistic.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/05/an_enlightening_statistic.html</guid>
         <category></category>
         <pubDate>Fri, 19 May 2006 11:16:55 -0800</pubDate>
      </item>
            <item>
         <title>Project: Tightrope</title>
         <description><![CDATA[<p>
While I was out at Xara in San Diego two weekends ago, a tightrope appeared behind the stage.  I was toiling drums, and all of a sudden, there it was: a free-standing 10' long 30" tightrope.  Some circus folks brought it from San Diego, assembled it in the dust, and set it out for all to try.
</p><p>
You can't dangle something like that in front of me and not expect me to try it.  I can walk in a straight line, can't I?  Well, sure enough, I hopped up on the tiny platform and took my first tentative steps...  And started dancing on the tightrope.
</p><p>
Okay, so I love walking tightrope.  I spent two full hours playing on that thing that afternoon in the hot sun, sweating from exertion, and excitedly calling people over to watch.  I managed to walk the tightrope with four fire poi, backwards.  There was no tutu.
</p><p>
So last week, I got it in my head that I needed my own tightrope.  So working from the design of the self-tensioning tightrope I played with at Xara, I put together a design, and ran around the city gathering materials.  Two days ago at the Smashlab, with Kenny Abney's help, I cut, grinded, and welded the feet and the uprights together.  Last night, I finished attaching the uprights to the feet, and Kenny crimped the 1/4" cable for me.  I have my own tightrope at the Smashlabs!
</p><p>
Massive thank-yous to Kenny for teaching me to weld (again), fixing my crappy welds, and giving general overall design oversight, advice, and keeping me from losing fingers on the tools.  And to Vicki, who only complained a little bit that I was abandoning her to make circus equipment.
</p><p>
Pictures to come tomorrow.
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/05/project_tightrope.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/05/project_tightrope.html</guid>
         <category></category>
         <pubDate>Wed, 17 May 2006 00:15:04 -0800</pubDate>
      </item>
            <item>
         <title>Atmel AVR, avr-libc, and AutoFSM (autogen)</title>
         <description><![CDATA[<p>
I'm building a small embedded project using AVR ATTiny2313 MCUs.  I spent more time than necessary implementing a state machine framework in C.  That's no fun at all.  And then I discovered <a href="http://autogen.sourceforge.net/autofsm.html">AutoFSM</a> (a component of AutoGen) which defines a <a href="http://en.wikipedia.org/wiki/Finite_state_machine">finite state machine</a> language, and compiles the state machine down to C code.
</p><p>
I'm sure it won't work out-of-the-box, but I think I'm going to try to generate code for Atmel MCUs using AutoGen, and see if it makes this process easier.
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/05/atmel_avr_avrlibc_and_autofsm.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/05/atmel_avr_avrlibc_and_autofsm.html</guid>
         <category></category>
         <pubDate>Mon, 15 May 2006 11:15:33 -0800</pubDate>
      </item>
            <item>
         <title>Isolated...</title>
         <description><![CDATA[<p>
With the recent departure of my boss Dave, I am now the only software monkey in Yahoo's Santa Monica Colorado Center.  There are art directors, flash animators, HTML designers, project managers, product managers, bosses, bosses' bosses, bosses' bosses' bosses, and <em>me</em>.  My Nerf weaponry is no match for their battle-hardened armor of bureaucracy.
</p><p>
And as though this office weren't isolated enough, the Internet is now broken.  This multi-squillion dollar web company maybe didn't pay their internet bill this month, cuz all of a sudden, my "productive and essential Internet research" is at a standstill pending network connectivity.  My one remaining option is to perform my duties using resources available on the intranet, or within arms reach.  I think I'll go fetch some hot chocolate.
</p><p>
*sigh*
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/04/isolated.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/04/isolated.html</guid>
         <category></category>
         <pubDate>Thu, 13 Apr 2006 16:21:32 -0800</pubDate>
      </item>
            <item>
         <title>What were they thinking?</title>
         <description><![CDATA[<p>
I just disassembled Roo's Mac iBook G3 600MHz to install a new hard drive.  I do not use the word "disassemble" lightly.  The path to the heart of this iBook is fraught with many screws.  It felt like 600, though it was probably more like 70.
</p><p>
It is interesting to note that its nearly impossible to reassemble something of this complexity without overlooking a few screws, or installing a few too early that should have been held out for later.  In this case, the number of screws <em>left over</em> is approximately equal to the <em>total number of screws in most laptops</em>.
</p><p>
They definitely weren't doing any good anyway.  They were just deadweight.  And so I can feel proud that I have not only replaced a dead 30GB hard drive with a roomy 90GB hard drive, but also <em>streamlined</em> the entire machine.
</p><p>
This <a href="http://www.ifixit.com/Guide/PDF/50/iBook_G3_12_HD_Replacement.pdf">guide</a> made it possible.
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/04/what_were_they_thinking.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/04/what_were_they_thinking.html</guid>
         <category></category>
         <pubDate>Thu, 13 Apr 2006 02:04:37 -0800</pubDate>
      </item>
            <item>
         <title>Where to get the coolest toys ever</title>
         <description><![CDATA[<p>
I just found <a href="http://www.sparkfun.com">Spark Fun Electronics</a> last night, and I gotta say they've got the coolest assortment of green crunchy doodads I've ever seen.  I spent an hour last night just perusing the catalog, and reading datasheets.  I wish I was better at this stuff.
</p><p>
Among the very coolest things available are the <a href="http://www.sparkfun.com/commerce/categories.php?cPath=4_86">GPS eval boards</a>, <a href="http://www.sparkfun.com/commerce/categories.php?cPath=66_69">cellular eval boards</a>, and my favorite project that will never get finished: <a href="http://www.sparkfun.com/commerce/categories.php?cPath=23_85">gyro breakout modules</a>.
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/04/where_to_get_the_coolest_toys.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/04/where_to_get_the_coolest_toys.html</guid>
         <category></category>
         <pubDate>Wed, 12 Apr 2006 17:29:07 -0800</pubDate>
      </item>
            <item>
         <title>Oscilloscope</title>
         <description><![CDATA[<p>Today I bowed to the forces of consumerism and purchased... an oscilloscope.  I found the <a href="http://www.vellemanusa.com/us/enu/product/view/?id=351263">Velleman HPS-10</a> for an excellent price at <a href="http://www.omnitronelectronics.net/phpstore/html/HPS10-Hand-Held-Oscilloscope.html">Omnitron Electronics</a>.  There's that link in case you're interested in buying one of your own.  They're shipping it UPS ground from Florida.  Yuck.
</p><p>
Every review I've read of it says that its a toy, and its just no damn good, etc.  But that's okay, because as an electrical engineer I'm no damn good, and besides I'm making toys.
</p><p>
I'm a big fan of DIY approaches to these sorts of problems (which may explain my lack of overall productivity).  I spent a full half-hour investigating the possibility of using my PC sound-card as an oscilloscope.  I cut that line of inquiry short however when I realized that this DIY approach would likely result not only in frustration, a ongoing lack of oscilloscope, but also a busted sound card.
</p><p>
This HPS-10 oscilloscope (over which I've gotten myself into quite a shopper's frenzy) is shattering my long held notions about oscilloscopes:  Oscilloscopes are big, expensive, boxy items sized to hold all those flux capacitors and thermal-bypass fuses and captured eigen-hamsters.  This is a handheld device, and is noteworthy perhaps only insofar as it comes packaged in plastic bubble pack.
</p><p>
I want to examine triac outputs for bias, make sure my 555 timers are ticking, and my crystal oscillators are oscillating, and my piezo elements hear me drumming.  And I don't want to take up room on my desk for a tool I know will be used rarely.  That said, <em>why doesn't it get here already!</em>
</p>]]></description>
         <link>http://www.exothermia.net/comcafcon/2006/04/oscilloscope.html</link>
         <guid>http://www.exothermia.net/comcafcon/2006/04/oscilloscope.html</guid>
         <category></category>
         <pubDate>Mon, 10 Apr 2006 19:00:02 -0800</pubDate>
      </item>
      
   </channel>
</rss>
