Category Archives: Uncategorized

Behavioral, autonomic, mechanical compared to Marr’s tri-level hypothesis

As I mentioned in my last post, my model for cybernetic systems bears a lot of resemblance to David Marr’s tri-level hypothesis, which he defines as computationalalgorithmic and implementational. I’ll quote from the site linked above:

The computational level is a description of what information processing problem is being solved by the system. The algorithmic level is a description of what steps are being carried out to solve the problem. The implementational level is a description of the physical characteristics of the information processing system. There is a one-to-many mapping from the computational level to the algorithmic level,and a one-to-many mapping from the algorithmic level to the implementational level. In other words, there is one computational description of a particular information processing problem, many different algorithms for solving that problem, and many different ways in which a particular algorithm can be physically implemented.

While this is conceptually similar to my idea, Marr is working in purely conceptual space here (though his model can be applied to physical systems as well). My taxonomy is closer to the way an animal works: a cognitive system, a mechanical system, and an autonomic system for carrying messages between the two. Of course, in animals (at least in humans), this is a strictly hierarchal system: the cognitive system can’t directly access the mechanical system, or else you could “think” electrical impulses directly to your muscles, for example! But in a technological system, there’s no reason you couldn’t theoretically directly bypass the autonomic layer entirely, though you wouldn’t want to very often, for the same reason you usually don’t let desktop software directly control the read/write heads on your hard drive.

I see no reason why the majority of low-level sensors and actuators can’t be abstracted and made object-oriented. For example, think of object classes in programming. You might have a class called Vehicle, with a set of methods and properties, and a subclass of Vehicle called Bicycle, with overriding methods and properties. Couldn’t you do the same thing with hardware control, starting with two classes: Sensor and Actuator? Then you could build sub-classes. A range finder, for example:

class rangeFinder extends Sensor{

public var min = 0; // the minimum value the range finder will send
public var max = 10000; // the maximum value, which is actually expressed in milliseconds of latency

public function latencyToCentimeters{

return this.latency * 0.5000 // Or whatever the equation is for converting milliseconds to distance 



For example. Then you could declare something like this:
var rangeThingie = new rangeFinder(01);
Which would tell your software that there’s an object of class Sensor, subclass rangeFinder, at input port 01. (You wouldn’t need to specify input vs output, as that’s handled by our Sensor object code.)

So that’s the software abstraction layer…but the hardware still needs to be controlled somehow, right? That’s where your programmable autonomic firmware comes in. When you hook up your range finder, you specify the voltage and amperage that it requires, and upload those values to your firmware. (As I mentioned in the last post, this could even be handled by QR or barcodes on the sensor itself; you scan it with your computer’s webcam, and it connects to an open database, which returns machine-readable information:

[type : "range_sensor",
manufacturer: "Acme, Inc.",
specs: {
    voltage: "5",
    amps: ".5"
    min_operational_temperature: "-50",
    max_operational_temperature: "150"
That would be in JSON format, obviously. So your autonomic firmware programmer receives this data and “knows” how to interface with this sensor at a mechanical level. Same with any other component: you could send the proper PWM to control a stepper motor (if I understand how stepper motors work, which is not at all certain) or know the maximum amperage you could run through a speaker, or what-have-you.

At that point, it’s simply a matter of plugging all your components into your autonomic board, giving it specs for each component (by downloading or manually entering them and then uploading that info to the firmware on it), along with any reusable functions you’ve defined (like “turnLeft” or “rotateElbow” for robots, as an example) and hooking up your cognitive or behavioral subsystem, which issues commands to the autonomic system.

How? Probably using something like the Open Sound Control protocol, which defines a very simple addressing scheme for accessing and sending values to subcomponents. So your software could do something like this:

var rangeVal = osc.retrieve("/robot1/sensors/rangeThingy/");

if(rangeVal > 0.5){ osc.transmit("/robot1/stepperMotors/leftElbow/rotate", "45"); }

Which would be translated by the autonomic layer into actual electrical signals. Of course, you could also chain together these specific commands into higher level functions within your behavioral code, or even in your firmware (provided it had enough memory onboard, which is why you might want to use something like an SD card for storing this stuff).

How would that code get from the behavioral level to the autonomic level? Doesn’t matter. I mean, it matters, but it could be any number of ways:

  1. The behavioral system is handled by a small computer like a Raspberry PI, physically on-board the device;
  2. The behavioral system is an actual programmed processor, also on the device;
  3. The behavioral system is on a very powerful computer, connected to the device by WiFi or cellular radio, or USB if distance isn’t an issue.

As long as your behavioral level is connected to your autonomic level somehow, the specifics don’t matter.

So what happens when that connection is severed? If you’re smart, you’ve built fall-back low-level behavior and uploaded it to your autonomic system’s storage. Building a drone plane? If it loses its connectivity to the complex control system on the other end of its radio connection, have it continue towards LKG (last known good) destination coordinates, relying on its on-board GPS. Or if that’s too risky (say, if you’re worried about it running into mountains), have it fly in a circle until it reestablishes connection, or have it try to land without damaging itself. Whatever. It’s up to you to figure out the specific fall-back behavior.

Roboticists are thinking “Yes, but my machine is much more efficient than this. I don’t care about standardization!” Yes, your machine might be better and more efficient. But it’s also a standalone device. Think of old synthesizers, in the pre-MIDI days; they’re hardwired, stuck doing the one thing you made them do. They can’t be easily upgraded by the end consumer, they can’t be modularized. Your Yamaha DX-7, which was super-badass when you bought it in 1985, is now a curiosity. It’s not as good as other, newer digital synths. Nobody wants it…especially when they can replicate its sounds exactly with software now!

Same thing if you’re building a welding robot (to use an example from a buddy of mine). Your welding robot has all the articulation and parts to weld, but it’s not very smart. But if it’s interoperable, connective, you don’t have to worry about building the logic on-board! Your robot is an avatar for an intelligence that exists separately of the hardware. As people figure out how to make better welding robot routines and procedures, your robot can be updated! It can be made smart! And eventually, when people have figured out better hardware, it can be repurposed to do something else…in the same way that I can use a goofy early 90s hardware synthesizer as an excellent MIDI controller for my newer, better synth software.

I realize that a lot of people who work in this side of technology don’t think that way, but that’s their problem, not mine. I want to figure out a way to make a standard, universal way of connecting hardware to software, one that focuses on simplicity and reproducibility and communication ability over efficiency. I’m repulsed by proprietary systems, and if your business model is based on building things that can’t be upgraded but only replaced — not because they have to be, but because that’s where you’ve decided your revenue stream comes from — then man, fuck you and your awful business model. Sooner or later, people are going to get sick of your shit and find another vendor…especially when there are cheaper and more flexible alternatives.

(Okay, Ellis, breathe. No need to get shouty. Low blood sugar. Go eat something.)


Behavioral, autonomic, mechanical: a model for building badass robots

[Update: since I started writing this, a Twitter friend helpfully pointed me at Marr's levels of analysis, which upon quick study appears to be pretty much identical to this idea, so I'll be framing this in his terminology at some point.]

This rides on the tail of the previous post. I’m just trying to get this sorted, so bear with me.

A cybernetic system consists of inputs, outputs, and logic to connect them via feedback — if this, then that. This is true for Web servers and 747 autopilots alike.

It occurs to me that you can broadly organize a cybernetic system into three levels of interaction: behavioral, autonomic and mechanical. So let’s look at these in reverse order, from the bottom up.

  1. Mechanical: this is the lowest level, below which it’s impossible to alter component behavior without external intervention. Think of, for example, a motor. A motor turns, in one direction or another. You can’t make it do anything else without actually going in and fucking with its physical properties. Same with a photovoltaic sensor, or a human muscle, which can only contract when sent an electric/chemical signal.
  2. Autonomic: This is the next level up, in which you can connect up inputs and outputs to perform basic logic without need for complex modeling. Imagine a robot with a touch sensor and a motor. You can program the robot to reverse the direction of the motor when the touch sensor is triggered. Or in a biological model, think of your heartbeat. It requires no thought, no interaction: it just beats. You can also think of the BIOS of a computer: it handles the simple, low-level switching of signals between a CPU, RAM, a hard drive, etc.
  3. Behavioral: This is when you hook a bunch of inputs and outputs together and create complex behavior based on their interaction. In computers, this would be the software level of things.

To give a concrete example of this, think of a Belkin WeMo switch. This is a networked-enabled power switch. It has a simple WiFi receiver in it and a relay that can turn power on and off to an electrical socket.

The mechanical level of the WeMo is the power socket switch itself. It does one thing: flip a relay. It doesn’t “know” anything else at all, doesn’t do anything else.

But the WiFi adds the autonomic level: there’s basic logic in the WeMo that when it receives a specific signal over WiFi, it flips that relay. That’s all it does (aside from the ability to connect to a WiFi network in the first place). Slightly more complex than the switch itself, but still not complex at all.

But then there’s the behavioral level of the system. Belkin makes a mobile app for your phone that lets you turn on the switch from wherever you are. In this case, the behavioral level is provided by your own brain: you can turn the light on or off based on a complex system of feedback inside your skull, which takes a various set of inputs, conditions and variables to decide “Do I want this light on or off?” It might be overcast outside, or it might be nighttime, and you might want to turn it on; it might be daylight, and you want to turn it off, or it might be dark but you’re not home and don’t want to waste electricity. Whatever.

But here’s where it gets interesting: you can use IFTTT to create a “channel” for your WeMo, which can be connected up to any other IFTTT channel, allowing for complex interaction without human intervention. For example, I have the WeMo in my living room set to turn on and off based upon Yahoo Weather’s API; it turns off when the API says the sun has risen, and turns on when it says the sun has set.

This is different than a light controlled by a photovoltaic switch, which is an example of autonomic behavior. The PV switch doesn’t “know” if the sun has gone down, or if someone is standing in front of it, casting a shadow; all it knows is that its sensor has been blocked, which turns off the light. While this is somewhat useful, it’s not nearly as useful as a system with a behavioral level.

Make sense?

Okay, so let’s get back to robots, which was what I was going on about in the last post. A robot is a cybernetic system, and so it has these three potential levels: behavioral, autonomic and mechanical. In the case of a robot, it looks like this:

1) Mechanical: motors, sensors. A Roomba, to use the example from the last post, has three motors (left wheel, right wheel, vacuum) and a set of touch sensors. All these can do is either receive or send electrical current: when a touch sensor is touched, it sends an electrical signal (or stops sending it, whatever, doesn’t matter). A motor receives current in one direction, it turns one way; send it the other direction, it turns the other way.

2) Autonomic: In our Roomba, this is the hardware logic (probably in a microprocessor) that figures out what to do with the change in current from the touch sensor, and how much current to send to each motor. For example, if the motor is a 100 amp motor and you send 1000 amps through it, you can literally melt it, so make sure it only gets 100 amps no matter what. Very straightforward.

3) Behavioral: in our Roomba, this is deceptively simple: roll around a room randomly until you’ve covered all of it, and then stop. In actuality, this requires a pretty serious amount of computation, based upon interaction with the autonomous level: a sensor has been tripped, a motor has been turned on. I don’t know the precise behavioral modeling in a Roomba, but I suspect it’s conceptually similar to something like Craig Reynold’s boids algorithm: move around until you hit a barrier, figure out where that barrier is (based upon something like number of revolutions of the motor), move away from it until you hit another one, etc.

In a Roomba — and indeed, in most robots — the autonomic and behavioral levels are hard-coded and stored within the robot itself. A Roomba can’t follow any instructions, save the ones that are hardcoded into the firmware in its processor.

Fine. But what if we thought about this in another way?

Let’s remove the Roomba’s behavioral subsystem entirely. Let’s replace it with a black box that takes wireless signals from a WiFi or cellular network; doesn’t matter which. This black box receives these signals and converts them to signals the autonomic subsystem can understand: turn this motor this fast for this long, turn that motor off. And let’s even add some simple autonomic functions: if no signals have been received for X milliseconds, switch to standby mode.

Our Roomba is suddenly much more interesting. Let’s imagine a Roomba “channel” on IFTTT. If I send a Tweet to an account I’ve set up for my Roomba, I can turn it on and off remotely. Cool, but not that cool, right?

But what if we add the following behavior: let’s make our Roomba play Marco Polo. Let’s give it a basic GPS unit, so it can tell us where it is. Then let’s give it the following instructions:

1) Here’s a set of GPS coordinates, defined by two values. Compare them to your own GPS coordinates.

2) Roll around for a minute in different directions, until you can figure out which direction decreases the difference between these two coordinate points.

