The deepest cruelty of OCD is that the D stands for disorder.


A painless git workflow

I was thrown into the Rails and git worlds a couple of years ago when joining Crunched, and while Ruby was a fairly painless experience, git was heinous for about a year. Then it clicked, mostly thanks to Luke and TJ and a good workflow. So I figured I'd share what we settled on. Maybe it'll same someone some grief.

Static PNGs below:


Engine Tard

Today I got an email from Engine Yard asking me to be an Engine Yard ambassador / promoter / evangelist. Given our painful experiences with EY, I said no thanks. To their credit, they asked why. So I sent them this list, and will document it here for LOLs and posterity.

What we didn't like about EY:
  • your pricing is unjustifiably high considering the shortcomings below.
  • your approach to database replication is facepalm-inducing. It's explicitly designed *not* to be used to fail over. I lost count of how many times I said WTF.
  • getting SSL to work properly with all the right headers is unnecessarily painful (stunnel).
  • there's no API to scale up and down by script--everything has to be done manually. WTF again, big time.
  • you've fixed this (I hope), but for a long time, removing instances from an environment did not remove those from haproxy, which meant that unless you ran the recipes manually, the app master would still be sending traffic to instances that were either turned off or assigned to another customer of yours, resulting in 404s and other hilarious situations. I sang a Viking song of battle and sorrow when I realized that's what was happening and you guys confirmed it (after I was done laughing).
  • when adding or removing instances from your web UI, the number of failures is greater than the number of successful changes performed. More than half the time we would have to re-run the add or remove process for the instances to be added successfully. This is for a completely vanilla Rails app with a tiny number of servers, i.e. the default / base case you guys are catering to.
  • when adding more than a couple of instances, the app master's NIC gets flooded by requests used to provision the new instances, which brings the entire stack down. We LOLed heartily when we figured out that was going on. The only safe way to add instances is one or two at a time. Given how long it takes to do that (see above re. failures), it's a giant pain in the rear. 
  • the default stack of app master + slaves is stupid. An active app master serving traffic and SSL termination shouldn't also be a load balancer. That's just dumb.
To be perfectly blunt, I really like the idea of your service, and I'm sure it's great for people to get started with hosting, but every time we tried to do something with our stack, it felt like EngineYard was designed and operated by amateurs who don't have any experience running, let alone hosting, or offering hosting for, a real web business. I wouldn't use EY even if there was 0 markup over AWS.
PS: it got so bad we started calling you guys EngineTard and I drew the attached. Note my Photoshop skills are not particularly advanced.

Update: I have to say EY has class and a sense of humor. After receiving this diatribe, they sent me a $25 Amazon gift card.

Update: One thing I forgot to mention is the frequent billing errors. We cancelled our account on April 2; in May I got a bill for usage we didn't incur, and on July 1 we got a bill for snapshot storage and unused IP addresses for an account that's been closed for 3 months. Sigh.



If you use the words "ridiculous" or "ridiculously" as an intensive ("it's ridiculously easy") then we have nothing to say to each other.



Remember how 2012 was all about growth hacking? Well, there's something even cooler this year.

It's the internet of things.

Things! Internets!

Look--we all love the internets, and there's things everywhere. Like, literally, all over the place, no matter where you look, there's just a bunch of things. And that means what? A business opportunity, that's what. We're going to build the internet of things.

Freaking genius idea, am I right or am I right?

Silicon Valley is filled with some of the most brilliant, creative people on the planet. It's also a vortex of groupthink, bandwagon-jumping and marketing hype. It's a bit of a shame, really.


Managing resources

Today, I reached a new milestone in my life-long attempts to improve my resource management and planning skills, and I wanted to share.

I wanted a bagel for lunch, and found that not only did I have exactly one bagel, I also had exactly enough cream cheese to cover that bagel. Exactly. No tiny amount left over to dry out in the container, and not so little I had to spread the cream cheese very thin onto the bagel.

I may never achieve this again, but one must keep trying.


Why old media always loses, part MMMMMCL

Last night, I was checking out Hulu (no link for those idiots) on my office PC and was happy to see a show I watch had a new episode. So I went upstairs, hooked up the tablet to the TV and got ready to watch.

But the new episode wasn't showing.

Heck, the whole show was completely MIA.

After muttering "WTF" a few times, I drilled down into my options in the Hulu app and saw each thumbnail for that show read "Web Only".

