Fake geek girls

July 25, 2013

The longer the ‘fake geek girls’ meme continues, the more I’m persuaded that this is basically a case of people talking right past each other. Let me see if I can straighten this out…

Firstly, geek girls are my favorite people. I married one. I have another for a sister and scores as friends. My very favorite people, no doubt. You might be the impression this is an immunity statement (some of my best friends are black!) and perhaps it is, because every time somebody says “there’s no such thing as a fake geek girl” I have to bite my tongue to keep from saying

“Of course there is.”

And fake geek boys, too. We call such people poseurs, and every subculture has them. I’ve seen them with my own eyes. When I worked in a music store, you’d see them quite frequently, people wearing shirts for bands they had literally never listened to. You see them at concerts, name dropping from some crib sheet of band names they knew were hip, but had never listened to. In comic book stores it was the same routine. And later, when computers and design became suitably fashionable, I saw it again.

Sometimes the poseurs like the crowd, sometimes the clothes, sometimes the prospective romantic partners. There are lots of reasons to fake it. Most of us have faked greater interest in or knowledge of something than we have to get in with a certain crowd, or to get a date, or just as a change of scene. It happens, to boys and girls alike.

But when it happens in a hobby or a scene which is not gender balanced, it gets noticed. Anybody in the minority sticks out, people engage them out of genuine excitement to see somebody different from the usual demographic. As a male who is interested in weaving, I’ve often received a chilly reception in fiber arts circles, and the assumption has often been made and occasionally stated outright that I’m just feigning my interest to get sex. As it happens, I have a fair chunk of fiber knowledge, and that accusation rarely holds up. But it gets made for a reason. People fake it all the time. This brings me to my main point…

We must embrace and mentor the fakes among us.

If they’re trying to get an in, or get geek cred, there’s a reason for it. They like something about our scene. Find out what it is. Nurture it. Teach them. Help them find the good stuff.

Most of the time, a fake geek is just a real geek who hasn’t found the good stuff yet.

We were all fakers, before we knew stuff.

Yes, Even if he’s a Nazi.

July 23, 2013

So there’s been a lot of hoopla over a Microsoft call center employee who got fired for hanging up on a customer with an anti-semitic handle on his account. You can go read the story if you wish, the account is telling in a number of ways, but the discussion at BoingBoing (asit’s one might expect at BoingBoing) has been rather of the pearl clutching write-to-her-employer-and-complain variety. I should know better than to be surprised by this by now, but still, my immediate reaction was “Of COURSE she was fired.” – let me tell you why.

For a very long time, I worked at a music store. As with any service job, you quickly realize many people are jerks. Some of them are jerks to get a rise out of you, some of them can’t help it. Some of them are jerks to impress their pack. There is a diverse rainbow of jerkiness which you are exposed to, from the pretentious jerk (frequently purchased : quazi-obscure punk), to the wannabe thug jerk (frequently purchased : ‘hardcore’ rap), to the man hating jerks (frequently purchased : Paula Cole), woman hating jerks (again with the hardcore rap), jerks who hated black people (lots of metal heads, here, and the occasional country fan), and jerks who hated white people (You guessed it : hardcore rap) every imaginable kind of jerk was represented. My job was to sell music to them all. That was my entire job, it was not my job to judge them, or the crappy music they were buying. My job was to help them find it, and ring them up at the register. Simple. If you’re going to serve the public, you have to start with an understanding that many members of the public are jerks. Every imaginable hue of jerk. Even people who aren’t jerks to other people will frequently be jerks to retail employees, and do you know why?

Because it’s your job to take care of them anyway.

That’s not a job for everybody, and I have no problem with anybody who can’t deal with it. In fact, I know from training and managing people that LOTS of people can’t deal with that. Lots of them don’t know it until they’re in the situation. Fine. But if you fail to do your job, you’re going to get fired. Your job includes taking care of jerks. It really is that simple.


But this guy isn’t just a jerk, he’s a Nazi!

Maybe. Though if every guy who ever said a racist thing on an xbox console was actually a committed racist not just a socially maladapted twerp trying to get a rise out of people, the world would look pretty different. Don’t get me wrong, plenty of real life racists in the world, even a few proper neo-nazis, but I wouldn’t take somebody’s gamer handle as persuasive evidence that he’s anything but a dick. Even if he were a Nazi, your job is to take care of him. You do that job, or you don’t.


