Wednesday, July 27, 2011

Hacker News Fires Steve Yegge

I woke up this morning...ish... to discover that Hacker News had finally had enough of me being at Google, so they forced me into early retirement.

On Monday I was honored to be able to deliver a keynote talk at OSCON Data. In the talk, I announce at the end that I am quitting a project that I had very publicly signed up for, one that I am not passionate about and don't personally think is very important to the human race. Though others clearly do, and that's a legitimate viewpoint too.

But the power of suggestion can make you see and hear something entirely different. If, for instance, someone tells you that I gave the talk wearing a gorilla suit, then when you watch it, I will magically appear to be wearing a gorilla suit. It's actually a gray jacket over a black shirt, but you will perceive the jacket as the back-hair of a male silverback gorilla! And to be honest the talk could have benefited from the judicious application of a gorilla suit, so no harm there.

Similarly, if someone on Hacker News posts that "Steve Yegge quits Google in the middle of his speech" and links to the video, then you will watch the video, and when I say the word "project" at the end of my speech, a magical Power of Suggestion Voice-Over will interrupt -- in a firm manly voice totally unlike my own quacking sounds -- with "Gooooooogle". And then you will promptly sink into a 15-minute trance so that the voice-over can occur in the middle of my speech where Hacker News said it happened, instead of 96.7% of the way through the talk where it actually happened.

I am going to harness this amazing Power of Suggestion, right here, right now. Here goes.

You are going to come work at Google! You are going to study up, apply, interview, and yes, you are going to work there! And it will be the most awesome job you've ever had or ever will have!

I hope for your sake that this little experiment works, because Google is frigging awesome, and you'll love it here. And they'll be happy to have you here. It's a match made in heaven, I'm tellin' ya. It might take you a couple tries to get in the door, because Google's interview process -- what's the word I'm looking for here -- ah yes, their process sucks at letting in all the qualified people. They're trying to get better at it, but it's not really Google's fault so much as the fault of interviewers who insist that you're not qualified to work there unless you are exactly like them.

Of course, there are interviewers like that wherever you go. The real problem is the classic interview process, which everyone uses and which Google hasn't innovated on, not really. It's like deciding whether to marry someone after four one-hour dates that all happen on the same day in a little room that looks kind of like a doctor's office except that the examining table is on the wall.

The reason I haven't been blogging lately is that working at Google is so awesome that I just don't feel like doing anything else. My project is awesome, the people are awesome, the work environment is over-the-top-crazy-awesome, the benefits are awesome, even the corporate mission is awesome. "Organize the world's hardline goods in little brown boxes delivered straight to your doorstep" -- that's an awesome mission, yeah?

Wait, sorry, that was a flashback to the Navy or something. "Organize the world's information" -- that's the one. It's a mission that is changing the course of human events. It is slowly forcing governments to be more open, forcing corporations to play more fairly, and helping all of us make better decisions and better use of our time.

In that vein, the part of my brain that makes Good Decisions was apparently broken a few weeks ago, when I allowed myself to be cajoled into working on something that I wasn't passionate about. I am an eternal optimist, and I figured I could teach myself to be passionate about it. And I tried! I spent a few weeks pretending that I was passionate about it -- that's how I got through my Physics classes in college with A grades, so I know it's a mental trick that can sometimes work.

But then I wrote my OSCON Data speech, in which I basically advise everyone to start working on important problems instead of just chasing the money. Or at the very least, go ahead and chase the money in the short term, but while you are doing that, prepare yourself to help solve real problems.

And after writing the speech I realized I'd completely failed to follow my own advice. I'm getting old and I only have so many "big projects" left that I can actually participate in. So in my mind it's a complete cop-out for me to take the easy path and work on a project that my company is excited about but I am not.

Now, as it happens, I am in fact working on a very cool project at Google. It's not important in the same sense that curing cancer or getting clean water to impoverished cities are important. But it's a project that has the potential to revolutionize software development, and NOT through some new goddamn dependency-injection framework or web framework or other godawful embarrassing hacky workaround for a deficient programming language. No. It is a project that aims to turn source code -- ALL source code -- from plain text into Wikipedia. I've been on it for three and a half years, and I came up with the idea, and the team running with the idea is fantastic. The work may not be directly important, but it is an enabler for important work, much like scaling infrastructure is an enabler.

So I am happy to continue working on that project for now. Yes, at Google. I may even blog it up at some point. But I'm very serious about brushing up on my math and statistics, some of which I haven't applied directly in 20 years, and start focusing on machine learning problems. Particulary, if I may be so fortunate, the problem of curing cancer. I may not be able to participate directly for a few years, as I need to keep working and paying the bills just like you. But I'm studying hard -- I started up again a few days ago -- and I've demonstrated to myself quite a few times that if I do anything daily for a few years I can get pretty good at it.

Anyway, I'm late for work. Isn't that nice? I like the sound of it. It has a nice ring to it: "I'm late... for my job."

So come work with me! Unless you are curing cancer, of course.

Friday, July 22, 2011

eBay Patents 10-Click Checkout

San Jose, CA (Reuters) — Online auctions cartel eBay (NASDAQ: EBAY) and its collections and incarceration arm PayPal announced that on July 21, 2011, the two companies had jointly been awarded United States Patent No. 105960411 for their innovative 10-click “Buy it Now” purchasing pipeline.

The newly-patented buying system guides users through an intuitive, step-by-step process of clicking “Buy It Now”, entering your password, logging in because they signed your sorry ass out again, getting upsold shit you don’t want, continuing to your original destination, accepting the default quantity of 1 (otherwise known as “It”), committing to buy, clicking "Pay Now", entering a different password than your first one, clicking "Log In" again god dammit, declining to borrow money from eBay’s usury department, reviewing the goddamn purchase details since by now you’ve completely forgotten what the hell you were buying, and finally confirming the god damned payment already.

The 10-click checkout system, known colloquially as 10CLICKFU -- which many loyal users believe stands for “10 Clicks For You” -- was recently awarded top honors by the National Alliance of Reconstructive Hand Surgeons. 10CLICKFU incorporates a variable number of clicks ranging from eight to upwards of fifteen, but eBay’s patent stipulates that any purchasing system that lies to you at least nine times about the “Now” part of “Buy It Now” is covered by their invention.

The patent award came as a surprise to many analysts, since several of eBay’s related patent attempts had been rejected on the basis of prior art. In one well-publicized filing, eBay had tried to patent a purely decorative, non-operational “Keep me signed in” checkbox, but Sony’s PlayStation Network already had one just like it. And another eBay patent claim for excruciating page load times was rejected because the iPad App Store is still loading.

