• No categories

Psst… There’s more than one election in November

It’s easy to forget the less glamorous races during the intense news cycle of a presidential campaign but it’s important to remember that there are “down ticket” candidates running in this election as well.

Hillsborough’s County Commission is one of the most bizarre elected bodies in existence. Deciding that a giant Confederate Flag near I-4 is free speech while banning GLBT events, for example.

I won’t even go into transit policy or sustainable development. If you live here you’re aware of these things. If you live here and are aware of these local issues (say you commute via bike, perhaps) you should really consider Kevin Beckner.

I’m not making an endorsement, but I will tell you that I voted for this gentleman in the primary (along with 2% of my fellow citizens, which was enough to win, but don’t get me started on turnout) and nothing against Joe Redner, but it’s nice to have someone whose campaign slogan isn’t “You don’t want me but you need me.”

Teleporting Bunnies and Time Travel

Apparently The Casimir Effect is responsible for all the bizarre things that have happened on LOST.


I know, it surprised me too. Especially considering that the Casimir Effect is a phenomenon of quantum mechanics. Not really the kind that makes islands vanish either. Never tested it though, myself, so who can say?

Speaking of time travel though, I have travelled through 6 months since I sat a Nashua Pizzaria and watched Barack Obama win the Iowa caucuses.

Last night was a bit of deja vu as I consumed my delicious Bison Burger and watched the utterly less suspenseful and less exultant nomination victory(?) last night.

Weirdest SQL Queries

DESCRIBE responsibility;


| Field | Type | Null | Key | Default | Extra |


| fuserid | int(10) unsigned | NO | PRI | NULL | |

| faeid | int(10) unsigned | NO | PRI | NULL | |


2 rows in set (0.21 sec)

Google bridges the Offline AJAX Gap

It’s the ugly limitation of AJAX apps as we know them. If you are in one of the few places left on Earth without Internet access, the pervasive everywhere-app is suddenly non-functional. After all, the logic of the program lives on the Internet, and even with sophisticated AJAX apps, you are still frequently exchanging pieces of data from client->server and displaying the results, nothing revolutionary there.

Now there are those who would suggest that the vestigial offline mode is passe; a relic of the days before it became a MANs world. However, in their quest to take over the desktop application space, Google has decided that offline client storage is a noble endeavor. In their infinite wisdom they have created Google Gears, an easy way to make an AJAX app just as useful when disconnected as it is when connected. So you can edit your Google Document while on an airplane without firing up something expensive like Word. We’ll see where it goes, but my hunch says this is the coolest thing since AJAX/COMET made responsive web apps a reality.

You know you want to

If anyone out there wants to buy me a database server, it would be a great help to a budding ASP.

I’ve been working on this for a while now, with varying results.

Occasionally, I’ve revealed part of its top-secret functionality.

There has been the occasional boast-and-taunt. Oh, if you’re still developing synchronous web applications: I’m finally making fun of you now.

Foreign Policy in Tampa

Tony Lake, foreign policy adviser for BHO, is coming to town Wednesday, June 6th to have lunch and talk foreign affairs with Obama supporters.

It’s a bigger ticket event than the last one, but it looks smaller and more focused than the last one. If I can find the dough I’m going to try and show up. If you want an invite, give me a shout and I’ll think about it. ;-)

A Full 8 Hours

I’m rapidly on my way to a complete night of sleep. The final switchover to a new router/proxy at the office has finally gone through seamlessly, and all of our VoIP phones have been working now with a decent quality of service for almost 16 hours (!)

It’s a decent sized network with a few mission-critical services that I’m managing with little exception entirely solo, in addition to my normal marketing workload. I was explaining yesterday to a friend of mine that this amounts to two full-time jobs worth of work, at least during build out.

So, some tech happenings: Dell is selling desktops and laptops with Ubuntu, which Steven reminds us that we all use already anyway.

Oh, and guess who has a radio show now?

Farewell to Verizon

I find myself, at 1 am, realizing that I haven’t blogged about anything for going on two months and I should probably explain my absence.

It turns out my skill set of Linux administration, PHP programming, generic web design, and general geekery is suddenly in demand more than it used to be. I’ve been spending much of the last two months rolling out a Asterisk IP-PBX for my office. As I delve deeper into the world of SIP trunks and ITSP service, I keep finding more and more useful things to do with it. Here’s a cool example:

Say you shell out a monthly fee to AT&T for unlimited data on your cell phone. We’ll assume for a second that you get some decent bandwidth on this. Let’s say you’re short on peak minutes. In that case, Fring is here to help. Fring lets you place VoIP calls over your data enabled cell phone. You use only your data path and your call never uses the cellular phone network itself, so you don’t incur any minute-by-minute charges. Mobile VoIP = Free Cell phone minutes. If that’s not cool, I don’t know what is.

PHP is off to the races

It appears that I have something in common with The Chipmunk Ninja.

Yesterday, to my great horror, data was seemingly vanishing from my application, returning to inaccurate states, and generally behaving badly.

What’s worse, the error was intermittent and seemingly random. Like a quantum state phenomenon, when I looked closely at the error, it vanished. After a full day of throwing code against the wall and generally beating my head against the same wall, I discovered that one of my AJAX requests was finishing late and flushing its session data to disk after another request had been called, overwriting the later data.

In programming terminology, this is called a race condition. It occurs in situations where two threads access one area of shared memory. Unless the two threads are externally synchronized (with a Semaphore for example) there is no way of predicting which thread will reach the memory first, hence: a race.

In an AJAX application, XMLHttpRequests work a lot like threads, and session data works quite a bit like shared memory. The problem with synchronization is that it really takes the A out of AJAX, leaving you with SJAX, which isn’t that impressive. The only real solution that I’ve seen basically boils down to “don’t do that again” Conditions where a race could exist should be sequenced by the client-side interface if the race exists on the client, ie. number your XML/JSON responses with sequence numbers so the client can make sense of it all. On the server-side, don’t share session variables between two racing “threads”. It’s really this simple, don’t trust session data when using AJAX.

Do we get the retinal advertising too?

It was 9 months ago that I fell in love with XGL on Linux for desktop productivity. Shortly afterward Beryl raised the bar on the technology. Vista is here, so the rest of the world (that hasn’t been using Mac) is finally catching up. It appears the age of eye candy is here.

So, if you’re ready for the next big thing, check out the multi-point touchscreens that will soon be used by John Anderton and Precrime.

Wow┬«. I think that means it’s time for the rest of the world to play catch-up again