Nobody has a right to tech support if they’re offensive or awful human beings.

That’s true. Microsoft can decide not to serve them, unless they belong to a legally protected class. But shockingly, they haven’t given the authority to decide who deserves tech support to the folks manning the phone lines. Microsoft can decide not to serve anybody it likes, but if you take it upon yourself to decide for your employer when that isn’t your job, you can’t be surprised when they fire you for making decisions which are over your pay grade. Simple.


The operator is entitled to an act of conscience. 

Absolutely. But the operator is not entitled to be shielded from the consequences of that act. If acts of conscience were without any sacrifice, they’d be easy. I’ve left jobs for ethical reasons before, and I’ve risked losing my job over ethical stands as well. It’s difficult, it sucks, but if you end up on the wrong side of it, you can’t pretend your employer was obligated to agree with you. They aren’t.


But this is hate speech! isn’t it our job to drive it out of public discourse?

As a phone tech support operator? No, it’s not. Of course not. You weren’t hired to do social activism on the clock, what the hell is wrong with you? You’re a representative of the company, be an activist on your own time. If you aren’t comfortable with the company’s ethics, you need to find another job. Easier said than done, I realize, but ethical choices are like that.


Hate speech should not be tolerated anywhere!

Balderdash. The solution to the expression of hateful, ludicrous, dangerous, harmful ideas is the expression of better ideas. Nobody ever killed a bad idea by turning it into a taboo.

If you don’t believe in the freedom to express offensive ideas, you don’t believe in freedom of expression.

If Microsoft decides its gaming network will not permit that kind of expression, I have no objection to that, it’s their network. They aren’t obligated to publish anything they don’t want to. But anybody who thinks the solution to bad ideas is suppression rather than counter argument needs to read more history and anybody who thinks hanging up on some twerp with an offensive handle on a computer game rather than transferring his call in a professional manner is some kind of victory for the forces of freedom and tolerance needs a tall cold glass of perspective.


But every little bit counts.

No, it doesn’t.

If the man is not a neo-nazi but just a twerp trying to get a rise out of people, he certainly won’t stop because tech support hangs up on him.

If the man is a neo-nazi, he certainly won’t stop because tech support hangs up on him.

At the end of the day, he’s the same jerk he was before the phone call. The stakes were never that high.


In conclusion…

Your job is to take care of the customer, if you don’t do your job, they’ll fire you. How hard is this? Probably harder than you think, but that doesn’t mean you shouldn’t get fired for screwing it up.

I got yer blinky LED’s RIGHT HERE…

November 11, 2012

From time to time, a project idea is born fully formed. This was one of those. As happens from time to time, I blame this whole project on Adafruit.

Maybe I’d better start at the beginning. One of the organs I maintain is at Appalachian State University, in Boone NC.

The Casavant organ at ASU

The Casavant organ at ASU

She’s a rather stately animal, is she not? (Since you asked, no, not all organs are female, but this one is. That said, you should never anthropomorphize instruments; they hate that.) The fellow who runs the organ studio at ASU is a most excellent co-conspirator for projects which involve Good Fun. For example, the school hosts a Halloween Monster Concert every year with audience sing-alongs, costume contests, spooky decorations and the whole bit. It’s become a school institution, and they pack the house every year.

Spooky Rehearsal

Spooky Rehearsal

Now there is a small stream of interesting parts for which I have no immediate application which nevertheless flow across my lab bench to be tested because you never know what you may need at some point, and I’m an irrepressible tinker. One of these was the Adafruit breakout board for the PCA9685 which is an IC by NXP which generates PWM signals for driving servos and fading LEDs. Their description page for the product had something which stuck in my brain…

“You can even chain up 62 breakouts to control up to 992 PWM outputs (which we would really like to see since it would be glorious)”

So there was a little gremlin in my brain saying “We need to do a gigantic LED project!” and then all at once, it came to me. The organ needs theatrical lighting effects for Halloween. The problem is, the organ is nearly three stories tall, lighting it up would require a lot of LEDs.

A lot of LEDs.

A lot of LEDs.

Enter : A lot of LEDs. Sixteen full 5 meter reels of 5050 package RGB LEDs. So we have 1152 watts of LED strip here, how are we going to break it up? Let’s make it simple : One controllable output zone (which is to say, three PWM outputs, Red-Green-Blue) per reel.

