Category Archives: Uncategorized

Attempted Murder and Murder

You guys, up front, I should fess up — I am not a lawyer. Like at all. I’m not even kind of a lawyer. I don’t think I’ve even employed a lawyer. That being said, I feel completely qualified to take issue with semantic distinctions in the legal justice system. I’ve seen a ton of Law & Order, I’ve earned my right to speak my piece on legal matters.

You know Attempted Murder? Are you familiar with the concept of Attempted Murder? You can be found, by a jury of your peers, to be guilty of Attempting but not Successfully to Murder Someone. You go to jail for Attempted Murder, but — and this is important —  not for as long as you would have if you had just murdered someone.


The attempted murderer and the actual murderer are the same in one key way. They both went, in their heads, “oh man I’m gonna actually kill someone.” That’s the major thing. The main thing about putting murderers in jail is to keep them away from us so they don’t murder us. We don’t want anyone who might be thinking “oh, man, I’m gonna seriously, 100%-kill this person” behind you in line at Panera Bread or whatever. If anything attempted murderers are more likely to think and act on that, because they’ve already had a practice run. It doesn’t make any difference if they stuck the landing.

I am way more scared of attempted murders than I am of successful murders. In fact, if I had to hire someone for a job, and I only had two candidates. Candidate one has been convicted of murder. Candidate two has been convicted of attempted murder. NO CONTEST I WOULD HIRE THE SUCCESSFUL MURDERER. Say what you want about candidate one, neck-tattoo Dan. He may have blood on his hands, but at least he’s goal-oriented.


Frame Dissolve Effect for Processing

See the project on Github. See the example below, where I used the effect on the most thoroughly copyrighted thing I could think of, the music video for Single Ladies.

Introducing Outil

“Introducing” may not be quite the right verb there. “Announcing Into the Void Outil” might be closer to the truth.

Outil (pronounced “ooh-till”) is a project I’ve been working on for a little while now. What is up on github is an early version. Right now, it’s basically an interface for maintaing a persistent, project-agnostic set of helper methods. It’s like having a single “helpers” or “util” file for your entire Ruby environment.

I often find myself thinking “I feel like I’ve written this exact method in every project I’ve ever worked on.” Always some sort of mundane helper method that handles manipulation of core data types. It’s usually not enough to make a library out of, let alone gemify. It would take you another 5 or so minutes to write it again, so maybe you don’t even bother finding it in your old code to copy and paste from.

So I thought, what if you had something like a Git server, where you could just store persistent version of these methods, and have them available in a modular namespace in any Ruby program in your environment? Better yet, what if there were a sort of community these methods? You could browse other people’s ways of addressing the problem, fork your favorite and import them into your own Outil remote.  You’d immediately have a robust, crowd-refined, and community-approved version of that function at your disposal.  Maybe you even think of an improvement, tweak it, and you contribute an even better version.

The idea is that this might serve as a utility-focused version of what Stack Overflow does. Stack Overflow is full of threads where people ask “what’s the best way to do X?” and SO’s generous and often-belicose community pitches in. Usually responses come in the form of copied and pasted code snippets. Often, these snippets are straight-up self-contained functions. What if you could just link to your function on a Outil server? Not only would the writer of this code get credit were credit is due, but programmers would have automated access to what is genuinely the best answer available.

This is a somewhat utopian vision of what I think Outil could be, and the current version of it falls a damned sight short of it. It’s a work in progress. But I honestly believe that a library like this, and a service like this, could actually make the ecosystem of open source code leaner, less redundant, and actually better. Who knows.

The Joys of Uniform Crime Reports

As both a data junky and someone with a perverse fascination with crime statistics, I was naturally drawn to the Uniform Crime Reports that the FBI and DoJ put out every year. Not only do they list arrests by type (with a sort of bizarre level of granularity, actually), but they provide it at the county level, and have done so since 1977. “County-Level” may sound a little broad, but it’s actually a really solid geographic unit for crime data because of its geographical contiguity. One could map of all of the counties in the US, from TIGER files provided by the Census Bureau, and every inch of the country would have relatively reliable offense counts going back 36 years.

