So a while ago, I made a promise to myself not to start any more projects before I finish the ones I've already got going. And the one that'd been sitting around the longest was the damn LED spider that I'd been meaning to make a simple USB interface for.


Thanks to swag from GDC, LED Spider now has an LED Wiimote to play with! So yeah, they're just two silly things involving blue LEDs, but I figured I might as well hook up whatever I have around that has LEDs in it to this thing since USB can provide the power for more of these than is ever necessary. Hence the new name of the project, "LED Casserole". I'll just keep hooking up whatever I find to this box until the board gets full.


One of the interesting things about this project is the project box I used. I had black "project boxes" of all types lying around that I've gotten from different electronics stores, all of which are usually <1cm to large/small in some direction to be truly useful, and all of which cost at least $5. I packaged this board in a little plastic box from Ichiban Kan in El Cerrito. Incredibly simple to cut up with my Dremel, and @ $1.50/4 boxes, I can fuck 'um up all I want. And they've got all sorts of sizes, nothing more than $2. Realized this technique after checking out some stuff from a Japanese electrostim builder on SmartStim, and I have a feeling most of my projects are gonna come out looking like this now.


The circuit itself is simple. This is the exact board I was using for my 1-node ambilight which ended up not working due to massive noise problems. I'm building another version of that board, so I just stripped the extra MOSFETs off this one and left it with one line. The 50V/48A MOSFET as LED driver is probably a smidge much, but hey, it was already there and it worked.

This project also makes use of the nifty new molex friction lock connectors I got from Phoenix Enterprises. No more plugging in shit backwards! Yay!

The whole thing is powered off the USB line, the MOSFET just works as a simple switch for the LEDs. The switch on top turns the power to the lights on and off. Software is USBTiny with an extra CONTROL instruction that takes a single byte for setting the PWM.

Onto the next project!

Hotel/plan booked, registration finished, I'm goin' to SIGGRAPH! I haven't been this excited about attending a conference in quite a while. Not to mention, this is gonna be possibly the first conference I've been to where I haven't also been speaking. See you there!

Fwiktr 0.2.0 is up and running

The goal of Fwiktr v0.1 was to simply get a picture from flickr based on a twitter message. That goal achieved, it was time to make the interface more extensible.

I've now broken fwiktr into performing certain core functions (called services), and then providing a way to edit the input and output of those functions (called transforms). For those of you who are thinking "hey, this setup looks awful familiar", please stop reading my blogs and work and get back to fixing the grid.

Here's what a current run of fwiktr looks like at the moment

  • Retrieve Post from Public Timeline of Twitter (via Twitter Service)
  • Run cleanup transforms on post (Twitter Post Cleanup Transform - Remove URLs and specific post service information, like @name symbols for twitter directed messages)
  • Run post through language parser (Lingua::Identify Service - Right tool for the job, even if it is the wrong language :) )
  • Using returned language, choose proper TreeTagger implementation and run Parts of Speech Marking on post (Treetagger ENGLISH - Nouns Only Transform)
  • Get pictures using ALL search mode for flickr API (Flickr Full AND Transform)

  • If zero pictures returned, use ANY search mode for flickr API (Flickr Fuck It Transform)

All of this is compiled into an XML block which is then shipped to the remote web DB. Instead of trying to wrestle with a generalized SQL schema, I decided to send data in XML form as it is easily mutable and still fairly backwards compatible as long as the DTD is kept generalized. Not to mention, it's less code I have to write at the moment, and I'm more interested in making art than in making a searchable database for the time being (and thanks to the DTD, turning the data into a DB shouldn't be much of a problem at all once I want to do that).

Aside: The XML block is now available for outside parsing, just add "&xml=1" to the end of the art request URL, but I'll warn you, it's a complete mess right now, there's many different formats (that at least all follow the same DTD, but that's it) due to having the DB persist through development of v0.2. I'm gonna write a script to clean things up, but that may be a ways off)

The really nice thing about this setup is that every level (the post retrieval, picture retrieval, language identification, and transform layers) are all completely pluggable, while still providing a fairly robust pipeline for the task. I am very much interested in writing my own parts of speech tagger, language identification algorithms, and other things, but for right now, they work on proven software, and produce output that I can compare my own implementations against once I get around to that.

Which may very well be never.

At this point, I'm pretty happy to let fwiktr run as is for a while. Before I completely call phase 1 finished, I'd like to have an RSS feed, and /maybe/ start taking post requests (i.e. you can hand it a twitter URL and it'll parse it for you).

Here's the plans for the future:

Phase 2

  • Implement small, quick user system (maybe using OpenID, 'cause that seems neat, but I'll probably just try to hook into some prebuilt simple CMS, which scares me, 'cause CMS selection is a bitch these days) to allow ratings, favorites, etc... - this is very important for AI training that I can use later
  • Create simple DB import utility to make data more accessible

Phase 3

  • Implement art overlay rendering (pasting the message back over the picture
  • Implement seasoning system

  • The "seasoning" system is something that I'm rather looking forward to implementing. Right now, we're throwing away all URLs and emoticons. However, these are completely valid and useful parts of a message which could be used to seed more tags into a search. The emoticons could be translated into moods (though I'd have to do some statistical analysis on tags first to see if anyone actually uses that), while URLs could be descended into and scraped for some sort of context which could be fed back into the message. There's other metadata that comes along with the message that this idea could be used with too (i.e. using location plus post time to pull weather modifiers from some weather reporting service, adding "clouds" or "sun" or "rain" as tags.

Phase 4

  • Start phasing out external NLP systems in favor of hand written ones

  • I'm leaving this step until I have all the features in as I want them, otherwise I'll just get pissed off and quit and leave the project in a half finished, non-working state while I try implementing something someone else has already done. Much better to have a working model to compare against,too.

But, for right now, this is the end of this phase of fwiktr. I've got a couple of other quick one-off projects I want to work on which I'm sure will give me more ideas for this one, and at the rate this turns out pictures, I'll have lots of fun data to play with when I get back to it.

Out of the 27551 images fwiktr produced over the past 3 days ('cause I totally forgot I had it running), around 1800 have to do with the iPhone.

I'm not sure whether I'm surprised by how large or how small that number is.

So I've added a DB backend to fwiktr, and gave it the ability to reload automatically so you can sit there and stare.

Here it is

Trying to clean things up a little more so I can easily plug more post and picture sources, then back to the fun stuff ('cause I'd completely forgotten how much I hate PHP programming).

Some favorites so far:

freakin underwear keeps riding up ugh

LaTeX isn't cooperating. I know for a fact that my document is well-formed TeX.


resisting sleep for no good reason.

I was a math teacher, and my counting is impeccable. - Wow, and I found this neat video from this one

Back to the Java Forums