So that makes three PCA9685 breakouts, 48 output transistors, a mess of wiring; in short this is not going on a breadboard, or even perfboard. We needed a purpose made board, and because this is Halloween, it should be spooky.


I was originally going to call it the “Boogie Board”… Get it? aww, never mind.

At this point, a schematic would be pretty much redundant. At center you’ve got an Atmega644P, then three PCA9685, a little power supply, and a boatload of STP16NF06 power MOSFETs on the output side. Spooky squiggly traces optional.

All Built Up

Humming tunes from “Nightmare Before Christmas” makes all the soldering go faster.

Now there is one more issue to consider: current. 1152 watts is a lot, and it’s more than is any fun to deal with on a PCB. That much current switching at these frequencies also starts to resemble a lousy radio transmitter for noise, so I don’t deal with much of the current on the board. You might assume that because an LED strip has four pins (Anode, R, G, B) that these four pin wiring connectors attach to them directly, but that’s actually not so. The source pins of each group of three output transistors are tied together with a big fat trace and brought out on one of those pins to a wire, and it joins the common anode wire from the LED strip and they go down to the power supply as discrete wires. Like so…

In the end, we are all connected…

This keeps the big currents almost entirely off the board, which is a Good Thing.

The strips themselves have their own attendant problems. We decided to stick them, doubled up, onto 4′ long sticks of flat moulding we got for cheap at the home improvement store.


A new Halloween Tradition, the “OH GOD, MY EYES!”-O-LANTERN.

There is, actually, NO time efficient way to tie the strips together, you just have to solder wires. Bummer, Drag. It took forever.

PROTIP : if you’re doing a project like this, you should only get the waterproof strip if you need it to be waterproof. cleaning the silicone gook off the pads of the waterproof stuff is no fun, also it STINKS when they warm up.

Next question : Where do you get 1152 watts of decent 12VDC? Well you can get it out of PC Power Supplies, but you need to be Very Choosy. Good modern PC power supplies above 600 Watts frequently drive one massive 12V rail from which the other voltages in a PC are all derived, this is the kind you want. you DON’T want the kind which is all regulated off the 5V rail. We used a pair of Corsair TX750 V2 – they stayed within 3% of the stated voltage regardless of load. Highly recommended!

Testing, Testing, AGH! I’M BLIND!

PROTIP : Four conductor thermostat wire is great for wiring up LED strips. Four conductors at sufficient gauge to support a whole 5M reel on each one. Much cheaper than the stuff sold specifically for the job, and shielded!

During testing, we were afraid we wouldn’t have enough light output. It’s difficult to gauge such things in very different rooms.

Testing in the room

Yeah. Light output didn’t turn out to be a problem.


The software was pretty straight forward, the system is controlled over serial link, a command is the destination value for each channel followed by the number of frames it should take to fade to that color. The Atmega proccesses frames at a pre-determined rate by polling the clock. The arduino Map function saved me a ton of coding time working out the intermediate values in the fades.

Stuff that Broke :

The original plan had been to run the serial through an Xbee radio to control it from out in the auditorium someplace, or in the booth. As it turns out, the switching noise from all that PWM completely swamped the radio, reducing its effective range to about 9 inches. In a pinch for time, I hardwired the serial line with an FTDI Buddy, left the Macbook in the organ, and remote controlled it with the iPad over an ad-hoc wireless network. Apparently those radios are a lot more robust than XBees. Good to know.

The adhesive on the backs of the LED strips is kinda crap. If the cable pulls on them, at all, they’ll peel right up. This was the cause of much heartbreak.

Don’t cheap out on connectors. Just…Really, Don’t.

So, on the Big day, things wen’t pretty well.


Show time!

The first cue is with the house lights up, and even against that competition, the system looks pretty damn cool. But when the house lights went down, that’s when things got Properly Sexy.

Now we’re talking…

About six cues into the concert, after the picture you see here was when the system became totally unresponsive. The remote control link was working fine, but the PCB was no longer responding to serial commands.


It pays to be able to keep calm and analytical during these moments and quietly troubleshoot while people wonder why the lights have stopped changing. So here’s the other Thing That Broke.