3) Roll in that direction.

4) When you encounter an obstacle, try rolling away from it, generally in the direction you know will decrease the difference between your coordinate and your target coordinate. If you have to roll in another direction, fine, but keep bumping into things until you’ve found a route that decreases the difference rather than increasing it.

This is a very simple and relatively easy set of instructions to implement. And when we do so, we’ve got a Roomba that will come and find us, bouncing around by trial and error until it does so. It might take thirty seconds, it might take hours, but the Roomba will eventually find us.

Now, if we equip the Roomba with more complex sensors like a range finder or a Leap Motion, this all becomes much more efficient: the Roomba can “scan” the room and determine the quickest, least obstacle-filled path. In fact, the Roomba itself, the hardware, doesn’t have to do this at all: it can send the data from its sensors over its wireless connection to a much more complicated computer which can calculate all of this stuff for it, much faster, and issue commands to it.

But what happens if that network connection breaks down? In this case, we can give the Roomba a very simple autonomic routine to follow: if there’s no instructions coming, either stop and wait until a connection is reestablished, or resort to the initial behavior: bump around trying to reduce the difference between your own GPS coordinate and the one you’ve got stored in your memory. Once a connection is reestablished, start listening to it instead.

If this sounds dumb, well, imagine this: you’re in an unfamiliar city. You’re relying on your car’s GPS to navigate from your hotel to your meeting. When you’re halfway there, your GPS stops working (for whatever reason). You know your meeting is at 270 34th Street, and you know that you’re at 1800 57th Street. (The numbered streets in this imaginary city run east-west.) So you know you need to go east for fifteen blocks or so, and north for twenty-three blocks. So you turn left and go north on Oak Street, but Oak Street deadends at 45th Street. So you turn right onto 45th until you find Elm Street, the next north-south street, and you turn left and continue to 34th Street, where you turn right and keep going until you reach the 200 block.

Do you see where I’m going with this? You’re doing exactly what our imaginary Roomba is doing: you’re “bumping” into obstacles while reducing the difference between your Cartesian coordinate and the coordinate of your destination. The difference is that you’re not literally bumping into things (at least hopefully), but if our Roomba has sophisticated enough range finders and such, neither is it.

But this is even more interesting, because we can break your behavior down into the same three levels.

  1. Behavioral: I want to go to 270 W. 34st Street. My brain is converting this idea into a set of complex behaviors that mainly involve turning a wheel with my arms and pushing pedals with my feet. And hopefully also paying attention to the environment around me.
  2. Autonomic: I think “I need to turn left”, and my brain automatically converts this to a series of actions: rotate my arms at such an angle, move my knee up and down at a certain speed and pressure. As Julian Jaynes points out in The Origin Of Consciousness In The Breakdown Of The Bicameral Mind, these are not conscious actions. If you actually sat down and thought about every physical action you needed to do to drive a car, you couldn’t get more than a block.
  3. Mechanical: Your limbic system sends electricity to your muscles, which do things.

