Category Archives: OldBlog

Blog Move

This blog is in the process of moving in from it’s previous location at to it’s new home at on bluehost. This current page will no doubt be repeatedly created and destroyed in the process, as I try to explain to the terrible migration tool about internal linking, resources, categories, and a variety of other things it is doing it’s best to lose or mangle. Things should be up and running in a couple of days, when the links will be updated, and the relocation notice will go up at the old location. This post also has a full set of categories, to force updates.

Posted in Announcements, Computers, DIY, Entertainment, FoodBlogging, General, Meta, Music, Navel Gazing, Objects, OldBlog, School | Leave a comment

IPv4 Depletion

Oh look, the allocation to IPNIC today set off the IPv4 endgame provisions! Now to watch another problem unfold because we (as a culture) spent the last several decades focusing on short term profits instead of investing in infrastructure. We may have lagging communications infrastructure, a desperately eroded manufacturing base, and a whole heap of other stupid (not to mention our ludicrously inefficient healthcare stemming from the same “Why pay now when I can pay more later” attitude) , but at least we aren’t socialists, right?…Goddamnitsomuch.
Next up: Peak Oil (unless it already happened.. oh right, it probably did).

Posted in Computers, General, OldBlog | Tagged | Leave a comment

Pionier Button Hacking: Step 2

It took over a year for me to get back to it, but I finally sat down and made some progress on hacking the Buttons Pionier was giving away at SC09.

When I last posted about it, I had drawn out all the USB identification information, as well as disassembled one, identified all the hardware components, and tracked down data sheets for the important bits.

Now that I have a Bus Pirate, I decided to dump the 24c64 EEPROM. A 24c64-type EEPROM speaks standard I2C, with the addition of three dedicated address pins (for banking chips), and a hardware write protect pin.

My first attempt was a little troublesome, because attaching the chip in-place was (as is often the case) powering the whole board, leaving two I2C bus masters, and confusing the situation.

The following is basically a reference for communicating with 24c32/64 EEPROMs.

To remedy the problem, I simply desoldered the 24c64 from one of the buttons, soldered pins 1-4 (one full side) to a bit of wire, so I could ground GND, A2, A1 and A0 with a single clip, and attached the bus pirate leads to the floating chip (Yes, SOIC8 packages are rather small):


To be specific the connections are GND to pins 1-4 (Gnd, A2, A1, A0) 3.3V to Vcc (8) and WP(7), CLK to SCL (6), and MOSI to SDA (5) like so:


To write the ROM, the WP pin would need to be grounded instead of powered, but preventing writes is a good safety measure when exploring.

Software-side, I ended up following the communication instructions in the Bookly 24c64 datasheet, because I found them asier to interpret, but the datasheets from Atmel or any other manufacturers that make a compatible part will do as well. Start with the usual bus pirate setup of ‘m’ for menu, ‘4′ for I2C, Chose a clock (I used 100kHz for fear of interference from the long-for-I2c leads), ‘P’ to turn on pull-up resistors, and ‘W’ to turn on the power supplies.

Then, to read out a 24C64, you feed it (this is a commented log of the terminal session)