The serial protocol is totally fragile. This is pure sloppiness on my part, I was in a hurry. It waits for 49 bytes, reads them all, parses them into a command and then goes on with business. This, as you’ve probably already guessed, is prone to going out of sync if, say, noise causes an extra byte to go down the wire. Suddenly it gets stuck part-way into a frame waiting for the rest.

I strongly suspected this is what had gone wrong. I didn’t have a remote reset, so what to do? Well I closed the serial port on my control application and fired up a straight serial terminal and typed the same letter repeatedly every quarter second or so and watched the lights. Once the out-of-sync command buffer filled up to 49 bytes of my typed-in letters, the lights changed (mostly to gray, since I’d been repeating the same character) and I could restart the control app and take control of the system back. This was a clever bit of problem solving, but it should never have been necessary. If you’re going to make something controlled over serial, you should implement a proper protocol with a checksum and the capacity to bail out of a packet which is obviously malformed and start over again. Lesson learned.

Still looks awesome

It still looks awesome.

So what about next year?

Well this design worked pretty well, but it has serious weak spots. I think, all things being equal, I’d want a more distributed system. In the future I think I’ll make small cards which solder directly onto the strips and decode/pwm/power each strip off a common power and RS485 signal chain. An ATTINY2313 would be more than sufficient for this job. You could feed the board 12V and serial and assign each one a unique number. This would at least keep troubles segregated, which in an application like this is probably for the best. Probably a bit more expensive, probably a lot more reliable. Certainly more straightforward to wire up!

Next year, I think we need twice as many LEDs. Maybe a bit more.


It’s not easy being green. For one thing, auto white balance tends to make you less green! :)

Epilog Laser – Lighted Carriage hack.

February 13, 2012

I love my Epilog laser! but it is not without its quirks.

The first and biggest quirk (are you listening Epilog?) Is the lack of proper Mac support. There is simply no excuse for that kind of nonsense, but I digress…

The second biggest quirk of the Epilog is that it can be very hard to see what’s happening on the bed when cutting and engraving. Often I have found myself shining flashlights or plug-in trouble lights through the viewing port at the top trying to scrutinize the goings-on below.

That never actually works, because the area you most want to illuminate is the area being worked on, and unsurprisingly, that area is right below the moving optics carriage and therefore perpetually in shadow.

Well hell, I bought my engraver used and never enjoyed a warrantee, it’s time to hack that puppy!

If you want to illuminate the space immediately underneath the carriage, the obvious place to put your light source is underneath the carriage. To get away with this without colliding with any moving parts, you need a pretty small light source. Enter my favorite LED strip. I have a 12×16 engraver, and this strip just happens to be precisely the right width to cover the entire rail. Woot! it costs $13 bucks and it runs on a straight 12V with no support circuitry to speak of. Surely there’s 12V inside the Epilog somewhere, right?

Wrong. Observe the Epilog with the side cover removed…

See that multi-tap power supply at the bottom? It supplies 3.3V 5V and 48V, but no 12V. You could get all fancy and add internal regulators or the like, but I wanted to be minimally invasive, so I ran a cable out of the vent openings seen on the bottom and secured it with a cable tie.

The cable seen here is 14 gauge stranded two conductor speaker wire which is gross overkill, but what I had on-hand in stranded (more on that in a minute).

From this point, the routing is more complex, the trick is to route it along the inside of the curve of the air hose up to the carriage, cable tying it to the air hose at intervals. It’s very important to test all your zip tie locations and other fiddly business by moving the carriage along it’s entire travel, as collisions and binds may not be obvious from only one position. Since the power cable gets moved a lot, you’ll want a stranded cable to supply it power. It’ll end up looking something like this.

Now that the part of the cable that moves is over, you can splice in a pair of smaller gauge solid core wires to connect to your LED strip. Soldering wires onto the LED strip seems trickier than it is, here’sthe best way I’ve found so far. Take a small wire (about the gauge of hookup wire) strip a bit off the end and fold it over into a hook like so.

Solder the two sides of the hook together to give yourself a little tab of solder, like this.

The resulting blobby is easy to solder onto the tin tabs of the LED strip. You can use either side, it doesn’t matter.

Peel the adhesive back off your LED strip, slap it on the bottom of the rail, splice and heat shrink your connections, then add a DC power supply and switch to taste.

Tada! If you do any experimental work with your laser, this light makes your life much easier.

Hey Epilog, how about making this standard equipment? And better Mac support while you’re at it!