Your muscles don’t need to “know” where you’re going, why you’re going there, or even how to drive a car. Your higher mental functions (I need to turn left, ooh, there’s a Starbucks, I could use some coffee, shit, I’m already late though) don’t deal with applying signals to your muscles. The autonomic systems are the go-between.

But then, something happens: a dumbass in an SUV whips out in front of you. At that point, your behavioral system suspends and your autonomic system kicks in: hit the brakes! You don’t have to consciously think about it, and if you did, you’d be dead. It just sort of happens. (There are actually lots of these direct-action triggers wired into human mental systems. Flinching is another example. It is almost impossible not to flinch if something comes into your vision from the periphery unexpectedly, moving very fast.)

So let’s turn this into a brilliant architecture for robotics. (He said, modestly and not confusingly at all.)

Our architecture consists of our three levels: behavioral, autonomic and mechanical. However, because we’re building modular robots and not monolithic people, what each of these actually means can be swapped out and changed. Again, let’s look at this from the bottom up.

1) Mechanical. This can be pretty much any set of sensors and actuators: a potentiometer, a button, a touch sensor, a photovoltaic sensor. Doesn’t matter. To an electron, a motor and a speaker look exactly the same. You can actually simply imagine this as a whole bunch of Molex connectors on a circuitboard with a basic BIOS built-in. What we hook into them is kind of irrelevant, as our autonomic system will handle this.

2) Autonomic. this is a combination of hardware and updatable firmware. Think of a reprogrammable microprocessor, perhaps with a small bit of RAM or SSD storage attached to it. The hardware simply interprets signals from the behavioral level and sends them to our mechanical level; the firmware handles the specific details. So let’s imagine we’ve plugged two motors into our circuitboard and a heat sensor. We then tell the firmware how much voltage to send to the motors, and what range of voltage we expect from the heat sensor. It then normalizes these values by mapping them to a floating point number between 0 and 1. (This is just an example of how you could do this.)

So let’s say our heat sensor sends temperature in degrees Celsius, with a maximum of 200 and a minimum of -50. Our autonomic system converts that to a 0-1 range, where 0 is -50 and 200 is 1. Therefore, if the temperature is 125 degrees Celsius, it sends a value of 0.5. Make sense?

Same with the motors. If the motor’s maximum RPM is 2500 (and minimum is obviously zero), if we send a message like “rotateMotor(0.5)” to our autonomic level, it “knows” to send the amount of current that will turn the motor at 1250 RPM. (This can get a bit more complicated, but for our purposes, this is a basic example.)

The point is, the actual physical operating ranges of our components don’t matter at all; that’s easily mappable to standardized value ranges by our autonomic system.

We can program the firmware based upon the mechanical stuff we have connected, so we can swap our components out at any time. We can also create simple programmable autonomic “behaviors”, which are preprogrammed instruction sets. One might be: if the heat sensor (which we’ve mounted at the front of our robot) gets above 0.5, turn both motors counterclockwise at amount 1 until the sensor’s value goes down to .25. This means that when our robot senses temperatures at 125º C or higher, it will run away until the temperature goes down to 62.5º C. This allows us to not worry about basic things like self-preservation. We can even make this behavior slightly more complex: for example, we can use motors that can send back the amount of torque to the autonomic level. If the torque is too high, the motor stops doing what it’s doing.

We can also create simple shortcuts, like “turn left” or “go forward by 500 feet”. These shortcuts can be translated by the autonomic level into hardware specific commands. For example, if we know our motor turns at 2500 RPM and we know that 5 revolutions will move it one foot, when our autonomic system receives the command “go forward by 500 feet”, it translates that into the command “turn on for 60000 milliseconds, or one minute”, which is sent to the motor.

In other words, the autonomic level acts like our limbic system, freeing our robot’s “higher brain” from having to worry about any of the tedious hardware interfacing shit.

And again, this doesn’t have to be oriented towards robotics. We can make an autonomic level that sends electricity through a speaker at a certain frequency when a certain button is pushed, which becomes a very simple musical synthesizer. It’s all just input and output. Just current.

If we’ve done our job correctly, we can now move on to the behavioral level of our device.

