Besides being confused by this graph initially, and thinking the thing is pretty darn ugly; I know better than to do this (and its all Don Park's fault).
Besides pointing me at tiny databases, new languages, and a whole assortment of other DHTML goodies; he discovered an article by Edward Tufte on a new concept for graphs that are so tiny, they can be placed within the text itself, allowing small bits of data to accompany the text without breaking the flow of reading. He called these things sparklines.
They're a neat idea, and they've gotten fair interest in the free software community. There's various libraries for generating all kinds of line and bar graphs. I like this one that shows the federal deficit (those black bars are when there was a democrat in office :-). But for what I was doing, trying to jam in a big client side library of javascript or trying to get all the customer servers to add more server side libraries seemed to be overkill.
I thought there ought to be some way of doing it with DIVs, but browsing around just a bit I ran into a bunch of examples that just used tables. With a little bit of experimentation I managed to come up with this:
|
|
|
|
|
|
|
|
|
|
<TABLE bgcolor=white cellSpacing=1 cellPadding=0> <TR valign=bottom> <TD height=20> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=13 bgcolor=blue></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=14 bgcolor=blue></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=13 bgcolor=blue></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=6 bgcolor=red></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=10 bgcolor=blue></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=6 bgcolor=red></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=2 bgcolor=red></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=3 bgcolor=red></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=1 bgcolor=red></TD></TR></TABLE> </TD> <TD> <TABLE border=0 cellSpacing=0 cellPadding=0 width=2><TR><TD height=1 bgcolor=red></TD></TR></TABLE> </TD> </TR> </TABLE>Conveys just about as much data (the actual number of seconds is not really important--this is about trends), and its small enough to fit right in the original table instead of needing a separate window. I think I'll just tell the client it was my idea ...
While Buffalo Wild Wings is conveniently located and has pretty good food for a pretty low price (what else would you expect from a chain that is located in the same shopping center as Walmart), the choice was actually driven by something much more geeky. I wanted to try out the Tungsten Wifi on their connection. So I finish off my other chores and I pull up and order a couple of snacks, then I pull out the Tungsten and tell the wifi to connect.
nothin
Ok, try again. Zilch, nada, no radio, out of luck, give it up. sigh. With some resignation I go back up to the counter an enquire about signal. The first person doesn't even know what I'm talking about. "Wifi? Is that on the menu?" I helplessly pull out my isolated PDA and wave it around like it will magically impart understanding. Another sales droid notices my plight and comes over. "Oh ya, that internet thing. My friend is coming in later in the week to fix it, its not working." I offer to look at it myself, but they assure me the experts will have things repaired in a few days.
Now I have my Treo in another pocket, so I could simply sit down and noodle around the net with it, but the screen is so tiny in comparison to the Tungsten and besides, I use the net on my phone all the time. There's nothing new or exciting about that. Then I have a brain blast (ok, so the kids have been watching Jimmy Neutron). The Tungsten has bluetooth in addition to wifi, and the Treo has bluetooth as well. With the 1.12 update its even sanctioned to let an external device use the Treo as a gateway onto the Sprint data net. At least it is in theory, I've never actually tested it before.
So I begin the dance of the bluetooth handshake. First I turn on bluetooth on both devices, then I make the tungsten discoverable, then I tell the treo to trust the tungsten, then I let the tungsten see the treo, and then I'm ready to start setting up devices. I tell the treo to let the tungsten try and access the net, which seems like an ok thing to do; but then I run into trouble on the Tungsten. I start muddling through what looks like the lesser of three wizards, but it starts off with the unfortunate question:
Do you have a GPRS data service?GPRS? Yuk. No of course not. It then wants me to put the phone number in on my ISP. This is not going well. I try to fool it into thinking sprintpcs is the same thing as GPRS, but its not buying it. It finally tells me to go check the web site for updates. My geek-foo has failed. I resign myself to a fate of squinting at a small screen through a rather scratched up screen protector, when the food pager/buzzer goes off to let me know my order is ready, saving me from the tech dungeon.
So now, I've got yet another task on my infinite todo list. Call up Palm and berate them for not shipping the tungsten with SprintPCS network support in their bluetooth gateway profiles. Its not like Sprint has better data service then all the GPRS vendors put together, or in fact was the first vendor out on the Treo 650. Oh, wait, yes it was. What are those guys thinking.
It started out a little rough, Oscar and momma headed off to the doctor as the six month old has been fighting some congestion for a while and it didn't really show any signs of improving, so I held down the fort with the two older ones. Zakary was trying to get the little driver to fit in the Rokenbok train cab and get the door shut while at the same time his brother was trying to drive the train down the track. I sided with Zakary and told Max to knock it off, which had absolutely no effect (we're talking a five year old here after all), so I cut the interface by relocating Max to the other side of the house. He survived in time-out period and went to sulk on the couch after that (which was fine with me), and would have stayed there except for the arrival of fedex with a rather large box.
There were two possible items it could be, and it turned out to be the less likely of the two: the last of the long lost legos. About six months ago, one particular seller started offering a lot of bulk buy items for sale. No picture, and his feedback was kind of sketchy, but I decided to grab a few lots (ok, I grabbed a bunch of lots, totalling 88 pounds). The reason I decided to give him the benefit of the doubt was price--usual lots sell on ebay for four to six dollars a pound (sometimes you can get a bargain in the three to three fifty range), but these lots went for about a dollar and a half. Even with shipping, I was only out slightly more than two dollars a pound. Of course I was out that money in April. Now at the tail end of November I was finally seeing a payoff.
I actually received one smaller box back in September, but a couple of weeks ago I finally got a 46 pound box (which we're still going through), and today the rest showed up in another large box. Well, there's few things that will cheer up a five year old more than a box of legos as large and as heavy as he is. So we spent the whole morning and part of the afternoon sorting blocks, pulling out partially assembled robots, spaceships and bionicles; and even digging out a few complete box sets. A fun time.
After that the kids took off to do errands with mom and I attended to other chores. While there are numerous projects around the house still ongoing, today I focused on the school shop where a number of issues needed some attention. There was a lathe that wouldn't power up, and sander that needed reconnecting, broken regulators to replace and some CAD software to configure. Spent the afternoon with the volt meter, pipe gunk and various other tools of the trade messing around, which brought its own kind of satisfaction as well.
My wife was a little puzzled by my attention to a shop I teach in a couple of hours once a week, but its more than that to me. The metal shop is a resource for the community (both for learning and for making things). Its a skill that hasn't been that important as we have imported materials and labor from overseas, but that dynamic is changing. Also teaching, and helping others making things, helps build bonds in the community; something which I think is going to be more and more important as time goes on.
So today was just one more small step making those connections just like the morning was making connections with my kids. Creating a legacy that will out-live me. In the grand scheme of things, probably much more important then all that XML, perl web-api stuff that makes up a day job. That stuff pays the bills, but you also have to make time for these other things, so that you can look back over the years and see progress towards those big picture goals. That's what puts a smile on my face at the end of the day.
for (1..8) { print join(" ", map{ int(rand() +0.5) } 1..40) . "\n"; }dumps out a perfect little strip on ones and zeros, just right for making some art out of
0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0
0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0
0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0
1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0
1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1
0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1
1 1 0 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1
1 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 1
In any case, I didn't find a hidef camera like I was looking for, but I did find the JVC GZ-MC500. What a cool looking camera, absolutely tiny, records onto CF and SD cards, and has three hires CCDs (for much better color than single CCD video cameras).
While I like my Canon GL1, I just hate tape. Tape is evil. Imagine a super thin strip of cheap plastic with a bunch of grains of rust glued to it (why do you think tape is brown). Then imagine going along and trying to twist magnetic fields in each of those grains, then sticking the entire thing on top of a cabnet somewhere where it cycles between hot and cold temperatures a couple thousand times, then putting those spools of plastic and rust back into a player and expecting to get the original bits back out. Its like raking a zen garden knowing its going to hail in an hour.
Could be worse, at least its not digital data. One wrong move there and you're data is just gone (punctuated by the sound of the tape drive seeking back and forth, hoping for a better outcome on the 80th pass: zeeshk, zuuurk, zeeshk, zuuurk). You know its going to stop in a moment, but not because its finally gotten the data–it's finally given up and you can forget about that data on the drive. Its just gone. Anyway, flash is the way to go for temporary storage, and once I've assembled a collection of the kids dancing about in their pajamas with socks hanging on their ears, I can burn it all away for safekeeping onto a twenty cent DVD-R where I'll probably still be able to read it 20 years from now.
If I wasn't so broke, in need of other expensive stuff like a new laptop and maybe a new car, and in flux work-wise; I'd so be getting one of these.
See I took the original design to heart, which was that presentation was purely up to the designs of the user. While this is probably not appropriate for every person, for a few of us power users its totally the way to go. I got rid of almost all window decorations, including title bars and other wasted space, and mapped every possible window management function I could think of needing to keyboard operations instead. So ALT+right mouse would move a window down, and ALT+left would raise a different one up. F1 would iconify a window ( as well as ALT + i ), and there were others for things like resize and move. It was a little big ackward when others would come to my workstation and want to do something, but the answer was as simple as shutting down my window manager and starting one from their account ( the applications themselves didn't notice one bit ). Then I could go back to life my own way when it was all over.
This got me a pretty powerful setup (see above for a screen-shot, shrunk down 5X just so it would fit in this window), except of course something had gone terribly wrong and all my keyboard commands were just clunking the bell at me instead of doing what they were supposed to do. I had tried mucking with the keyboard settings, xmodmap, keysyms and every thing else in the translation path I could think of; and given up in frustration before, but now I really needed it to work.
I'm not sure how I found it, but today I ran across xkbwatch. I didn't even look for a man page ( there isn't one anyways ), but seeing those little green squares solved the problem. Turns out that there are a few more modifiers being tracked these days. There's the usual shift, control, alt, and caps; but someone had thrown num-lock and scroll-lock into the mix as well. It was sitting there glowing at me, and as soon as I turned it num-lock off, all my buttons were back to normal. Looks like I'll just be able to define a second set of bindings with mod1 added in and I should be fine in any case.
Well on with the fun.
That got me thinking that I should really back up my photos onto DVDs. That got me looking at what I currently have and how to organize it into groups to fit onto DVDs. That got me looking into the various top level folders where I realized that some months weren't organized. ( I used to group photos by year, then by catagory, but this year I've taken way too many pictures. ) So that got me going back and just doing a quick sort of the photos before backing up, and there I found some old blog business that needed catching up on.
About a year ago, I wrote about my battles with my computer and a CDR burner. In addition to amusing a few people, this also got me on the first page of certain esoteric searches on Google, usually made by people at wits end because they couldn't find the information at HP's own site. I don't know if the information just isn't there, or maybe its hiding behind an especially difficult user-interface that Google can't circumvent, but in any case a few people have turned up at my corner of the world asking for help with various bits and pieces of info. The most recent was the dip switch settings.
Sorry its not text so you can't search it, but there's the settings for the HP KAYAK XM600 (and here's the motherboard layout for both series 1 and series two). It will be curious to see what other questions end up here.
Feb '04
Oops I dropped by satellite.
New Jets create excitement in the air.
The audience is not listening.
Mar '04
Neat chemicals you don't want to mess with.
The Lack of Practise Effect
Apr '04
Scramjets take to the air
Doing dangerous things in the fire.
The Real Way to get a job
May '04
Checking out cool tools (with the kids)
A master geek (Ink Tank flashback)
How to play with your kids