Saturday, January 31, 2009

The Argument Against Legalizing Prostitution: President Timberlake

I worry about people who read my blog, because every once in a while I read my private journals from a year or two prior and they always turn out to be the ramblings of a madman. Every time. However, I just found something interesting. I used to be a Libertarian and I still think prostitution and drugs should be legal, but what I found is a counter-argument.

The counter-argument goes like this: politics is controlled by money in the United States, due to a serious problem with corruption. If prostitution were legal, the balance of wealth in this country would shift from elderly white men to 18-year-old girls with loose morals. We would soon see President Timberlake.

This was my great political insight of 2007.

Today I see serious flaws. Ladies love Obama and ladies loved Kennedy. It's possible 18-year-old girls with loose morals would pick better presidents anyway.

Music: Myagi Remix Competition (Help Me Out!)

I made this remix (~8MB mp3) for this remix compeition. I think I really nailed it.

Unfortunately, only people who submit a remix to the competition can vote. Also unfortunately, there's about thirty entries, and voting began December 5th and ends today. The winner of the contest will come from the top five. The site doesn't see enough traffic for a last-minute contest upset to be very likely. I won't win the contest.

However, there's no rule that says you can't e-mail the final judge and tell him you think a particular remix is awesome. Please do exactly that! The final judge is Myagi, the very accomplished Canadian producer/DJ who made the original track. He also runs his own label and has played at the Fabric club in London - maybe the Carnegie Hall of dance music.

It's fans that make shit happen. Seriously. If you tell Myagi my track is awesome, he's more likely to give it a listen. The more people who e-mail him, the better the chance that he hears my track. If he likes it enough, he'll release it on vinyl.

All you have to do say you dig the sound and link the mp3. Of course, only say that if it's true. Also, don't spam him or try to sell him sofas over the Internet or something. That would suck.

Update: e-mailing Myagi, you'll get a SpamArrest response; that SpamArrest response might itself end up in your spam folder. Keep an eye out for it.

Xone Mixed In Key: Harmonic Analysis DJ Software

Miniapp: Sssstolen!

Stolen with sssstolen!:

Friday, January 30, 2009

Rails Podcast Interview

I did an interview with Geoffrey Grosenbach on his Rails Podcast this morning. It was a fun, interesting conversation. I think Geoff must put in a good amount of time preparing for these things, because he made a connection between Archaeopteryx and Grand Master Flash which was very well-informed. Geoff brought up that Grand Master Flash built his own DJ mixers and considered tinkering with technology to be a fundamental part of DJing. I've known plenty of DJs who didn't know that. I'd forgotten all about it myself. (I think it's in the movie Scratch.)

Anyway, I definitely enjoyed it. Check it out.

Wednesday, January 28, 2009

ENTP: Tender Knows What You Mean

We just deployed a wicked new feature for Tender. Well, actually like 5 – but I’m going to talk about the coolest one

Arrington: You Should Have Seen That Coming

Random stranger spits in Mike Arrington's face; Arrington talks about this, and about a death threat, but the weird part is, he's surprised. Like Mike Arrington has never spat in the faces of innocent people.

Weirder still, he's shutting down the blog apparently, but I only just found this out from googling for related stuff. Not obvious from Arrington's post at all. If that's actually what's happening, then we all owe this random spit-dude a note of thanks.

Tuesday, January 27, 2009

Rails App Converts Text To Music

This is pretty fun.

The app.

The code.

Monday, January 26, 2009

Everybody Is Wrong About Something

Precise, accurate statement. Ambiguous terms.

"Hacker News is doomed" link.

Saturday, January 24, 2009

Why Your Startup Will Fail

At the end of my presentation on Archaeopteryx yesterday afternoon in Montréal, you asked me how many millionaires became millionaires with open source, and why a programmer should avoid venture capital if they want to become a millionaire.

Your startup will definitely fail.

It's not just that the numbers are against you. It's not even simple probability. Most startups fail; that's why venture capitalists like to fund many startups, not just one. Luck plays such a powerful role that VCs can only make their money by investing in many, many more companies than can ever succeed.