3) Behavioral. The behavioral level, in hardware terms, is a black box: it can either be an onboard CPU (like a Raspberry PI, for example) or a network connection, like in our imaginary Roomba. Doesn’t matter, as far as the rest of the system is concerned, as long as it sends commands that our autonomic system can understand. These can either be higher-level (“turn left”) or lower-level (“turn on motor #3 for eight milliseconds, pause for fifteen milliseconds, then turn on motor #5 for one hundred milliseconds, or until sensor #5 trips, in which case start the whole thing over again”). The logic for our behavioral system can be anything we like, provided we have a complex enough processor onboard or in the cloud. In fact, it doesn’t have to be either/or: we can build a behavioral center with half of its behaviors onboard and half in the cloud, or any variation thereof — like our Roomba, which stumbles around blindly until it’s given commands by the cloud. It depends upon the requirements of the tasks our device is made to carry out.

With a structure like this, we can easily build a simple “brain” for a robot that can essentially be connected to damn near any set of sensors and actuators and perform an infinite number of tasks, so long as the right sensors and actuators are connected to it. Such a robot could be anything from a simple Romotive-style consumer toy to a drone tank in a war zone to a telemedical surgical robot, performing neurosurgery while controlled by a doctor miles away. It doesn’t even have to be a robot, actually: it can be a synthesizer or a video game controller or an interface for driving the drone tank or performing the neurosurgery. I cannot stress this enough: it’s all just electricity, going to and from mechanical bits.

And herein lies the difficult part, which is not technical but organizational: this relies upon software and hardware standards, two things which the engineering industry seems simply incapable of deciding upon until forced at gunpoint. There is no standard way of connecting motors to sensors, no universal format for describing an actuator’s mechanical behavior (voltage, amperage, torque, maximum speed, operational temperature range, etc.). Nor is there any standard API or language protocol that can be implemented between the behavioral and autonomic layers. There are existing analogies in hardware/software interfacing: the first two that pop into mind are the USB Human Interface Device standard and MIDI, the Musical Instrument Digital Interface protocol which allows interoperability between synthesizers. (In point of fact, a number of non-musical devices like 3D motion capture systems incorporate MIDI as their input/output system, which is a square peg banged into a round hole, but which suggests that such a standard is probably about thirty years overdue.)

Think of your computer’s mouse, or your trackpad perhaps if you’re using a laptop. There are a few different methods of building a mouse: mechanical, optical, or in the case of touchpads, capacitive. A mouse can move around, or it can be stationary (as with a trackball). And when I was a kid, a mouse required a software driver that came on a floppy disk when you bought it.

But at some point, somebody realized that the actual mechanics of any given mouse were just completely goddamn irrelevant from a software perspective, because every mouse — no matter how it works — just sends back two bits of information: X and Y position. So the people who make mice figured out a standard, in which a mouse sends that positional coordinate over USB in a standard way, which is called “class compliance”. How it converted motion into that coordinate — whether it used two rollers or a laser — was handled at the autonomic level, by the tiny chip inside the mouse.

So now, when you buy a mouse, you plug it in and it works. Any mouse manufacturer who attempted to build a mouse that wasn’t USB class compliant would very quickly go out of business. It would be pointless. There are lots of wonderful improvements in mouse design, I guess, and probably entire conventions full of engineering nerds who get together and get drunk in hotels and talk animatedly about lasers versus capacitance. But nobody else gives a shit. We’ve sorted the irritating part out.

And yet, the people who make robots are still reinventing the wheel, every single time, despite the fact that no robot is anything more than a collection of sensors and actuators, held together in ways that are really fascinating if you’re a structural engineer and completely irrelevant if you’re just trying to write software that controls robots. It’s all just motors, even if there are lots and lots of them and they’re connected in extremely intricate ways. You’re just sending and receiving current.

Imagine a standardization scheme where you, the aspiring roboticist, could purchase a set of motors and sensors and bring them home. Each one might have a QR code printed on it or an RFID attached to it; you could scan the code, and your computer would retrieve all of the pertinent information about the mechanism. You could then plug it into your autonomic interface, tell your computer which mechanism was at which port, and your computer would then prepare the firmware and dump it into the system. You could then attach a CPU or network interface to the autonomic board, and within minutes your robot would be active and alive, behaving in any fashion you liked.

Commercially-sold robots — with perhaps complex and delicate assemblies that would be difficult for you to make at home — would have pre-existing complex autonomic systems, with software that allowed you to “train” them, or purchase downloadable “personalities”, which would simply be pre-existing behavioral methods. Tinkerers could modify and customize the behavior of their robots using standard APIs, which could even have safety limits set in place so that you couldn’t accidentally short your robot or blow out its motor, unless you were sophisticated enough to bypass the API (and the autonomic system) and control the mechanical bits directly.

If robot manufacturers adopted this model, we would begin to see a true Golden Age of robotics, I think. We would begin to see emergent complexity at a far faster speed than is currently displayed, because anybody could build and train robots, and link them together, and let them not only act but interact, learn from each other, and contribute to and benefit from collective knowledge and action.

Now, if only we could convince engineers to get their shit together.


Dick move.

Sometime early Monday morning, my old friend and collaborator Tommy Marth committed suicide.

What a prick.

And Tommy was a prick, make no mistake. It was his chief public characteristic. He was cynical, sarcastic, caustic as industrial solvent. The day he met my wife Rosalie, he walked up and said “So this is the stupid bitch who’s marrying you?” He was kidding, but one of Tommy’s greatest talents was the maintenance at all times of an absolute poker face.

I say one of his talents, because Tommy had quite a number of them. Like every member of his family, he was a gifted musician — in Tommy’s case, it was the saxophone. He was most known, in fact, for being the studio and live saxophonist for Las Vegas’s biggest music act, The Killers, playing on their records Sam’s Town and Day And Age. But he also played with a lot of less-known local acts like Black Camaro, Ryan Pardey’s up-and-coming Halloween Town…and me.

Tommy was possessed of one of the fiercest, most unrelenting minds I’ve ever encountered. It would be a mistake to say that Tommy didn’t suffer fools gladly; in point of fact, he didn’t suffer them at all. He had no patience with stupid people or the mentally lazy, and he didn’t bother to hide his contempt, which also contributed to his reputation as a gigantic raging asshole.

I met Tommy, I think, sometime in 2000 or possibly 1999, at Cafe Espresso Roma, where I met so many of the people who’ve become my good friends and family. Back then, Tommy was still modeling and accompanying casino club DJs on saxophone. My first impression was: prick. And he really was. Why not? He was a male model who literally had to fight off starlets like Tara Reid, who once walked up to him when he was playing at a club and stuck her tongue down his throat. He had no reason to be humble.

But then, slowly, I got to know him, and I discovered that underneath his abrasive exterior was a thoughtful, restless autodidact who was fiercely loyal and devoted to his friends and protective of his family. Tommy and I were very similar in many ways: avowed atheists, obsessive music lovers and makers (though Tommy was far more talented in this direction than I will ever be), voracious readers; deep romantics masquerading as dismissive cynics. Tommy sneered at the world because it consistently failed to live up to his expectations of what it could be.

For a few years there, we were close. I moved in with Tommy’s brother, Ryan, and Tommy and I would sit for hours and hours in Ryan’s condo, filled with instruments and recording gear and the detritus of a thousand electronic experiments, and watch movies or play Grand Theft Auto: Vice City endlessly, disregarding the built-in missions in favor of simply raining chaos down on the cops and whores of Vice City, stealing tanks and using them to demolish entire neighborhoods of the city while “Fascination” by the Human League played endlessly on the in-game radio station. (On at least one occasion when we finished a marathon gaming session by heading to nearby all-night bar and restaurant Ichabod’s, I nearly had to physically restrain Tommy from ramming a cop car, pulling the cop out, beating him up, stealing his cruiser, and going on a mayhem-filled joyride. It was that kind of game.)

We never paid to get into nightclubs or bars; Tommy knew everybody. We would stand back and critique the decor of the place, the layout, the DJ’s music choices, the lighting. For Tommy, the glamorous Vegas nightclub wasn’t fun, it was a job. He was one of those people who float through the places other people are desperate to get into, shaking hands with the club owner, the promotions manager, the barback, the DJ. Tommy knew everybody.

If you knew Tommy, you may have heard him called “Perfect” Tommy. That was my nickname for him, taken from a character in Buckaroo Banzai. He was “Perfect” Tommy because he was perfect. He was a pretty man who often inspired naked lust in women who encountered him, until they tried playing flirty and ditzy with him and he sent them away with a dismissive remark. (His rebuff to a supermodel who was desperately trying to engage his attention: “Are you the president of the Ron Perlman Lookalike Club, or just a member?”) He was perfect because he could back his bullshit up, because he was always the coolest guy in the room, whether the room in question was our kitchen or the dancefloor du jour. I even made “I (Heart) Perfect Tommy” t-shirts with an online printshop; to our delight and confusion, I sold one to somebody on the far side of the world.

We were close, and then we weren’t. Tommy was increasingly involved with his music career, and he seemed to spend less time out and about, more time in the studio or just hanging out with Ryan and their sister Melissa. We were close, and then life happened, the way it often does, and instead of hanging out with Tommy every night, I’d see him once a month, then once every few months. He got busy; I got married and quit drinking, which obviated the only two reasons I ever really made the scene. We just weren’t moving in the same places anymore. But he was still my friend.

When he went on tour with the Killers, we sat around Facebook and giggled at the pictures he sent from far-flung places: Tommy riding a bicycle in Paris looking like some kind of sinister homosexual prostitute in his everpresent (and utterly hetero-challenged) v-neck t-shirt, Tommy at the Acropolis in Athens, Tommy surrounded by adoring groupies backstage at a London show. It was funny to imagine Perfect Tommy hanging out with the bright young things of 2000s indie rock, still sneering, still the coolest guy in the room. (He once spent an evening in the NYC apartment of Strokes lead singer Fab Moretti, discomfiting Moretti’s then-girlfriend Drew Barrymore by endlessly giggling at how much she resembled his sister Melissa.)

Then he came back, and seemed to resume the path he’d been carving for himself for years: working at the Revolution Lounge and the Royal House and the Beauty Bar, handling nightlife promotion or managing the bar, still recording and playing gigs with friends. Since November, he’d been working as nightlife promotions manager at the Hard Rock Casino.

I found out that last part, by the way, by reading his obituary in the Las Vegas Weekly. The last time I really talked to Tommy was at his brother Ryan’s birthday party last year. I’d seen a couple of times since then, for brief moments, at the Beat Coffeeshop or outside the Griffin or at the Royal House, but we’d barely done more than hug and promise to catch up.

Every so often the last few years I’d call him and text him and email him to come and have coffee or get food, and he simply wouldn’t respond. It hurt my feelings, slightly, but Tommy was Tommy. He’d been having other problems as well, which I won’t go into here, and I was worried about him. But whenever I’d see him, he always seemed to be doing well, to be happy — or as happy as Tommy would ever allow himself to appear to be — to be enjoying himself. He was busy, living the dream, or so I thought.

Until yesterday, when my friend Carey Kaplan came into the Coffee Bean, where I was sitting and working on my laptop. (Where I’m sitting and writing this now, in fact.) Her eyes were red.

“How ya doin?” I asked her. She started to sniffle. “Not good.”

“What’s the matter?” I asked. She just looked at me. “It’s bad,” she said.

“Is it something I need to know?”

“You’ll find out anyway.”

“Well, what the hell is it?”

And she told me, and I felt the ground drop away from under me.

Last night, a few of his people came by my house. We sat on my front lawn in my cheap plastic patio chairs and drank Jameson’s and listened to the Pogues and told stories about the silly, mean, amazing shit Tommy had pulled in his brief life.

His brother Ryan came over late. We laughed about what a dick move Tommy had pulled. In fact, Ryan and I agreed, we should hang a banner at the entrance to his funeral that just read DICK MOVE in giant letters. I pulled out an old promotional ad I’d made for my erstwhile music store, featuring Tommy and Ryan and our friend Alex and myself as a sort of retarded fake boy band. Ryan was the Sensitive One, Alex the Pretty One; I was the Odd One, the one member of every boy band who seems utterly out of place. Tommy was the Tough One, throwing shapes in a pair of wraparound sunglasses and a Kangol hat.

We talked about the surreality of receiving condolence messages via the social networks from Killers fans; I was unaware that, for some time, Tommy helped to manage the Killers’ official fan club. It surprised me because it seemed totally at odds with the Perfect Tommy I knew, but many of the fans who messaged me or replied to my posts told me how sweet he was with the Victims, as they were called. (I joked with Ryan and TJ Styles, bassist for Big Friendly and a close family friend, that when I started getting messages about how nice Tommy was to the Victims, my first thought was “They knew about the victims? I thought Tommy had hid them away better than that.”)

Some of our friends seemed horrified by the fan messages, but I thought they were kind and respectful, and I understand them, I think. Tommy meant something to these people as well. Not the same things he meant to us, but he was still someone who had touched them, either through his music or by simply being nice after a gig, and I was grateful for their sympathies.

I asked Ryan, as delicately as I could, how they were planning to handle the funerary arrangements, as he and the rest of Tommy’s family are Christians and Tommy was a vicious atheist. “We’re gonna do the most religious ceremony we can,” Ryan laughed. “Because fuck him.” I suggested we get a Catholic priest and a Mormon elder and a voodoo houngan and a faith healer, and then get Richard Dawkins to piss on Tommy’s grave. It made Ryan laugh, and I was grateful for that.

My heart is broken, not just because my great friend is dead, but because his massive dick move has also broken the hearts of his brother and sister, who are two of my favorite people on Earth, and whose sweetness and good-naturedness have always stood in marked contrast to Tommy’s cynicism. They do not deserve this, nor do his parents, nor do any of us who cared about him.

I don’t know why Tommy chose to do this stupid thing, or if it was even something he considered for more time than it took to do it. I’d always known that Tommy was wounded by a world that never lived up to his expectations, but I’d always assumed his colossal ego, arrogance and intelligence would keep him moving, because fuck the lot of you. And I’d always sort of looked forward to seeing old Tommy: old, mellowed out Tommy. He would be calmer, less cruel, less dismissive…but he would still have been the coolest cat in the room.

And now we’ll never find out.

So we’re going to bury Tommy soon, and the rest of us are going to go on. He will never get any older, mellow out; his perpetual growth of stubble will never go gray, his bald head will never stoop. He will exist only in the memories of those who loved him, and who will always miss him, and always be furious at this, his last dick move, and I miss him like hell already.

Goodbye, brother.


A Pitchfork Band Review: Crystal Wolf Loves Foxes Too

As anybody who’s ever heard a musical note knows, tiny Muenster, Texas (pop. 1566) has become the new indie hotbed. Muenster bands such as Punky Brewster Soundsystem and Lars And His Horse People were the bands to watch at SxSW this year, not to mention Helsinki’s IceeBalls Music Showcase and Rumpster Magazine’s Provo-based RumpFest. Raconteurs frontman Jack White has recently announced that he’s opening a vintage 8-track store and BBQ shack in downtown Muenster, just another example of the town’s growing cultural capital. And, of course, there’s Crystal Wolf Loves Foxes Too, who seem poised to become Muenster’s Next Big Thing.

CWLFT is the brainchild of nineteen year old Ryan Dylan Ryan and his eighteen year old sister Brionna Jennee Ryan. Beginning in 2008 as a Christian indie folk duo influenced by Devendra Banhart and Loggins & Messina, in just three short years their sound has matured, mixing elements of the Arcade Fire’s post-ironic dreariness and the lush electro sounds of El DeBarge with the neo-folk of Mumford & Sons and the undefinable quintessence of Fleet Foxes, whose name inspired one of the words in CWLFT’s own name.

“We started out doing worship music,” says Ryan Dylan Ryan, who refuses to do any press unless his name is printed in full every time it’s mentioned, “but after a while I realized that I had my own, like, musical path to follow. Plus people kept calling me ‘Jesus queer’ and punching me in the kidney every time we did a show at the roller rink.”

After purchasing a 1989-vintage Roland CR-69 drum machine from a neighbor with special needs who had previously used the device to communicate with his elderly parents, Ryan Dylan Ryan recruited his sister Brionna Jennee Ryan on hurdy-gurdy, tenor banjo and backup vocals. “I’m not really sure what Brionna was doing musically before that,” Ryan Dylan Ryan says. “I know she sucked a guy’s dick behind the rec center this one time so she could afford to drive to Dallas and see Someone Loves You Boris Yeltsen, so I guess you could say she’s always had this musical obsession.”

Brionna Jennee Ryan (who credits her unique fashion sense to her incipient fetal alcohol syndrome) prefers to avoid the limelight — and, in fact, according to her brother, light altogether. “Yeah, she was born with this weird allergy to light,” says Ryan Dylan Ryan, “so she never comes out unless we’re playing a gig. I don’t actually even, like, know where she lives or anything. We rehearse in this old abandoned nuclear missile silo that these organic farmers are turning into a massive grow station, but we have to turn off the UV lights or Brionna will start projectile vomiting and stuff.” Ryan Dylan Ryan credits his sister’s delicate, sunny pop-perfect arrangements to the fact that she was born without a lower brain stem or tongue. “She’s so real, you know? She doesn’t like worry about all the bullshit like other people. She just sits in the dark with her hurdy-gurdy and her Brian Wilson records and just, like, makes art and stuff. And hoots.”

Despite being courted by Williamsburg indie darling label Swollen Coke Fork Records, Crystal Wolf Loves Foxes Too refuses to leave Muenster. “We’ve got our roots here,” says Ryan Dylan Ryan. “In Brionna’s case, that’s totally literal, by the way.” They chose to release their first album, I Heard Somebody Crying And Then I Realized It Was Me, through Internet channels only, though a limited edition — carved into an Edison wax cylinder and wrapped in a Palestinian keffiyeh scarf — is available via mail order and through a special distribution deal with the Luby’s chain of affordable cafeterias, a move that Ryan Dylan Ryan describes as “thinking outside the Old Media box”.

The album — co-produced, like every other fucking indie rock album ever, by Steve Albini and Sonic Youth’s Lee Renaldo — is a curious mix of tender, heartfelt white people singing, reminiscent of Portland’s You Don’t Bring Your Mother and Bright Eyes, and dissonant electronica that one reviewer notoriously described as “sounding like Aphex Twin taking a violent shit at a truckstop in El Paso”.

“We slept in Albini’s studio while we were making the record,” says Ryan Dylan Ryan. “Only he didn’t know about it. He’s so funny — he’d walk around going ‘Why does my vocal booth smell like a sheep shit in it?’ and ‘Why doesn’t that albino whore have an indented nasal bridge like a normal human?’”

Critical success has come quickly for Crystal Wolf Loves Foxes Too, as well as a certain amount of underground fame. Ryan Dylan Ryan won’t discuss rumors that he’s currently in a relationship with Rilo Kiley’s Jenny Lewis, but statistics and the law of averages suggests that he probably is. Meanwhile, Brionna Jennee Ryan has been seen doing high profile DJ gigs at vegan collectives in northern Sweden during the long, sunless winter months, and is recording a collaboration with Karin Dreijer Andersson of Fever Ray to be entitled either Ah, Fuck, The Goddamn Weasels Are Tearing At Our Clits Again or simply Eeeeeeeaaaaauuuugh, which reportedly uses no instruments other than the sounds of Andersson and Ryan banging their skulls against moss-covered Icelandic cliff faces and weeping. “I’ve heard it,” says Ryan Dylan Ryan, “and it’s a totally challenging record. But it’s like, totally sunny and pop-perfect and danceable too.”

Meanwhile, the mainstream world keeps calling too. Recently director Noah Baumbach used the CWLFT song “Thundercats Ho” in his indie drama Melvin, His Trust Fund And His Bicycle, which also features tracks from Cut Fleet Cold Furnaces, You Don’t Bring Your Mother, Hey Look It’s Lisa Bonet From The Cosby Show and Beck. Another track from I Heard Somebody Crying And Then I Realized It Was Me was used in a television ad for Same Ol’ Hootenanny Moustache Wax. “I mean, I guess it probably looks like we’re selling out,” says Ryan Dylan Ryan, “but it’s hard to live without money. Plus somebody, I’m not gonna say who, but somebody in the band needed a tail removal operation, and they don’t do that for free in Texas.”

So what’s next for Crystal Wolf Loves Foxes Too? Ryan Dylan Ryan says the band’s just taking it easy and preparing to go into the studio to record their sophomore album, tentatively titled Fuck I Wish It Was 1988, which is rumored to be produced by the Arcade Fire’s Win Butler. “I called Win up one day,” says Ryan Dylan Ryan, “and asked him if he’d produce the album, and he said he would if he could fly down to Muenster and give me a Brazilian. I started laughing, but he was totally serious. I mean, dude, what would you do? It’s totally the guy from Arcade Fire? So he flew down and we went out in a cornfield and he gave me a wax. His wife filmed it with an 8mm film camera, but I haven’t seen it on, like, their website or anything yet, so maybe when they do a DVD or something.” The album is apparently a radical departure from the band’s current sound, featuring sunny, pop-perfect vocals over rootsy alt-country rather than shimmery alt-folk. “We’ve got one track, which I think is going to be called ‘Trapper Keeper Yay You’re So Rad’, and we’ve got like seven hundred and thirty vocal harmony tracks,” says Ryan Dylan Ryan. “Most of them are by Grizzly Bear, but I got my neighbor who sold me this drum machine one time to sing some of them, except he couldn’t remember the lyrics, so he just sang about Huey Long and the fascist takeover of Louisiana, but it’s like way more organic that way, you know?”

One thing’s for sure: Crystal Wolf Loves Foxes Too is the band to watch out for, for at least the next seven or eight minutes.


A Musical Manifesto (Of Sorts)

I’m in the very early stages of recording a second LP under my pseudonym, Red State Soundsystem. (I’m also recording an acoustic EP of some of the tracks from my first LP, Ghosts In A Burning City, as well as some new tracks, primarily on guitar and piano.) So I’m thinking a lot about music these days.

I don’t want to make a “pop” record, except in the most broad sense. I am bored with pop music. I’m bored with shiny, happy, sun-kissed music, with Brian Wilson fetishism, with ELO close harmonies and layers of major key Mellotron. I’m bored with beardo indie pop. I’m bored with Prozac music, blissed out “happy” music that actually has no passion behind it. I’m sick of danceability, of 8-bit synths, of the almost hysterical infantilism of most modern rock and roll.

I grew up in the 1980s. I love much of the music of the 1980s. I have absolutely no fucking desire whatsoever to attempt to replicate it as closely as possible, down to spending thousands of dollars buying really shitty “vintage” digital synthesizers that are easily and precisely replicable on any device with more complexity than a ten year old Nokia candybar cell phone. (Trust me on this; you can exactly replicate a TR-808 drum machine or Yamaha DX-7 synth in software now. There’s no magic in them, no secret ingredients, not even the random variation of a 1970s analog synth.)

I want to make music for unhappy people. I want to make music for sexually frustrated people. I want to make music for losers, geeks, freaks, drunks, addicts, burnouts. I want to make music that people will sit in the dark and listen to and burn incense and smoke cigarettes, and I want the music I make to maybe stop them from hurting quite so much. I want to make rough music. I want to make glitchy music. I want to mix the sounds of electronic music, which I love, with the emotional intensity of rock and roll. I want to make music for adults with adult emotions, ambiguous and not always beautiful. I want to make music that drones, that has beats, that makes you want to go out and fuck or kill or die or live. I want to make music that pretty people hear and get aneurysms and fall down dead on the street. I don’t want to be experimental, because making atonal horrible noise isn’t experimental. A lot of people already tried the experiments and produced a lot of pompous, shitty records.

I want to make a record, not a collection of singles for YouTube. I want to make videos, but I want them to be interesting, otherwise there’s no point.

Fuck Brian Wilson. Fuck Jeff Lynne. Fuck the Arcade Fire. My music is influenced by: William Gibson, Lorca, Clive Barker, T.S. Eliot, Anne Sexton, Tom Waits, Lou Reed, Tricky, Garth Ennis, Hunter Thompson, Neil Gaiman, Van Morrison, The National, Grant Morrison, China Mieville, Dave McKean, Nick Drake, Sant’Elia, Bowie, Harlan Ellison, Nick Cave, Jon Hassell, Brian Eno, Leonard Cohen, Leonard Cohen, Leonard Cohen. My music is influenced by all the horrible nights I spent drunk hurting myself and all the terrible things I’ve done and all the redemption I’ve managed to scrape together. My music is influenced by every pack of cigarettes I’ve smoked and every tab of acid I’ve chewed on and all the good sex and bad sex I’ve had and every shit bar I’ve ever been in and every beautiful salon and not at all by wonderful white suburbia. I don’t give a fuck about the lives of suburbanites unless they go mad.

I can’t sing. I don’t care anymore. I sing the way I sing. I write better songs than people who sing better than I do. My music isn’t complex. It doesn’t have the kind of chord changes that other musicians get excited by. I don’t care. I’ll write songs with two notes.

Lyrics matter. If you don’t think so, you’re doing it wrong.

I want to write songs that make people want to sell everything they own and get on a plane and disappear into the world, born again under wilder skies. I want people to fuck to my music. I want people to want my songs played on a boombox at their graveside. I want to make people happy. I want to make people think

I don’t need to rock harder than anybody else. I’m a pussy. I write gloomy mid-tempo music. That’s fine. I make gloomy mid-tempo music as hard as I fucking can. It’s not made to drop in the club to help morons find other morons to fuck. I want smart people fucking to my music.

I don’t care if anyone else likes my music anymore, or buys it. If you don’t like it, it’s not for you. Maybe in a hundred years, somebody will dig it. Maybe you dig it now. If you do, I’m glad. Really glad.

I will never be on the cover of a glossy magazine. Prom queens will never want to meet me because my music speaks to them. Nobody will ever ask me to do a celebrity remix. Nobody will ever put my music over the closing credits of a blockbuster movie. That’s fine. I don’t care.

Every song I record, every record I make, is a paper boat with a candle in it, set onto a wine-dark sea and sent off into the world. I don’t know where they will end up. I hope interesting and crazy and maybe useful places. But it doesn’t matter, in the end. All that matters is that I make them and set them free, until the day I die.

Anything else would be pathetic.


Essential iPad Tools

So I’ve had an iPad for a few weeks now; I’m beginning to learn iOS development and it seemed like a useful thing to have, as I no longer have an iPhone. (I lost it.) Also, I needed something portable to carry other than my aging MacBook Pro, which is definitely showing signs of wear and tear. Most of what I do with computers can be done on an iPad, barring graphic design work; and I’ve managed to get around a lot of the iPad’s limitations.

So I thought I’d share with you the tools and apps I’ve found coolest and most useful so far.

1) A keyboard Several years ago, I described in my Las Vegas CityLife column what I thought was the ideal form-factor for a portable computing device: a touch-enabled tablet that could be carried separately from its keyboard. The iPad gets this half-right, and honestly for most casual use the onscreen keyboard is fine. I can average about fifty WPM on it, which is decent for web browsing, tweeting, writing notes, etc.

