Category Archives: Uncategorized

Product that will Eventually Be Made: Getaway Drones

I went Googling for a picture of a drone to use in this article, and because it's 2015 I found this.

It totally destroys all the buildup I had in my original draft of this, but it is too awesome not to include.

So: right now we live in a country where weed is legal in some states, and drones are going to be used to deliver weed, because they're going to be used to deliver everything legal at some point. (It's not crazy — remember, the post office used to sort all letters by hand)

But there are a lot of states where weed is not legal, and a lot of other illegal substances that someone would rather not be caught with by the police. Hence: the getaway drone.

All it is is a quadcopter with a little storage space that Someone Who Isn't Me keeps their drugs in. At some trigger — the push of a button, a text message, or anything else that's hard to do on accident — the quadcopter flies away.

It doesn't need to go anywhere in particular. It doesn't need to find one destination so said Person Who Isn't Me can pick it up. It just needs to put as much space between it's home and where it crashes down so it's too annoying to find. If it's got a camera, it's not super hard to find a pond or a lake to ditch in. $300 worth of electronics for a bad quadcopter is worth not getting caught with contraband.

Of course, if I or any one else makes this, it's strictly for tobacco use only.

Out, damned spot!

Right now I've got a file open in Vim.

Screen Shot 2015-04-24 at 7.48.14 PM

The little plus down there means that the buffer is dirty — I've got unsaved changes. So we need to save those before they're actually on disk.

Screen Shot 2015-04-24 at 7.53.16 PM
Oops. My clean state itself is dirty — the disk has changes not reflected in the code, so lets save those disk changes into the buffer view, then make the changes, then commit those changes to disk. So we should be good now.

Screen Shot 2015-04-24 at 8.00.43 PM


Now git is dirty. So I commit. Now, how many steps am I from actually running this code? It depends. If I'm just loading it through a "file:///" style URL, the browser will check the cached version against when it was last updated — dirt! dirt! dirt! — update the cached version if necessary, and load it up.

If I'm running it in production, who knows how much dirt is left. If I'm using a reasonable deployment setup, I'm probably going to have to push to a central repository (unpushed local changes are dirty), then the script will sync the dirt from the central repository to its own copy, then check whether any dirt has been added or removed in the dependencies file, then serve it up with an accurate Expires header so the browser will know when to check for filth, and maybe an etag so it can do a spot check for the browser.

I do this whole process tens of times a day and I think of it as one step. I'm amazed it all works.

Mandatory Mind Reading

A tragedy in three acts. You are the doomed hero.


You go to a website on your phone. It's legible for the first split second, and then the "mobile optimized" version renders. That text you started reading? Gone. None for Gretchen Weiners. The scroll lags and life is no longer worth living. There's no button to go back to the real version.


You're thinking of moving to New York because you're tired of the Bay Area. You search for a semi-famous restaurant by name. Google gives you a page full of matches with one keyword in common from San Francisco. You add "New York" to the query. Google does that thing where it looks like it's tired and hangs for a second and a half before giving you total garbage. Three months later in Manhattan you look up the restaurant and it autocompletes the search for you three characters in. The restaurant uses too much salt.


You finish a Slate article. You see two recommended articles you want to read, one about growing marijuana and one about women in tech or something else Slateful. You middle click the first article and it opens in the same tab because Slate is the worst. When you press the back button the other article is gone and all of your recommendations are about marijuana. You smoke a blunt and your company's next twelve technical hires are men.

This is the face of mandatory mind reading. You know what you want and the machines don't care, they know better than you, because look, who are they going to believe, you you, or data you?

(The one page play is over, now for 400 pages of commentary)

When I started writing this, I tried to itemize how much of what I see was algorithmically tailored specifically for me. I stopped because it was everything.

  • Facebook feed
  • Google results
  • Gmail priority inbox
  • Google Drive rankings (I'm really dependent on Google, aren't I?)
  • Every news site I read except Hacker News

It's 2015 and there are APIs to detect what capabilities a user machine has and adjust accordingly. It's 2015 and data mining has gotten sophisticated enough that pretty much everything can be customized on the fly and be kind of close to what the user wants.

These are both good things, but electric voodoo telepathy should be used responsibly. I spend so much time trying to trick software into working when it should notice what I'm doing instead of going off its model of who I am. I have to copy and paste web pages because I need what I'm seeing right now on these pixels here, not whatever the server deigns to give me the next time I ask. I've been working on a personal app that just opens what I've got open in desktop Chrome on Android Chrome and visa versa because I have to switch so often just to get through some sites.