I'm interested in acting, and I live in Los Angeles. There are many, many more people in Los Angeles who are interested in acting than the local entertainment industry can simultaneously employ, even in small roles, even counting theater, video game voiceovers, radio voiceovers, puppet shows, reality TV, and dressing up as Spiderman to sell star maps to tourists. I can't criticize anyone determined to do something difficult where any success they see will be an extraordinary fluke. All power to you there.

But I know professional actors. Edward James Olmos is a friend of a friend. (I've never met him, but our mutual friend is a professional actor.) I know a lead on a sitcom, and my acting teacher has two Emmys. Let me tell you something professional actors have in common: they didn't get into acting because they wanted to become millionaires.

It doesn't work that way. If you want to become a millionaire, you pursue a strategy where becoming a millionaire is likely. Acting is a constant struggle. No matter how good you are, no matter how big you get, no matter how many millions your movies make. Robert Downey Jr. had to fight his ass off to get Iron Man. Bruce Willis loses roles to Tom Hanks.

In 2000, I read some research on how the whole dot-com boom thing was going and discovered to my shock that the only business making money on the Internet was porn. I tried to convince my friends to start a porn site. I failed, and freaked them out in the process. A year later, I was the only one of them who still had a job. All the millionaires were in porn in 2000; all the people who started startups did it for a different reason.

That's true today as well. Maybe what they really want is the thrill ride. Maybe they have a genuine passion for technology, and they've discovered something significant and new. Maybe they believe through and through that the world needs their new technology, to take on global warming and climate change, to survive the impending apocalyptic fallout of pollution, to become more peaceful, or fairer, or safe. I think most of them just don't understand economics or statistics.

Some of them have a chance. But you? The guy who wants to start a startup so he can become a millionaire? Give it up, dude. You're fucked.

The startup world requires intensity and focus. With a lot less effort, you can get a kickass job earning two hundred grand a year. Your startup will fail because millions of dollars might be different from hundreds of thousands of dollars, but they just aren't different enough to justify that much effort. You're incredibly lucky to face this kind of unterrifying dilemma, and sooner or later you'll figure it out.

Wednesday, January 21, 2009

Speaking At CUSEC In Montréal

In two days!


Tuesday, January 20, 2009

Monday, January 19, 2009

HAML Brings Seaside Awesome To Ruby

Seaside packs a lot of ideas into one framework. One innovation: you don't write HTML. You tell Seaside what HTML you want, and it does all the dirty work.

Here's a Seaside object with a method that creates a simple form. It's for a mini-app that takes your address, tells you who your senators and representative are, and gives you their phone numbers. It currently has no graphic design.

The Seaside version of this app is unfinished, because I'm much more competent with Ruby. But it's a nice, simple example. Take a look at the code.

This code is easy to read. You're creating an HTML form, with text, a text input, and a submit button. You know that whether you can read Smalltalk or not.

In Seaside, you have web app components (WAComponent subclasses) with renderContentOn methods (actually messages) that generate HTML for you. This structure, combined with Smalltalk's syntax, gives you clear and simple code. The clarity and simplicity make Seaside fun to work in.

There's a lot of frustration as well, since Seaside generally happens outside of Unix, making me a stranger in a strange land. But the code is, afterwards, just easy as hell to read. I often come back to code and scratch my head wondering what I was thinking when I wrote it. That doesn't happen with Seaside, as far as I can tell. You always know what you meant to do.

The downside, however, is that this code just uses the word html too much. It's kind of ridiculous to type html space. when you could just type " ". In Seaside, you're not going to type a whole lot of HTML, but you are going to type html a whole lot. Any time I see code like this I look for a refactor. If you're calling the same object with every line of code, then the method belongs in that object.

Here's code from a Seaside tutorial:

I don't think this is any real serious of criticism of Seaside, however, although I do think it's a valid criticism of the Seaside community. It's an obvious need for refactoring, and it comes from the language that invented refactoring. What's up with that? I think Seaside programmers should be subclassing the renderer at least as often as WAComponent - but that's a tangent.

I bring this all up for the sake of comparison. Like I say, I didn't actually write this app in Seaside. I wrote it in Sinatra with HAML.

Take a look at the code for this view.

It isn't as pretty as the Seaside code, but it's almost as clear, and it's terser. With HAML, you don't have to type a whole lot of HTML, and you might not type a whole lot of anything. And just like the Seaside code, it's easy enough to figure out what this code is doing. There's HTML; there's a form; there's a text input and a submit input, which is to say, a submit button.

That could be more readable. In the best of both worlds, HAML wouldn't just abbreviate the process of writing HTML; it would also replace nonsense like input{:type => "submit"} with Rails-y helpers with logical names like, for example, button. It always worries me, when somebody thinks I'm smart because I'm a programmer, that they're going to find out that one of the reasons programmers think DHH is a genius is because he figured out that we should use the word button when we want to say "button."

At the same time, however, HAML annoys a lot of people. I praised it on Twitter and everybody I work with started laughing at me, even people who can't write code. Hampton Caitlin took the Python feature that annoys people the most, namely semantic indentation, and combined it with the Perl feature that annoys people the most, namely gratuitous punctuation. It should be no surprise that combining the most annoying feature of Perl with the most annoying feature of Python would result in a language that annoys many people very much. It's like a eugenics program to breed a hybrid super-annoyance. I don't know if Hampton's next language is going to take a lot of the busywork out of JavaScript, or simply fart in public while forcing you to hear Battlestar Galactica spoilers.

I like it anyway, though. HAML kind of gives you the inverse of Seaside's advantage. The readability isn't perfect, but the writing is fast. Like Smalltalk, HAML uses incredibly simple rules. You can learn them in a few minutes, and afterwards, it pretty much just works out the box. And most people don't compare HAML to Smalltalk; they compare it to HTML.

Here's HAML generating your list of representatives:

Here's the HTML:

Here's what that would look like in ERb:

The HAML makes the ERb look messy. But look closer and you'll see a much more interesting difference. The HAML is almost entirely programming. There's very little markup involved. That means that when you're writing HAML, you're programming more and marking up less. This is the same advantage Seaside gives you. If you like programming and you don't like writing markup, then the advantage is you have more fun.

I enjoy programming in Seaside because when I'm programming in Seaside, I'm programming. I'm not wrestling with markup; that's for computers to do. I get the same pleasure out of using HAML. At the same time, when I'm in Seaside, I trip over my own feet a lot, because there's a lot about Smalltalk's idiosyncratic environment that doesn't make sense to me. HAML doesn't have that issue.

HAML also takes a more even-handed approach to the balance of programming and markup than ERb. ERb requires bulky special delimiters for programming, and treats markup as plain text. The implication is that markup code is normal, and programming code is unusual. In many cases you don't notice, because delimiters are built into the markup, so you're adding them to both markup and programming either way. However, in a mostly-programming view like the above example, the delimiters just look stupid.

ERb favors a type of application where you have less dynamic content and more static content. Where ERb requires bulky special delimiters for programming but treats markup as text, HAML requires svelte special delimiters for both markup and programming, and only treats text as text. This works equally well whether static markup code predominates, or dynamic programming code. Balance is good.

I think HAML is awesome. I get a major Seaside advantage without the stumbling. I have to take annoyances from Perl and Python, but in exchange I get to skip the HTML. I've written a lot of Perl, a little Python, and an unholy fuckton of HTML. I remember what I enjoyed; I know what I like. The tradeoff's worth it, to me. I'm more than happy to take Perl and Python aggravation if it means I don't have to write HTML.

I've heard that HAML doesn't have unit tests, but it does on GitHub. The project started with Hampton Caitlin and Nathan Weizenbaum took it over. It could be that an early version lacked tests, and Nathan added them. I haven't taken a look at the tests in detail but there are plenty of them, for what that's worth.

Update: Brett Morgan clued me in to Smalltalk cascades, which allow you to skip typing html 100 times without having to subclass anything; and a heckler on Twitter came close to making a good point, that Rails uses submit_tag instead of button. He didn't actually say that, he said <input type="submit"> != <button>, which was kind of my point, but if he had managed to think of a better criticism, he would have brought up the submit_tag thing. But Rails does use link_to instead of a href, and it does have button_for, so, close enough.


And: the app, which looks up your legislators by your address, took 20 lines of code. I wrote it while watching The Silence Of The Lambs and debugging work code on a client's staging server. I used full addresses because you need the full address; searching only by zip code will sometimes return inaccurate results, due to pervasive gerrymandering. I never got around to deploying, but here's the code.

Just for the hell of it, here's an 8-line version:

Cute Video Summarizes Cluetrain Manifesto

Sunday, January 18, 2009

User Interface: Remember The Ecosystem

Go to a video on YouTube; it starts right away. Go to a musician's page on Myspace; the music starts right away. Everyone knows how annoying this is. What I've just figured out is the common principle in the annoyance.

There is an entire environment on your computer, and both these errors - and all the many variations - come from a single failure in planning user experience. Nobody's app or site will ever be the only thing running on anyone's machine under normal circumstances.

You can avoid this entire category of errors by remembering this simple fact.

Animation: Hand-Drawn Hand

I took a bunch of art classes a few years back. Most of my video work from that time makes me cringe, but this I'm still pretty happy with.

It's a technical study. I drew maybe thirty pictures of my hand, moving very slowly from one gesture to another, scanned them, and then traced over I think 17 of them in Flash. I tried to do it with tweens, but it didn't work. I did it in After Effects just fading quickly from each hand-drawn original to the next, but the differences in the scans, differences of lighting and paper texture mainly, borked the result. I wanted consistency. So I hand-drew every frame on top of the scans of the original drawings.

After this I did some research on animation, and it seems the workflow in most Hollywood cartoons is to draw keyframes in the States and outsource the hand-drawn tweening to Asia. This leads me to believe that in about ten years (very roughly) we'll see an explosion in home-grown animation. Flash is almost good enough to do the in-between drawing automagically, but not quite. The AI necessary to automate that grunt work is definitely achieveable, however.

OS X: Get Rid Of Weak Icons

Nyeah Nyeah Atwood: I Win

This might not make sense to you. I'm just posting it so I can e-mail Jeff Atwood the link and annoy him.

Giles Bowkett, 2007.

NY Times, 2008.

What's Hot On GitHub: ENTP

For three months in a row, ENTP projects and projects by ENTP programmers have shown up on Ruby Inside's monthly "What's Hot On GitHub" feature.

I don't know if anyone else in the company has even noticed, but personally, I'm hoping for four. Don't break the chain.

Coding Apps For National Service On Jan. 19th

Do it! Hop on the bandwagon. Justin from ENTP created one, Hashrocket are creating one.

Return Of The Tumble-Log

once again back it's the incredible

Saturday, January 17, 2009

Why Hacker News Thinks PHP Won Something

This happened yesterday:

I found these headlines strange.

The obvious question, of course, is what PHP allegedly won. And I mean that in both senses: what was the contest, and what was the prize?

The next question is: did PHP really win?

The third question could be: why did PHP win? It could also be: why does Hacker News think it won?

Both blog posts say PHP won by becoming the dominant programming language on the Web. This means that the contest was to see which language would obtain the most users, and the prize was having more users than anybody else. Whether this means they really won or not depends on whether or not this idea has any validity.

Of course, the answer's no. If you program in the most popular programming language, your skill in that particular language is a commodity. If you program only in the most popular programming language, you have made yourself a commodity. A commodity can only compete on location and price, and location doesn't really get you much on the Internet. This means that only people with a poor understanding of economics program in PHP.

For years I hid the PHP experience on my resume and even lied in job interviews, saying I didn't know the language. In reality, I've used every version. I remember it well. Back then we all used Perl. I was writing CGI scripts in Perl before there were HTTP libraries. Back then we hand-coded our headers, and we liked it. We walked twelve miles uphill through the snow both ways, and we opened database connections with backticks, and we liked it. Why? Because we were primitives and we didn't know any better, that's why.

I'd like to call this a Hacker News smackdown, but it isn't. First, top of the list of links for one day is just a blip on the radar. Second, if I really couldn't stand Hacker News, I wouldn't read it. Third, it's not a smackdown because it's not a decisive defeat. It's a tie. PHP didn't win, because what it was (allegedly) aiming for was something bad to have. But PHP also did win, because it got what it was (allegedly) aiming for.

The blog posts Hacker News links to - which, honestly, would be unusually moronic even if this was not Hacker News but Reddit or Digg - ascribe PHP's "success" to either its community or its features. In fact, PHP's "success" came from a combination of lucky timing, and two design decsions: embedding code in a web page, and imitating Perl.

Compare Microsoft's market dominance in the early days of GUI desktop PCs with PHP's dominance in the early days of Web scripting. In either case, an inferior technology overcame a similar, superior technology, within an emerging category. When PHP emerged, everybody was already writing CGI scripts in Perl. PHP was similar enough to Perl that a Perl hacker could be up and running in 15 minutes, and it was easier to use, in one simple, important way: it was embedded in the Web page. You didn't need to code up headers; you didn't need separate files.

This was a tiny win, but it occurred in the context of an epochal, unprecedented, world-changing paradigm shift that created thousands of jobs and destroyed entire industries. These extraordinary historical conditions magnified PHP's advantage. If you could create Web scripts faster than the next company, in the period from 1994 to 1999, it meant the difference between driving a Honda and piloting a yacht.

People who wrote a ton of PHP in those years invested a great deal of their time in PHP. They now have PHP skills, and they've given the world frameworks and libraries. These silly blog posts, which everyone on Hacker News voted up, both claim that PHP is the language most used on the Web, and although I have no evidence confirming or refuting it, I'm willing to believe them. But the blogs go on to say that PHP's "advantage" comes from its language features or its community.

First of all, PHP has no advantage. I once got an e-mail from a recruiter where the recruiter had mistakenly forwarded private comments from his boss. It said they were looking for a Perl hacker who would work for less money because they would get to choose Perl. That's how these people think.

Market forces are not about Care Bears and hugs. If you clone a programmer, two programmers with the same brain, and you send one out to hack PHP, and you have the other one use a language where you can charge a reasonable amount of money, the PHP programmer will make less money with the exact same brain. If you love PHP, for some insane reason, you're making less money than you could make, because of your poor taste in languages and your naive assumptions about market forces. This is not an advantage. PHP could not have lost harder.

Second, PHP's advantage came from a tiny ease-of-use boost, in an era where A) Web programmers did everything by hand, and B) the world changed overnight. There are no lessons for language designers here. You might as well be reading tea leaves. World-changing paradigm shifts by definition do not occur in the same category twice. Before PHP vs. Perl, it was Microsoft vs. Apple. A hundred years ago it was Railroad A vs. Railroad B. It's not going to be languages twice, for the same reason it's never going to be railroads again. There's no point making any language-design decisions based on PHP's success story. The gains PHP got from these design decisions do not correlate to the wisdom of the decisions but to the epochal circumstances of the moment when the decisions happened.

The secret strategy behind PHP's "success" is to already be standing in the right place when the big ball of money falls out of the sky. That strategy works, but it's not scaleable.

So you have two blog posts, at number 1 and number 2, debating which irrelevant cargo-cult strategy will net you a historic, unrepeatable "advantage" and enable you to "achieve" a "goal" which would decrease your earnings and have you writing painful, ugly code.

Hacker News used to be too good for this kind of thing. So the question here is: what on earth is wrong with Hacker News? Why is its quality declining? Is the decline inevitable?

But I've already answered that.

Thursday, January 15, 2009

Made-Up Thomas Edison Quote

Lots of people attribute "Vision without execution is hallucination" to Thomas Edison. But you won't find it on Wikiquote, and none of these people provide details on where or when he allegedly said it.

I don't think he did. I think people used the words "vision" and "execution" differently back then, compared to the way we do today, especially the word "vision," which in those days would have been (in my opinion) reserved for religious contexts. The idea that execution has anything to do with vision, in those days, just didn't exist. If you told somebody back then that you were going to execute on a vision, they'd wonder what the hell you were talking about. Visions were religious phenomena and executions happened during revolutions or the administration of the death sentence. And I'm absolutely positive that the word "hallucination" became a businessman's expression of contempt during the 1960s. Before then, it was too exotic; I believe texts from Edison's day use "phantasm" heavily, and would have gone to "phantom" before they got anywhere near "hallucination."

It sticks out like a sore thumb to me. It's like if somebody told me that "Cowabunga, dude!" was a quote from George Washington. I can't even figure out why anybody believes it for a second.

Ableton Live Will Host Max/MSP

Very powerful new feature coming.

Tuesday, January 13, 2009

Why Twitter Should Buy Hashtags

A lot of people find hashtags on Twitter annoying. However, they exist because nature abhors a void. They provide something Twitter lacks: categorization. If hashtags also carried with them enforceable privacy restrictions, they would become very powerful.

Clay Shirky loves LiveJournal because LiveJournal's flexible, user-defined privacy restrictions allow you to express the simple, unavoidable reality that you often do not want all the same people to see all the same things. In real life you share some information with some friends and other information with others. The things you publish on the Internet should not be readable to all possible people who might find you there.

Twitter's already essential to tons of people. Imagine if you could tweet at varying levels of publicity. If Twitter had this additional expressive capacity, it would become more essential to more people.

Likewise, think how useful it would be if you could tune into only some information emanating from a given user. My mom follows me on Twitter. She doesn't give a damn what I think about RSpec, but if I'm thinking of getting a puppy, she'll want to know every possible detail. Someone like David Chelimsky might take the opposite point of view. Dave should be able to say yes to #rspec and no to #puppy, and my mom should be able to do the inverse.

(I'm sure Dave loves puppies too, of course. Everybody loves puppies. It's just an example.)

Browser Wars Redux

Facebook custom markup: opportunity and trap.

Monday, January 12, 2009

Saturday, January 10, 2009

Libertarianism Attempts To Divide By Zero

When I wrote my blog post about Libertarianism the other day, I forgot to mention the biggest problem that Libertarianism has. Libertarianism assumes the presence of many cultural conditions that cannot exist without pervasive free education. A Libertarian society would therefore lack the necessary pre-conditions of a Libertarian society.

Consider for example the distinction between self-interest and enlightened self-interest. Where does the enlightenment come from?

Thursday, January 8, 2009

MS Paint Dead Space

BoingBoing linked to a gamers forum thread: 2008 games in MS Paint. I'm on OS X, so I used Acorn instead. I couldn't register at the forum; first it denied me based on my Gmail address, then once I relented and used another address, it fed me a series of indecipherable captchas until I gave up. So here it is:

And it's based on this:

Not exactly a masterpiece, but certainly a fun challenge. The rules allow you to use a tablet, but I didn't see that til too late.

My Balls Are Fuzzy Today

I blog about whatever I want to blog about. Some people like that; some people don't. That's fine with me. I don't care what people who don't like my blog think about my blog. I figure they shouldn't read it, and I think my logic is sound, although I know for a fact - from comments on sites like Hacker News and Reddit, and occasional inappropriate aggressive tweets - that many people who don't like my blog read it anyway. That's cool too, more pageviews to me, but at the cost of stating the obvious, if you don't like my blog, but you read it anyway, I don't want to hear your complaining. People need to realize that their time-management fail is not my concern.

This image has nothing to do with anything.

I don't really care what people who do like my blog think about my blog, either. I don't even care what I think of my blog. It's not supposed to be Gospel. My blog exists partly to channel my hypergraphia to some productive effect and partly because as a programmer my blog is one of several things which drive my personal brand.

This image has nothing to do with anything either.

Blogs are a long tail medium. Here's a page from Google Analytics. I got Reddit-ed a little one day and saw a little spike in readership. The page that got Reddit-ed accounted for only 42% of the readership spike.

My rule, derived entirely from experience, with no opinion or personal investment one way or the other: "post a lot, even if it seems random." In a long tail medium, a top ten on Reddit or Hacker News will drive traffic to your blog, but once that traffic gets to your blog, it can go in any direction, so you want to have a lot of things on your blog that people might also want to read. Sometimes people want to read some crazy shit. Why not. That's cool with me. I like crazy shit too.

For instance, this shit is crazy:

But I like it.

If you're one of the people who comes to my blog, reads it, and then gets angry at me for wasting your time, I have good news and bad news. The good news is, you're right, somebody is wasting your time, and you're right to be mad at them. The bad news is, it's you, not me, so fuck off and die. Go kick your own ass and leave me out of the equation. Better yet, just read something you like. That way we'll both be happier.

One unfortunate byproduct of the personal brand phenomenon - that it helps your career if other programmers know who you are - is that other programmers end up with opinions about you. Some of these opinions are passionate; some of them are accurate; many of them are neither. I know one entire company that worked themselves into a furious delusion of having some kind of feud with me, and I still have no idea what we were ever even supposed to be fighting about. The set of passionate opinions and accurate opinions did not intersect.

It's kind of the same problem a very successful actor faces, and given that I would love to be a very successful actor, or even a working one, I have some ambivalence about it. It's annoying, but it means that what I'm doing is working. Brad Pitt doesn't want all these legions of emotionally frustrated housewives to be so fascinated with him, it's just an unfortunate side effect of a very successful acting career. And I'm not even saying that I'm Brad Pitt, and all these Reddit muppets are emotionally frustrated housewives. DHH is Brad Pitt, maybe. I'm like Jesus Jones or "Whoomp! There It Is." Some people just care too much about shit that doesn't matter.

However, I hope you made it all the way down here, because after all the troll-baiting and finger-flipping, there is something worth thinking about. A Reddit thread voices an idea I've considered: splitting my blog into multiple blogs, one for programming, one for music, one for politics. I mentioned this on Twitter and most people who replied recommended against it. I only got one vote in favor, in this very informal election.

As I see it, there are three reasons not to. First, I'm lazy. Second, my rule is post any random thing, because people might like it. Third, people who read my blog but don't want to have a filtering problem, and I really believe this is something we should solve with technology. In fact I'm working on a Web app which solves it.

The idea behind I Just Don't Give A Shit is simple: prevent you from seeing the shit you just don't give a shit about. Development is stalled right now, but it'll launch in microapp form some time this year. The FAQ is fun to read. The answer to every question is, "I just don't give a shit." For instance, it's going to be a for-pay app; if that bothers you, well, I just don't give a shit.

The counter-argument to the technological argument is strong, however. The counter-argument goes like this: good branding is consistent and simple. By separating my blog into multiple blogs, I would make the branding better for each sub-blog. All the things that comprise the complicated brand Giles Bowkett could become simpler brands, and thereby brands which would also be easier to sell. The analogy breaks down a little there, because I'm not really doing any selling per se, but the analog would be readers. Simplify your blog, make it more consistent, and you get more readers. Certainly there are a lot of Ruby-only blogs out there with many more readers than mine. The same is true for music-only blogs and politics-only blogs.

What complicates things here is that because my blog has a lot of different topics, the more somebody reads it, the more likely they are to get along with me in person, since somebody who digs Obama and Ruby and dubstep is going to have more in common with me than somebody who loves Obama but hates Ruby (for example). Also, the person who loves Obama but hates Ruby might know me from my blog. If they knew me from a Ruby-only blog, meeting them in person wouldn't be fun. If they know me from a blog where they saw we had some common interests and some differences, then we have something to talk about.

Blogs aren't just about marketing. They're also about communication. A lot of things on the Web blur the lines between marketing and conversation, which is inevitable given the Cluetrain Manifesto idea that markets are conversations. Sometimes the results are awesome and sometimes not.

So far, by keeping my numerous subtopics all under one roof, I'm emphasizing the conversational aspect. It's mostly personal preference. I like to make money, and I like to have fun. These interests often align, but when faced with a choice, I choose fun.

There's another question as well. If I'm right, and the blog-filtering problem is a technological problem, then FriendFeed is doing it wrong. And not just wrong - exactly wrong. The FriendFeed idea is that you want to know every damn thing your friends are doing on every damn site they use. My idea is that you only want to discuss your common interests with people.

I'm basically a Taoist, so I believe the real answer here is to seek balance. For some of your friends, if they only use Twitter and Flickr and Facebook, and you're just considering the idea of keeping in touch with real-life people who don't blog about anything boring to you, FriendFeed makes a lot of sense. But for my Internet friends who blog about interesting things, and also Java, or interesting things, and also their pets, I just don't give a shit, so I Just Don't Give A Shit is going to be the way to go.

I hate to say this because in some cases my Internet friends cross over into real-life friends, and some of these pets whose pictures I don't give a shit about, I've actually met, but I don't think their feelings are going to be hurt, because they're animals, and they don't know what Flickr is. Their only opinion on the subject is probably "meow," and they say that no matter what you ask them. They probably just don't give a shit either.

For the time being, I'm keeping my blog consolidated, but I really don't know what my final answer will be. Now excuse me. I've got to go shave my balls.

Wednesday, January 7, 2009

The Fundamental Problem With Libertarianism

I was once a Libertarian. I'm not any more.

Libertarian ideas are revolutionary. I've been told that Trotsky once said "Every revolutionary should study chess." Few Libertarians would consider Trotsky's opinion on anything, but Trotsky overthrew a powerful government, so I figure his opinions on revolution are informed opinions.

The best book on chess that Libertarians should read is The Wrecking Crew by Thomas Frank, which left me certain after many years that I was absolutely no Libertarian, and more than that, embarrassed to have ever been one. The book doesn't address Libertarianism directly, and in fact doesn't even do it the courtesy of taking it seriously at all. It's a book about how American conservatives have followed a deliberate strategy of destroying, undermining, and sabotaging the Federal government.

They've done so with the support of Libertarian think tanks all over Washington. Republican Presidents and legislators use Libertarian arguments to advance policy decisions which benefit business, then conveniently forget those same arguments when it comes to issues of government debt or unnecessary military spending. They even conveniently forget the arguments when advancing business interests in ways which contradict every last iota of Libertarian political theory.

They forget the arguments because they have no real interest in them; they serve only as justifications. The hypocrisy of politicians is no surprise, but the Libertarian think tanks themselves are complicit in this scam. Frank quotes one of their policy wonks freely confessing that he constructs his reasoning with no concern for intellectual integrity or even internal consistency. The arguments are only a means to an end.

The end, of course, is policy decisions which benefit business. If you think it through, this should be enough to destroy Libertarianism for you. That one domino can crash the whole set.

It takes work to achieve political change. You achieve it through violence, volunteerism, and/or money. I'm going to leave out violence, because I think it's pretty obvious that anyone looking for violent revolution to succeed in the United States is just insane. If you seek a peaceful, non-violent revolution in American politics, your only options are money and volunteerism.

There's already a lot of money in Libertarian think tanks; it comes from business. The explosion of dedicated Libertarian volunteerism necessary to transform the United States has yet to materialize, even though the Republican Party has harnessed an explosion of socially conservative volunteerism in the service of the same business interests that benefit from Washington's "Libertarian" bullshit factories. Money from business interests provides the only real political pressure pushing policy in a Libertarian direction.

This means that if you want to achieve a Libertarian transformation of the United States, your only possible winning strategy is to get as much money from business as possible. But that means that the only way to get government out of business is to get business into government. In order to affect this revolutionary change, you would need to leverage a great deal of political momentum from campaign contributions originating with business interests. Then, once you had achieved a Libertarian transformation, you would need all the people with strong ties to business interests, who would owe their political careers to these strong ties, to turn their backs on their business allies. You would need to empower business interests in the political arena, and then prevent them from exercising their power.

If politics were chess, Libertarians would be trying to win by holding up the pawn, saying "my pawn has a machine gun!", and making little pew-pew noises. It just doesn't work that way.

Update: Couple tweets accused me of knocking over a straw man here.

The fact that some Libertarians don't like the GOP doesn't make a difference. I didn't bother going into detail about that, even though I do acknowledge it in the links, because it's irrelevant. If you're going to accuse me setting up straw men, click the links first, please, because you're accusing me of not knowing things I mention; and consider the possibility that you just didn't get the argument in the first place. Seriously, I've got stuff to do today.

Propane: Custom CSS Feature/Hack

ENTP developer Trevor Squires released his side project Propane today. In addition to its other features, you can hack it to give you custom CSS.

I just changed the fonts. I alternate between Gill Sans and Futura. Matt Lyon went a little further.

There's maybe a proper UI coming for this soon; for now you just edit a CSS file in Application Support. Both Matt's CSS and mine are on GitHub. The README in my repo tells you where to put the CSS file.