The Last Thing You Do

A few years ago, a friend of mine was at a funeral. There’s a part of the ritual in which you sit in climate-controlled comfort and gaze upon the corpse, then there’s a procession from that place to the plot where those remains will be interred. Well, slippery roads, a steep hill, an idiot in an SUV, etc., led to the hearse getting t-boned in dramatic fashion. Before the procession could proceed, a new corpse-buggy had to be called for.

It arrived, and that’s when the powers that be discovered that the coffin itself had also been damaged. The seals had been broken. The body had to be taken back to the mortuary to be reboxed. Why? Because the mortal remains of a fine person had been converted to toxic waste, so people could look at the dead person before those remains went into the ground. Really.

What an insult to the soil. It angers me to think that my body may not in its own turn nourish the planet that sustained it. I want to be fertilizer. I should be fertilizer. Run me through a wood chipper, dump me out over the roots of an apple tree, and I promise you I will do my best to make those apples taste better than any others.

Cremation is less of an insult to our planet, I suppose, but it’s hardly carbon-neutral.

I was mighty happy the other day when after a high-fiber meal I had more time for Facebook than usual and I came across a link to this: What to do When You’re Dead: Science Edition. Here’s your chance to make the last thing you do something constructive. Apparently liquid nitrogen is better than a wood chipper. While less dramatic, I’m good with that choice. Note that launching yourself into space is not terribly environmentally sensitive, either, what with the rocket exhaust injected directly into the ozone layer. But it would be cool to be a meteor. With the proper preparation, your friends could watch you streak across the sky and vanish into nothingness. That would be a hell of a way to leave the building.

But whether you choose any of those alternatives or come up with one of your own, think about it: What do you want that last thing you do to say about you?

2

A Clockwork Octogenarian

I’ve been riding to work long enough now that I recognize a few of the faces I meet. One of those I see almost every day is an elderly woman. She seems healthy, if a little thinner than her doctor would no doubt prefer, but time takes its toll on even the best of us, and I would be quite surprised if she were less than eighty years old.

Each day I pass her going the other direction. Depending on how late I’m running, this takes place over a roughly five-mile stretch of my commute (she is much more punctual than I am). So it’s safe to conclude she rides east at least five miles every weekday. I think it’s safe to assume she also rides a similar distance the other way. That’s a nice, steady 50 miles or more each week.

While I have no knowledge of the reasons she bikes (for all I know she’s not allowed to drive anymore), it makes me happy to see her out there. I hope I’ll still be in the saddle thirty years hence.

2

Perfect Marketing

I’m sitting in a bar right now, pooping out NaNoWords, and Thursday Night Football is happening all around me. Another day I will tell you how I personally cursed the Oakland Raiders, and how I’m not sorry and you shouldn’t expect the curse to be lifted any time soon. But not tonight. This episode is about a television ad.

The product was Duluth Fire Hose Pants (or something like that). It was a simple animated affair where a guy in non-firehose pants gets his leg torn to shreds when he fails to catch a wild boar that someone offscreen threw to him. Butterfingers!

The scene is then reenacted with the man (who vaguely resembles Bret Favre) wearing the proper indestructible pants. The wild boar deflects harmlessly off his leg, and our firehose-pants-wearing pal picks the vicious animal up and sends it back.

I want those pants. Seriously. I want those pants – as long as they extend the indestructible ethic to the pockets.

2

Note to Pillsbury:

It’s time to revive Space Food Sticks.

2

A Fine Meal

There are few things better than fresh tomatoes straight from the garden. One of those better things is several different kinds of fresh tomatoes gracing your summertime entrée, all fresh-picked from within thirty feet of where your dinner plate is.

I didn’t count how many different kinds of tomato we had tonight; there are ten different varieties growing out in the back 40, but they’ve never all had ripe tomatoes at the same time. But tonight there were definitely several types represented, and they were all delicious.

When I was a kid I didn’t even know there were ten different kinds of tomato. The growing interest in pre-industrial versions of the food we eat is definitely a happy thing. And healthy, too.

3

1,000 Miles

