Archive for the ‘General Geekery’ Category.

OLPC goodness (finally)

OLPC, smaller than you think

Ok, so if you follow me on Twitter you probably saw my digs at the OLPC folks for their somewhat slow delivery of my G1G1 XO laptop. Well, it finally arrived and after a few days of serious OLPC geekin’ I handed it off to its intended recipient, my 8-year-old son.

First off, if you were thinking (like I was) that an XO would make a cool grown-up geek toy, you’d be wrong. First off, it’s small… really small. The membrane keyboard is icky and to put it bluntly, the system is — lets face it — slow. Oh, and you look dorky carrying it around.

But it’s still neat.

It’s got a whole bunch of built-in applications (called “activities”) like a word processor (based on AbiWord), web browser (based on Gecko) and a number of programs that are all clearly educational, most of which I haven’t checked out yet. I did dig the sound sampling Measure activity and of course I found the Terminal activity most useful since the whole thing is Linux based.

OLPC Warning signs

By far the slickest feature of the XO is its collaboration abilities designed primarily for use in a classroom setting. This allows you to share almost any activity with anyone else. The problem here is that although its possible to configure a stand-alone XO to “collaborate” over the ‘net at large (it uses the Jabber protocol for this) I wasn’t sure setting this up on my kid’s computer would be such a good idea.

Interest

Anyway, I’m getting off track here. I gave the thing to Ryan and after pursuing the Record activity (the XO has a built in camera and mic) and some of the audio activities, he found the EToys activity which is a sort of a SmallTalk/Squeak development environment and he’s working (with some help) through the tutorial challenges.

“Can we play ‘cars’ again, Dad?” Aw hell yeah! Brings a tear to the eye, it does.

At this point I’m not really sure how long his interest will last. Will it really catch on (”Look, Dad, I’ve created the logic here in SmallTalk so if Santa comes through with some Mindstorms…”) or will the XO will go to that place where all the Leap stuff has gone that we’ve gotten over the years?

Fun to watch though.

SacBee-dotted

So today amid the rain and the wind the Sacramento Bee, tired of their own traffic page, linked to Sactraffic.org directly off their homepage. I was so proud… for about 5 minutes.

It didn’t last long. My little Via C3 powered server I run on my little tiny DSL line almost immediately melted down. Interestingly it wasn’t the server load, as Sactraffic is all client-based code, and it wasn’t the bandwidth as my 1.5mbps/384kbps DSL line never peaked past 70% (though that in itself is well into “yellow-light” area)… it was the sheer number of requests and the rate they came in at that did the server in.

Suddenly there was a whole lot of:

[error] (35)Resource temporarily unavailable: fork: Unable to fork new process

in the logs. I was SacBee-dotted.

My home server was just not configured for that kind of traffic. I did some quick Googling and as I suspected the default kernel settings in OpenBSD are intentionally conservative (secure by default). I made a quick call, while I’m sure I could have tweaked it and gotten things humming, it would still be a ancient homebuilt server on a home DSL line.

Punt.

It took a bit for the firehose to turn off and things to calm down. What’s interesting is that due (I assume) to the massive number of incidents the CHP was experiencing the CHP XML feed that powers Sactraffic was also experiencing problems so at least I wasn’t alone ;).

Introducing Sac Traffic dot Org

Sac Traffic

After thinking it through a little bit I decided a while back to run with the Traffic on Twitter thing and do it up right. The result: sactraffic.org.

I used that same XML feed from the CHP and in addition to Twittering new incidents I created a local JSON feed of just Sacramento area incidents and “mashed up” some geocoding/mapping, local news, videos and even local weather.

Hopefully this makes a simple, yet useful, tool for folks as there are RSS feeds that can be tailored to a particular set of streets or freeways (think: check your commute in your RSS reader before you leave for the day) and what’s even slicker is using Twitter’s new “track” feature to get live updates on traffic incidents at the street or freeway level right to your phone.

Most of this was made possible by the Google Feed and Maps APIs.

It’s been a fun hobby project and was a good refresher on JavaScript which I was getting rusty at (and perhaps still am). Clearly my design skills still suck (hey, anyone have a line on decent traffic icons for Google Maps?).

