Thursday, June 28, 2007

Everybody Loves A Robotic Blimp

Machine Project (in LA) is holding a robot blimp workshop.

Sunday, June 24, 2007

script/plugin discover

This might be too much typing for your delicate fingers:

script/plugin install

This is easier:

script/plugin install acts_as_authenticated

To make it possible, just type

script/plugin discover

And then hit y over and over and over and over and over and over and over again.

Plugin Development: acts_as_fox

I'm working on a Rails plugin called acts_as_fox. It overrides every method on an ActiveRecord model to return the string "chunky bacon!".

I got it working, thanks to the ruby-talk list, but ran into some kind of edge case, and have been too busy to get it wrapped up. There's nothing actually useful about this project, it's just a programming exercise.

Check out the thread on ruby-talk; the replies by Rick DeNatale and David Black are, as always, especially helpful.

Thursday, June 21, 2007

Creepy Video

My father has a very disturbing talent. If you want to find incredibly skilled investigative journalists just before they die in alleged suicides, all you have to do is ask my dad who his current favorite investigative journalist is. The weird thing is, my dad likes these journalists because they uncover political scandals before they hit the news, as well as scandals that never make it to the news. But he's never seemed to notice that whenever he says a journalist is really onto something, that journalist is found dead very soon after, an alleged suicide with no note.

My dad's almost a conspiracy theorist, except his conspiracy theories often end up vindicated by CNN. Thanks to his weird ability, I knew about political scandals when I was in junior high that my friends didn't see on the news til they hit college. He has a real nose for this kind of thing. But I've always been glad my dad didn't use this talent of his to become an investigative journalist. It doesn't seem like a safe profession.

Anyway, my dad sent me a video. Programmers might find it interesting. But I wouldn't give it too much thought; dwelling on that kind of thing isn't healthy.

Wednesday, June 20, 2007

Remove "Find In Project" From TextMate

I love TextMate, but "Find In Project" drives me nuts. It's always crashing my box. I e-mailed TextMate's creator asking if he could just remove the feature from the next release. The response I got was incredibly cool. Instead of giving me the virtual finger, he told me you can do it like this:

sudo open /Applications/

This command opens TextMate's UI in Interface Builder, which allows you to remove it from the menu. Removing it from the menu clobbers the key-command shortcut too, so it effectively removes the feature from your install completely.

It works. I dig it.

Clone ActiveRecord Models

I posted this in my tumblelog too, but it's just so cool, I have to post it here in case anybody misses it:

model_first.attributes.each {|attr, value| eval("new_model.#{attr}= first_model.#{attr}")}


If you need to clone a model from another model, this is all you need to do. It can throw validation errors in some cases, where it violates validates_uniqueness_of constraints, but you can check the model and adjust accordingly. In fact, you can do that programmatically, so this could be added to ActiveRecord::Base. And if you add it to Base, it works. I know because I've done it.

So cool!

Update: this'll be available in plugin form soon. Probably after this coming weekend. I'm mostly just doing it for fun, but I could see this being useful for people. I created it because I need it for a project.

So Amazon Kinda Got Schooled


(Or it would be, if it worked in Safari! Sheesh.)

I've Consistently Understimated Rails

Every time I've been skeptical about Rails, I've been wrong.

Initially I thought it was something on the level of TurboGears or Nevow; a minor evolution, a package to maybe learn if needed. Turns out it's much more than that.

At Canada on Rails I didn't think Dave Astels' BDD presentation made a word of sense. Today I think RSpec and BDD are the best thing to happen to development practices in years.