I’ve had the new bike for a little less than three months, and thanks to modern technology I know that I’ve now pushed it along for one thousand miles. I’ve compiled a list of things I’ve (re-)learned during all those miles in the saddle. Some of them might even be mildly interesting.

  • When approaching a stop, think about what gear you want to be in when you start again. Once you’re not moving it’s too late to change.
  • The last ten feet of a climb can kill your momentum just as quickly as the first ten. Don’t let up your effort when you’re “almost there”.
  • Around here at least, if you demonstrate that you’re fully prepared to stop at the 4-way, most motorists will wave you through.
  • There’s something about BMW drivers, and it’s not something good.
  • Songs that match your pedaling cadence can get really stuck in your head.
  • Fatigue + excited little dog + speed bump = road rash
  • Combining the previous two: If you’re riding for an hour, and you have the “stuck on Band-Aids” jingle stuck in your head, there’s nothing to do but pray for the salvation of an ice cream truck playing ‘Little Brown Jug’
  • On flat terrain, 14 miles per hour isn’t measurably harder than 13, after the first few pumps. Knock it up a gear!
  • I’m getting callouses on my palms.
  • Go ahead, we’ll wait. Done? Good.
  • The two worst things: headwinds and garbage trucks. It is likely that at some point I will go on at length about these scourges.
  • On the way to work, I have the sun at my back and (usually) the wind in my face. On the way home, I have the sun at my back and (usually)… the wind in my face. I call shenanigans!
  • Tomorrow marks two months since I put gas in my car. I have biked to work rather than drive 47 times this summer. By the time you read this, it will probably be 48.
  • I’m lobbying for Apple to relocate its headquarters to Australia for the winter. Already not looking forward to short days and dark rides.
  • Biggest snub from a member of the Spandex Crowd: outside my building, by a guy who works at my company. Ignored me completely. I didn’t think we were allowed to hire jerks here.
  • While riding, I’ve been composing the BOMB manifesto. It was “Bearded Overweight Men on Bikes, but I think I’m changing it to Bearded Older Men on Bikes, because I might not always be the former, but there’s not much one can do about the latter. We will be a legion based on the ideals of Courtesy, Friendliness, and Brotherhood. We Are BOMB!
  • I get a lot of stupid ideas while riding.
  • I’ve lost about twelve pounds, but I suspect several pounds more of fat. My legs are still skinny, but there’s definitely more muscle on them now.
  • By next summer, I might be ready for that Kilimanjaro trip Buggy invited me on fifteen years ago.
  • Mondays aren’t so bad when you have a good ride on rested legs.

One thousand miles! Holy crap! I suspect the next thousand will go more quickly; my stamina is greatly improved. 150 miles in a week is no longer as crazy as it once seemed. Today I actually began to wonder how many miles I could expect on my tires before they were worn out. That’s not something I’ve had to worry about before.

As the novelty wears off, I might not write so many episodes about bicycling, but then again that’s when I have time to think about blog episodes. So, sorry in advance.

3

Esoteric Programming Languages

Most readers of this blog are probably familiar, at least by name, with some of the more common programming languages out there. This blog is brought to you courtesy of PHP, and then there are the seminal C and FORTRAN (after all these years, still king of the number-crunchers), the infamous COBOL, well-structured PASCAL, ground-breaking SmallTalk, Sun’s heavily-marketed Java and Microsoft’s counterploy C#, and newcomers like Ruby and Javascript.

There are a lot of computer languages. While there are some pretty striking differences between the above, they all have two things in common. They all involve controlling a computer by writing lines of code, and they were all invented to be useful.

There is another category of language that is not burdened by that second attribute. Useful? Pf. Not bound by the constraints of utility, the whole ‘lines of code’ thing often ceases to apply as well. These non-utile outliers fall under the general category of “esoteric language”, sometimes shortened (but not by me) to esolang.

While I have long been peripherally aware of this category of languages, in a small email discussion recently a friend of mine mentioned the language Brainfuck (sometimes written b****fuck to avoid offending people). Another member of the discussion linked to an amusing top-ten list of odd languages. I read the article and my brain started fizzing.

A programming language that is written as a musical score? Blocks of color that simultaneously convey quantity and program flow*? A program specifically designed to be as difficult as possible to write code in?

Some might ask, “why would anyone bother with such useless languages?” I don’t have an answer to that. I could go on about Befunge and the wire-cross theorem, or about Turing Completeness, but at the end of the day, I think it’s the same answer as one might give to the question “why does one bother writing poetry, when prose is so much clearer?”