But eBay’s boldest and potentially furthest-reaching patent attempt was for “100% Inaccurate Button Text”. The invention claim was based on several of their UI elements, but rested primarily on the “Buy It Now” button, which eBay claims contains enough inaccuracies to render it "complete bullshit." Their patent was rejected by the US Patent Office review committee on the grounds that the Firefox browser’s “Do this automatically from now on” checkbox has been complete bullshit for over fifteen years. eBay says they will appeal the ruling because the checkbox is not technically a button.

eBay’s spokesperson Paula Smugworth announced that eBay will continue to innovate on ways to remind their users that monopolies can do whatever the hell they want. “Not that eBay is a monopoly,” she added. “But if we were a monopoly, then we could do whatever the hell we wanted. I’m just sayin’.”

eBay’s stock rose on the news, driven largely by anonymous shill bidders.

Wednesday, December 01, 2010

Haskell Researchers Announce Discovery of Industry Programmer Who Gives a Shit

The worldwide Haskell community met up over beers today to celebrate their unprecedented discovery of an industry programmer who gives a shit about Haskell.

On Wednesday, researchers issued a press release revealing that 27-year-old Seth Briars of North Carolina, a Java programmer at Blackwater accounting firm Ross and Fordham, actually gives a shit about Haskell.

"Mr. Briars has followed every single one of our press releases for years," the press release stated. "Probably even this one."

Haskell researcher Dutch Van Der Linde explained how they had stumbled on the theoretical possibility of Briars and his persistent interest in Haskell. "We knew that there are precisely 38 people who give a shit about Haskell," said Van Der Linde, "because every Haskell-related reddit post gets exactly 38 upvotes. It's a pure, deterministic function of no arguments -- that is, the result is independent of what we actually announce. But there are only 37 of us on our mailing list, so we figured there was a lurker somewhere."

"That, or it was an off-by-1 error not detectable by our type system," Van Der Linde added. "But we don't, uh, like to dwell on, I mean with good unit testing practices we can, um... sorry, I need to get some water."

As Van Der Linde stumbled off in a coughing fit, his fellow researcher Bonnie MacFarlane outlined their basic dilemma: "Finding a person who gives a shit about Haskell is an inherently NP-complete computer science problem. It's similar in scope and complexity to the problem of trying to find a tenured academic who didn't have the bulk of his or her work done by uncredited graduate students. So even though we suspected Briars existed, we needed a strategy to smoke him out."

She explained the trap they set for Briars: "We crafted a fake satirical post lampooning Haskell as an unusable, overly complex turd -- a writing task that was emotionally difficult but conceptually trivial. Then we laced the post with deeper social subtext decrying the endemic superficiality and laziness of global industry programming culture, to make ourselves feel better. Finally, each of us upvoted the post, which was unexpectedly contentious because nobody could agree on what the reddit voting arrows actually mean."

"And then we waited to see who, if anyone, would give a shit," she said.

MacFarlane concluded, "Our elegant approach didn't work, so we hired a Perl hacker to go dig up the personal details on all 38 accounts that had ever upvoted a Haskell post, and the only one we didn't know was Seth Briars. So we reached out to him, and thankfully so far he hasn't threatened to sue us."

Briars says he is pleased to have been recognized for his apparently unique shit-giving about Haskell. "I've been giving a shit about Haskell for a long as I can remember. I follow all their announcements and developments closely, just in case I ever get the urge to use the language for something someday."

"It's a beautiful, elegant language," Briars observed as he busied himself cleaning a fingernail. "You'd be hard-pressed to find a more expressive and composable core. And they've made astounding advances over the years in performance, interoperability, extensibility, tooling and documentation."

"I'm kind of surprised I'm the only person on earth who gives a shit about it," Briars continued. "I'd have thought there would be more people following the press releases closely and then not using Haskell. But they all just skip the press releases and go straight to the not using it part."

"People see words like monads and category theory," Briars continued, swatting invisible flies around his head for emphasis, "and their Giving a Shit gene shuts down faster than a teabagger with a grade-school arithmetic book. I'm really disappointed that more programmers don't get actively involved in reading endless threads about how to subvert Haskell's type system to accomplish basic shit you can do in other languages. But I guess that's the lazy, ignorant, careless world we live in: the so-called 'real' world."

Haskell researcher Javier Escuella remains hopeful that one day they may be able to double or even triple the number of industry programmers who give a shit about Haskell. "I believe the root cause of the popularity problem is Haskell's lack of reasonable support for mutually recursive generic container types. If we can create a monadic composition-functor wrapper that is perceived as sufficiently sexy by hardened industry veterans, then I think we will see an uptick in giving a shit, possibly as much as a full extra person."

Haskell aficionado Harold MacDougal is not quite as sanguine as his colleague Escuella. "I doubt Haskell will ever be appreciated by the uneducated natives of this industry. As exciting as it is, the discovery of Briars should be considered an anomaly, and not as a sign that more people will ever give a shit. Programmers only seem to pay attention to things when there is humor involved."

"We do have an experimental humor monad," added MacDougal. "But it doesn't seem to be getting much adoption. Haskell fans just don't see the need for it."




MORE NEWS

Previous article: Perl Community Debating Adding Monads The Perl lists are brimming with discussions about the value of adding monads to Perl. "We don't really know what they do, but it doesn't make sense _not_ to have something in Perl," said Perl hacker Landon Ricketts. Read more

Next article: Microsoft to Introduce Mutually Recursive Error Messages Software giant Microsoft announced today the launch of their new REDRUM platform, an elegant system that allows Windows system error messages to shuffle blame around indefinitely by using continuation-passing. Read more

Wednesday, July 28, 2010

Wikileaks To Leak 5000 Open Source Java Projects With All That Private/Final Bullshit Removed

EYJAFJÖLL, ICELAND — Java programmers around the globe are in a panic today over a Wikileaks press release issued at 8:15am GMT. Wikileaks announced that they will re-release the source code for thousands of Open Source Java projects, making all access modifiers 'public' and all classes and members non-'final'.

Agile Java Developer Johnnie Garza of Irvine, CA condemns the move. "They have no right to do this. Open Source does not mean the source is somehow 'open'. That's my code, not theirs. If I make something private, it means that no matter how desperately you need to call it, I should be able to prevent you from doing so, even long after I've gone to the grave."

According to the Wikileaks press release, millions of Java source files have been run through a Perl script that removes all 'final' keywords except those required for hacking around the 15-year-old Java language's "fucking embarrassing lack of closures."

Moreover, the Perl script gives every Java class at least one public constructor, and turns all fields without getters/setters into public fields. "The script yanks out all that @deprecated shit, too," claims the controversial announcement.