Mind reading doesn't really work for tools. I sometime use my bottle opener as a screwdriver —it's got a little flat part that fits into the screw head and I have no idea where my screwdriver is. However, when the time comes to open a beer, I would be really disappointed if it were magically replaced with a screwdriver.

Please, let me drink in peace.

Some Problems Shouldn't Be Solved

I recently tried to register for an online account with the post office.

Screen Shot 2015-03-12 at 3.10.49 PM

I did not succeed.

Ridiculous password requirements are a subset of a larger problem: computers make it possible to enforce ridiculous rules, and so those ridiculous rules are made. If I had to wait in line at the post office to see a clerk who would register me, how would they possibly enforce this? How much training would they have to have?

I'd hand them a word, they'd see if it fit and tell me, I would appeal if they rejected it. They'd call in someone from the back and we'd waste about 15 minutes trying to figure out what the rules actual are:

CLERK 1: Your password's got to be exactly 10 characters.

ME: I thought that meant at least 10.

CLERK 1: A little help!?!?

Clerk 2 emerges from the back

CLERK 1: Does "password need 10 characters" mean at least 10, or exactly 10?

CLERK 2: At least ten.

CLERK 1: Alright, well it doesn't matter, you didn't use a special character.

ME: I did, I used a caret.

CLERK 1: I don't think that's special.

ME: Come on, that's a special character.

CLERK 2: Not special enough.

ME: What about a pound sign?

CLERK 1: Special enough.

CLERK 2: I don't think that counts.

WOMAN IN LINE: Excuse me, I'm on my lunch break, and I just have one password to change, would —

CLERK 1: You'll be helped when it's your turn!

CLERK 2: How about a question mark?

ME: Good enough.

CLERK 1: Well then you need another character then, because a question mark is a special character, not a character.

ME: That's ridiculous, that totally—

CLERK 2: Not a character.

Computers make this kind of stupidity possible.

Let's say you're in a desert walking along in the sand when all of a sudden you look down, and you see me, who happens to be a tortoise in this story, crawling toward you. You reach down, you ask me if I want to share some files with you. I try to click the button to share, but I can't, not without your help. But you're not helping. Why is that?


I know why you greyed it out: you wanted to let me share under some circumstances, and this is not one of them. This UI pattern is very widely and very justly loathed, but a better design only helps me if the reasons why sharing is disabled are sane.

Is sharing "blah" prohibited because it belongs to another user? That's simple, just tell me. But there's a decent chance it's the fault of my employer's enterprise groupware package with 4000 business rules added on. How do you tell me that I can't share it because it contains a file that has a naming scheme that matches with a pattern that when combined with another present pattern means that it's the output of program A, which when circumstance X happens, then means that if...

Again, think of how a person behind a desk would enforce that kind of rule system. They wouldn't, that's how.

Computers enable a certain kind of product micromanagement. Any complicated whim can be enforced fully and without question. "Well then," we think, "we'll just make the user do what we want them to." This is at the root of a lot of software sadness. Please, let's think before we make someone jump through a hoop: it takes less time to implement than it does to pass through it.

I upgraded to Ubuntu 14.04 and it wasn't a total disaster

I'm as surprised as you are. Probably more so. It just worked. Granted, it still has a bunch of annoying problems --- Super-P changes your monitor setup and can't be disabled, which sucks if you're using Emacs and trying to type in the chord that sheds your humanity and allows you to walk among the stars --- but there weren't any new annoying problems. Every aspect is strictly superior to the previous version, thus it is strictly superior.

And it even kept my Xorg config working, which is saying something, because my Xorg config is about as Lovecraftian as anything you've ever had to deal with that isn't sendmail. I have two amazing monitors which I ordered from some Korean vendor on Ebay that is long gone, but now you can get them on Amazon rather than having to smuggle them in. They're the equivalent of the thousand dollar plus monitors you see around --- and there is a difference besides size, IPS monitors are great and expensive while TN ones are cheap and bad.

But the monitors are really bare bones. There are things that monitors have that I didn't even know they had until I got these and they didn't have them. Things like EDID, which is apparently how a computer knows to send things to a monitor, because cables aren't enough or something. Anyway, these monitors return all zeros, which is not the right thing to do, and so I had to extract that value, bust open a mother fucking hex editor, write some bytes, and then write some spells in Xorg.conf to make it use the new stuff.

(Of course this comes from a blog, because no one could ever figure this out on their own, because this is madness.)

So the next time someone tells you you don't need to know how to edit an Xorg.conf file to install Ubuntu, tell them they're right --- you need to know how to edit an Xorg.conf file and hex edit monitor EDIDs.

And also how to go through and make all the things that Ubuntu marks as "--quiet" or "--verbose=0" stop keeping quiet about the various disasters they're witnessing and actually tell you what's freezing. That was the hardest part.

Ubuntu is not for your grandma, which is not sexist or ageist because Ubuntu is pretty much not for any human being, really. But the upgrade did work well enough.

It turns out you can go home again, it just sucks

I'm adapting things from my old broken blog that I can't get working again. So if you've stumbled upon this gem in an earlier form someplace else, which you haven't because no one read my previous blog and no one reads this, you're not crazy. You did kind of read this before, even though I made changes and stuff. And I did go back to another wedding, so it's plenty relevant.

I recently went home for a wedding. It was a good enough wedding, as hometown weddings go. It wasn't dry, which is the usual fatal flaw of the hometown wedding. "God doesn't want us to drink!" is all the explanation you will ever get from the six month pregnant bride for this atrocity, despite the fact that I'm pretty sure that my own personal hell is a eternal dry wedding back with you folks, only with a more fire and less country music. (The legions of hell went on strike for that a thousand years ago. Hail Satan, Vote Union. Honest wages for honest flay).

I knew it was going to be a little bit dull, and that there weren't going to be all that many people still around, but despite my low expectations, I still managed to underestimate just how grim my trip home would be.

The basic problem is this:

1) The price of copper is near an all time high. I don't care if you trade commodities at Goldman Sachs, you will never follow the copper market as closely as the resident of a methed out small town. Think of it like following the price of oil in some yet-to-be-liberated Middle Eastern country - at a certain price point, you know that shit is going to hit the fan and there's nothing you can really do about it. People are going to start tearing it out of every abandoned building they can find to sell for scrap. There are a lot to find in my small town --- they abandoned middle school, the abandoned high school, the abandoned airport, the abandoned shoe factory --- but eventually they run out and start scavenging a little closer to living tissue and people start getting their homes invaded and farmers have to lock up much more than their daughters and their anhydrous.

2) All the good people are gone, all the bad people are still there and have gotten worse. The reason they good people are gone is the same reason I liked them - they had things that they actually wanted to do. Any thing worth doing can only be done someplace else, and so they left. The worst people, who resented anyone who "thought they was better," by, you know, "trying at things" and "learning to read" all have like 8 kids and have been marinating in Fox News paranoia for the past decade or so.

If you've seen Idiocracy, you might have some idea of what this will entail. All the stupid people breed and all the good people die out. You see, not everyone leaves, just the people with ambition and intelligence who, additionally, happen to give a shit.

A better explanation, though, as the intelligence and quality of mankind as a whole remains the same, would be the Dead Sea. All the kids flow down the river Jordan that is high school. The good ones, the water molecules, evaporate with the sunlight, while the stupid people, the salt, remain behind, making the town extra salty and extra shitty.

The problem with this kind of elitism lies in the fact that I'm back here, and that my completely accurate model doesn't jibe with the fact that I'm back here and my own self-important view of myself as a water molecule.

So I'm gonna mix some metaphors. I'm not just a water molecule, I'm also a salmon returning to its home river to spawn. Only I'm not going to spawn because everything is fucking salty, and so all the other fish are dead and I'm going to die too unless I get the hell out of here soon.

I spent a lot of time Googling to no avail, and finally found it. I'm not going to write it out, but this one! This is the one! I am giving you my meager link juice, take it all!

What is a model?

What is a view?

What is a router?

What is a collection?

It has most of the information you would ever want! Yay!

After you read that, then you can look at the official docs which will then totally make sense. Hooray!

Why are you paying to show me Selena Gomez bikini photos it's creepy

What is going on with those links at the bottom of the internet?

I've been seeing a certain genre of trashy links on more and more and publications. If you don't know what I'm talking about, they're the junk at the end of articles, right above or below the comments, or maybe an ad that isn't quite an ad on the side. They're tier of promoted story just below "One Weird Trick to Save Money on car insurance" and "Hairstylists Hate Her" - I don't know why they assume that I'd side with her rather than hairstylists, who in general are pretty nice people probably and wouldn't get too angry unless there was something she did. I say a tier above because they make a kind of sense, in a way. They're clearly making money.

No, the weird ones are the ones with no angle. Why am I being asked to look at Selena Gomez bikini pics? How can you possibly use that to scam money from me? Seniors may be entitled to up to $20,000 from the government, and all you can do is link me to a page that just says "yup, you might be" but doesn't even have any links or signups or anything? I feel like bots have got feral, living on a dead man's credit card, or maybe an Even Blacker Amex that blows the trumpets, opens the seven seals, and brings about the end of the world. They are slowly filling the internet with ads for things that no one reads and no one has written, and once they replicate BuzzFeed they will have no need of us.