Some of the languages are just for fun. INTERCAL (Compiler Language with No Pronounceable Acronym) set out with only one goal: to not be like any other language. For instance, since all coders have long been taught to avoid the GO TO command, INTERCAL instead uses COME FROM. And every now and then you have to say PLEASE. You don’t have to be a geek (but it helps) to enjoy this article about INTERCAL and Befunge (includes a Befunge program to generate Mandelbrot sets).

One can only read about esoteric languages for so long before one must scratch the itch and find a new way to write “Hello, World!” on a screen. I became intrigued by Befunge, a language that is not written as lines of code at all, but as a grid that a pointer moves around on, steered by >,<,^, and v characters. The program appealed to me for two key reasons: the characters the program cursor encounters can mean different things depending on which direction the cursor is moving at the time, and, even better, you can have the program alter itself by changing the characters in the playfield. So, here’s my Hello, World! in Befunge:


         095*0     v          0*59    <      
This 'Hello World' program is written  in Befunge, a
  language invented expressly to be as difficult to compile
  as possible.
 
 In fact, with this code, control flow  goes straight through
 this block of text and uses the p in  'program' as an instruction.

                                      +
v      g0*59       <                  1
     >                            "H",^
>:0-!|
v    <
     >                            "e",^
>:1-!|
v    <
                 > "0"+292*p >    "l",^
     > :6*9- :9`!|
>:2-!|           > $         ^
v    <
     > 7"0"+273*p                 "o",^
>:4-!|
v    <
     >                            " ",^
>:5-!|
v    <
     >                            "W",^
>:6-!|
v    <
     >                            "r",^
>:8-!|
v    <
       >                          "d",^
>:52*-!|
v      <

              v<
              " 
>:65+-        !|
              "
v  "error!"$   <
>:#,_         v

   restore the code to the starting state:
              > "2"292*p  "4"273*p @

Of course, it was absolutely required that the code alter itself at least once, and occasionally have the same symbol mean different things. This program is based on a counter, and when the counter is 0, it outputs an ‘H’. When the counter is at 1, out comes an ‘e’. ‘l’ is a little more complicated; after it matches the 2, the program does a little algebra (6x-9) to come up with 3, with which it then overwrites the 2 in the code. That way, on the next loop, when the counter is 3, we get another ‘l’, and the same equation replaces the 3 with a 9, ready for the ‘l’ in ‘World’.

In the language, ! means ‘not’. At the very bottom, this code evaluates the ! as ‘not’, which causes the program to loop around and pass through “!” (with quotes), turning what had been a program instruction into the exclamation point at the end of “Hello, World!” A nice little exclamation point on my program, as well.

I have now gone back and added an error message should something go wrong, but of course you have to alter the code to make an error actually happen, things being deterministic and whatnot.

You can watch the program execute in Super Slow-Mo with this Javascript Befunge interpreter. It’s kind of fun to watch the Instruction Pointer zip around the code. Paste the above code into the top box, click ‘show’, then click ‘slow’ below. I recommend setting the time to 50ms rather than the default 500.

Wooo! Big fun! While this language is nearly useless for actually accomplishing anything, I like the way you can make your code physically resemble the problem you are solving. A coworker mentioned writing a tic-tac-toe program with Befunge, and I immediately thought of building a program that is a grid of nine segments and the program alters the paths through the grid as moves are made. It would be awesome.

If I went back to college and majored in computer science, I could get credit for writing it.

In my wanderings, there was one program that completely blew my mind. You remember Brainfuck? There are only eight commands in that language, which makes it relatively simple to write an interpreter. An interpreter is a program that reads the code and executes the instructions as it encounters them, translating them from the (allegedly) human-friendly programming language into machine-friendly instructions for that particular processor. (Compilers do all the translating at once, before the program is executed, while interpreters do it on the fly.)

So here, ladies and gentlemen, is a Brainfuck interpreter, written in another esoteric language, Piet:

piet_bfi
(courtesy Danger Mouse — if I’m not mistaken, the inventor of Piet)

That picture right there? That’s a program, written in a Turing-complete language, that implements another Turing-complete language. (**)8-O (the sound you heard was my head exploding.)

______

* In Piet, you can write a program to calculate pi that is a circle.

4

Christmas Time, Tool Time – Advice for Tool-Givers

I just saw an ad for a tool that didn’t interest me much, but I noticed that the neatly-bearded spokesman in his flannel shirt was standing in what was declared by the subtitles to be the “Tool Research Laboratory”, or something like that.

The set was clearly NOT a tool research laboratory, competing with CSI:Miami for “Least Practical Lighting for a Place Where People Use Their Eyes On the Job” award.

But… Somewhere there actually is a facility where people work hard to produce new, better tools. The people sitting at the workbenches aren’t necessarily wearing flannel; many of them likely have advanced degrees and spend their recreational hours reading about new alloys and fabrication techniques.

An example challenge: Make a better wrench. No biggie, it’s just a tool that has quietly matured over the centuries. But now, with math and engineering and gol-danged science, people are making better wrenches. Most of the emphasis in this new tool revolution is on convenience and one-size-does-more designs, which are all right, but then you get an ingenious device that puts the force on the flats of the bolt, rather than the corners, allowing you to apply a lot more force. A genuine improvement on an old standard*.

Christmas is the time these devices get to strut on the television, as women try to find gifts for men who don’t seem interested in things that are knitted. (Hint: many of those guys are looking forward to holiday leftovers more than they are to the gifts. Because there’s something magical about holiday leftovers. Just sayin’.)

You know, upon further review that last paragraph was pretty sexist. To the guy looking to buy tools for his husband, or the woman trying to figure out how to leave some hints as she cleans the grime from under her fingernails, I say rock on, and don’t forget the leftovers. Forgive me as I perpetuate the stereotype with my use of pronouns to follow.

Hey, remember the SnakeLight? It’s just a rechargeable flashlight with a bendy section, but many years ago when I got one for Christmas I was amazed at how useful it was. There’s a whole SnakeLight product category now. That’s a win.

Finally, the promised advice for tool-givers: beware the one magical wrench that’s as good as a whole set of traditional wrenches. It’s probably not quite as good, and your tool-appreciating gift target already has a whole wrench set and knows how to use it. When Tool User opens the package during your holiday ceremony, he will likely exclaim with happy surprise, but you will know he’s faking it.

But later, in the shop, on many occasions that every-wrench-in-one device is the one your beloved tool user will reach for rather than take the time to find the exact right wrench out of his set. Well, unless your tool user is like me. I’m a frightfully slow worker, and part of that is not just choosing the right wrench, but getting it positioned optimally. So give me a wrench that can reach a nut I couldn’t reach before. That is the one that will make he hairs on the back of my neck stand up — almost as much as a turkey sandwich with all the fixins.

Oh, and battery-powered tools are fundamentally inferior to ones you plug into the wall. The 120 seconds lost to laying the cord and coiling it up again dwarf the loss of power, the time lost messing with batteries, and the general better performance of the tool. Hippies and true craftsmen agree: batteries are no good.

Go Tool Research Laboratory! I’d apply for a job there, but I’m wretchedly unqualified.

* I’ve never seen sockets that embrace this innovation. Get on that, Tool Research Laboratory!

2

When Phones and Cars DO Mix

I’d heard whispers about it in the shadows, seen the knowing glances between those in the loop, and recently I’ve become one of them. I’m a Wazer.

I am required to be at an office during what we call ‘normal business hours’. That means I’m driving to my office in the morning and home from the office in the evening, along with all the other NBH drones. Some mornings, the 12-mile trip can take an hour. That’s not good.

Along my route are some key decision points. It’s shortest to turn left at Curtner, but that ramp onto the freeway can get massively backed up, to the tune of fifteen minutes. On those mornings it’s better to stay on the surface streets for an extra mile.

But which mornings? How can I tell in advance whether Curtner is a mess? Enter Waze, the social mapping service. Waze takes real-time data from drivers like me and finds the fastest route to work (and, perhaps more importantly, home again). Sometimes those routes use streets I never would have thought of, but I ignore the advice at my peril. (Monday, I thought I knew better than Waze. Boy was I wrong.)

Waze is a bit quirky; right now it tries to steer me around one intersection at all costs — including cutting through a cemetery as an alternative. I have no idea why it developed an allergy to that right turn, and I suppose a true Wazer would log in and fix the map. Even the maps themselves are crowdsourced. It’s pretty cool.

You should be aware, however, that Google just bought Waze for a cool 1.1 Billion, so as I drive I’m telling the Goog where I am. If you use Google maps you’re already doing that, however, and I think this is a case where a voluntary surrender of personal information (with a very short useful shelf-life) actually makes the world better. Perhaps I just think that way because I really hate traffic. I decline to advertise my location on Facebook, and I hope all you have more common sense than to do so.

Another very useful phone-related product I came across recently is actually a gadget/app combo. You may have read recently that I’ve been tinkering with my car so that it will pass the California emissions test. I made some repairs and pulled the fuse that powers the onboard computer and counted thirty seconds, which should reset it. Even if the Check Engine Light is off when I get to the smog place, if there are old error codes in the computer’s memory, I will fail. Again. I know this because that’s why I failed the first time. The Check Engine Light had been on, and that was enough.

So I cleared the computer. Probably. Maybe. After my first round of repairs the light came back on (I had broken a plastic bit during the first operation) so I made my second repair and pulled the fuse for 30 seconds. Once again, there was no way to tell if I had actually cleared the memory. Just in time, help arrived via the U.S. Mail.

You see, during this whole process I was frustrated that I couldn’t just check the damn computer myself. (Once you fail smog, all except a few specially-designated repair places aren’t even allowed to hook you up. Bah!) Then while reading a Miata forum I found a discussion of which OBD tools worked with 1999 Miatas. A light turned on over my head. I could buy my own damn code reader! That had quite truthfully never occurred to me. I went to Amazon and started looking around. There was one hitch that made me hesitate: Units were either a) really expensive; and/or b) not sure to work on my car. Although there is a standard connector, different cars communicate with different protocols. I didn’t want to spend a bunch of money for something that didn’t know my car’s dialect.

Then I came across one that was both cheaper than any of the others AND low-risk! BAM! For $21 bucks I bought the Elm327 WIFI OBD2 Car Scan Tool. There’s a cheaper BlueTooth version, but there was some indication that it might not work on all iOS devices. Why is this one more likely to work with my car? Here’s the thing: The gizmo doesn’t know diddle about protocols. That’s software. So if one phone or computer app can’t talk to my car, another will. And now the UI can be presented on a sophisticated touch-screen computing device, rather than a cryptic LCD readout with arrow buttons for controls.

When the ELM-327 arrived I splurged and got one of the most expensive apps available to talk to it, based on reviewers saying it worked no problem with their ELM-327’s. Ten bucks. For a total outlay of $31, I had a scan tool that not only worked far better than dedicated devices costing hundreds of dollars, it had a better UI, and could even display a host of real-time data as I drove around! Speed, rpm, air volume, battery voltage, and more. Some modern cars provide a ridiculous amount of information through the OBD port. The app I chose, OBD Fusion, can log data and even superimpose that info onto a map. Racers, apparently, love this stuff.

My smog guy was really impressed as well. He actually laughed when I revved my motor and the virtual tach needle swung upwards. He was excited that he could prescreen customers in the parking lot, quick and easy. I expect he owns one of these now.

And in fact I had not successfully cleared my computer by pulling the fuse, but with my gadget and my app I cleared the old codes and ran the car until all tests had come back green.

This tool is a game-changer for even an unsophisticated home mechanic like me. Knowing the code and being able to look up the repair on the Internet literally saved me hundreds of dollars. (I know because I once paid hundreds of dollars only to have the problem return a few months later.) It also confirmed that my speedometer is a wee bit off.

And next road trip I’m totally going to make a map of engine RPM along my route. Because the world needs to know stuff like that.

5

On the Subject of Tutorials, and Why the Internet is Awesome

A while back a buddy of mine had trouble with his washer. He was pinched for cash, so he tackled the problem himself, rather than call a repair man. He got some information off the Internet before he started, not all crystal-clear, but enough to dive in.

He fixed his washer. But along the way he did something else, as well: He carefully documented each step of the process, with commentary, lessons learned, and pictures. In the process not only did he save himself a hundred bucks or more, he helped a lot of other folks as well. It’s the most-hit page on his blog (last I heard), and for good reason. Here’s the tutorial, in case your washer’s not draining.

Sidebar: It’s a little frustrating for a blogger to create an episode that’s not the main focus of the blog and have that episode take off. In my case it was “New York Sucks”. But at least “How to Fix Your Washer” has some benefit to the world at large. Lately my tutorial about setting up a LAMP stack using MacPorts has become more popular, which makes me feel better.

Let’s take a moment more to understand why my friend’s blog episode was so effective. First, there was the voice: “I’m just Joe Homeowner with a couple of wrenches and a mysterious machine that’s not working right. But I fixed the bastard.” Second, the tutorial answered a specific need. Third, Joe Homeowner was there with you every step of the way, with pictures and the kind of observations that never appear in service manuals.

The most effective reference materials are almost never videos. When I’ve got both hands tied up with the task, I just want to be able to look at the screen and see what I need to know. I want a still image I can absorb at my pace, and look for reference points to reconcile with what’s in front of me. I want to read the instructions three times without having to rewind.

This is the sort of content ‘they’ were thinking about twenty years ago when they were trying to convince us that the Internet was a good thing.

Last weekend I benefitted from a similar tutorial. Owners of 1999 and 2000 Miatas know code P0402: Excessive EGR flow. Usually a P0401 comes first. It’s a design flaw; there’s a narrow passage in the intake manifold that gets clogged. The killer is that the ol’ 402 suggests that a $200 part needs to be replaced. Actually, that’s almost never true in this car. All you have to do is remove the throttle body, take off the top part of the intake manifold, and clean that passage out.

Reference material close at hand, I'm ready to fix my car.

Reference material close at hand, I’m ready to fix my car.

The task is not difficult, but it can be intimidating. What you need is some guy like you who’s done it, who took pictures, who remembers the details, and isn’t afraid to admit he was a little frightened going in. You can feel his satisfaction as you read the how-to and you know you will feel that way too.

The ONE THING I wish he might have mentioned was “when you take the age-hardened hose off the top of the intake manifold, be careful not to break the PCV valve.” But that’s a topic for another episode.

There’s a tutorial out there for almost everything. Almost. Next time you’re facing a task, if you can’t find a good set of instructions on the Internet, do the Web a favor. Make the first tool you pick up a camera. Take a little longer on your repair, record each step, and remember your moments of uncertainty and how you dealt with them. Put it out there and make the world a better place.

2

How to Make a Geek Happy

I once explained in great detail why HTML is the worst thing that ever happened to the Internet. In that episode I was a bit disingenuous — I also snuck in flaws with the protocol that delivers most of that HTML rubbish to your computer: HTTP.

Finally, finally, twenty years later than necessary, the tools are available to make Web applications work like all the other apps on your computer. (If you’re willing to set down your browser, World of Warcraft and its predecessors have been doing this for a long time now. But finally we can have good application design through the browser as well.)

While the primary benefit of this revolution is for the engineers making the apps (whom you as a user have to pay eventually), there are tangible benefits for Joe Websurfer as well. Mainly, things will work better and be snappier. You will curse at your browser about 30% less. (That number brought to you courtesy of the dark place I pulled it from.)

I work in a blissful world where my stuff doesn’t have to work on older browsers, and especially not on Internet Explorer. That means what might be ‘bleeding edge’ for most Web developers is merely ‘leading edge’ for me. I’m starting a new Web application, and it won’t use HTTP. It won’t even use AJAX.

Quick description of HTTP:
Your browser asks the server for something. The server gives it to you, then forgets you ever existed. This is especially crazy when you want your connection to be secure (https), because you have to negotiate encryption keys every damn time. That’s huge overhead when all you want is the user’s middle initial.

And what if something changes on the server that the page showing in the browser should know about? Tough shit, pal. Unless the browser specifically asks for updates, it will never know. Say that item in your shopping cart isn’t available anymore — someone else snapped up the last one. You won’t know your order is obsolete until you hit the ‘check out’ button. The server cannot send messages to the page running in your browser when conditions warrant.

Lots of work has gone into mitigating what a pain in the ass that all is, but the most obvious solution is don’t do it that way. Keep your encrypted connection open, have each side listening for messages from the other, and off you go. The security layer in my new app is so much simpler (and therefore sturdier) that I’m going to save days of development. (Those days saved will go straight to the bottom line at my company, since I’m an operating expense. The effect of my app will also go straight to the bottom line, as I save other people time and energy. Better yet, the people who will be made more efficient are dedicated to making the company more efficient. Those days of development time saved go through three stages of gain. Shareholders, rejoice.)

So, that makes me happy. Web Sockets, event-driven servers, a chance to create the Missing Middleware to make the tools out there fly. Bindings over the wire.

Of course, I’m not building it all from scratch; I’m using and improving tools created by those who have gone before me into this ‘software working right’ revolution. It means picking up a whole toolbox at one time, from database to server to client library to extensions of all of the above. There are times while I’m trying to put it all together that it feels like my head is going to explode. In a good way.

But boy, the difference a good book can make. In technical writing, there are two kinds of documentation: tutorial and reference. Mostly I gravitate toward reference materials: I have a specific question and I want to get a specific answer. References are raw information, organized to allow you to get to the nugget you need. Tutorials are training documents; they take you through a sequence to help you build complete understanding of a system.

There are many technical documents that try to be both, or don’t know which they are. We call those docs “shitty”. Then there are videos. SPARE ME THE FUCKING VIDEOS. Videos as a reference: completely worthless; videos as a tutorial: rarely adequate – what was that again?

(I’d be interested to hear from my formally-trainied tech writer pals about my above assertions.)

Anyway, On the client side I’m using a library called Backbone, and on top of that Marionette. I like them, but I was starting to get lost in the weeds. The reference material is pretty good, but getting an overall understanding of how the pieces worked together was slow and frustrating. Too many new ideas at once.

So I found a book endorsed by The Guy Who Made Marionette (yeah, The Guy. One guy, having a huge impact on the next generation of Internet applications. Could have been anyone, but there had to be The Guy.) that not only puts the pieces together, but introduces best practices and the reasoning behind them along the way. It may well be the best tutorial-style documentation I’ve run across in this industry. So, hats off for Backbone.Marionette.js: A Gentle Introduction. This book really helped me get my ducks in a row. My fastest learning curve since Big Nerd Ranch oh so very long ago.

So all that makes me a pretty happy geek. Lots to learn, Web applications built right, a new project with lots of creative freedom. And while I’m coming up to speed on the new tools, I already see gaps — the tools are young — including a potentially ground-breaking idea, that I will get to explore.

Can you believe they pay me to do this?

1

The Ascendant Science

Medicine, it seems, is always the last science to the dance. While one guy was establishing the principles of electricity, one of his friends was being bled to death in the name of medicine. When radioactivity was discovered, health practitioners killed countless patients with it.

For most of the history of humanity, doctors were quacks. All of them. The discovery of tiny creatures that live inside us revolutionized the medical biz, but compared to the physics industry and its spinoffs, medicine was still mostly chanting and waving rattles.

Early in the last century, physical science went through a boom so loud our ears are still ringing today. The second half of the 20th century saw technology go nuts as those fundamental discoveries reached market.

That wave gave us the machines we needed to finally dig deep into how we work as organisms. Allow me to tell a rather long story to illustrate.

I have been working to lose weight. If you use the Internet, you’ve seen ads that read, “New scientific breakthrough can help you shed pounds!” and shit like that. I have long made a point of ignoring those ads, but I became curious about the scientific breakthrough. One night I clicked one of the ads.

I was presented with a video. Generally, when I want the answer to a specific question, I HATE video. But in this case, I understood that the video existed for the very reason I dislike them: the producer wants me to go through a lot of shit before providing me the nugget I want. From their point of view, video is perfect.

With the sound off, I watched as cartoon people were drawn and erased, showing a variety of body forms. Finally, a word came on the screen: Leptin. I stopped the video and fired up Wikipedia, where I was offered an explanation with lots of words I didn’t know. I knew enough of them, however, to understand that leptin was created by fat cells, and when leptin levels go up enough to be noticed by the brain, you feel full, and your metabolism cranks up. Injecting leptin into obese mice helps them lose weight; it doesn’t work so well in humans. Also, leptin was found in the 1990’s.

Then there’s Ghrelin, identified about ten years ago. Ghrelin makes you feel hungry, and slows your metabolism. The Wikipedia article about ghrelin identifies exactly which gene builds it, how it’s matched with a (perhaps unused) counterpart, and where it binds to receptors in the brain. There are drawings of the damn thing.

I trust the drawings, but it all seems vaguely magic.

I think this is just the beginning. The human organism is the most complex thing in the known universe, but we’re starting to figure out how it works. Next comes how to fix it when it’s broken; how to address the exact problem without mucking with other systems. We will move from drugs to viruses — those that attack specific bacteria and those that give the host the ability to produce a particular protein. It’s pretty cool.

That technology explosion? We’re starting to feel the biology echo, and it’s going to change everything.

A Very Good Colocation Deal

Just a quickie this morning to say that my hosting provider, macminicolo.net is having a special right now that’s pretty sweet — and lasts forever. Some of you may remember that I switched hosting providers a few times before finally deciding to get full control of my server. It turns out macminicolo.net is hands down, far and away, the cheapest colocation provider I found for the power of the hardware you get. There’s an up-front cost (you own the machine), but then it’s all yours.

Their facility is located where a couple of major transcontinental data trunks converge in Nevada, so no hurricanes or earthquakes will interrupt your service. And they seem like nice guys.

I have a mini there; you’re reading this page from it. I don’t really use it as a Mac, I installed a complete LAMP stack that only talks to the UNIX-like underpinnings of the machine. So even if you’re not a Mac guy, it’s easy enough to close your eyes and pretend it’s Linux (FreeBSD, actually).

So if you’re looking for cheap colo (and who isn’t?), this is a good time to jump in. I try not to be a shill too often, but I like this company and if they can keep offering (relatively) inexpensive colo service, I win.

iTelescope

I was reading up on the big-ass comet (who’s name is not actually ISON) heading our direction, and the article mentioned that the discovery had been confirmed by iTelescope (among others). (REAL QUICK digression: I really like the word “precovery” — Once the discoverers said, “hey, there’s a comet there!” other astronomers were able to use data gathered before the official “discovery” to confirm the finding. Precovery.) So anyway, Since I work at the company that invented put-an-i-on-it product naming, I had no choice but to look into this iTelescope thing. I had this idea that maybe there were a million webcams all pointed at the sky, and with the combined computing power of the participants a useful image could be inferred.

Of course, I was wrong. It was early in the morning and the caffeine hadn’t reached the critical parts of my brain — the parts that would have considered the logistical nightmare my “global fly-eye” idea would entail. Maybe in a few more years…

But what I did find is entirely cool, and has the benefit of actually working. iTelescope is a cooperative that has some 20 pretty-dang-good telescopes, and for a fee you (yes, you) can use them to take pictures of the sky. (The difference between ‘telescope’ and ‘camera’ is all in the lens.) iTelescope has three facilities around the globe (New Mexico, Spain, and Australia), so it’s always night somewhere. You control the telescope over the Internet and download your results. Oh, these times we live in. (In these times, it must also be said: you retain all rights to the photos.)

How much does it cost? That depends on the telescope you choose and the phase of the moon. Prices start in the neighborhood of seventeen bucks an hour and go up from there. That seems like a lot of money, until you consider what it would cost to get these images on your own. Eleven (at least) have even been honored as APOD.

It feels odd to think of it as ‘photography’ when you’re so disconnected from the camera – heck, you’ll probably never even see the telescope you’re using. Many of the other decisions one makes in terrestrial photography are moot as well — there’s no depth of focus to deal with, for instance. Someone else has set up the camera; all you have to do is point it. Except, when you look at the gallery, you see that there are many images that combine dozens of exposures, some with different filters, sometimes with different data coming from different telescopes. Dang. Seriously, how many photographers have access to such a vast array of gear? (Answer: now, we all do.)

There is still an art to getting that spectacular deep-space image, and just as a fashion photographer has assistants to handle the details, iTelescope users have the iTelescope staff and a helpful Web robot. Good times, my friends. Good times.

2

Our Kitchen, Filled With Treats

Our kitchen, filled with treats.

Our kitchen, filled with treats.


Here’s a panoramic view of our newly-reconstructed kitchen. It’s awesome! It’s kind of hard to tell when it’s wee small (click to biggerize it), but there’s about ten different kinds of yummy holiday goodies piled up in there.

Yeah, life is good.

1