Longtime Java programmer Ronnie Lloyd of Austin, TX is offended by the thought of people instantiating his private classes. "It's just common sense," said Lloyd, who is 37. "If I buy you a house and put the title in your name, but I mark some of the doors 'Employees Only', then you're not allowed to open those doors, even though it's your house. Because it's really my house, even though I gave it to you to live in."

Pacing and frowning thoughtfully, Lloyd continued: "Even if I go away forever and you live there for 20 years and you know exactly what's behind the doors — heck, even if it's a matter of life and death — plain old common sense still dictates that you're never, ever allowed to open them for any reason."

"It's for your own protection," Lloyd added.

Wesley Doyle, a Java web developer in Toronto, Canada is merely puzzled by the news. "Why do they think they need to do this? Why can't users of my Open Source Java library simply shake their fists and curse my family name with their dying breaths? That approach has been working well for all the rest of us. Who cares if I have a private helper function they need? What, is their copy/paste function broken?"

Wikileaks founder Julian Assange, who coined the term "Opened Source" to describe the jailbroken open-source Java code, fears he may be arrested by campus security at Oracle or possibly IBM. The Wikileaks founder said: "Today the Eclipse Foundation put out a private briefing calling me a 'non-thread-safe AbstractKeywordRemovalInitiatorFactory'. What the fuck does that even mean? I fear for my safety around these nutjobs."

The removal of '@deprecated' annotations is an especially sore issue for many hardworking Java developers. "I worked hard to deprecate that code that I worked hard to create so I could deprecate some other code that I also worked hard on," said Kelly Bolton, the spokesperson for the League Of Java Programmers For Deprecating The Living Shit Out Of Everything.

"If people could keep using the older, more convenient APIs I made for them, then why the fuck would they use my newer, ridiculously complicated ones? It boggles the imagination," Bolton added.

The Eclipse CDT team was especially hard-hit by the removal of deprecation tags. Morris Baldwin, a part-time developer for the CDT's C++ parsing libraries says: "We have a policy of releasing entire Java packages in which every single class, interface and method is deprecated right out of the box, starting at version 1.0."

"We also take careful steps to ensure that it's impossible to use our pre-deprecated code without running our gigantic fugly framework," the 22-year-old Baldwin added. "Adding public constructors and making stuff non-final would be a serious blow to both non-usability and non-reusability."

The Agile Java community has denounced the Wikileaks move as a form of terrorism. "It was probably instigated by those Aspect-Oriented Programming extremists," speculates Agile Java designer Claudia Hewitt, age 29. "I always knew they wanted to use my code in ways I couldn't predict in advance," she added.

Many Java developers have vowed to fight back against the unwelcome opening of their open source. League of Agile Methodology Experts (LAME) spokesperson Billy Blackburn says that work has begun on a new, even more complicated Java build system that will refuse to link in Opened Source Java code. The new build system will be released as soon as several third-party Java library vendors can refactor their code to make certain classes more reusable. Blackburn declined to describe these refactorings, claiming it was "none of y'all's business."

Guy Faulkner, a 51-year-old Python developer in Seattle, was amused by the Wikileaks announcement. "When Python developers release Open Source code, they are saying: Here, I worked hard on this. I hope you like it. Use it however you think best. Some stuff is documented as being subject to change in the future, but we're all adults here so use your best judgment."

Faulkner shook his head sadly. "Whereas Java developers who release Open Source are code are saying: Here, I worked hard on this. I hope you like it. But use it exactly how I tell you to use it, because fuck you, it's my code. I'll decide who's the goddamn grown-up around here."

"But why didn't they write that Perl script in Python?" Faulkner asked.




MORE NEWS

Previous article: San Francisco Airport Announces That All Restrooms Near You Are Now Deprecated
The SFO port authority announced today that all airport restrooms located anywhere near you are now deprecated due to "inelegance". The newer, more elegantly designed restrooms are located a short 0.8 mile (1.29 km) walk from the International Terminal. Read more

Next article: Eclipse Sits On Man's Couch, Breaks It
New Hampshire programmer Freddie Cardenas, 17, describes the incident: "We invited Eclipse over for dinner and drinks. Eclipse sat down on our new couch and there was this loud crack and it broke in half. Those timbers had snapped like fuckin' matchsticks. Then my mom started crying, and Eclipse started crying, and I ran and hid in my bedroom." Read more

Thursday, July 15, 2010

Blogger Finger

Well! I've sure had a nice relaxing blog-free year. No worries, no haters, no Nooglers wandering by my office and staring at me through the window as if they expect me to crap in my hand and hurl it at them. Not that I wasn't tempted.

Nope, it's just been peace and quiet and reading and coding and practicing my guitar and stuff. It's been awesome.

And now that everyone's completely forgotten who I am, or whatever exactly I'd said that made them feel all butthurt inside -- as measured by my incoming email rate, which is finally near-zero -- I figure it's probably safe to get back in the water.

I'm not really sure what my plans are going forward, other than staying employed at Google until the day comes when I need one of their comfy, brightly-colored caskets. Other than that, my plans are flexible. I'm feeling downright leisurely at the moment.

I realize now that I was trying way too hard to change the world via blogging, and it made me care maybe just a little too much. This was bad for my mental and emotional health. Caring is fine. Lots of things are worth caring about. Very few of them merit sacrificing your health.

Fortunately during my ad-hoc sabbatical I was able to gain some new perspectives by distancing myself a bit from the constant storm going on in the tech world.

One nice perspective I gained is this: There is nothing on this earth that can make everyone happy. Reddit is a huge, living, breathing demonstration of this, since essentially no reddit post ever goes above maybe 80% approval, and a "good" post seems to hover around 65%-70% liked.

That made me feel better about the haters. Haters abound. They're just a fact of life, part of the human condition. There's no need to waste energy hating haters.

Another perspective I gained was that decorating your mansion with works of art you know nothing about is amazingly rewarding, as long as you can mix it up by leaping across rooftops and assassinating bad guys and hanging with your buddy Leonardo. I swear, if they ever make a movie about my life, the handsome and dashing actor who plays me, when asked on his deathbed which of life's pleasures had given him the greatest happiness, will say something cheesy that makes the audience ooh and aww with appreciation, but it'll be total Hollywood bullshit, because what I really will have said was "gaming".

Yet another perspective I gained is that I now actually agree with everyone who complained that my blog posts were too long. Reddit has ruined my attention span for online material. There seems to be no such thing as too frequent, but there's definitely such thing as too long. So I'll be better about that.

I used to have this pet theory that the length of my blogs is a big part of why they've been noticed at all. I mean, look at this dude. If he'd written only one or two crazy things, he'd be just another nutjob, but by dint of almost superhuman persistence he's managed to get the entire world to laugh at him.