An Autumn Spin

October 15, 2011

After a long absence from the “saddle” She Who Must be Obeyed and I took a long ride along the Kingsport Greenbelt last sunday (which she wrote up on her blog here) and it was very illuminating. Here are some things I learned, in no particular order.

Terrain counts. This may seem like a no brainer, but the territory surrounding my home is all steep hills, when you get out on a Multi-Use Trail like the Greenbelt, where it’s nearly flat, it’s quite an astonishing difference. Instead of struggling may way up lots of grades and being wrung out after only a few miles, I finished 14 feeling like I could have gone all day. This reveals a less obvious point about recumbent tricycles – just being in the thing is “free” – which is to say it puts no strain on your wrists, butt or back to ride. The only effort you pay for is the effort you put into moving from point A to point B. On a level grade, even unconditioned as I am, it feels like I could ride forever. You can see why recumbent trikes are so popular for touring.

Linkage Steering is great for Cruising. I’m not a speed demon, I like casual riding, and indirect steering is fantastic for that purpose. Because it’s very stable, one light hand draped on the steering assembly is enough to keep me on the path. This approach is very relaxing, and doesn’t feel like it has to be constantly fiddled with just to stay on course.

Nobody in Eastern TN seems to have ever seen a recumbent trike before and it gets a lot of attention. Particularly on a path shared by other cyclists of various stripes and pedestrians, you will not escape notice. Reactions range from smiles and waves to pointing to open mouthed gaping. Children of all ages are particularly enthralled, and I am conscious as I ride that I am expanding Christmas lists and starting begging and whining campaigns as I do so. Sorry about that. :)

In the autumn, the path is littered with walnuts. It is impossible to dodge them all.

The Inversion

August 9, 2011

So Matt Neuberg over at the outstanding Apple news site TidBITS, has written an article about the new OSX Lion application management regime called “Lion is a Quitter.” His basic complaint is that Lion can (with the support of an app) shut an app down, preserving it’s state for a fast relaunch, if that app has no visible windows and isn’t used for a certain period of time. This takes an element of control that he used to have over applications out of his hands and gives it to the operating system to do, in line with what he terms the new “nanny state” attitude of Lion generally.

To the extent to which I can also be an anal control freak, I sympathize with his argument. He’s missing the big picture however, when he says that Apple has enacted this change in order to make OSX more like iOS. The reason for changes like this runs much deeper than that.

Those of us who have put substantial investments into learning all the nitty gritty of how computers work on the inside are quite accustomed to a world where the users are strangers in a specialists’ world. The thing that makes Apple the most radical and successful company in the technology industry is that they think that paradigm should be inverted.

Apple thinks that power users should be the ones who have to work uphill and that regular users should have clear sailing, rather than the other way around. This is the attitude which subconsciously turns engineers and technology geeks and journalists against them. Apple isn’t trying to make life easier for people who do things from the Terminal, they’re trying to make life easier for people who wouldn’t know how to use the terminal.

In the drooling infancy of GUI multitasking operating systems, a set of invisible lists was made. In one column was the list of things the user interacted with directly, and in another column the things that were handled transparently by the operating system. The organization of the file system, process management, versioning, installation, uninstallation and updating of applications were in. Memory management, interrupt locations (and hardware matters generally) were typically out. This mix was largely determined by the computing resources available to the operating system and by extension, it’s capacity to make informed decisions in the matters at hand. Despite an almost embarrassing multiplication of hardware resources however, that mix hasn’t changed substantially in decades. Oh yes, here and there have seen tiny improvements, but overall, the sort  of things you had to explain to somebody who’d never used a computer before haven’t really changed much.

Apple’s list of things a regular user should be interacting with is much shorter. The reason for this is simple; users aren’t using computers to interact with the file system, launch and close applications, keep track of file revisions, or update applications. Normal users are at a computer to get things done, either for enjoyment or for work. Nobody gets paid to manipulate the file system or launch and close applications and nobody does it for love. We do these things because they are the complications and obstacles between us and the actual task we are attempting to complete. Apple thinks they can take most of those intermediate steps away, or replace them with something which is more intuitive and faster to use.

This is precisely as it should be. Performing easy tasks with a computer should be easy, and performing complex tasks should be difficult. The typical users outnumber the power users thousands to one, why would you optimize an operating system for a minority use case? The answer to that question is that operating systems are built entirely by the minority in question. Because power users build operating systems, they tend to be built more for those kinds of users than the more common kind.