I am not making this up. I am allowed to watch a show on my computer, but I am not allowed to watch that same show on my tablet. Both using the same IP address and the same (paid) account, so presumably at home (not, god forbid, daring to watch a show while commuting or at a friend's house).

How exactly does this help anyone? The producers, the actors, the fans, Hulu? Who gains from this bullshit? Nobody.

The people making deals at old media companies need to retire already and put people who actually get the internet in charge.


Who says the enterprise software world isn't eccentric

Get a load of the crazy wild outfits these enterprise software guys are wearing. In public, no less. Pretty bold statement if you ask me.


A new startup

Inspired by the success of so many other start-ups in the red-hot monthly subscription, food, and cloud-based logistics-as-a-service (Laas) spaces, I have decided to jump into the fray and revolutionize the stuffy world of high-end international teas with my new venture, Senchabox (getsenchabox.io).

At the intersection of luxe, gourmet beverages, social and high tech, Senchabox offers an amazing selection of socially-curated, organic, fair-trade teas from around the world, delivered monthly in a handsome gift box ethically made out of fast-growing bamboo and natural latex from recycled tires. Twice a year, subscribers get a bonus mystery Senchabox containing a selection of teas especially curated by Senchaboxers whose impeccable taste has garnered the most badges through in-app game mechanics.

For $99.99 a month, subscribers receive 2 ounces of the most exquisite teas imaginable from all corners of the planet. 

Check out our home page:

My co-founder Richard Head and I will be co-CEOs--he's more of a biz dev guy, and I'm more of a geek, so it's an epic marriage of equals with fantastically complementary skill sets. We're pre-IPO at the revenue stage with a very promising pipeline of brands highly engaged in leveraging our powerful, highly disruptive distribution platform to increase their social reach. We've set up shop in an awesome co-working space in the heart of SoMa in San Francisco, with an amazing open floor plan and a fully-stocked kitchen replete with raw organic fruit and nuts and catered lunches every day.

Our fulfillment center is powered by a homegrown high-availability real-time non-blocking event-driven Clojure app on top of a lightweight SOA Node.js backend written in Coffeescript. All our warehouse employees are equipped with top-of-the-line iPads running our custom order management app to fill orders at the speed of light.

We're looking for superstar Ruby on Rails experts with significant large-scale cloud experience (Heroku or EngineYard a plus) to take us to the next level. 

Every dev gets complete latitude in their choice of awesome workstation (either a 27-inch iMac or fully-loaded Macbook Pro; we're proudly non-corporate and therefore Windows-free, and we take Steve Jobs' exhortation to "Think Different" very seriously). 

We offer full health, dental and death benefits (including your spouse or domestic partner), and we don't meter vacation time as long as you bring tea back from your trips. We also plan to encourage every Senchabox employee to take a 2-year sabbatical doing charitable work in devastated regions of the world (one of our founders recently spent 18 months in AIDS-ridden Swaziland training the locals on Twitter and Foursquare using hand- and solar-powered One Laptop Per Child computers).

Think you have what it takes to join our elite group of product, design and hacking geniuses to change the world and take on really hard problems on a daily basis? Apply now by DMing @http417 on Twitter (be sure to include your resume as a Dropbox link).


Moleskine goes public

Moleskine just went public in Italy. Expect to see overpaid San Francisco hipsters ceremonially burn their notebooks in the final bonfire at Burning Man.


Of www. and not-www.

For a couple of years around 2008, it was briefly totally unhip to use www. in your domain. Like, total luddite heretical uncoolness. All the RoR cool kids were even adding apache nginx rules to redirect www.example.com to example.com. "Www" was that bad. Anathema. A relic.

People were really passionate about that, too. 'What do you need www. for? It's stupid!! It serves no purpose and must be eradicated!' Sure, you don't really need it. To add insult to injury, "www." makes you type four things you don't need! The horror!

Never mind that most mainstream browsers have had keyboard shortcuts for years that let you just type "example" and fill-in "www." and ".com" (and other TLDs) for you. I never, ever type "www.", and neither should you.

Today it became apparent those shortcuts aren't well known, so as a PSA I'm making a handy list below. It should work in Firefox and Chrome, and possibly Internet Explorer, but notably the bearded nerds who really really care about eliminating "www." tend not to use IE so much, for some reason. Here goes.

"example" + ctrl-enter = www.example.com
"example" + shift-enter = www.example.net
"example" + ctrl-shift-enter = www.example.org
"example" + cmd-shift-backtick-ctrl-enter-space-esc = example.io

You can even customize what gets filled in, at least in Firefox. Or if you really hate www. you can turn it off entirely, so it never ever ever gets filled in, not even by accident.

So the anti-www. Nazis and the people who don't really get riled up about bullshit niggling details and don't mind observing 15-year precedents in the Web's young history can both be happy.


Technology, you're doing it wrong

I'm watching old Beavis and Butt-Head episodes on Hulu (that's right), and so far I've seen two commercials that made me go "wtf".