I was sort of aiming for getting people to laugh with me, but I used the same basic recipe as Time Cube Dude. And the formula seemed to be working, modulo the haters.

However, Dave Barry -- my Personal Childhood Hero (66% liked!) -- always wrote his columns in chunks of 800 words, even if it necessitated inserting filler words such as "booger" and "legislative session" into his articles about wine tasting or car engines or bat guano, or whatever it was that caught his fancy that week.

Overall it seems likely that post-length is less important than factors such as quality, consistency, passion, relevance, and legislative booger session.

So I was originally thinking of writing up to a maximum of 800 words today, and I'm at about 500 now, but I've been really successful at my Not Caring Too Much Initiative, so... later! Nice chatting with ya. Cheerio!

HAHAHA DISREGARD THAT...

Just to ensure this post isn't entirely devoid of content I'll share something important that I learned last year.

Here's what I learned: after Carpal Tunnel Syndrome, the second most common hand ailment is known as Trigger Finger.

Its more formal name is digital tenovaginitis stenosans, which is ancient Latin for "electronic hand inflamed vagina without writing", which I believe is why most people prefer to call it Trigger Finger.

I have it, you know. Trigger Finger, I mean, not an inflamed vagina.

Although Trigger Finger is "idiopathic", a fancy word meaning that doctors don't have a fucking clue what causes it, it is widely known in musical circles as a musician's injury. It happens to musicians who overpractice, usually in preparation for a recital, performance or recording session.

I found all this out after being diagnosed with it.

It is not idiopathic in my case. I have the benefit of hindsight, and I know exactly what caused it. It turns out that if you play a certain right-hand arpeggio on a classical guitar enough times -- where "certain arpeggio" here refers to Hector Villa-Lobos' Etude No. 1, and "enough times" is approximately 650,000 times in a 5-month period[wtf?] -- you acquire Trigger Finger. That's not precisely what I was playing, but it'll serve.

Trigger Finger is a painful, debilitating, demoralizing injury. I highly recommend not letting it happen to you. Your body will begin telling you when it's time to ease up on the practice sessions. Listen to your body when it says that.

As for specifics, there's not much to tell. My hand started hurting. Then it hurt real bad for a month. Ibuprofen and cold/hot packs didn't help. It got steadily worse. Even quitting guitar altogether for another month didn't help. I could no longer use my right hand, and it was beginning to feel permanent. I wasn't even sure why it was happening. I was terrified and I began to despair.

My Google doctor was great. She referred me to a specialist -- a hand surgeon. I told her I didn't really want to see a hand... S-word. I could barely say it aloud. She reassured me that seeing a specialist didn't necessarily mean surgery. They might have other tricks up their sleeves. So I decided to brave it.

My first trip to the specialist only took about 15 minutes. She listened to my disoriented bleating, asked me a few questions, gently felt my hand here and there, and informed me that I had Trigger Finger. She said she was going to give me a cortisone shot. She was pulling out a giant needle as she told me this. It just sort of materialized from under the table, the way a knife appears in a bar fight. It was a very large needle. She explained calmly that the cortisone is a steroid that stays wherever you inject it. They use it on athletes to reduce inflammation from certain injuries.

Then she stuck the giant needle all the way into the base of my right middle finger and squeezed. Compared to the pain of my trigger finger, the injection felt like a mosquito bite.

She told me that I'd start feeling better in a week, and in a month I'd be pretty much all cleared up. If not, I should come back and see her for more treatment. And no, I wasn't going to lose my hand.

It was kind of weird, but on my way back to my car I think someone had been cutting onions in the elevator. A lot of onions. In the last fifteen minutes my whole life had been handed back to me with an almost casual lack of concern. I was overwhelmed with onions.

A month later I was back to see her. The cortisone had helped a lot. I gave it a 66% approval rating. She said she could give me another shot, or do surgery. This time I'd done my homework. I elected for surgery. That was back in September. It was an interesting story in its own right, but the upshot is she did great. And then after that there was a lot of physical therapy.

I typed the word "September" in the previous paragraph three times before I got it right. The word doesn't even have letters that need my right middle finger. My right hand, which had shaped itself into an unusable, agonized claw between March and July, is still afraid to flex and extend my middle finger. It's up to, oh, a 95% approval rating now, which I believe is phenomenally successful. Who could ask more of a hand surgery? It could have been much worse. Much much.

But that last 5% is rough. The haters in my hand are a constant reminder of the old pain. When I type, or play piano or guitar, my right-hand fingers twist and curl in elaborate, incomprehensible dances to avoid a pain that is for the most part no longer there.

Yep, I think it'll be easier to keep my blog posts shorter going forward.

Ironically, some good came out of the experience. I've switched to a sustainable new guitar style and a new repertoire, one I enjoy greatly. And I now pay much more attention to economy of motion in my typing. And I spend more time finding pain-saving Emacs shortcuts. It makes me wonder what I might have achieved had I focused on it sooner.

Surgery notwithstanding, on the whole I still think it was a great year. The year was in fact more complicated and more painful than I've let on here, but that's life for ya.

And now that I'm rested up, I believe I'm ready to start tech blogging again... in moderation, anyway. The rest and relaxation and research did wonders for me. I used to have lot of open, long-standing concerns about the future of programming and productivity, but my sabbatical last year finally brought me some clojure.




[1] Talk about caring too much. I may explain this 650k figure in a future blog post if I can ever get over my embarrassment.

Monday, May 18, 2009

A programmer's view of the Universe, part 3: The Death of Richard Dawkins

We're getting close to the end of my blog. After today's entry, I only have three left to write. After that, I'll only blog anonymously or (more likely) not at all.

This is part three of five in my "Programmer's View of the Universe" series. I struggled for a while with how best to introduce the ideas in this installment, and ultimately opted for a short story.

This is a science fiction short story. It's different from many other sci-fi stories in that it is set in the "near future", but it has realistic schedule estimates. So unlike 1984, 2001, The Singularity is Near and all the other sci-fi stories that grossly underestimated their project durations, this one is set 1000 years in the future. I.e., right around the corner.

The story is disrespectful to pretty much everyone in the world. It will create a fantastic shit storm. This is probably a good time to point out that I don't speak for my employer. [Edit: Yay for fiction! Apparently marking something as fiction placates people. Nice to know.]

The story is 18 pages (PDF from Google Docs print preview). That's not unusual for my blog, but I went ahead and published it as a standalone document.

I'd encourage you to enjoy it, but I'm old and embittered enough to know better. You probably shouldn't even read it. Just wait for someone to summarize it for you.