I think that Apple’s version of The List is the biggest gamble in the history of desktop computing. Apple intends to entirely re-invent what happens when you sit at a computer, to a level where you spend almost no time operating the machine, and almost all the time performing the task you need the machine for.

Apple sees a world where computers are transparent enough to need virtually no training, and where only the people who need to do complex work should have to grok complex concepts. This is an inherently disruptive exercise, and the people most disrupted will be those who have an investment in understanding the underpinnings of computing. That mastery will never be valued in the same way again. The days when geeks imagined that the world would sort itself into a neat technocracy with the most knowledgeable at the top are long gone. If Apple gets their way, this odd technical specialization will be no more or less important than any other specialization.

In short, Mr. Neuberg, get used to it – This is just the beginning.

The Professional Mourner

August 4, 2011

There’s been no lack of commentary on David Drummond’s public letter to Apple, but I thought I might ad my two cents. Are you ready? Here goes…


Cry me a freaking river.


Before we all shed a tear for how unfair everybody is being to Android, let’s all remember what Android actually is.

Android is the technology industry equivalent of a suicide bomb. Google has elected to throw vast amounts of money made in other industries into a fire to freely give away a smartphone platform positioned opposite (and largely derivative of) the for-profit efforts of the real innovators in the industry. They do this in an effort to implode the profitability of those players in order to have monopoly position in the smoldering ruins that result. Android is not designed to compete against other platforms, it is designed to collapse them, that’s why it’s free. Google is losing billions to developing android specifically to destroy the other companies in the market by undermining their profitability.

That is some serious hardball.

For the record, I don’t have any ethical qualms about Google’s strategy here, but you simply don’t get to adopt a scorched earth policy and burn buildings full of money in an attempt to keep your opponents from being able to make a profit and then change into your baby diaper to complain that they’re not being fair.

The Enemy of the Good

August 3, 2011

I’ve pursued programming as a hobby and occasional sideline income for nearly twenty years. Like a skipping stone, I go long distances between needing to do any development, only occasionally dipping into the water. This is not an efficient way to be a programmer, but I’m not a programmer, I’m a renaissance geek – for me programming is a means not an end.

Having to re-learn the current state of the art every so often for a specific project without staying immersed in the development of the technologies involved has given me perspective on a few issues that everyday professional programmers are often too close to see.

Programming is getting harder. 

Because necessity is always the mother of my coding inventions, I typically re-enter the programming world running and with an eye towards finding the fastest route from a blank screen to the (typically not very complicated) application in my head. In the last 10 years especially, I’ve noticed a trend; every time I set out with a newer toolset to build a simple project, it’s harder to do the same simple stuff than the previous time. Each time the tools update, the simple stuff gets harder. It takes more lines of code to do the same job, and the code is more obtuse. Why should this be?

Nearly seven years ago, I developed a data driven website for a friend using the then-new Ruby on Rails platform. Any of you who were involved with Rails at that time remember the original screencast, wherein a functional web application (a blog) was created from a blank screen, right before your eyes, with a handful of very simple code, and in very short order. This was a revolution! Sign me up! Very quickly, I had developed the app, and all was well. A few years later, time came to update the app, and by this time Rails had graduated a whole version number. Maybe it was time to re-work it for the current version, I thought. Since so much had changed, I decided to go to the RoR website and look at the current version of the famous “blog screencast” – It was a complete mess.

Suddenly, creating the same simple web app wasn’t simple anymore. Vast chunks of prepared code were being pasted in to make the demo as quick as the first demo had been typing all the code from scratch. What the hell happened?

The same thing that happened to VisualBasic between 6.0 and VisualBasic.NET -

Some professional programmer decided it needed to be able to be all things to all people and made it so “powerful” that it wasn’t usable anymore.

Programming languages and frameworks are hard to create, so they are written by quite advanced programmers. Advanced programmers are surrounded by advanced programming work in demanding environments, and that makes them want to develop all their tools for that environment. This brings me to my next observation…

Professionals have a distorted definition of Good.