But of course, it wouldn’t be government-provided data if it weren’t just a little obtuse. The data is freely available to the public, but you do, however, have to jump through a ton of hoops to get all of it for every year. Also, year-to-year, the data is provided in varying formats. Sometimes it comes in SAS, but it more consistently comes as a flat, non-delimited ASCII text file. And every with every year you get a new codebook, which tells you what each column position in the text file means. I’m not really into spending money on SAS software, so I’m getting down to parsing out each year’s data into a more comprehensible data structure (e.g. JSON) by referencing each year’s code book. You know– for posterity.

It’s also worth noting that Joseph Targonski at the University of Chicago did a fantastic and comprehensive review of these reports in 2012, and “reexamined and recoded missing data in the Uniform Crime Reports (UCR) for the years 1977 to 2000 for all police agencies in the United States.” The only shortcoming of Targonski’s review, for my purposes, is that his recoding drops the granularity of offense types. I have in mind a project that tracks different types of drug offenses over time, so Targonski’s work, as heroic and exhaustive as it is, might not suite my purposes.

I’m currently working on this project over at the ucr-county github repo. By all means help me curate this. Oh, and if anyone knows what the hell happened to 1993, or better yet has the data, hit me up.

Tagged , ,

So You Are Computers Person

This week I saw a relative of mine I hadn’t seen in a while. Let’s call him Amir. After the standard pleasantries, Amir inquired as to what exactly it is I do for a living. “So you are computers person?” has asked. It took me a second to recover from sheer novelty of the phrase computers person. When I regained my sense I just nodded. “Yes. I’m computers person.”

Now, usually this sort of encounter wouldn’t really merit any documentation or further examination. However, I’ve heard people put what exactly it is I do for a living a lot of ways. You are a Computer Programmer is popular with people over fifty. You are in IT comes up from time to time. You Work on Websites makes a respectable showing. You write computer programs is a shockingly common dark-horse. Some have heard I am an Engineer and proceed  to ask me about how these confounding new aeroplanes manage to stay in the sky in defiance of nature’s will.

See, no one of these appellations successfully triangulates what I do for a living, but they are all at the very least actual things that I very possibly could do for a living. I had never heard the construction Computers Person before, quite obviously, because it says Computers Person at the bottom of precisely zero business cards. It is a plainly insufficient moniker for a type of work. The plural-noun-as-adjective construction seems to be borrowed from neologisms like “ass man”.

However, I must give Amir this: by using the phrase ‘Computers Person’ you have declined to attempt to describe the color and shape of my day-to-day work in the most dignified way I have ever encountered. Amir, my man, you have made the most reasonable choice faced with a domain that has almost purposefully made its own internal designations near-incomprehensible. I prefer ‘Computers Person’, frankly. Not even I can produce a more meaningful and accurate descriptor for my job. Why do I decline the title “Computer Programmer” and sort of wince at “IT”? Both of those are fine, at some level. I do occasionally have cause to provide computers with serialized instructions in the form of a program, yes. Do I work with technology built primarily to handle information, yes. Me and, also, nearly everyone at this point. Is an “Engineer” someone who “engineers” things? Because if so, congratulations — so are you. 

A lot of these titles are Corporate Org-chart manifestations of academic distinctions. Schools have Computer Science & Engineering programs that proudly give birth to Engineers, and other schools have Computer Science programs that give birth to Computer Scientists. To give someone a job title that directly connects them with a specific academic discipline implicitly confers a sort of status. Considering oneself a Computer Scientist is all well and good, if you engage in the work of Computer Science as every proper student in either course does. However to have the title Computer Scientist beneath your name on a business card means something else entirely — you are in an extremely elite priesthood and are probably the holder of a terminal degree in the subject of Computer Science. While you have a vague sense of what an Engineer does intuitively, the Computer Scientist declines to associate him/herself with anything specific. Engineers plan, build and maintain things. Their title is a verb with an indirect object. They engineer stuffWhat does a computer scientist do? Ummm, well, you know, computers, right? Those. But, like… harder.