The first is an ad for a Lifetime reality show about two women whose job it is to fit and sell bras to very large-chested women. I am not making this up. It's called Double Divas and it's real. The best part is that they aired a commercial for a show about heh heh heh boobs heh heh heh on a women-oriented channel during a Beavis and Butt-Head episode.

But the second ad is what made me scratch my head. It's a long, expensively produced ad about how DirecTV is better than cable TV, because--get this--DirecTV lets your DVR record up to 5 shows at once, v. cable that only lets you record one.

It's 2013, the web is pretty grown up, bandwidth is pretty cheap, everybody has multiple computers and phones, and the media carriers are competing on who lets you record more shows at preset times. Never mind that all that content you have to record at the time they decide to air it is sitting there in digital form in large data centers, and there's absolutely no technical reason why you have to 1) record it in the first place or 2) watch it at a particular time. (ok, for DirecTV there is, because satellite bandwidth isn't quite the same, but cable providers? please).

To truly grasp how absurd this is, imagine this scenario. Say you want to watch the Gangnam Style video. In order to do that, you have to do one of two things:

  • log on to YouTube on Friday at 9:30pm and watch it then
  • set your computer to record YouTube on Friday at 9:30pm so you can watch it later
If you don't, you can't watch it. If you go to YouTube on Saturday at 11am, no Gangnam Style for you--you can only watch Dirty Loops.

Or take Amazon's Kindle library. Say I'm downloading War and Peace onto my Kindle, and my wife wants to download Infinite Jest onto hers. And then War and Peace, why not. Does either one of us have to stop downloading a book for the other to be able to download one? Do I have to stop reading for my wife to download her book? Of course not. That's absurd.

Yet that's exactly the kind of restrictions you have when dealing with TV content, and the providers are touting half-assed solutions ("record 5 shows at once, not just one like those idiots!") to a non-problem like it's the second coming.

One of the beautiful things about digital media (and I include email in that bucket) is that it's asynchronous. A piece of digital media doesn't really exist as a single physical object, and it doesn't obey the laws of physics like, say, a library book or a movie theater do. Once a library book is checked out, you can't have it until it gets returned. If 1,000 people want to watch Bat-Man at the local theater, the theater has to make up schedules and force people to show up at 8pm, because there aren't enough projection rooms, reels and projection guys to show the movie to 1,000 people at different times. None of that is true of digital content. Sure, there are physical aspects to it (data centers, routers, CDNs, bandwidth, etc), but those are so far removed from the actual experience of the content they are basically irrelevant. If I lend you my book, I can't read it while you have it. When we have an email conversation, we can both read it at the same time, we can give it to thousands of people and still have it, I can send it at 2am and you can read it three days later. 

Digital content doesn't really exist. It's everywhere and nowhere, all the time and any time. It doesn't need to be recorded. It doesn't need for you to book your 8-9pm slot on Friday night to be enjoyed. It just needs to be requested and delivered, whenever I want, wherever I want. I'm not being an unreasonable spoiled brat here--I barely watch any TV anyway--that's just the way it already works.

So just remove the recording step. Make the DVR go away. Just let people do what they want--turn on the TV, and pick the programs they want to see. For the anal retentive, and to help you manage your bandwidth so you can precache the stuff on the viewer's TV/computer at off-peak hours, throw in a scheduler that lets people say "oh hey, I think I'ma watch Dexter on Saturday". That's it. The DVR as a free-standing device has no reason to exist. Stick a storage device inside the TV for caching and buffering, and forget about this scheduling and recording business. Call it all-you-can-eat-on-demand-TV-holicapalooza, package it as a revolutionary new thing and hope people don't realize it's just a better YouTube. I'd buy that.

But don't try to make me care about, much less covet, a digital recording "service" that's mired in the way things worked in the 1980s. I'll just torrent the stuff until you figure it out.