I2C>[0xA0 -- Start, Send 1010, the Values on the A2-A0 pins (000 if grounded), Followed by 0 write for and 1 for read -- dummy write to set address pointer
I2C>0x00 -- Send the start address to the chip, the 24c64 ignores first three bits. 0x0000 to start at the beginning of the ROM.
I2C>[0xA1 -- Starts, then random read (same as first byte of dummy write, with R/W high instead of low)
I2C>r:255 -- Sequential read out the whole ROM (Overflows most terminal's history, I pulled 256 or 512 at a time.)
READ: 0x5A  ACK 0xA5  ACK...

I dumped it twice to cross-check that I didn’t make any dumb mistakes the first time, then massaged the dump with some regexes to get rid of the communication details and extract a pure hex dump. Only the first 4608 bytes of the ROM are written, so there is even room to tamper, if I can figure out the encoding. Note that the posted string is NOT S-records or Intel HEX, but raw ASCII-encoded two-characters-per-byte hex. In order to get it into an 8051 disassembler for further analysis, I will either need to figure out how to coax the Bus Pirate to generate a formatted dump, or write a script to segment and prefix the existing string, but neither has happened yet.

Giving analysis a first pass, I looked for pieces of the string it prints when activated as ASCII and raw USB HID Scancodes, but didn’t find them… which either means there is a problem with the dump (byte order?), or some clever and inconvenient encoding was used. I’m not terribly familiar with 8051s and their associated tools, so that will be the rather large next step. If nothing turns up in analyzing the dump, I may have to sniff the bus while the board is in operation to see if there is some funky data layout obfuscation.

Posted in Computers, DIY, Electronics, Objects, OldBlog | Tagged , , | 1 Comment

Pacman Brownies!

I’ve had the idea of icing classic video games onto brownies rattling around in the expanse between my ears for a while. I haven’t tried to pipe ice anything in quite some time, and it never has come out terribly well, but it’s fun tedium damn it…
I made a measurement mistake somewhere, so it compressed toward the bottom, and I forgot some flanges on the edging, but for a roll of parchment paper, a tub of white icing, and a pack of food dye, it worked out pretty well. I suspect in two or three tries I could make it look good instead of merely fun.

Posted in DIY, Entertainment, FoodBlogging, General, OldBlog | Leave a comment

Spiffchorder rides again

I’ve been putting a couple hours every evening into the long, long list of hobby projects that haven’t been touched for the last 10 or so weeks. One of the successes on this front is getting to touch the Spiffchorder I was working on.

I had to pull the reusable parts (always socket your uC…) and trash the one I assembled on perfboard; after all the modifications and false starts it was a non-functioning mass of solder balls and lifted pads. I then threw one down on a breadboard, as other had reported sucess starting that way even though breadboarding something with a 12Mhz clock is a little bit electrically dubious.
I got this version working on the second try, and second only because the version of the code I modified to work with a (generally drop-in compatible and easier to source) ATMega 328p, instead of the 168 or 8 recommended by the original design is still not working properly. I suspect it is more of the issues with V-USB interrupt behavior on -p type chips, but haven’t attached it to anything that can trace fast enough to watch USB. That said, the code works fine on the one 168 I have in the parts bin (I think it was stolen from an updated arduino diecimila?), and the crappy first-pass keyboard I made for testing is… good enough to feel out the chords on, but not much else. The chord-set is actually pretty easy to work with, and I can see how it would be a comfortable (particularly in terms of “not further accelerating the joint damage to my hands”), convenient and fast input system.
Now to build a working board, a better keyer/keyboard[s], and fix the 328p code so I’m not tying up my only 168.

Posted in Computers, DIY, General, OldBlog | 3 Comments


Some time ago, a friend sent me this article about one of our high school class mates (first person, the one at the National Journal Group), mixed with some ruminations on the fucked up standards of the people I grew up with. Earlier today, I saw this on BoingBoing. It took me a minute to put the two together, but I’m pretty sure the business plan that made the Atlantic solvent again is the same one being discussed in the first article.

I don’t know if this is a classic “Credit travels up, blame travels down” situation, or merely a case of self-promoters doing their thing, but it’s interesting how our acquaintance is ever so involved in the first article, and completely absent from the second.

Posted in General, Navel Gazing, OldBlog | Leave a comment

Bus Pirate!

I lost yesterday evening to the happy distraction that usually follows a little red box showing up in the mail – The Bus Pirate and cables I ordered from Sparkfun with my Free Day winnings arrived.
It is a very cool little tool, and the accessories all work nicely – with the slight caveat that the Sparkfun cable is the reverse of the seedlabs/adafruit layout. There is a handy guide, but there are references to the colors in the firmware which don’t match… neither layout has any intrinsic advantage, although I do like that the Sparkfun model has GND on the black conductor. The test hooks I got with it have EXCELLENT grabby little tips, and are small enough to attach to adjacent pins of an SOIC, but do have an occasional problem with the jacket/part you press to extend the tip sliding back too far. That said, they are overall better than the ones on the expensive old logic analyzers on campus, so no complaints.

As for set up, the BusPirate just presents itself as a 115200/8/n/1 USB serial device, with a simple textual interface, so it will work on any machine with a USB port and serial terminal software (I like gtkterm on Linux and PuTTY on Windows). The developers offer regular firmware upgrades, and the SparkFun model ships with woefully out of date firmware and bootloader, to the point that the upgrade process is now mildly nontrivial (follow the instructions carefully). I did end up booting a machine into Windows for the update because the python update script was being problematic, and I wasn’t especially keen on bricking brand new hardware, but I got up to the current v4.3 bootloader and 5.10 firmware without too much fuss.

For a quick test, I grabbed my wiimote nunchuck and connected it up to the BusPirate. Wii accessories just speak slightly-obfuscated I2C among themselves, and there is a handy example for the process of reading one with a bus pirate. That whole process only took maybe half an hour, including plenty of time to explore the bus pirate’s features. The only slight hangup was that the BusPirates’ pullup line needs to be EXTERNALLY connected to a power source, even though the resistors can be software enabled. It would be nice to be able to connect (jumper block style) it to the on-board Vregs without extra loops in the wire harness.


One of the first things I want to do with it is tinker with the PIONIER Button that I have lying around from a conference giveaway a few years ago. The hold-up on that little project was getting access to the 24c64-type EEPROM which (presumably) holds at least the written string it writes, and probably the code it runs. I’m hoping for obvious “string preceded by length in bytes” type encoding. The 24c64 speaks two wire serial (which *usually* means not-quite-compliant I2C) with some external address lines, and the address lines are pre-grounded on the board, so at least reading the thing out shouldn’t be too hard, even if I may have to lift pins to separate it from the uC and enable writes…

Posted in Computers, DIY, General, Objects, OldBlog | 1 Comment

Fall 2010 Semester Retrospective

With trip to Hawaii immediately following the end of the semester, I didn’t get to posting my customary class Impressions/Retrospective post for the end of the Fall2010 semester, but I have remembered to do so now. The chain of such posts starts here, with the Fall2010 impressions post.

This course was a lot more unpleasant than I expected. I basically enrolled in it out of a distaste for leaving a class until my last semester, and the darling problem with our EE graduate program where the core courses are Semiconductors (EE661), Computer Architecture (EE686), Electromagnetics (EE685), Signals (EE640), and Signals (EE611), and the program isn’t big enough to offer all of them all the time.
I scraped through by hundreds of hours of work trying to make up for my grossly inadequate math background AND learn the new material that relied on the missing stuff, and I only got a C, but I made it, and now I’m done with coursework toward the MS. I’ve never been proud of a C before, but there it is.
I do have a reasonable conceptual model for most of the material … I just can’t actually do most of it without computational aid and a reference, which was a problem for tests. The obnoxious thing is, I genuinely spent at least as much time with my old signals, controls, and linear algebra books that I did on the course material, because what I remembered from the courses (and I THINK what we covered in them) wasn’t nearly adequate to prepare me for this course. I noticed that students from undergraduate programs with more of a “Math and Memorization” focus (read “programs in China”) had a lot better time in there than the rest of us.
Not a class I should have taken, or would take again, but not all together horrible. Certainly not recommended, unless it is your area of specialization.

EE281 TA
I really do like teaching, and especially this course. It is at just the level where students first get to design for themselves, the content is material I’m good at, and the actual labs are the kind of small-scale hardware projects I do for fun. Procedure wise, I made a couple new changes, the most interesting one discussed in EE281 Car: Mixed Success, but I also built up a semester-to-semester tracking course binder with rubrics and instructional notes (which still needs to be cleaned up once more and copied to pass off to the new TA…), and did a little more of lecturing/instruction than last time. All told, quite successful, with NO (still amazed at this part) students who were lost or not trying at the end.
The degree of “I put effort in and something good happened as a direct result” in teaching college courses is ridiculously rewarding, and the amplification of effort from working with a class just makes it better.
I’d love to do it again, but I don’t really have time to both satisfactorily finish my masters’ project and teach this semester, and in general I need to work on being careful about not letting teaching suck up too much of my time in the future.

Now, onward, to research!

Posted in General, OldBlog, School | 1 Comment

Aloha ʻoe

Aloha ʻoe, aloha ʻoe
E ke onaona noho i ka lipo
One fond embrace,
A hoʻi aʻe au
Until we meet again

Posted in Entertainment, General, Navel Gazing, OldBlog | Leave a comment

Coffee Tour

I’m on the dry side of the big island in Hawaii right now, and the Kona cost is an amazing place for coffee dorks; I took a tour of the Greenwell Farms Coffee Plantation, a 150 year old traditional (but not modern definition organic) coffee operation in the heart of the Kona coffee band today, and subsequently spent a ridiculous amount on coffee both for me and to spread around as gifts.

Some pictures from the tour:

A grove of coffee trees, of Guatemalan ancestry, grafted onto hardier Tanzanian root stock. Picture is taken down one of the idled rows that was chopped short last season to encourage fruiting instead of growing the tree
A nice close up of some unripe (green) and (roughly) ripe (red) coffee cherries.

A dissected cherry in-hand. Whole cherry has a texture and appearance sort of like a cranberry. The skin is very firm and a bit bitter, the greenish pulpy flesh is very similar to a pomegranate kernel in texture and flavor, with the hard coffee bean inside. Coffee cherries have a shelf-life measured in hours, and virtually no meat, so you can’t get them away from the farm, but apparently in addition to being delicious, possess a variety of healthy properties – So much so that a company has finally figured out how to stabilize a juice product, and are marketing it as KonaRed, as some kind of super-dose antioxidant. Greenwell happens to be the sole source for cherries for manufacturing the stuff. I bought a bottle, and a couple packets of dehydrated, but haven’t tried it yet. I have high hopes for deliciousness.

A bed of green coffee, in a hoshidana (sliding roof) to protect it from the daily rain, drying in the sun.

The tasting on the tour is the most effective sales pitch imaginable, as several of their products are absolutely delicious. I found the single-source estate coffee to be a little earthier than I like, but their Peaberry is spectacular, and the classic for Kona medium roast is exemplary. The fun specialty is roasted chocolate coated peaberry beans that make normal chocolate covered beans seem unpleasant, and are about 4-5 beans to the cup of coffee in terms of caffiene content, making them a significant threat to my continued wellbeing.
One of the big things I hoped to get to here, and a great way to spend an afternoon.

Posted in Entertainment, FoodBlogging, General, Objects, OldBlog | Tagged | Leave a comment