Installments 4 and 5 will not be short stories; they will be regular old blog rants. In them I will further develop these ideas, and I will also attempt to clear up any gross misconceptions about the story, of which there are bound to be many.

My final blog-rant entry is the only one I care about anymore. I've been working on it so hard that my fingers have started to fail. It's been tons of fun, aside from the chronic pain. It's about a neat programming language, and Emacs, and lots of other stuff. I can't wait!

Oh yeah. Here's the link to the story. I've never done a read-only Google Docs link before, so it's probably broken. Or editable. I don't know. We'll see.

This week is going to suck. People are going to be mad. Maybe I should take a vacation and come back when the whining is finished. Can someone email me and let me know when it's all blown over?

Thursday, April 09, 2009

Have you ever legalized marijuana?

Over the holidays I read a neat book called Predictably Irrational: The Hidden Forces That Shape Our Decisions, by Dan Ariely. The book is a fascinating glimpse into several bizarre and unfortunate bugs in our mental software. These bugs cause us to behave in weird but highly predictable ways in a bunch of everyday situations.

For instance, one chapter explains why bringing an uglier version of yourself to a party is guaranteed to get you more attention than other people who are arguably better-looking than you are. I personally do this all the time, except that I'm usually the ugly one. The same principle explains a ploy used by real-estate agents to get you to buy ugly houses.

Another chapter explains the bug that causes you to be a packrat, and shows why you desperately hold on to things you own, even if you know deep down that they would rate lower than pocket lint on eBay.

In any case, well, good book. I'm going to harsh on it a teeny bit here, but it's only one tiny part towards the end, one that actually has little to do with the rest of the research presented in the book. I still highly recommend it. It's only about a 4- or 5-hour read: beyond the reach of most social-network commenters, perhaps, but you can probably handle it just fine.

So: about that harshing. Dan Ariely, who seems like a pretty fascinating guy in his own right, independent of his nifty book, says something that's kinda naïve towards the end. It doesn't seem naïve at all when you first read it. But naïve it is.

Towards the end of the book — and I apologize here, since my copy is on loan to a friend at the moment, and you can't search inside the book on Amazon.com no-thanks to the book's publisher, so I can't double check the exact details — but towards the end, Dan works himself into a minor frenzy over what seems like a neat idea about credit cards.

Credit Card Buckets

Dan's idea is simple and appealing: let's partition credit limits into "buckets". People are always maxing out their credit cards, and it leads to all sorts of financial misery, since the rates are always by definition just epsilon short of legal usury, so most people can never, ever pay down the debt.

Dan's idea is more or less as follows: you divide up your credit card available balance into "buckets", where each bucket represents a type of expense. You might, for instance, have a bucket for rent and utilities, a bucket for alimony, a bucket for chocolate and desserts, a bucket for sports and leisure activities, a bucket for dining out, a bucket for home improvement, a bucket for groceries, and a bucket for discretionary spending, or "misc".

Each bucket would have its own credit limit, and the sum of all the individual limits would be your credit limit. Let's assume you pay off your credit card entirely every month — not typical, but it simplifies the explanation. Each month, you'd have a certain amount of money to spend on each bucket, and you would not be allowed to spend more than the limit for that purchase type.

OK, so that's the way I understood the proposal. There were several pages devoted to it, as I recall, so I may have missed a few nuances here and there, but I'm hoping I've captured the essence of it.

As an aside, I read a short diatribe many years ago by a working mom whose kids were always asking her why they couldn't spend more money on entertainment purchases like video games. She was having trouble getting through to them, so one month she took her paycheck, went to a bank, and got it issued to her in 1-dollar bills. She took the bills home and piled them up on the table in front of her kids, who were amazed at the giant pile of money she had made. She then went through her budget with them, stacking the bills into piles by expense type: this many dollars for rent, this many for utilities, this many for groceries, this many for soccer uniforms, etc. At the end there were only a couple of dollars left, and the kids soberly realized that they needed to wait about 20 years and then start downloading games illegally online.

Anyway, Dan's idea was kind of similar. In order to train consumers not to overspend in a given category, leading to overall overspending, they would be able to opt-in to a program that partitioned their credit, and presumably it would lead to much wiser, more deliberate spending.

It seemed logical enough to me! It sounds similar to calorie-counting: I've found that explicitly keeping track of my calorie consumption each day does wonders for lowering my overall calorie intake. Along the same lines, I am 100% sure that if I had an explicit budget, rather than just a vague gut feel for how much I'm spending, then I would spend less money each month. We don't really have a proverb for this concept, but we do for the opposite: "out of sight, out of mind". If your budget is in plain sight, well then...

Plus the idea of having types in my credit-card accounting was all the more alluring since I'm a programmer, and I "get" the idea of types. Types are great. Dan is effectively suggesting a strongly-typed approach to credit-card spending, so the programmer in me was all for it.

Evil Banks (as if there's any other kind)

Unfortunately, this story has a sad, bitter ending. Normally I would want to add: "like all overly-strong-typing scenarios", but that would just be mean. So I'm not saying it!

Dan goes on to explain that banks are far too evil, or at any rate far too self-serving to implement his incredibly cool idea. He actually took the idea to at least one bank, meeting with their board of directors and presenting the idea. How cool is that?

Dan says the bank executives seemed to like his idea, and indicated that it might be a great way to get new customers. Credit cards are all pretty much the same (i.e., loan sharks), so they need to find ways to differentiate themselves. A nifty credit-bucketing program seemed like something marketing could run with. They all said they'd look into it and see about maybe implementing it.

And then... nothing. They never implemented the idea! Not even a little prototype of it. Nothing.

Dan theorized that profit margins, as always, are the culprit here. Even if banks could potentially sign up more customers on the promise of better spending control, there's a fundamental problem here, which is that credit cards make money for the banks based on spending. If consumers aren't spending as much, the banks won't make as much profit!

Banks make money off credit cards in at least three ways: they charge the merchant a fee at point of sale, they charge you interest on the loan, and they charge you fees such as the overdraft fee when you inadvertently overspend your limit. All those ways require you to make purchases, and the last way actually requires you to overspend your limit — exactly what Dan's idea is trying to prevent!

I suppose a truly evil bank might look at buckets as an opportunity to screw you on fees for each individual bucket. But Dan seems to think that on the whole, the fear of decreased margins — induced by the suddenly more rational consumer spending — is what is preventing banks from implementing his idea.

At the time I was reading the book, I thought, well gosh, I hate banks. In fact, I don't even use a bank — I now use an investment brokerage that has banking services on the side. You don't have to be rich to do this, and it saves you from ever having to walk into a bank again. And if you choose this route, then whenever you walk into a bank you will immediately be struck by what amazing ghettos they are: little brick buildings with little vaults holding your little dollars, little lines to talk to little tellers who provide you with little help... they're awful. They stink. I detest banks; I've found the whole notion loathsome for at least ten years before hating them became globally fashionable a few months ago.

So yeah. Dan had me. The banks are evil. That's why they aren't implementing his idea. Case closed.

The little winged nagging programmer angel on my shoulder

So just like Memento Guy in L.A. Confidential, my mind wouldn't let the case close forever. (Why can I remember Rollo Tomasi but not the actor's name? Oh wait, Guy Pearce. Him.)