The whole REST thing, I just thought it was silly. Turns out REST is the same thing to Rails in 2006 that Ajax was in 2005. The ability to craft APIs cleanly and nearly effortlessly is the advantage that Rails gives to people who are on the very cutting edge. (Obviously that group of people is a group of which I'm not a member, since it took me til mid-2007 to figure this out.) Just to expand on that, the Rails community is growing like crazy, but it's not just how many people, it's also which people that matters. Ajax and now REST are the reason Rails keeps attracting people who do exciting things.

Anyway, back to the whole skepticism thing. The other day I discovered to my surprise that the method_missing code in ActiveRecord's associations needed to be refactored. So I thought aha, that's interesting, and I went into my copy of edge Rails to play around with it, only to find that the refactoring's already underway. The association collection and association proxy classes still use it, but the only actual specific association class still using method_missing at all is has_many :through.

There's a real trend here, and I hope I remember it next time Rails makes me skeptical about something.

Tuesday, June 19, 2007

My Amazing First Rails Contribution

Miss Manners would be proud.

Radio Silence

It's been a bit quiet here. There are a couple reasons. First, limited connectivity. Although I have connectivity at work, for obvious reasons, information security prevents me from sshing into my own domain from here, and that prevents me from uploading graphics. As a result I can only do text posts and posts using images I've already uploaded.

More importantly, I've been crazy busy. I'm working on a presentation for OSCON and four recipes for the Pragmatic Programmers' Advanced Rails Recipes. Two of the recipes are easy, but the other two require some work (and one of them is genuinely hard). On top of that, I'm starting new acting classes - my new teacher has had Sean Penn as a guest teacher at her studio and comes recommended by Harvey Keitel, among others - and I'm up in Silicon Valley, having relocated here temporarily from Los Angeles.

Long story short, I got a whole ton of busy going on. Stay tuned, though, the regular broadcast schedule should resume at some point.

Monday, June 18, 2007

.irbrc Modifications

Last October, Ben Bleything added a Unix-style history method to his irb (and by extension to script/console).

I did this myself in February or March, but Ben's solution is better than mine. Mine used an explicit eval() and could result in eval() loops for that reason. Ben's avoids that problem nicely. It also adds nifty features like writing your history to a file, calling prior commands by number - so you can call any command in your history, not just the most recent - and calling several commands in one call.

However, there's one part I don't dig: Ben's version returns nil. So if you use h! to get the return value you got before, you get nil instead. It means that the simplest use case for history, just calling the same command twice, is only useful if you didn't care about the return value. Personally, I usually only capture the return value in a variable after I see it in irb's output - using the _ special variable - so for me return values are very useful.

Changing that turns out to be very easy. Ben's history_do method explicitly returns nil, and his irb_eval doesn't capture its internal eval()'s return value. So the changes are very slight, and very quick to make. Capture the return value, and take out the nil. Easy.

Here's the diff.

Here's my version.

Friday, June 15, 2007

Worry About Scaling Later? No.

37 Signals' Getting Real is a great book, but one piece of its advice seems dead wrong: worry about scaling only if and when you have to. Consider servers that get slashdotted or boingdotted. Consider startups with explosive viral growth. Traffic spikes on the Web can be gigantic, and completely unpredictable. Companies should plan for that.

Thursday, June 14, 2007

Rails Edge / Sisters of Mercy

I discovered the Sisters of Mercy when I was 13 or 14. Their songs tore holes in the fabric of the universe and set worlds on fire.

By the time I was 18, the Sisters of Mercy had retired from cosmological pyromania to the relative comfort of simply being a good band. I still went to see them twice that year.

The first show I saw, at the Riviera nightclub in Chicago, went way above and beyond the call of duty for a good band. They threw my brain in a blender, mixed it with the nectar of the gods, and served it back to me as a smoothie.

The second performance I saw, at the Alpine Valley stadium near the Illinois-Wisconsin border, embarassed me and nearly had me snoring. The Sisters sucked that time. The highlight of that show was Public Enemy. The industrial/goth/synth/rock band and the Afrocentric revolutionary rap group were doing a combined world tour.

Most people I knew were baffled by this, but these were my two favorite groups, so I was in heaven. Or at least, I'd been expecting to be in heaven. I'd been in heaven before the show anticipating it. When the time came, Public Enemy were great, but the Sisters had sound problems throughout their set and basically just looked ridiculous and incompetent.

Another very real difference was the vibe. People who went to shows at the Riv went to lots of shows; people who went to shows at Alpine Valley were much more driven by a band's popularity than by a genuine love of music. When you and a few hundred other passionate music lovers share a whirlwind generated by your favorite band's amazing performance, that's a much better experience than watching your favorite band fail miserably in front of thousands of people who don't really care one way or another.

End of story. Back to the future:

Last year, I went to Canada on Rails, a tiny, 100-person(-ish) conference in Vancouver. This year, I went to RailsConf, a 1600-person mega-huge-type-thing in Portland.

I hope you can see where this is going.

At Canada on Rails, DHH had a response for his critics.

It was brave; it was bold; it was funny. There was some filler, but the overall vibe was one of excitement and rebellion. There was a powerful feeling that something was really happening.

At RailsConf, DHH told us all a bunch of stuff we already knew - or at least, those of us who read Ryan Daigle's blog or stay up to date with Edge Rails - and during the one time he coded something onstage, he introduced a bug. He got the code of his own framework wrong. That wasn't quite the same as watching the Sisters of Mercy trying to perform onstage while their monitors kept losing power, but it did feel kind of familiar.

Canada on Rails wasn't quite the Riv, and RailsConf wasn't quite Alpine Valley, but it was a similar type of difference. Canada on Rails drew people who knew they were onto something new and amazing; RailsConf drew people like that, and also drew people who had seen DHH in BusinessWeek, Wired, or the Linux Journal.

The star of the show at RailsConf, as far as I'm concerned, was Avi Bryant, the Public Enemy to DHH's Sisters of Mercy. The most interesting part of both events was the counterintuitive support act. Although I saw a ton of great presentations, the more beginner-oriented stuff was less exciting, and a tiny, tiny smidgen of the nasty, childish arrogance the Rails community sometimes falls prey to was, unfortunately, present in attendance as well.

Obviously I'm using the analogy of the teenager who tells you that Band X was cooler when nobody had ever heard of them, and obviously that teenager is an annoying little brat. I know because I was that brat, and when I was that brat, I annoyed people. It was fun!

Here's what that brat knows. You get that kid together with a hundred other similar kids and one awesome band, you'll have a better party than you'd have with any number of regular people and the same band.

Technical conferences aren't concerts, but they are social occasions, so please pardon the conceit. The analogy is a stretch, I know. My only point is that a smaller conference might actually be a better experience than a larger one, under certain circumstances.

The Pragmatic Studio organize an additional, smaller Rails conference, called the Rails Edge. From the site:

Everyone using Rails is on a continuous learning cycle—experts and novices alike. The Rails Edge is a unique conference where we bring some of the best minds in the Rails and Ruby communities together with you in a single-track environment, so that we can all sharpen our edge.

If the beginner sessions at RailsConf seemed kind of pointless to you, you might want to check this out. I'm definitely interested (although not sure I can make it). You're probably looking at a smarter and more genuinely invested crowd at this mini-conference than you'd see at a larger event, and that's probably a tremendous advantage.

Designers & N00bz: The Rails Advantage?

Been reading The Wisdom of Crowds.

There's very interesting research referenced in this book which indicates that adding new members to a group can actually make the group smarter even if the new members are less well-informed than the existing members:

Scott Page is a political scientist at the University of Michigan who has done a series of intriguing experiments using computer-simulated problem-solving agents to demonstrate the positive effects of diversity...what Page found was that a group made up of some smart agents and some not-so-smart agents almost always did better than a group made up just of smart agents. You could do as well or better by selecting a group randomly and letting it solve the problem as by spending a lot of time trying to find the smart agents and then putting them alone on the problem.

There are qualifiers to this, it's important to read the whole book, but it's pretty easy to generalize it out to real life. Rails makes it very easy for people to get started, so much so that it draws in people who've never done programming before. Even though this results in individual applications sucking a little extra, it makes the Rails ecosystem smarter as a whole.

Language Wars Are For N00bz

when you ask people to choose a style or design that they prefer, unless they are trained, they will generally choose the one that looks most familiar. In most matters of taste, when you do preference surveys, you'll find that most people don't really know what to choose, and will opt for the one that seems most familiar. This goes for anything from silverware (people pick out the patterns that match the silverware they had growing up) to typefaces to graphic design: unless people are trained to know what to look for, they're going to pick the one that is most familiar.


I've blogged before about efforts to get shell variables like !! and !$ hooked up in irb and script/console. Ben Bleything's method is here. It's not significantly different from my own implementation of !!, even sharing the same name (h!), but seems to have the same problem, which is that invoking it twice in a row could result in trapping yourself in an eval() loop.

Monday, June 11, 2007

Global Warming Means Free Energy?


Powerlabs Looks Nifty

The fun part is you get access to the Powerset search engine before ordinary mortals.

Sunday, June 10, 2007

Weird Rails Issue

I'm working on a new project and seeing something very strange. Intermittently, the Rails app fails, throwing an error on the absence of a socket. I initially took it to mean the MySQL server was going down, but this wasn't the case at all. The DB is in perfect shape.

What's happening is actually weirder than that. The DB lives on a separate machine. The intermittent errors all fail on the absence of a Unix socket. But since the DB lives on a separate machine, the Rails app should never even be looking for a Unix socket in the first place. It should be looking for a TCP socket.

Here's the code in Rails where the error originates:

if (host == nil or host == "localhost") and defined? UNIXSocket then
unix_socket = socket || ENV["MYSQL_UNIX_PORT"] || MYSQL_UNIX_ADDR
sock = UNIXSocket::new(unix_socket) # stack trace points here
@host_info = Error::err(Error::CR_LOCALHOST_CONNECTION)
@unix_socket = unix_socket
sock = TCPSocket::new(host, port||ENV["MYSQL_TCP_PORT"]||(Socket::getservbyname("mysql","tcp") rescue MYSQL_PORT))
@host_info = sprintf Error::err(Error::CR_TCP_CONNECTION), host

(activerecord-1.15.3/lib/active_record/vendor/mysql.rb, lines 105-113)

The value of host, on entering the above if, should be the same as the value specified (for this particular environment) in database.yml. This code pulls from the config file, and it's invoked during the initialize phase of the app, so the only explanation which makes sense to me is that the Rails app is somehow losing the data in the config file. Except I've never seen that happen, nor heard of it happening, and I can't imagine why it would happen. In fact it's difficult to imagine it happening at all.

It's possible there could be some error in the config-file-reading code, but I kind of doubt it. MySQL is the most popular DB for Rails, and I think if this were a Rails problem I would have heard of it before. I think it's some problem in the deployment, but even then, what kind of deployment problem could result in Rails becoming confused about the contents of its own config files? Possibly, if the YAML-reading code assigns a nil to host after reading the value, for some reason, that could explain what's happening, but that also seems highly unlikely.

Update: I thought this might be due to the app being in dev mode, but a direct check on ENV['RAILS_ENV'] reveals a value of 'production'. However, if I change controller code, I see the results of that change immediately, without a mongrel restart, which I do not think should be happening in production mode.

Update 2: the problem is inconsistent via the Web but consistent via script/console.

Update 3: it seems very probable that I've fixed this. It appears to be a dumb load-balancing thing. One stale process with bad data loaded in memory.

How To Be Like Me

Forgive me for indulging my narcissistic personality disorder. This Question, and variations on it, is Frequently Asked. It seems weird to me, but then, I spend all my time being me, so it might just be a matter of perspective. But one reason it seems weird, beyond the fact that it's sort of a weird question to begin with, is that all my life people have generally thought of me as weird.

I have no idea why.

The reality is, I don't really know how you can become more like me, because unless the Buddhists are right, I never came to being me from being somebody else. And even if the Buddhists are right, I don't remember who I came to being me from. So I don't know what the path from being anybody else to being me is.

The only useful advice I can give you here comes from Shakespeare:

To thine own self be true,
And it must follow, as the night the day,
Thou canst not then be false to any man.

That's as good an operating philosophy as any.

However, if you decide to use it, it won't really make you anything like me. It'll just make you more like yourself. I think that's what you really want, though. Being more like yourself is a lot more valuable than being like somebody else.

But, if you really want to learn how to be like me, you have a blog right here. Read every post, and then learn to do the things I mention. Code Rails, study acting, learn art and animation and motion graphics. Work in graphic design. Organize raves. DJ at parties and release white label records. Live in New Mexico for a while.

Seriously - go for it. If you really wanted to pattern your life after mine, that would be kind of creepy, but I'd really have no business stopping you, and it'd certainly be interesting to find out what you learned along the way. Unless you started showing up at my house or trying to steal my dog. Then I'd have to kill you.

(Sorry. Nothing personal. I just love my dogs.)

Really though there's only a few steps to becoming like me:

1. Work constantly.
2. Always define your own work.
3. Make sure at least some of that work makes money.
4. Make sure all of that work satisfies some burning curiousity you have.

That's basically it.

Please realize, though, that as much as I've enjoyed the huge ego boost of this bizarre Frequently Asked Question, I'm not actually saying that being like me is necessarily a good idea. I can provide plenty of examples from my own life of why being like me isn't such a great move, and I'm fairly certain there are people who don't like me who can provide you with even more counterarguments. Some of those counterarguments might even be quite compelling.

But it is a FAQ, so there's an answer, of sorts.

Job Ad On YouTube

A startup looking for a Ruby guru is advertizing on YouTube instead of Monster or Dice.

This is a very interesting thing. A little while back I blogged about how it's a good sign if a company's seen your blog and/or code you've written for open-source projects. The reverse is also true. It's a good sign if a company's showing you who they are before you even meet them. Web social networking startups should use Web social networking; it's common sense.

Imagine, for the sake of argument, that this becomes a growing trend; that a social presence on the Web becomes a crucial part of business for both companies and individuals. Certainly, my blog's helped me market myself as a programmer, and it's also put me in touch with people I'd want to hire if I were in a hiring situation.

If you really want to fry your head, then for a vision of what this can look like, check out Joi Ito's presentation last year at the Chaos Congress on World of Warcraft. Joi Ito's a real thought pioneer, and he says that if you look at World of Warcraft from the right angle, you'll see the networked workplace of the future.

Powerset Confused

The very cool natural-language search startup Powerset, home to renowned Rails programmers Josh Susser and Kevin Clark, sent me an invite the other day to something called Powerlabs.

So I clicked the link and got a page saying thanks for your interest, tons of people are fascinated by Powerlabs, but if you give us your name, we'll send you an invite.

So I scratched my head a bit, filled in my name, and got another e-mail about ten minutes ago. They said that rather than send a long e-mail, they'd made a short screencast. I thought, ah ha, this is a good thing. I've blogged many times about how I like screencasts and about specific screencasts I like. So I click the link and get a page on YouTube explaining that the video is private and I need to accept the invitation to join the friends list of the video's creator.

But there's no such invitation in my YouTube inbox; they didn't even ask for my YouTube identity.

So, as cool as Powerset is, I have to say, they're a bit confused here.

Update: got the correct link in another e-mail. Now less confused.

Saturday, June 9, 2007

Paul Merton Meets Chinese Robotmaker

Paul Merton is one of the frequent costars on a hilarious radio program called Just A Minute. One of the funniest improv games you'll ever hear.

Here he is in China, bit of a fluffy thing for the BBC, but entertaining - he meets a prolific junkyard robots inventor.

Friday, June 8, 2007

Microsoft Wikinomics

Like regular Wikinomics, except insane, dangerous, and bad.

Facebook Platform

It's got at least one developer very excited.

Wireless Electricity

Exciting news, but first some commentary from the Dystopian News Department: If bees can't handle cellphones, what's it going to look like when everybody's beaming electricity at various gizmos?

Thursday, June 7, 2007

Python LOLCats Are Hardcore

You've probably seen this:


But did you know it can run as code in Python?

Wednesday, June 6, 2007

Totally Ganeshed Out, Catching All The Ladies

This one time, when my brother and I were teenagers, we wore our clothes backwards like Kris Kross and went around calling each other "nigga." We were (and are) both white.

As weird and embarassing as this behavior is, what makes it even more weird and embarassing is that very soon afterwards I met somebody who basically did the same thing to me. My parents are English; this person was an Anglophile. They came up to me telling me they knew all the rules of afternoon tea. They knew how to fake the accent and they knew more about the geography of London than I did. They knew the Scottish origins of my first name. They knew the history of William the Conqueror, or whoever, and they could pinpoint the exact location of my parents' home villages on a map of England. They had never been outside the Chicagoland area in their lives. It was very weird.

What made it even weirder is that there's no such thing as afternoon tea - at least, not in my family. I honestly wondered if this person had made it up or seen it in a movie or something. My great-aunt Jackie actually observes the tradition, and my great-aunt Dorothy did as well until her death last year, but I didn't know that at the time. The vast majority of my relatives do not do any kind of afternoon tea thing. Among most of my relatives, including my own parents, the concept of afternoon tea is a contradiction in terms, because the idea of scheduling tea is as inherently absurd as scheduling gravity. Tea flows constantly. Such is the nature of tea.

And no, by the way, this Anglophile couldn't really do the accent. But they were doomed to spend their entire lives thinking they could. Americans are notoriously imprecise listeners, and the English are notorious for their excessive diplomacy. So nobody American could tell the difference, and nobody English who could tell actually ever would.

Going back to the Kris Kross thing, when a first-generation British-American meets an Anglophile, he gets a very precise (but probably less intense) simulation of what it must be like for African-Americans to encounter white kids pretending to be black. There's something utterly squirmy about the idea that somebody you've never met wants your cultural identity. I'm pretty sure this person, after they met my parents, went home and practiced their British accent so they could sound like my parents. That's flat-out weird.

And not just weird - inaccurate, too, when you consider that my parents sound American to English people these days, having lived here so long; and that my mother has always had a very slightly weird accent anyway, an amalgamation of Yorkshire, Berkshire, and Singapore which just doesn't happen that often. It's not just the wanting somebody else's cultural identity which is weird; it's also that culture, more than anything, consists entirely of what Hayek called tacit knowledge - the stuff nobody ever explicitly articulates, but just assumes you know. So cultural identity is almost inherently unknowable from the outside. Which means it's not really the identity that Anglophiles and wiggers are after - it's some weird hybrid of the identity and the image.

Anyway - I had a similar experience today, and if you're in the tech field, like most people who read this blog, then this whole story is, very slightly, very marginally, relevant.

I have a Ganesh, or possibly a Ganesha. I honestly don't know. It was designed by the New York graffiti artist Doze Green, and it is at once an homage to the classic early days of hip-hop - including breakdancing and graffiti - and an interpretation of an Indian religious icon.

I've had this in my home for a while, through a couple moves, and today I'm in a hotel, paid for by a consulting firm which brought me up to Silicon Valley to do some work for a local company, one of the bigger dot-com boom success stories. I'll say which company once I'm officially started - the point is, I've had this thing in my home through a couple of moves, today I'm in a hotel, and I have it here in my hotel.

So the consulting company is predominantly staffed by Indians and/or Indian-Americans. So I go over there today and I fill out some paperwork. I did not see one Ganesh in the building. I did see archetypal American corporate imagery, like a "Leadership" poster with a picture of a bald eagle.

So here's this American white guy, with an extremely stylized, Americanized Ganesh, and here's this office full of people from India, with all this American corporate stuff.

It's almost like, if the American culture was a person, and the Indian culture was another person, it's almost like these two people were trying on each other's clothes.

It's kind of weird.

Nifty Job

Saw an ad at RailsConf, and got in touch with the guy. Can't say too much yet, but the basic idea is, they set you up working remotely with a few other Rails programmers, an in-person team remote from the office, and then they move you, as a team, through a few choice global spots. The one that appeals to me the most is Thailand, but they mentioned others as well.

Might be some more detail forthcoming further down the line. Stay tuned.


Monday, June 4, 2007

Awesome Audience-Controlled Video Game

via BugBash.

Let The Future Speak Its Mind

Again and again some in the crowd wake up. They have no ground in the crowd, and
they emerge according to much broader laws. They carry strange customs with them
and demand room for bold gestures. The future speaks ruthlessly through them.

- Rainer Maria Rilke

Robot Lamp Actor, Designer Laptops

Robot Lamp Actor
Designer Laptops

RubyCocoa: Books & Excellent Screencast

Objective-C and Ruby are both children of Smalltalk, but they have grown up separately.

Screencast and Intro

Sunday, June 3, 2007

Another Reason Geeks Should Study Acting: Lie Detection

The most obvious reason a geek should study acting is to become the one geek out of millions who actually has social skills. There are other reasons as well (I've blogged about them before). But this is a great reason:

The big difference between good acting and bad acting is authenticity. Learning how to act forces you to recognize that difference - how could you measure your progress without a metric? Anyone in a large corporate environment can benefit from learning to distinguish between authentic and inauthentic communication.

It's not even just a matter of corporate politics, though. Think about requirements gathering. Plenty of people will pretend to understand you or agree with you if they think the alternative is looking stupid. That accidental intimidation can result in bad requirements gathering, but if you can spot it, you won't be fooled by it. You can take a second to acknowledge their brains so they feel better, and then ask the question differently so you get the real answer.

There are tons of geeks abusing this social phenomenon, most of them unknowingly. The excuse is always blaming the user for their inarticulateness or their stupidity. But if people are dumber then you are, then you should be able to figure out what they think - especially when they're trying to tell you.

By the way, if the whole "Why Geeks Should Study Acting" trend in my blog is boring you, don't worry, I am planning to get to "Why Geeks Should Study Latin And Ancient Greek," as well as "Why Geeks Should Study Kung Fu" and "Why Geeks Should Study Fencing." I just haven't got to that part yet. Over the course of this blog I will in fact justify everything I've ever done in my life, proving for a fact that everything I've ever done is something every geek should do - even the time I got arrested in Vegas with $300,000 in a vinyl bag and somebody else's goat in my car. I'm going to call that "Why Geeks Should Get Arrested In Vegas With $300,000 In A Vinyl Bag And Somebody Else's Goat In Their Car."

In the meantime, just one more little thought: as different as computer programming and acting are - as jobs, as careers, as ways of thinking and being - there's one fascinating point of intersection between geek culture and drama culture, which is Dungeons & Dragons.

Both geeks and actors love D&D, though you might not actually hear about it, because both geeks and actors are prone to treating D&D like this big guilty pleasure. I've even worked in offices where talking about the recreational pharmaceuticals you enjoyed when you were young was a less daring and candid move than admitting that you played D&D last weekend. It's kind of silly like that.

If you're down with this idea that geeks should work on their social skills, but not down with the idea of destroying the geek culture - because there is, after all, beauty in the geek culture - D&D gives you a nice safe middle ground, and, if you're lucky, a nice safe middle ground which can involve actors as well as geeks. Worth thinking about. Also, if you're a programmer who plays D&D, you're in good company.

Friday, June 1, 2007

Jamis Buck & Marcel Molina Fixing Rails Code

From a conference I sadly missed. Don't repeat my mistake - this is a great video.

Robots On Rails

The Four Hour Work Week's got many great ideas. One is the idea of a muse business:

It has to lend itself to automation within four weeks, and - when up and running - it can't require more than one day per week of management.

Can a business be used to change the world, like The Body Shop or Patagonia? Yes, but that isn't our goal here.

Can a business be used to cash out through an IPO or sale? Yes, but that isn't our goal either.

Our goal is simple: to create an automated vehicle for generating cash without consuming time. That's it. I will call this vehicle a "muse" whenever possible to separate it from the ambiguous term "business," which can refer to a lemonade stand or a Fortune 100 oil conglomerate - our objective is more limited and thus requires a more precise label.

The muse business is an automated business. The author of The Four Hour Work Week, Tim Ferriss, automates his business with employees and efficient business processes, but that's not the only way to automate a business. Prototype ordering kiosks in test-market McDonald's are automating minimum-wage workers out of the equation [1, 2].

If you've ever bought gas with a credit card, you've done business with a machine.

Same goes for vending machines.

Most businesses on the Web that charge their customers money charge that money automatically. When you order a book on Amazon or set up a domain at Go Daddy, you're doing business with a machine. When you conduct transactions with other people through eBay, you're using the giant eBay machine to do it. Highrise and Basecamp are machines. There's really only two types of business models on the Web: advertizing, and creating machines for people to do business with. And if you're buying or selling advertizing on the Web, you're doing business with machines there too.

Building Web apps means building cash-generating robots.

Robot Snails: Porn And Violence

Plus! Fishing for humans: