Category: Programming

“In a tree’s rings you can see the years of drought.”

Sumana’s been on a pretty amazing run of posts, and this one struck me right through:

“We come together every once in a while to refill on trust and camaraderie and a shared understanding of what we’re trying to do and who we’re trying to do it for; I assume that, for some folks, those wells have now run dry.”

Eight years ago, I was already feeling a kind of nostalgia for my own version of con season, even though I was right there in the thick of it. A long summer is one thing, but a drought is another. I feel the ache for my friends as if it’s a loss, even though, by impossible fortune, I don’t think I have lost anyone yet. But the time we could have spent together is life we won’t get back.

Sandbank Diner

For my 10,000th tweet I created the monster called RealBrendan. When I noticed that I was approaching 15,000, I wanted to do something along the same lines, if possibly a bit less splashy and horrifying. I’d been playing around with the “real name” field on my Twitter profile, disturbing a lot of people by changing it to Dank Nerd Basin (an all-too-accurate anagram of Brendan Adkins). When I went to visit New York last weekend—a great trip I should really write up here as well—Leonard, who was also graciously hosting me, helped me unlock this particular weird joke.

I’ve crowdsourced my name. If you mention @BrendanAdkins in a tweet, and if there are 20 or fewer characters in that tweet (ignoring URLs and usernames), and if those characters contain a B, R, E, D, A and two Ns, the new bot will pick it up and set my “real name” to that. It checks in ten times an hour, and it takes the most recent valid submission.

A lot of people were doing full anagrams or superset-anagrams yesterday, which were delightful—And Snark In Bed, Nard Skin Benda, Danken d-brains, Kind Banner Ads, BADSKINNY DICKKISSER—but you don’t have to work “Adkins” into it at all if you don’t want to. As of this writing, it’s “Brendan poops?!?” and I encourage you to make it anything else as soon as possible. (THANKS, ANNE.)

N-player co-op

This is a Constellation Games post. Spoilers for the chapters that have already gone out to subscribers.

From late in Chapter 14:

“I don’t need to learn English,” said Ashley through her chopped-up resampled vocalizer. “The translator is a benefit embraced by the median person and shunned only by snobs who want to show off their own erudition and enlightened attitudes.”

“Wow, I guess you feel pretty strongly about it?”

“That translation went on a lot longer than it should have,” said Ashley. “That was four words in Purchtrin. I don’t know what happened.”

A couple paragraphs earlier Ashley mentions that the idle work she’s doing when Ariel shows up is “part of the History of Life overlay.” This is a subtle thing, and easy to miss amid what Leonard calls “the Gift of the Magi-esque farce about the English lessons.” When some subset of the Constellation wants to achieve something, they form a loose asynchronous working group called a fluid overlay. Where does Ashley work? In some fluid overlays. Where did Ashley’s translator come from? A fluid overlay.

The overlays aren’t an allegory, but they are a device Leonard uses to comment on leaderless organization in real life, inspired (I suspect) by his career in open-source software. Of course, the last six months have seen another set of nonviolent, leaderless organizations leap into prominence to remind us that scarcity-based power structures fuck everybody. Remember back in the commentary for Chapter 3?

“You’ve seen the anarchists in Austin. They couldn’t hold a city park.” is one of those lines that shifts connotation dramatically between the time you write it and the time it’s published.

Whether you take the correspondence as timeliness or startling prediction, the popular criticisms of Occupy reveal the flaws in the overlay idea, which the Constellation presents as a sort of labor utopia. In Chapter 13, Ariel found flyers from the Raw Materials overlay begging humans for their garbage in Human Ring, where there were… almost no humans. The Constellation can do miracles, but sometimes those miracles lack direction.

Just as often, the overlays lack accountability. In Chapter 9, Ariel tried to find somebody to thank for the English-language CDBOEGOACC; when he asked who was in charge of creating it, Curic’s response was “that’s not a real question.” So who snuck that rant about language snobbery into Ashley’s translator? Here, have an achievement graph with ten million nodes.

The translation is a throwaway gag, but it’s also foreshadowing. Sometimes overlays work at cross purposes. Sometimes they’re hard to track down. The other foreshadow in Chapter 14 is the first appearance (and disappearance) of, yes, the long-promised shipping container. Curic’s part of the Constellation Shipping overlay, yet he or she is asking a human for ideas about where it might have gone.

In doing so, Curic presents a neat alien mirror to Krakowski and Fowler at the BEA. All of them are now using this unemployed video-game blogger from Austin as an asset, overtly or otherwise. How desperate do you have to be to turn to Ariel for intelligence? We’ll find out!

I am a lot better at Javascript than I was a few months ago

I am, under normal circumstances, a very reliable exhibit of the human behavior pattern that goes “my stupid system sort of works so I will never change it.” But there are times–rare ones–when my desperation to avoid writing fiction actually overcomes my desperation to avoid writing code. Tonight, after three years of counting words for Anacrusis with a hacky PHP script I wrote in 2007, I finally reached one such point.

This is the word counter I’m going to use from here on out. Unlike the old script, which I was reluctant to publicize because it involved processing user-submitted text on the server side, this is all Javascript and it updates in real time. You can also click the little tab at the bottom if you want to see what the hell it thinks it’s doing.

Suggestionbombing

I twitted this, but I think it deserves a fuller exploration. Is it possible to Googlebomb Google’s own search-box completion content via sheer volume of queries? Presumably the things you get are based on search popularity modulated by recentness, which is why typing in “blagojevich go” gives you “-vernor” first followed by “-lden.” That makes sense, but that means it’s also vulnerable to mobbing.

Say I run a company called Adkins AC, selling air conditioners. Getting my site to the top of the results for “air conditioner” is going to be extremely difficult, requiring either a lot of time and work, or a lot of money to SEO spammers whose efforts will eventually get me deranked anyway. I can buy an Adword, but in the summer that’s going to run through my budget pretty fast. Another vector of attack would be to just get a whole lot of people to search for “air conditioner adkins ac,” which is going to put me much closer to the top in the dropdown suggestions.

Now even if I make all my friends and business contacts do that, it’s not really going to affect Google’s giant sample pool. But if I pay a few thousand bucks to somebody who runs a botnet, I could have a million PCs searching for “air conditioner adkins ac” in a randomized, staggered pattern from February to April. By the time things start heating up in May, I’m the first suggestion result, and I’ve probably spent less money than a consistent Adword would cost.

Yes, this is all illegal, but much less detectably so than SEO or email spam. The botnet owners could probably make good money this way too, since you could take on hundreds of customers at a time, and the market for DDOSes-on-demand can’t really be growing that much. Now I’ve fixed the economy! Well, someone’s economy.

I know the Googlebomb wars are kind of a thing of the past, since Google’s gotten much better at deranking targeted efforts to mess with Pagerank, but suggestions are a whole different frontier–and like most frontiers, I’m guessing it’s not well policed.

New job is new

Areas in which I have attained some level of competence in the last three weeks, after putting off or avoiding learning about them for three to ten years:

  • OS X and Unix environments in general
  • Debugging tools and IDE development
  • Regular expressions
  • Public-key authentication
  • Bash scripting
  • WordPress hooks
  • How to page down in Emacs

It’s… it’s almost as if being challenged can cause you to grow!

Helpful Tips on Being a Man in Professional Software Development

  • First of all: relax. There are more men in engineering professions than ever before; you’re not alone. What’s more, some very well-known and talented programmers are men!
  • In preparing for a career in software, learn everything you can. If you went to a school like mine, you probably found the computer science program scanty and unable to address your needs. Apply yourself hard and do plenty of independent work to overcome this deficit.
  • Studies have shown time and again that the myth of men lacking mathematical or computational ability is a complete falsehood. Make sure to have the details of these studies memorized, or naysayers are unlikely to believe you.
  • When interviewing for a software job, appear confident but not brash. Look your interviewer(s) directly in the eye and use a firm handshake; study up and be ready to reel off technical jargon when your skills are questioned. If at all possible, resist the urge to giggle.
  • Your first few days on the job may be uncomfortable. Try not to bridle when a colleague mistakes you for an intern or an administrative assistant (but make the copies anyway–it may help ingratiate you later). Correct each mistake politely, and if you hear some muttering about how you only got the job because of a gender quota, just ignore it and keep your head high.
  • Keep in mind that your mistakes will receive extra scrutiny. If you run into a problem outside your area of knowledge, you can demonstrate independence by searching for a solution first before going to a female coworker for help.
  • Everyone gets caught in a mass-forward chain from time to time. Should you open up an email titled “hot pic of the day!!! =O” and find yourself once again staring at a coquettish Randall Munroe or a wet-shirted Idris Elba, just roll your eyes and hit delete. (Of course, you may have your own admiring comment to contribute–so much the better for you!)
  • When writing out use-case diagrams, resist the urge to refer to hypothetical agents with male pronouns. Chances are you’ll just be seen as “trying to make a statement,” and may gain a reputation for being outspoken. Stick with third-person plural, or, if you must, “she or he.”
  • Similarly, when the leader of a meeting addresses you collectively as “ladies,” let it slide. No one likes a nitpicker.
  • Should you decide to pursue a romantic relationship in the workplace, use extreme caution! Dating a superior will lead to suspicion that you are doling out “favors” in exchange for having your patches accepted or your issues escalated first.
  • Dress for the job you want, not the job you have. Yes, we know you have some hilarious slogan t-shirts in your closet that can help you attract attention (and maybe even feel a little saucy). But that’s not the way to climb the ladder! A button-down, some pressed slacks and a hint of eyeliner will help ensure that your coworkers take you seriously.
  • The most significant challenge facing men of our generation is how to balance a career with one’s family and children. No one’s pretending it’s easy! But if you manage your responsibilities, take a hard look at your workload, and make out a detailed ten-year plan, you can almost certainly persuade your wife to abandon her dreams and do all the real work.
  • We all know that the pressure of being male in today’s workplace can be overwhelming. Many men have a tendency to lash out in frustration before considering the consequences of their words, especially when their testosterone levels are a little off-balance, and that does nothing to help our cause. No matter what kind of sarcastic, demeaning commentary comes your way, try to hold onto your sense of humor and your dignity. With a little luck, as long as you never lose your cool, your colleagues will eventually come to see you as just one of the girls.