If you ask a typical cross section of professional developers about the two framework/languages I just mentioned (VisualBasic and Ruby on Rails) chances are most of them will tell you they suck. They’ll also say this about Arduino, Fritzing, RealStudio, Processing, Hypercard (Yes, I’m old in computer years) and any other simple tool for doing simple rapid development. They’ve seen how these things are implemented under the hood, they’ll say, and it’s a complete mess! What a horror show they’ll describe; it’s inefficient, lacks power and has poor flexibility.

They’re not wrong exactly, they just don’t live in the same world occupied by the rest of us. The longer you practice programming the better you get at it. The better you get at it the more complex the projects you end up working on. By the time you are a proper professional, you are working to standards which are so different from what rapid development packages are ostensibly made for that there is virtually no resemblance.

What they are really saying is that those tools would suck for what they do all day. Invariably, what they do all day is heavy stuff. Heavy work requires heavy toolchains, and they judge all toolchains by those standards.

But judging rapid development systems by high-end development standards is like judging street cars by race track standards. Yes it lacks hundreds of horsepower and carbon ceramic brakes, but since I use it to buy groceries and haul myself to the office, so what?

Yes, rapid development tools have inefficient implementation, don’t scale well, and can’t do everything but since I’m not developing inertial guidance systems for moon rockets or hosting solutions for amazon.com, so what?

These “failings” don’t actually matter in most real world applications, for one simple reason:

Most needful applications are simple.

Anybody who’s worked in the white collar world long enough has encountered a variation of the Dire Spreadsheet. You know the kind I mean, the quivering 19 sheet mass of heavy duty formulas and barely literate scripting which Somebody Who Knew Excel created to do (or nearly do) a job that really needed to be done by either a simple database or a simple piece of custom software.

This is the space in which most software for the small and medium business is written (or rather, should be written). The band of problems in between the capabilities of the spreadsheet or scripted-augmented PDF form but beneath proper heavy duty enterprise development is where the vast majority of the need for custom software exists in the business world. Moreover, for every Dire Spreadsheet or Really Bad Access Database that attempts to fill one of those voids, there are a dozen more companies who simply give repetitive data processing and storage work to human beings with pens and paper forms or perpetually updated word processing documents. Tens of billions of dollars in productivity are lost to this “Undeveloped Band” every year.

These applications-in-potentiâ are child’s play by serious programming standards. They’re so simple, in fact, that there’s no money in creating them even for single independent developers.  With a simple language and development tools, the businesses themselves could plug these holes with perfectly serviceable software. Those tools are thin on the ground, because programming tools are made by professional programmers with professional expectations to match. Institutions without full time developers can’t meet the technical barriers of entry to tools designed for full time programmers and they can’t afford to hire the folks who can. This brings us to the final point :

Most needful software never gets developed at all. 

The promise of the computer in the workplace is largely stillborn. Every day, in nearly every enterprise, people waste human resources on problems that computers are better at solving, all for lack of customized software solutions.

Somewhere, a younger man or woman than I should be looking to solve this problem. They should be looking to turn the Undeveloped Band into a fortune, and a changed world. They should be looking to put software development into the hands of non professionals in the same way that layout was put into the hands of non professionals by desktop publishing.

I hope I get to see it.

Minority Report : Change

May 27, 2011

“This law – the very purpose of which was to protect us – [is] also threatening to violate our rights and freedoms as Americans. … We have been forced to consider a piece of rushed legislation that fails to address the concerns of members of both parties as well as the American people. … Giving law enforcement the tools they need to investigate suspicious activity is one thing – and it’s the right thing – but doing it without any real oversight seriously jeopardizes the rights of all Americans and the ideals America stands for.”
-Senator Barack Obama, December 15, 2005

“The bottom line is that if these provisions are allowed to lapse, even temporarily, the nation will be less safe. … We cannot allow political brinksmanship to put our nation’s security at risk. Congress must pass these provisions of FISA immediately.”
-Obama Administration, May 26, 2011


In this matter, I much preferred the President when he was a Senator.

And there was light!

May 17, 2011

Night-time riding on a recumbent trike has some specific safety concerns. Because the road-footprint of the trike is much wider than drivers expect from a bicycle, the edges need to be clearly marked to avoid being clipped. Also, in country terrain like the kind I ride in, putting a lot of light ahead can be critical to avoid hitting fallen tree debris, roadkills, pot holes, and other undesirables. This all calls for a permanently wired lighting system with a rechargeable power source.

Here’s what I did and how I did it.

Read the rest of this entry »