I’m serious when I say “hobby project” as I’ve tried really hard to keep work on this limited to my spare time at home. I have plenty of work-type work to do at work, messing around with stuff like this at work would probably be frowned upon.

Anyway, I stuck a big ol’ Google AdSense ad on it so if it gets popular maybe I can subsidize my caffeine habit ;).

Wacky widget workings…

So if you notice this type of thing at all, you may have noticed some changes to the sidebar over there on the right. Using just WordPress’s built-in text widget I’ve been able to take JSON feeds from Flickr, Twitter and Google Reader and then use a little JavaScript to create nice CSS styleable blocks for display.

In other words, with few lines of code I’ve been displaying information from people’s sites on my site all purdy like.

I love this. Because it means that with a little brain power I don’t have to be limited to the “badges” or whatever other canned widget frou-frou gunk that these sites provide. What’s also cool, it that with a little more brain power I suppose I could “mashup” all this data in some way I haven’t thought up yet, man how web-two-point-ohy is that, huh?

100001 1010101

OpenBSD 4.2

The fine folks at OpenBSD have the song up for the 4.2 release on the lyrics page. So go forth and rock.

It sounds like they went for a Rush feel this time and its not bad. Its been a while since I’ve actually liked a release song, so this is refreshing.

And of course there’s the requisite moral in the lyrics too….

Traffic on Twitter

Now here is a good use of Twitter (IMHO): Sacramento Traffic Updates

Unbeknownst to most people the CHP makes available a dynamically generated XML file of all their working incidents state-wide. Borrowing a page from the LA Fire Department, it struck me that using this feed for updates to Twitter would pretty slick.

So @sactraffic was born.

I of course made it configurable so I can set the “Center” and “Dispatch” that I want (in case I get a hankering for “FresnoTraffic” I guess) and then I found that at least in the Sacramento area there are still a lot of incidents so I further added configurable filtering on the “Area” (as in “just give me ‘Sacramento’ and not ‘Placerville’ or ‘Auburn’”).

Then I went and filtered all those nifty CHP shorthand acronyms, “JSO EB ONR” (just south of east bound onramp) and low and behold actually readable alerts.

I was (and still am) concerned that hitting that XML file every 5 minutes is unnecessary traffic and load, I would rather not grab the whole file if it hasn’t changed. I was surprised to find out that the file seems to be generated on the fly on every access as both the Last-Modified and Etags headers apparently update on every access regardless of any changes. And they look like they don’t use compression either. Seems to me that the CHP itself is not worried about excess traffic or load.

This whole exercise took about an hour, give or take, and then a few minutes here and there for tweaking, and of course writing this blog post.

DSL Outage

So lectroid.net seems to be back. Apparently AT&T mistakenly disconnected a few phone lines at my ISP and this included their residential DSL customers (that would be me) as well as their office phones.

What is it about losing phone connections this week?

This meant that for my internet fix, I was reduced to GPRS access via a bluetooth connection to my mobile phone. You know how people are bitching because they say that iPhones are slow because of AT&T’s slow EDGE network? Well GPRS is the predecessor to EDGE, that’s right, it’s slower. And I don’t have a flat data rate either. Blech.

Anyway, my ISP actually called all their DSL customers because with their DSL down and their phone lines disconnected folks were calling and getting, “Doo Daa Deep - We’re sorry the number you have dialed has been disconnected…” which as you can imagine freaked a lot of people out.

(I knew what was up because I hit their status pages via GPRS ;))

Anyway, we’re back.

Call a plumber, quick!

This week was gonna be a tough one, no matter what. My company was launching a major update to one of our systems at The Modesto Bee and so a gaggle of us were on site and were planning to spend the night when…

A really bad day...

“Um, where did Fresno go?”

Suddenly all the systems at The Fresno Bee dropped offline… followed by all the Fresno staffers I have in my IM buddy list disappearing. One of our guys was on the phone to someone down there and said, “I heard the fire alarm and then the line went dead.”

Holy crap!

It turns out that a fire sprinkler pretty much blew apart and flooded a small room where all the network and phones came into the building.