White pepper is awesome. Also, this is sort of about faith

I’ve reached the point, in my autoeducation as a cook, where I no longer really measure spices or indeed many liquids. This is great for saving time and for not having to rinse a measuring cup every time I need a quarter-unit of something. It is less great when something I make turns out well and I want to write down the recipe for the future. “A bunch of white pepper,” I find myself writing. “Like, as much as a good cook would put in but then also some more.”

If I could always trust myself to make the same judgments based on words like that I wouldn’t have any problems, but I have no faith in Locke and therefore I am not even sure I’m the same person who started this post, much less the one who cooked a pretty good spaghetti nonbolognese earlier tonight. Also it is probably going to be unhelpful in my inevitable cooking blog.

The (thoroughly hidden) point I wanted to record here is that I’m kind of a good cook now? I’m still working in a very small range, but I keep trying new things and they keep turning out pretty okay. I think cooking is, like kissing and biking, essentially a matter of confidence. The food will believe you’re in charge if you act like it.

I learned to cook spaghetti in ten-gallon vats, almost exactly ten years ago, when Jeremy Sissle got me a job at Fazoli’s. He was also the one who trained me on pasta-cooking rotation. We got to the end, and he hauled out the hose, sponges and soap. “Turn on the hot water,” he said, “and fill the bucket, add about this much soap, and… I mean, you know how to clean stuff.”

I still recite that sentence to myself in scary and uncertain places. It sounds stupid, but I did know how to clean stuff, and remembering that snapped me out of the standard lost-and-seasick feeling that everybody gets from new jobs. (At least, I assume everybody else gets it too.)

The other half of my cook-with-confidence mantra was posted by Kevan, years ago, in a comment on Leonard’s site: “I’ve only recently stopped… expecting food to be an inedible, inert, black lump of Syntax Error if I get something slightly wrong.” It’s so true, and such a perfect encapsulation of the way programmers approach other disciplines: raised by severe machines and math problems with one answer, we expect frustration as a punishment for the smallest mistakes (and indeed, with computers, that often remains the case). But once you realize that the notion of discrete measurement is a consensual hallucination, you find the world a more interesting place. Screw Locke. I’m glad I’m not the same person I used to be.

Will says the logo makes him think of pickle jelly. I suggested he think of jalapeño jelly instead

At Lisa’s persistent instigation, Will, Kyle and I drove up to Pittsburgh on Friday to jam on games for the One Laptop Per Child Project. We actually got to handle some of the XO prototypes, which are even smaller than I expected, but also pretty neat.

We didn’t win, but we did create a complete game, albeit one that only fully worked four hours after the judging round. We also had a lot of fun, and not a lot of sleep. Some of the other projects looked great, and the winner was really polished–I have no doubt it will end up as part of the standard XO package.

I feel bad about the way the game turned out, because all the delays and problems were due entirely to my inexperience in the required tools (Python and Pygame). On the other hand, I’ve been mumbling about needing to learn Python for four years now, and now I have! Mumbled. I mean, learned.

The game (“Caketown”) lacks a lot of things (an intro, an outro, more than two levels, etc) but I’m going to post it anyway so you can hear Kyle’s fantastic music and see Will’s amazing art. What you don’t get to see is Lisa’s work as project coordinator, colorist and, now, one of the few living experts on how to install software on the XO.

Here it is as a Windows executable, in zip or gzip form (I recommend unzipping to C:\Caketown\). If you’re not running Windows, you can have the gzipped source and data, but you’ll need Python and Pygame installed to use it. You could also wait a little while, as I really do want to put together a finished and more coherent version with code that will not, when read, summon Nyarlathotep (the Crawling Chaos).

Weird footnote: unexpectedly, I recognized and got to meet a couple of people I knew or knew of from Internet (Bryan Cash and Tom Murphy). And they were both kind of startled / scared! But somebody did that to me once so it’s only fair.