However, I want to use my iPad to write long documents (like fiction) and PHP/HTML/CSS/Javascript code. And for that, you need a physical keyboard. It’s not just the tactility of it, though that’s a big part of things; it’s also the fact that the iPad’s virtual keyboard takes up 50% of the screen, and when you’re trying to do serious coding or writing that doesn’t work.

I wanted the Apple bluetooth wireless keyboard, but I didn’t want to spend $70 for it. So I got Apple’s Camera Connection Kit, which includes a USB-iDevice 30 pin adapter. It’s made to stick USB drives into the iPad so you can transfer images onto it, but an undocumented feature is that you can hook other sorts of USB devices in as well…including both QWERTY keyboards and MIDI controllers.

I got a $14 mini-keyboard at Fry’s to go with it, one of the cheap little ones that sysadmins often buy to hook into servers they rarely need to directly access. It’s not bad — it has a steel frame and it’s barely wider than the iPad itself. Keyboard goes into the camera kit, camera kit goes into the iPad. The OS will popup and tell you the device isn’t supported, but it works perfectly well. Supposedly you can control the iPad’s hardware like volume and the Home button with keyboard combinations, but I haven’t figured them out yet.

I’m using it now to type this, and it’s just as responsive as my desktop, typing within the Safari browser. Selecting with the keyboard works perfectly — hold down the Shift key and use the arrows, just like a desktop — though often tabbing around interface stuff doesn’t work the way one would expect. But it’s a marked improvement.