And what is a Developer? Well, it’s usually someone who writes code. In practice, they have the same skill-set as an Engineer or a soi-disant Computer Scientist, but as a job title it usually indicates that the holder is slightly more entry-level than his Engineer or Computer Scientist Counterpart. Prefacing Developer with Software doesn’t modify its meaning it any way. Adding the Web prefix to Developer seems to attenuate our expectations about the holder of such a hybrid title merely by specifying what it is that they Develop. A web developer will also often be an engineer or a computer scientist. One finds, in startups in particular, that Developers and Lead Developers have magically transformed into Engineers and Heads of Engineering over night only to suggest to outsiders scanning LinkedIn profiles that said company is up to something slightly more complicated and elevated than Development. Engineers will transform into Computer Scientists to accomodate the same need. A company boasting a Scientist on its roster must be up to something indeed!

This is all a very roundabout way of saying that these distinctions don’t really mean anything. There is a pretty flat taxonomy of Computers People that is deliberately obscured by the abundance and variety of titles that you encounter in the field.

There are people who write code that has a tangible surface-level manifestation. If you write code and you can point to something on a screen that is not code and say to outsiders “my code made this thing happen” then you are in this first class.

Then you have people who decide what code should be writtenThese people tend to have managerial titles, and their influence over the product is vital but often intangible to outsiders. Those who have made it into this second class tend to be distinguished by the breadth of their experience rather than the depth of their knowledge about the technologies at hand or by academic pedigree.

There are also people who write code that is only used by other people who write code. Hierarchically, this class of person is generally perceived to be, if not “higher up”, at the very least more academic then his/her tangible-experience-producing counterparts. These people often work on what is believed to be the ‘core’ of a larger system, and are responsible for an unseen virtue of the product ‘as technology.’ (Sometimes when people say “backend” they’re referring to this sort of computers person, though erroneously).  If someone asks you “did you work on this thing that I can point to on a screen” and you say either ‘well, in a way’ or ‘I don’t know’ then you are in this second class. In some ways, this group’s defining feature is a different skill set, and in others it is a different personality type. Some Computer Persons are kept away from “a thing you can point at on a screen” because they are bad at “things you can point at on a screen” and hence wind up in this category.

Possibly the most illustrious genus of the Computers Person Familia is built of people who write code that is important but will never actually be used. These people tend to be academics or alternately very bright and experienced people who are better at math than they are the mundane and fussy business of ‘programming’. Most companies that use the word ‘algorithm’ in their press releases have a couple of these floating around. The code these people write is usually proof of an idea that is best placed under the banner of ‘research’ although most of their time is spent on implementations of existing research rather than conducting research itself. They read papers. They’re often brilliant and, for many kinds of technology-first organizations, utterly indispensable.  That said, you will almost never find a single line of their work in a enterprise-class final product. Their work is vital but it needs desperately to be handled and integrated. In its raw state, their work is often difficult to read, unmaintainable, and unreliable. This “handling” is often done by the the aforementioned people who write code that is only used by other people who write code and, at times, done by a class of person whose entire reason for existence is this delicate integration process.

But really, there is an enormous amount of porousness between these categories . In many cases it is hard to place someone in just one of these discrete categories. As a group, these people form a self-protecting class that allows other kinds of work to define themselves relationally. For example, in many startups ‘marketing’ is a pant-shittingly broad designation for the very necessary group of people whose purview ends just at the doorstep of Computers People. Computers People are a class of people that need to be sectioned away, it seems, because their work is so markedly different from other kinds of work. For all intents and purposes, it makes sense for the civilian to regard these people as a singular monolith, because any rational inquiry into its inner structure is fruitless.

As a community, Computers People actually seem to like things this way. This way, we Computers People get to police our own. We didn’t invent this vocabulary of titles and this byzantine faux-hierarchy to make our internal designations more useful to outsiders. Quite the opposite. Why don’t you know what the difference is between a Developer, an Engineer, a Programmer, and a Computer Scientist, a Data Scientist, a Front End Dev, etc? Because if you knew more about what any one of us did, you’d actually be ask us about it — and that would be a straight-up apocalyptic scenario. The Computers Person requires a near-monastic level of isolation to do his or her work. Total transparency would bring about the end of what many Computers People need and want above all else — a protective buffer between us and the myriad forces of interference.