For the next couple of weeks, Dan's situation replayed in my head like a bad song. I myself have given presentations to boards of executives in the past, usually presentations that had come to naught, and I felt a certain empathy with him.

As it happens, I also served time in Amazon.com's Customer Service Tools group for four years, leading the group for the latter half of my stay, and I know a thing or two about credit-card processing. Not a whole lot, but definitely a thing or two.

And I'm a programmer. Just like you. (You might not know it yet, but you are. Trust me.)

The programmer part of me started wondering: how would I implement Dan's idea? What would it take to add "bucketization" to credit cards?

And the programmer part of me started to get a sinking feeling in the pit of his... uh, its... stomach. It got the chills. And a fever. At the same time. Why? Because it, by which I mean "a part of me that wishes I could forget it", has been on software projects like that before.

The little nagging voice in my head started enumerating all the things you would need to do, like counting so many sheep. First I imagined I worked at the bank, some poor schmuck of a programmer wearing a suit, working bankers hours and golfing every day at 3pm. So, you know, pros and cons. Then I imagined my boss coming in and saying: "Steve, we gotta implement Buckets. The board just approved it. Make it happen. Yesterday."

Aw, crap. OK, what to do. First, we need a spec. So, like, I ask my boss a few preliminary questions:

  • Can customers control the buckets, or are they fixed?
  • If fixed, how many are there? What are their names?
  • Let's assume for the remaining questions that they are NOT fixed, since a predefined set of buckets would be "insanely stupid" and rejected by customers. So, how many buckets can a customer make? Min and max?
  • Can customers give the buckets names? If not, do they have to use numbers?
  • What characters can they use in the name? What's the maximum length? If we need to truncate the name in a printed statement, how do we truncate it?
  • Can a customer change their buckets mid-month?
  • Can a customer change their buckets between months? What if their balance is nonzero? Can they transfer balance between buckets?
  • Can a customer change the name of a bucket? Do names have to be unique?
  • Exactly how does a customer name a bucket? Online? Over the phone? By snail mail forms? Talking to bank teller? All of the above?
  • Same question for all other configuration settings. How? Where?
  • Do credit-card customer service reps have to know about the buckets? How much do they have to know? (hint: everything) Is there training involved? (hint: yes)
  • Do the customer-service tools have to be redesigned to take into account this bucketization?
  • What about the bank's customer self-service website?
  • What about the phone interactive voice-response tree?
  • What about the software that sends email updates to the customer?
  • What about the software that generates printed billing statements? How exactly does it represent the buckets, the individual spending limits and balances, the carry-overs from month to month, the transfers, the charge-backs, the individual per-bucket fees?
  • What about the help text on the website? What about the terms and conditions? What about the little marketing pamphlets? Should they try to explain all this shit, or just do some hand-waving?
  • Can a customer insert a new bucket into the list? How are the credit limits of the remaining buckets re-allocated? What if adding a new bucket puts one or more of the older buckets over the limit? Do we charge fees? Do we tell the customer they're about to be charged a fee right before they create the bucket? Is it, like, OK/Cancel? Do we send them a follow-up email telling them they just fucked themselves over? What exact wording do we use?
  • Can a customer delete a bucket? What if there's money in it? What if it's overdrawn? How do we represent the overdraft fee in the database? How do we show the deletion event in their bill?
  • Can a customer merge or consolidate buckets?
  • What if a customer has an emergency situation, plenty of limit in other buckets, and they really really need to charge to a couple of buckets, but they want to avoid an overdraft fee? What do they do? Are the buckets mandatory or discretionary?
  • How the hell do we even tell if they're buying "chocolate", anyway? The vendor doesn't tell us the purchase type. How do we know how to charge the right bucket? What if it's ambiguous? What if the buckets overlap? Does the customer need a point-of-sale interface for deciding which bucket to put the charge in? Can they do "separate checks" and split the charge into several buckets?
  • Where are you going? Answer me!
  • WHAT THE EVER-LOVING *FUCK* ARE YOU PEOPLE SMOKING? HUH? HAVE YOU EVEN THOUGHT ABOUT THIS PROJECT FOR MORE THAN A MILLISECOND? THE SPEC FOR THIS PROJECT WILL BE 5,000 PAGES! IT WILL TAKE THOUSANDS OF MAN-YEARS TO IMPLEMENT, AND *NOBODY* WILL UNDERSTAND HOW IT WORKS OR HOW TO USE IT, EVEN IF WE SOMEHOW MANAGE TO LAUNCH IT! IT'S FRIGGING IMPOSSIBLE! IT'S INSANE! __YOU__ ARE INSANE! I QUIT! NO, WAIT, YOU'RE FIRED! ALL OF YOU! AAAAAAAAAUUUGH!

The little nagging white-robed behaloed programmer whispering in my ear was getting pretty goddamned irritating at this point. And it asked a LOT more questions than the ones in the list above, which is merely a representative sample. My stress level began approaching what I might call "Amazon levels", and I don't even work there anymore. Thank God.

But for all its downsides (e.g. as voiced by my brother Mike, who was in the Navy on an aircraft carrier in the Persian Gulf during the 1990s Gulf War, and later worked at Amazon, and declared after four years that Amazon was _way_ more stressful), Amazon did teach me a valuable lesson, namely that YOUR IDEA IS INSANE. It doesn't even matter what it is. It's frigging insane. You are a nut case. Because anything you try to do at Amazon these days involves touching a thousand systems, all of which are processing gazillions of transactions a second, and you want to completely redo the database schema, and you don't even know the answers to these fucking questions, DO YOU?

I suppose I should think of it as a valuable experience. If nothing else, I understand Complexity in a way most people will, mercifully, never have to.

Anyway, I hope I've imparted the basic flavor of my thinking after having been totally bought into Dan's idea. Here's how I (now) envision the days just after Dan's meeting with the bank executives:

Day 1: (executives): Managers, we'd like you to look into this incredible new idea from Dan Ariely. We think it could revolutionize consumer credit-card spending in a way that makes everyone love us and sign up for our services, dramatically increasing both our profit margin and our overall customer satisfaction. And it's an incredibly simple idea!