2) Docs-To-Go This was my office suite of choice for the iPad, because it supports uploading docs to Google Docs and to Dropbox, which I use extensively. So far it’s pretty decent — almost fullscreen editing of Word documents. I can’t figure out if there are keyboard shortcuts for text formatting, but I haven’t tried much other than Ctrl-I for italics. I’m thinking of trying out WriteRoom as well, as I have it and love it on the desktop.

3) FTP On The Go / Textastic For code editing, this is my one-two combo. FTP On The Go is a really full-featured FTP client for iOS that also allows text editing of documents directly from the server. The only reason I use Textastic with it is that FTPOTG doesn’t support the only two code editing functions I really need: line numbering and syntax highlighting. Textastic does, though it doesn’t have its own FTP client built in. I’m hoping one of these two apps adopts the other one’s features so I can just use one, but for right now these are a nice set of tools. I also have iSSH for telnetting or SSHing into servers.

4) Reeder I’m a Google Reader junkie. Unfortunately, the default UI for it doesn’t work properly in Mobile Safari and the mobile version is retarded. So I’ve been using the popular Reeder app, which syncs with Google Reader, to read my RSS feeds.

It has its limitations — the most irritating being that it navigates via folders, not individual feeds. I organize my feeds with folders, but there are a lot of feeds I don’t check regularly or want to basically ignore most of the time. For example, my News folder has Google News, Yahoo News, and the Guardian UK’s Culture feed. I can’t look at just one of these with Reeder — they all show up, either organized by the feed itself or by time. I’d rather just be able to only look at one feed at a time.