I wound up driving down that night because with the network out web updates — my domain — would be awfully tricky and while they would probably have the network back up sometime that night, if they didn’t by the time we knew for sure it would be too late to drive down and implement any wild hair ideas.

When I got there I immediately set up my laptop on the local network and popped in a Verizon EVDO card. Worst case I’d move updates to my laptop from the internal net and then bring up the EVDO card and move the updates manually to the web staging server.

A bad day...

Then I went to check out the damage. There had been 6″ to 8″ inches of water in this tiny little data room and most of the equipment had been either submerged or completely sprayed with this mucky 25-year-old sprinkler water. When I first walked in I didn’t have my camera, which was too bad because there was muck on the walls and guys were basically laying in it trying to get equipment pulled out to dry it off.

Eeeuu gross

Then I sat in a pretty grim meeting of powerful people. The print operation was unaffected as all the internal systems and networks were fine, they’d still put out a paper. The major concern was the phones, the next morning people would be calling to place ads, to make complaints, to do any amount of business all via the phones. For an hour we discussed a variety of ways to get the phone traffic handled in the event they couldn’t get the phone system back up by morning.

Interestingly what was NOT discussed was the myriad of internet feeds than any newspaper has to put stuff on the web in various places including daily news feeds, classified feeds and the like. By exclusion, I got to see what really mattered.

So after the first edition went to bed, I dutifully juggled the data from one machine to another over the EVDO card and as expected 5 minutes later the network came up. While I called it a night, other folks were still at it using hair dryers to dry the remaining equipment.

Amazingly, they had most systems restored by morning, which is a testament to the hard work a lot of people did (but not me, I was in a hotel room working on the aforementioned system upgrade).

Fun with Facebook

So I kinda sorta completed my first Facebook app: an app to display Google Reader Shared Items.

Yeah I know it’s been done, that’s not the point. I wanted to see how it’s done, and specifically I wanted to see how to update profiles based on some 3rd party action (in this case “sharing” something w/in Google Reader).

I gotta say, it’s pretty neat. In the case of the Shared Items mentioned above you have a cronned script look at the Shared Items RSS feed and make decisions based on what’s new since the last time it looked. The “righter” way to do it, of course, would be to have the actual act of “sharing” an item update Facebook, but that’s for Google to do, not me.

I think that the most interesting aspect of Facebook is that is can serve as a sorta “meta-blog” where all these various web 2.0 thingys (like Twitter, last.fm, del.icio.us and of course blogs) can dump updates so your Friends can see what you’re up to (um, if they… or you… care about such things).

While I see huge applications for this in my chosen profession, this primarily served as an academic exercise satiating only my geek curiosity, mental calisthenics if you will. Now that it’s done — ok, so it’s not done per se, it’s “proof of concept 80% done” which is “done” to me ;) — I have time to read Deathly Hallows.

Home network madness

Yikes, a whole home network redesign! And I only screwed up, er, twice.

You may remember a while back I pontificated about using a 3rd party host for lectroid.net stuff. Well I looked around and finally just gave up on that idea. Face it, after five+ years of running my own stuff, 3rd party hosts suck by comparison.

But I did make some changes:

  • I now have a separate Soekris based firewall/router - I was running the one-machine-does-everything approach, but now I can blow up my web server and still get on the ‘net to google for help.
  • I killed most of my OpenBSD dev boxes - Ok, face it, I’m not porting much anymore, so it was time for the sparc64 and — yes — the vax to go.
  • OpenBSD 4.1 install. No not an upgrade, a whole new install. After 10 or so OpenBSD upgrades on a web/mail server you collect a lot of cruft. Time to decruftify.
  • Web/Email updates - Dovecot 1.0, WordPress 2.2 probably others.
  • Web site cleanup - old stuff like my old javascript pages and such are finally gone. My OpenBSD ports pages too.

As I said, I only blew it twice. Yeah, once on the new firewall I screwed up a rdr rule for DNS. I basically bled my internal DNS to the outside world. That broke lectroid.net for a bit but since I’m such a high-traffic site no one noticed. Then when doing some tweaks on a temp web server I blew up the real one, that kinda gets you rolled over real fast.

Finally though, over the weekend I rolled back onto my real web server (which went flawlessly) and here we are.