Day 2: (managers): Programmers, project managers and marketers, we'd like you to flesh out this idea from On High, and give us some time estimates. We all know we only have a budget of about 2 months for ideas from the Board this year, so let's try to make it fit. How long will it take?

Day 3: (grunts): A billion years. We quit. Fuck you.

Day 4: (managers): Executives, we think it will take about 3 years. It's surprisingly hard. We wouldn't be able to do anything else at our current staffing levels. Should we move forward?

Day 5: (executives): Two years? Good lord! For a project that _might_ increase our profit margins and customer satisfaction, but could also cause customers to be so confused that we have to triple our Customer Service headcount? We don't think that sounds... well, reasonable. Although it would be a very interesting experiment, it's simply too expensive for us to attempt. Should we tell Dan? Well... it might be patentable, and we might be able to get around to it someday if there's a sudden glut of programmer expertise, so... maybe we'd better just sit on it for now. Who's up for golf?

In reality I'm sure it went down a little different from that. For instance, they may have had the Day 5 meeting late, and then gone to a strip club instead of a driving range.

But I'm pretty sure that aside from the mundane details, that's exactly how it went down. Because that kind of shit happened at Amazon pretty much every week I was there, for almost seven years. (And astonishingly, we actually managed to launch at least half those crazy ideas, by burning through people like little tea lights. But that's another story. Plus, no bank can execute like Amazon can. Banks just don't have the culture for it. Bless 'em.)

Legalization

So. I'm two glasses of wine into this whine. I'm going to go get a third glass, mark the calories off in my spreadsheet, and then wrap up. If you don't know what's coming by now, then you're pretty stupid, but on the plus side you're an amazingly fast reader, so I'll go through the motions anyway.

<gets third glass>

It doesn't actually matter what your stance is on the legalization of marijuana, for purposes of this little essay. You could be radically opposed to it on religious, moral, or "parental" grounds. Or you could be so radically in favor that you've been laughing hysterically and rubbing your hands together incessantly ever since you started reading this post. If you know what I mean. Or you could be somewhere in between, moderate and yet open-minded.

It doesn't matter.

This blog is about complexity, the bugbear that haunts software developers, program managers, project managers, and all other individuals associated with trying to launch new software projects and services.

Dan Ariely would have made a great VP (that is, Vice President). If you think that legalizing marijuana is a black-and-white, let's just decide it and get the frigging thing legalized once-and-for-all issue, then you too have some VP blood in you.

VPs have what my brother Mike refers to as "Shit's Easy Syndrome".

You know. As in, shit's easy. If it's easy to imagine, then it's easy to implement. Programming is just turning imagination into reality. You can churn through shit as fast as the conscious mind can envision it. Any programmer who can't keep up is an underperformer who needs to be "topgraded" to make room for incredible new college hires who can make it happen, no matter what "it" happens to be, even if they have to work 27 hours a day, which of course they can because by virtue of being new college hires, they have no social lives and no spouses or significant others, and they probably smoke a lot of crack from being in the dorms so they can stay awake for weeks at a time.

That's the kind of programmer we need at our venerable institution. And we are completely anti-slavery, for the record.

Shit's Easy syndrome is, well, pretty easy to acquire. Heck, you don't even have to be a VP. Directors sometimes get it if they stay away from the code for too long.

As for the rest of us, well, we ought to know better. YOU, as a frequenter of reddit and a programmer (wannabe or actual, it doesn't matter), you ought to know better.

Let's ask our little naggy angel: what would it take to legalize marijuana?

I don't know the answer, and I'm certainly no expert, but I've been on enough projects like this to know how to start asking the right questions.

What exactly do you mean... "legalization"?

So... one minor, teeny-weeny almost insigificant caveat before I continue: I have smoked marijuana (and inhaled it, deeply) on more occasions than I can count. And yet I'm almost undoubtedly smarter than your kid that you're so goddamned worried about. I skipped three grades (3rd, 7th and 8th), entered high school at age 11 and graduated at age 14, took A.P. courses, had stellar SAT scores, was a U.S. Navy nuclear reactor operator, went to the University of Washington and earned a Computer Science degree, worked at major corporations like Amazon.com and Google for many years as a senior staff engineer and/or senior development manager, and now I'm an internationally famous blogger.

I don't usually dwell on that, but today it's relevant. It's relevant because I've smoked a LOT of pot, and I dare you to prove that it has impaired me in any scientifically detectable way. We would debate, and you would lose; nevertheless I double-dog dare you.

So, well, sure... from that perspective, yeah, I'm in favor of legalization. The laws are stupid. Legalize it, already. For cryin' out loud. Jeez.

However, from a programmer's perspective (and keep in mind that I was also an Engineering Project Lead at Geoworks for 3 years, a Technical Program Manager at Amazon for a year, a Senior Development Manager at Amazon for about 5 years, and now I'm a plain-vanilla programmer with 3.5 years at Google, so I've done it all), the idea gives me the chills. And a fever.

Because laws are pretty much like programs. You have to specify their behavior at almost (not quite, but almost) the same level of detail, using a language that's almost as crappy as our programming languages today — English. Or whatever your native language is: it sucks too. If you don't believe me, ask a lawyer. Or try to write a technical spec in your native tongue that the programmers don't ultimately poke full of holes.

Aw, don't try. Don't even bother. Just trust me on this one. Today's natural languages are completely unsuitable for specificity, and "legalese", as much as we all love to ridicule it, is our collective best effort to permit being logical, specific, and unambiguous.

I have more respect for The Average Reddit Commenter than I have for, well, the average commenter in any other forum, period, assuming that "period" is stevey-legalese for "except for LTU, news.ycombinator and their ilk, mumble mumble."

But the Average Reddit Commenter has gone too far. Everyone these days, when debating the merits and demerits of marijuana legalization, seems to have completely overlooked the fact that it's HARD. It's a project of vast, nearly unimaginable complexity.

Think about it. What kinds of laws do we have about alcohol and tobacco? Is it just one law each, saying "it's legal" or "it's illegal?" Of course not, and you're insulted that I asked such an obviously rhetorical question, yet intrigued by my line of reasoning. Admit it! How is marijuana similar to alcohol? How is it different? How is it similar and different to tobacco?

Let's let the little angel ask a few preliminary questions, just to see where it takes us, shall we?

  • Is it legal to drink alcohol in a TV commercial? No? OK, what about marijuana, then? Can you smoke it in a commercial? Can you SHOW it? Can you talk about it? Can you show marijuana smoke at a party, without anyone actually being seen smoking it? Can you recommend its use to children under the age of 9? What exactly are the laws going to be around advertising and marijuana?
  • Do we let everyone out of prison who was incarcerated for possession and/or sale of marijuana? If not, then what do we tell them when they start rioting? If so, what do we do with them? Do we subsidize halfway houses? Do we give them their pot back? How much pot, exactly, do they need to have possessed in order to effect their judicial reversal and subsequent amnesty? A bud? An ounce? A cargo ship full?
  • Is it legal to sell, or just possess? If the latter, then how do we integrate the illegality of selling it into the advertising campaigns that tell us it's legal to own it?
  • If it's legal to sell it, WHO can sell it? Who can they sell it to? Where can they sell it? Where can they purchase it? Are we simply going to relax all the border laws, all the policies, all the local, state and federal laws and statutes that govern how we prioritize policing it? All at once? Is there a grandfather clause? On what _exact_ date, GMT, does it become legal, and what happens to pending litigation at that time?
  • Are we going to license it? Like state alcohol liquor licenses, of which there are a fixed number? What department does the licensing? How do you regulate it? Who inspects the premises looking for license violations, and how often? What, exactly, are they looking for?
  • Is it OK to smoke marijuana at home? At work? In a restaurant? In a designated Pot Bar? On the street? Can you pull out a seventeen-foot-long water bong and take a big hit in the middle of a shopping mall, and ask everyone near you to take a hit with you, since it's totally awesome skunkweed that you, like, can't get in the local vending machine? If it's not OK, then why not?
  • Can you drive when you're stoned? What's the legal blood-THC level? Is it state-regulated or federal-regulated? For that matter, what is the jurisdiction for ALL marijuana-related laws? Can states override federal rulings? Provinces? Counties? Cities? Homeowners associations?
  • What exactly is the Coast Guard supposed to do now? Can illegal drug smugglers just land and start selling on the docks? Are consumers supposed to buy their marijuana on the street? What happens to the existing supply-chain operations? How are they taxed? Who oversees it?
  • Can you smoke marijuana on airplanes? Can airplanes offer it to their customers in-flight? Is it regulated in-flight more like tobacco (don't get the smoke in other peoples' faces) or alcohol (imbibe as you will, as long as you don't "appear intoxicated"?) What about marijuana brownies? Are you allowed to eat it in areas where you're not allowed to smoke it?
  • Can an airplane captain smoke pot? A ship captain? A train conductor? The driver of a car? An attendee at a Broadway musical? A politician in a legislative session? What is the comprehensive list of occupations, positions and scenarios in which smoking pot is legal? What about eating pot? What about holding it? What about holding a pot plant? What about the seeds?
  • Speaking of the seeds, are there different laws governing distribution, sale and possession of seeds vs. plants vs. buds vs. joints? If so, why? If not, why not?
  • What laws govern the transportation of marijuana in any form into or out of countries where it is still illegal? What policies are states able to enact? Is it OK under any circumstances for a person to go to jail over the possession or use of marijuana? If so, what are those circumstances?
  • Are there any laws governing the use of marijuana by atheletes? U.S. military personnel? Government employees? Government contractors? U.S. ambassadors, in title or in spirit? What are our extradition laws? What do we do about citizens who are subject to the death penalty in countries like Singapore for the possession of sufficient quantities of what we now consider to be legal substances?
  • What about derivatives? Are the laws the same for hashish? How do we tell the difference? What if someone engineers a super-powerful plant? How do the new laws extend to a potential spectrum of new drugs similar to THC?
  • For driving and operating machinery, do we have legal definitions that are equivalent of blood-alcohol percentage, and if so, what are these definitions? How do we establish them? How do we figure out what is actually dangerous? How do we test for these levels? When they are established, do we we put up signs on all roadways? Do we update the Driver's Education materials? How do we communicate this change to the public?
  • How does legalization impact our public health education programs? Do they have to immediately retract all campaigning, advertising and distributed literature that mentions marijuana? How does legalization interact with the "Say no to drugs" programs? Do we need extra education to differentiate between a drug that is now legal (but wasn't before) and drugs that are still illegal? What's our story here? What about other drugs that are even less addictive and/or less intrusive than marijuana?
  • Monsanto is eventually going to sue the living shit out of someone for using genetically-engineered pot seeds. Can they sue individuals with a single plant in their windowsill? (answer: yes) Will Oprah step in and help that beleaguered individual? (answer: we'll see!)
I'm not an expert, and in fact I've gone to extra-special effort to avoid all possibility of being accused of having researched this subject. I know NOTHING about it.

But the questions, they're bugging me. How the hell do we implement all this? Sure, it's "legal" in Amsterdam, or so they say. I've never been there, and I suspect their laws are way too vague for the overly-litigious United States of America.

I hope it's obvious that we can't say "it's just like tobacco" (it's not) or "it's just like alcohol" (it's not), or (God help us) "it's just like doing alcohol and tobacco together, so take the intersection of their laws".

Marijuana, whether you like the idea of legalizing it or not, is a project. It requires an implementation, and the implementation is a lot like that of a software project. The US federal government is analogous to "The Company", and the states are analogous to "The Teams" that comprise the company. Some of them have free time; some do not. Some of them agree with the overall goal; some do not. And every single miniscule little detail has to be worked out, and written up, and voted on, and approved, and then specified, and implemented, and enforced.

And there will be bugs. And loopholes. And unexpected interactions. The best-laid plans will go awry.

People will die. It's a certainty. Some people are going to die as a direct consequence of legalization of marijuana. I don't like it, and you don't like it, and most of us would probably argue that it shouldn't hold up legislation or legalization indefinitely... but we have to take it into account. Because if it's YOU who dies, smashed to death on the iceberg by your skunkweed-stoned ship captain, you're going to be REALLY pissed off. I guarantee it.

Shit is NOT easy. Remember that. Shit is NOT easy. If you think it's easy, then you are being naïve. You are being a future VP. Don't be that way.

Try to think about how you would implement it. Yourself. If your boss came to you and said: "Make it happen. Yesterday." Have you ever legalized marijuana?

I haven't. But I wouldn't want to be the people who decide how to legalize it. Their asses are majorly on the line. Even more than ours were at Amazon.

My advice: give it some time. Hell, give _Obama_ some time. Whether you still like him or not, he's not a frigging King, he's a President. He can't make stuff happen overnight by waving his magical sceptre. He just can't. I don't know what you were thinking, but "overnight" is a pipe dream, and "a few months" is definitely "overnight", in presidential terms.

Moral of the story: Shit is not easy. Stuff takes time. Months. Years. Decades. It's OK! You'll still be here. Count your calories. Exercise. And you'll still be here to see it all happen.

Patience. It's a wonderful thing. I can't wait!