I just got the River of News app, which seems to be much closer to what I really want in a RSS reader UI, but it seems a bit slow, interface-wise — it loads each item slowly and sometimes cuts off images. But we’ll see.

5) Instapaper Instapaper on the iPad is an incredibly useful tool. You can save entire web pages to it for later viewing. It also reformats the page and strips out everything but the main text and images, displaying it in minimalist black and white. The iOS app downloads the page and stores it locally, so you can read pages even when you’re not online. And you can send things to it from Twitter or Reeder, which rocks — if I find an interesting article in Reeder or somebody posts a link to something, I just send it to Instapaper and check it out later.

6) iBooks I haven’t bothered with the Kindle or Nook readers for iPad, because iBooks does what I want it to do and does it well. The only problem I have with it is that it won’t display PDFs in a two-page spread — the PDF page only shows up one page at a time. But it’s not a deal breaker. It’s also awesome for reading comics.

7) Nanostudio My current favorite app. Nanostudio is a portable electronic music studio, similar to Propellerheads’ Rebirth or Beatstudio. But Nanostudio is more flexible, featuring four dual-oscillator synths and an MPC-style sampler. You can mix down your loops directly into the sampler, export each part of the song individually, record samples from the mic or input, and output your mixes directly into SoundCloud. The onscreen keyboard is actually usable, and I’ve managed to make it work like a ribbon controller. (If you don’t know what this means, don’t worry. It’s music nerd speak.)

I’m sure I’ll come up with more, but this is the basic list.


Blogging from the iPad

Now that I have a small keyboard for my iPad, I think I should start blogging again here. I haven’t blogged regularly in a very long time, because most of what I want to say I say on Twitter, and because I haven’t really had much of value (I think) to say in general.

But it’s a new year, and I’ve realized that I kind of miss blogging. It helps me keep my own thoughts on things in focus. Plus a lot of people seem to actually enjoy reading this thing. So I’m going to make a resolution to post at least once a week here about something.

Now, if the iOS WordPress app weren’t so slow and crash-prone….


My wedding vows.

Rosalie and I wrote our own wedding vows. Several people asked me to post mine, which I wrote in verse form; and with Rosalie’s permission, here they are.

I will love you in the morning,
In those minefield moments
Before the coffee comes pouring out
To clear the cobwebs from your head,
When you move through the house
Like a ghost who can’t remember
Exactly how you left everything,
Blinking, like a sleepy owl.

And I will love you in the evening,
After you’ve wiped the day away
With cold cream and tea tree oil,
Curled up in your purple pajamas,
Nuzzling at my shoulder with your head,
Purring, like a sleepy cat.

I will love you when you are strong,
When you are as beautiful as you are now,
On those days when everything that’s in the world
Is just the frame that wraps around you,
When you are the song that’s playing in my head,
The blood that keeps my heart moving.

And I will love you when the world
Is washed out like an old Polaroid,
When you’ve locked yourself
In rooms made of uncertainty,
When you cannot speak,
When you cannot breathe.
I will breathe for you.
I will speak for you.

I will love you when gravity has worked its dark magic,
When your back is bent and your face is a scrawled memoir.
I will love you when there are less days ahead than behind.
I will carry you when you need carrying,
I’ll remind you when you need reminding,
I will hold you when you need holding.
I’ll love you when you need loving
And even when you don’t.

And I will love you when you are gone,
And when I am gone,
And when the world has ended
And for at least five minutes afterward.
I will love you when the stars burn out of the sky
And I will love you when the light of their fire
Finally comes to tell us of their passing.

I cannot promise that I will always be a good man.
That I will always know what the right thing to do is.
I will be weak and I will be selfish and I will be a coward.
But I can promise that I will do my best,
And make each decision with your face in my mind.

I cannot promise you that we will be rich
Or that we will always be comfortable.
I cannot promise that we will never know the joys of public transit,
Or the terror of unpaid bills.
I cannot promise that we will never want for anything
But I can promise you that you will never want for laughter
And never want for love.

I can promise you this:
Wherever we go, whatever we do,
We will be amazing
And our life will be bigger than the sky.

And I can promise you one last thing,
With everything I am, and everything that is in me:
I’m gonna love you, baby, ’til the wheels come off.


It Gets Better.

Columnist Dan Savage’s “It Gets Better” video campaign has been in the news these past couple of days. The campaign was created in response to a recent rash of suicides by young LGBTQ kids. The videos are by queer adults, letting their younger counterparts know that it does get better, that you can get through the hatred and fear and homophobia of your upbringing and make a wonderful life for yourself.


p style=”text-align: center;”>

This has a real resonance for me. I’m not gay, but I still got gay-bashed in school a lot, because I wasn’t particularly macho and I spoke well and dressed…er, eclectically…and I was friends with a few gay kids and people who later came out. I had a few friends who got it worse than I did, and one of my acquaintances, Matthew Shepherd, got it about as bad as you can get it. My uncle Kevin was also gay; he contracted HIV in 1982, got full-blown AIDS in 1984 and survived until 2002, when he died of a brain tumor he’d been diagnosed with at the same time he’d been diagnosed with AIDS; the doctors didn’t remove it because at the time it was benign, and because in 1984 AIDS was a death sentence that was always quickly carried out. All of Kevin’s lovers and, later, his husbands, were treated like members of our family; his first husband Michael died in my great-grandfather’s arms. So I grew up with gay family members and friends.

But I think this message is vital not just for members of the LGBTQ community, but for every kid, especially the kids whose wonderful minds and personalities mark them as being different from the herd. Goth kids, emo kids, nerds, geeks, freaks, art fags, dorks, hippie kids…every school has at least a few of them. Like me.

I hated every minute of my schooling, from kindergarten onward. I hated the other kids, I hated the teachers, I hated the school administration. I fought every single day not to go to school. And why not? For eleven years I was sent to a place where I was subjected to emotional and often physical cruelty from my peers and indifference and often outright hostility from my educators.

Why? Because I wasn’t like my peers. I was smarter than almost all of them; sorry, but that’s just the flat truth. I was curious and easily bored and I didn’t know how to keep my head down. I was sarcastic and I was insolent, because I hated being where I was and hated the people around me and had absolutely no choice in being where I was. I liked to read, not sit around talking about fucking WWF wrestling. I liked writing music and making art on my computer. I was autodidactic; I educated myself, for the most part, because I ignored my teachers and my schoolwork. I got almost straight Fs from sixth grade onward, except usually in my English classes. When I sat down in my first class, all I could think of was making it to lunchtime without getting humiliated or assaulted; after lunch, I just waited to be sent home.

What I learned in school wasn’t reading, writing and arithmetic; I learned hatred and fear, and I learned that my nominal job in society was to do what I was told. I didn’t learn that lesson then, and at the age of thirty-two, I haven’t learned it now. I do not do what I am told.

I know I’m not alone. Maybe you were one of those kids, who sat in those uncomfortable little desk-chairs and ignored the whispers of “Hey, faggot. Hey, faggot. Hey, cocksucker,” and the spitwads and the slaps in the back of the head when the teacher wasn’t looking; one of the kids who plotted their walk home to avoid where the bullies hung out; one of those kids who sat in their bedroom and thought about putting a gun in your mouth or a noose around your neck because the years until graduation seemed to stretch out like a life sentence with absolutely no hope of parole.

Maybe you’re one of those kids now. Maybe you’re queer, maybe you’re not; maybe you’re just different, the way I was different, the way my friends were different. Maybe you’re scared and hurting and just sick to fucking death of being treated like shit because you don’t wear the same clothes or like the same music or watch the same TV. Maybe you’re having as hard a time as I did seeing the exit door.

If so, I’d like to tell you something. It’s a secret your teachers won’t tell you, your parents probably won’t tell you, it’s something you may secretly believe but deny to yourself in the face of all of the people who are telling you otherwise. The secret is this.

You’re right.

You’re smarter than they are. Really. Trust me. The great thing about Facebook is that I can look and see what the assholes who tormented me are up to. Most of them are sad, pathetic, boring adults. They have tiny lives. Most of them seem to have gotten their skanky girlfriends knocked up at an early age, and have a giant brood of nasty little piglet children. They still like shitty music. They got puffy around the face, the kind of puffy you get when you spend your life getting shit-faced on cheap beer with the rest of the retards because you can’t face the blank wall that is your future. Most of them never left home, or got more than a couple of hundred miles away. A lot of them love Jesus to a really scary degree. Hey, I don’t blame them. If I’d fucked this life up, I’d probably spend all my time dreaming of the next one too.

You’re right about your teachers, too. Most of them just don’t give a shit about you. They’re drawing a paycheck. There are a few who really care — and you’ll remember them, for the rest of your life. A few months ago I called up my wonderful guidance counselor, Clarice Boring, and told her about my impending marriage and my life, and thanked her for being one of those lights during a dark and scary time. You might have an English teacher or an art teacher — or in my fiancee’s case, drama teachers — who are like that. Man, treasure them. They’re good people and sometimes they’re more like family than your family is.

But the rest of them? Fuck them and fuck what they think of you. Don’t assume because they’re in charge that they know better than you how to live your life. They’re just as confused as you are. One of the great secrets of adulthood is that you don’t figure everything out. You just figure out how to make it look like you have.

That goes for your parents, too. Here’s another secret: your parents are just people too. They don’t have all the answers. And no, they probably don’t understand you now. When people have children, they secretly believe that their kids are going to be exactly like them, except that they won’t make the same mistakes. When it turns out that this new person you’ve created is just that, a person, with their own minds and souls and ways of thinking and wants and needs, that might be completely 180º from what you want — a lot of people can’t deal with that.

That sucks, but you know what? That’s not your fault, either. They need to learn to accept who you are and to accept the choices you make. Maybe it’ll take them a while — not everybody’s a quick study — but most of the time, they do figure it out eventually.

And if they don’t, then fuck them. Most cool people I know make their own families out of friends and lovers. If your parents can’t accept you, you just have to understand that and build a family out of the people who do. You’ll find them.

I wish I could tell you there was another way to get through all of this, but there’s not. You’re stuck with this bullshit, kid, right up until the day you get that diploma and bounce the fuck on out of wherever it is the universe started you off — the burbs or the hood or some sad little cowshit town out in the middle of Flyover Country. But from there, you can go anywhere. Anywhere. Sometimes you get to do it in style; you’ve got the grades to go to a kick-ass college and study whatever you want, or parents who can pay to see your dreams realized. If you’ve got that chance, take it.

If that’s not the case — if you’re not bound for Harvard or MIT or UCLA — you can still get out. Nobody’s got a chain around your ankle. Sometimes salvation looks like a Greyhound bus, headed to New York or San Francisco or Portland or Denver. That’s not easy, but it can be done. Plenty of people do it and do well.

I won’t bullshit you: it’s rough out here in the big world. It is. The stakes are higher. You can die out here, get killed, disappear, lose yourself to a bottle or a needle or a pipe. And people like us, who make our own way in the world, often find ourselves in places we’d rather not be, because we’re not following the easy, well-defined path.

But you can make it. And Dan Savage is right: it gets better. It does. I swear to you, kid, it gets better. You make friends. You fall in love. You become master of your own destiny, wherever the world takes you and wherever you decide to go.

And one day, you’ll find yourself over thirty, looking at the life you’ve made — a life you probably couldn’t have even imagined back in the day, back in school — and all the horror and hate and terror will seem like a bad dream that somebody else had. You won’t be that scared person anymore.

And that’s when you’ve won.

My heart breaks for you, kid, and what you’re going through. You may not believe that, but it’s true. It breaks for you and every other kid like you, like me, like us. It breaks for every kid who takes a beatdown because of how they dress or how they think or who they love. As a wise man once wrote, “What I hope most of all is that you understand what I mean when I tell you that though I do not know you and even though I may never meet you, laugh with you, cry with you, or kiss you, I love you. With all my heart, I love you.”

All I can do is repeat myself: it gets better. It gets better. It gets better. You will be beautiful and you will be amazing. You will be loved, you will be admired, you will have people to share your dreams and your life with. You will win.

And fuck anybody who tells you otherwise.

Get to it.