John Deschanel is probably retarded.

Over the recent 4th of July holidays a Wisconsin man’s protest, an upside down flag, was removed from his private property prior to the town’s parade without reason or warrant. There is so much WTF in this story I’m not really sure where to begin, but the most ignorant comment comes from Village President John Deschane.

“If he wants to protest, let him protest but find a different way to do it,” Deschane said.

I have to give him credit for fitting so much ignorance into such a short sentence. First off, the courts have ruled over and over again that the American flag can be desecrated as a form of protest. Second off, you don’t get to choose how people protest your own decisions (as long as they’re doing so legally).

I really hope the ACLU takes a picture of this idiot as he’s writing a fat check to Vito Congine for stealing his property, trespassing and violating his civil rights. MMmmmm … Crow.

Jailbreak + SIM Unlock + Tethering + MMS on iPhone 3G w/ iPhone OS 3.0

!!!WARNING!!! The following post will very likely void your warranty and, quite possibly, completely break your phone. DO NOT DO THIS UNLESS YOU KNOW WHAT YOU’RE DOING!

I recently purchased an iPhone 3G for my upcoming trip to Europe with the express purpose of SIM unlocking it. Moving forward this will be my travel phone. When I get back I plan on purchasing an iPhone 3GS to use here in the US. Specifically, I ended up doing the following:

  1. Jailbreaking the phone with redsn0w.
  2. Doing a SIM unlock with ultrasn0w.
  3. Enabling the tethering option.
  4. Entering the appropriate settings for MMS.

Jailbreaking

The very first thing you need to do is install redsn0w. This was exceptionally easy to do. If you don’t have the IPSW file you need check out this post for download links for both the iPhone and iPhone 3G. Please note that none of this works on the newly released iPhone 3GS.

Gotcha: One thing I will note here is that I had problems updating Cydia. After rooting around a bit I found out that installing both Cydia and Icy can cause problems so don’t check the Icy box when running redsn0w. Interestingly enough, when I did another jailbreak with redsn0w, without checking Icy, it left Icy installed and fixed my Cydia problems.

SIM Unlock

The SIM unlock was super easy. You can find a great overview here. all  The basic instructions are as follows:

  1. Load up Cydia
  2. Add http://repo666.ultrasn0w.com as a source.
  3. Update your sources.
  4. Search for ultrasn0w.
  5. Install ultrasn0w.
  6. Reboot.

Tethering

All you have to do for tethering is go to http://help.benm.at/help.php and follow the instructions. This will enable the tethering menu under Settings > General > Network. After that pair your phone and your computer go to the Bluetooth menu on your computer go down to your iPhone 3G’s name and select “Connect to Network”. After this your iPhone should have a blue notification at the top indicating that tethering is on and working.

After I got tethering working speed tests were showing 1065 kbps downstream and about 200 kbps upstream. To me, it felt a bit snappier than my Verizon EVDO. Since I have a MiFi I don’t plan on using this often, but it’s nice to know it’s there.

MMS

Supposedly everything I need to have MMS working is enabled on my iPhone, but I can’t seem to actually send or receive an MMS. I assume there’s something I need to enable on my iPhone’s plan, but there was something curious about this that I’ll mention for others who have to edit their Cellular Data Network settings.

Gotcha: Mine was missing! I had no option under Settings > General > Network for Cellular Data Network. Getting this enabled was, without a doubt, a major pain in the ass. I’ll try and outline how I got it all working. PLEASE NOTE THIS IS FOR ADVANCED NERDS ONLY!

  1. Go into Cydia and enable OpenSSH.
  2. Find your IP address in your WiFi settings.
  3. $ ssh root@196.168.0.22 (Where 192.168.0.22 is the IP address found in Step #2. Use alpine as the password)
  4. $ scp root@192.168.1.135:"/System/Library/Carrier\ Bundles/ATT_US.bundle/carrier.plist" ~/Documents/
  5. You should now have a carrier.plist file in your Documents folder. Create a backup of this in case you break anything.
  6. Open it with Property List Editor (Which apparently only comes with XCode as it’s in Developer > Applications > Utilities).
  7. Under Root add a new sibling called AllowEDGEEditing with a Class of Boolean and set it to True.
  8. Under Root add a new sibling called IsMMSUserEditable with a Class of Boolean and set it to True. (You can check out a screenshot of what mine looked like here).
  9. Save your changes with File > Save.
  10. $ scp ~/Documents/carrier.plist root@192.168.1.135:"/System/Library/Carrier\ Bundles/ATT_US.bundle/carrier.plist"
  11. Go to Settings > General > Network > Cellular Data Network and edit your MMS settings according to http://help.benm.at/help.php.

Despite all of this I can’t seem to receive any MMS from friends nor do I see any MMS features exposed in the iPhone OS 3.0 UI at all. If anyone has any insights into this please let me know. I included this portion, mainly, to help anyone else with a missing Cellular Data Network panel.

UPDATE: Evidently, there’s an application in Cydia named APN Editing that will enable this for you without having to do crazy hacking.

Conclusion

That’s about it. My phone now works on any carrier, has VIM and a terminal application, supports OpenSSH, allows me to tether my MacBook Pro to it and, theoretically, allows MMS. This should make my Europe trip a lot more palatable. The following is a list of links I used to piece together this post and my iPhone hacks:

What would a Social Platform Bill of Rights look like?

Now that I’m getting out of the business of creating and engineering social platforms and into the business of using and building upon social platforms, I’ve been thinking a lot about best practices for all those involved in the development, use and consumption of social platforms.

For the last few years some of my most respected friends and colleagues have been busy building the social web. Blaine Cook, Eran Hammer-Lahav, Kevin Marks, Chris Messina, David Recordon, Dave Morin, Luke Shephard and many, many others have been working tirelessly on the nuts and bolts of what we’re calling Social Platforms (or the Social Web). The nuts and bolts are things like OAuth, OpenID, Activity Streams, LRDD, XRD, etc. and various providers (Twitter, Facebook, MySpace, Google, Six Apart, etc.) are enthusiastically implementing these common technologies.

The problem is that the tools for users to adequately manage their data on these social platforms are, at best, in their infant stages. The engineers that have been building these nuts and bolts, as we engineers often do, have focused mostly on security and technology rather than on best practices, social norms, or how these technologies will change or disrupt human communication.

I think it’s about time we thought about those best practices and social norms. So, here goes, an initial SWAG at what a Social Platform Bill of Rights might look like to the three parties involved (to use the OAuth adjectives, we have Users, Providers and Consumers).

Providers

As a provider you’re #1 job is to protect the user. Nobody knows your users better than you and those users have placed a lot of faith and trust in your hands. As a social platform provider you agree to the following terms.

  1. You will provide users with the ability to completely block an application. This means more than simply not allowing them to use that user’s data. It means that application will cease to exist as far as that user is concerned.
  2. Provide users with the ability to group their connections and alter settings based on which group a connection is in (e.g. Nobody from my “Work” group can see tweets that include the #bingedrinking hash tag).
  3. You will allow users to mute another user’s activity while still maintaining the connection.
  4. You will actively police consumers of your users’ data. Set precedence with your consumers and enforce them in your APIs and the tools you give to users.
  5. You will provide fine grain control over exactly what a consumer may or may not do with a user’s data. Furthermore, you will present the user with said options when they grant a consumer access to the user’s data.
  6. You will provider a clear and simple way for both consumers and users to privately contact you.
  7. Don’t be a douchebag.

Consumers (Application Developers)

As a consumer or application developers, you are in the precarious position of having to enhance a user’s experience without upsetting the user, their friends, and the provider. The majority of the burden for being an upstanding citizen on the Social Web falls on your shoulders. As a social platform consumer you agree to the following terms.

  1. Never create relationships between two users without explicit permission from the user initiating the relationship.
  2. All automatic communications sent from your application must be opt-in or confirmed by the user after each action (e.g. Facebook Connect requires a user click “Publish” to confirm publishing to the feed).
  3. Do not build applications that encourage and/or trick users into spamming their friends and followers.
  4. Allow non-users of your application to opt-out of communications originating from your application without having to install said application.
  5. Invitations from one user to another user to use or join your application must not be sent automatically nor should mass invitations be the default option. Make the user choose, carefully, which friends to invite to the service.
  6. Use the messaging frameworks provided by the providers. Do not require or use a user’s email address. Furthermore, do not ever send unsolicited messages.
  7. Do not enable automatic communications after a user has signed up.
  8. If your application spans multiple social platforms, users must be able to manage and control their data and settings from a single location (e.g. A user’s settings work the same on both Facebook and MySpace).
  9. Be up front about what data you plan on using, how you plan on using it and to whom you plan on sharing that data with. This text must be stated in clear, non-legalese, concise written form.
  10. You will provide a clear and simple way for users and providers to privately contact you.
  11. Don’t be a douchebag.

Users

Without you this entire thing would fall into itself in a gigantic implosion. Despite what any provider or consumer says, the data you publish on the web is yours, which means it’s also, at the end of the day, up to you to protect it. As a social web user you agree to the following terms.

  1. Never give write permissions to an unknown consumer.
  2. Be cognizant of how an application will affect your friends and followers.
  3. Never send a mass invite to your friends to use a consumer’s applications.
  4. Do not use one service solely for the purpose of broadcasting posts/activities from another service. Cross posting is bad for the internets (An exception being aggregation sites, such as FriendFeed).
  5. Don’t be a douchebag.

Conclusion

At the end of the day, we’ve really messed up lots of things by bringing real life social norms to the web. The web had its own social norms, which often clash with real life social norms, before we did this. The result is going to include growing pains like sheep tossing, #spymaster, and Foursquare’s horrible decision to turn on automatic tweets after 2.5 months without even so much as notifying their users.

We’ll get it right, eventually. Until then we all need to start thinking about how we affect other people with our actions online, just like real life.

Also, interesting to note how, as is so often in real life, it comes down to not being a douchebag for all this to work just fine.

Zombies and sheep tossing comes to Twitter

It was bound to happen sooner or later. Spam-based viral applications, first made popular on Facebook’s platform, have come to Twitter in the form of Spymaster. The #spymaster tag is trending on Twitter’s search right now and, judging by my own stream, a bunch of people are playing it.

I’ve started both unfollowing and reporting users of this game to @spam. This isn’t because I hate my friends, it’s because I have no other recourse to stop this application’s abusive behavior. So what makes this so abusive? The game gives money and income boosts the more you tweet out about the game. Turning off said notifications can greatly reduce your chances in the game. Basically, it was engineered from the ground up to promote spammy behavior.

The real issue is that Twitter still hasn’t given us the tools to manage this stuff. I can’t block specific hash tags, I can’t mute friends without unfollowing them, I can’t block out tweets sent by certain applications, etc. These are all things I’m able to do on Facebook, with good reason.

So what do we do for now?

  • If you’re playing this game, stop right this fucking second.
  • Report anyone using the game to @spam and unfollow them.
  • Report @playspymaster to @spam.
  • Twitter must give its users tools to manage their streams.
    • Add the ability to block certain hash tags from your stream.
    • Add the ability to temporarily mute people you follow without unfollowing them.
    • Add the ability block any tweet sent by a specific application. This would require a fundamental, but arguably imperative, change to the way the API works so I doubt it’d happen anytime soon.

I know how hard it is for Twitter right now. I’m friends with two of their engineers and one former engineer. It’s not easy scaling sites on the web and even harder to scale real time applications like Twitter, but the tipping point is upon us. We need these tools ASAP.

Moving on to the next chapter

This week I gave notice to Digg that I’m going to be leaving the company to pursue other opportunities. When I first joined Digg I had a list of goals in my head that I wanted to accomplish and, I feel, they’ve either been accomplished or are well on their way to being fulfilled by other shepherds at Digg. Luckily, we’ve managed to recruit some of the industry’s leading brains (all of whom are far smarter and more capable than I) to continue building great products for Digg and I’m excited to see where they take things.

So what’s next? Well, I’m spending July couch surfing through Europe, working on a few side projects, putting together a small conference on scaling and generally taking things easy. I’ll also be continuing to annoy the coders at Digg as an advisor moving forward.

It’s hard to put into words what my time at Digg means to me. I’ve had the distinct pleasure of working with many of Silicon Valley’s brightest minds and they’ve been gracious enough to not only give me a chance to prove myself, but also impart some of their knowledge to me. For that I’ll be forever grateful and indebted.

Thankfully, Kevin accepts beer as payment.

Conservatives want a Divorce from Liberals

Today I woke up to an email calling for Conservatives and Liberals to divorce. With this divorce they propose a number of demands about splitting up our mutual assets.

  • Conservatives and Liberals should split the country, by land mass, right down the middle. No method for doing so is outlined in the Conservatives petition.
  • Liberals are to take the liberal judges, the ACLU, the affirmative action crowd, the NAACP, and the National Organization of Women. Liberals are also to take Nancy Pelosi and Harry Reid with them.
  • Conservatives want all of the guns, the cops, the NRA, and the military.
  • Liberals are to take Oprah, Michael Moore and Rosie O’Donnell. Liberals are, however, responsible for finding a bio-diesel vehicle big enough to move them.
  • Conservatives wish to take capitalism, greedy corporations, pharmaceuticals, Wal-Mart, McDonald’s, and Wall Street.
  • Liberals are to take homeboys, hippies, and illegal aliens.
  • Conservatives wish to take all hockey moms, greedy CEO’s, and rednecks.
  • Conservatives wish to take all of the Bibles.
  • Liberals are to take all copies of Mein Kampf.
  • Conservatives wish to keep Fox News and insist the Liberals have NBC, CNN, MSNBC, CBS, ABC and the entirety of Hollywood. As a goodwill gesture Conservatives wish to give Liberals National Public Television as well.
  • Conservatives wish to keep Rush Limbaugh and Sean Hannity.
  • Liberals will take Al Franken and Keith Oberman.
  • Conservatives are willing to let the Liberals negotiate peace agreements with Iran and Palestine, but reserve the right to invade and/or “hammer the crap out of” any country that threatens them.
  • Liberals may take the peaceniks and war protestors.
  • Conservatives wish to keep their Judo-Christian values, while the Liberals will take Islam, Scientology, Humanism, and Shirley McClain with them.
  • Conservatives wish to retain all Hummers, SUV’s, pickup trucks, motor homes, oversized luxury cars, power boats, Harley Davidsons, and private airplanes.
  • Liberals will receive rights to all 4-cylinder vehicles, all hybrid technology, mopeds, kayaks and canoes.
  • Conservatives wish that Liberals will give their entire populous healthcare. Conservatives will continue providing privatized healthcare.
  • Conservatives wish to keep “God Bless America” and the National Anthem. Conservatives wish that the Liberals take “Imagine”, “I’d Like to Teach the World to Sing”, “Kumbaya”, and “We Are the World”.
  • Conservatives wish to continue practicing trickle down economics. Liberals are allowed to give trickle up poverty a their best shot.
  • Conservatives wish to keep the US history, name and flag.

Liberals can see merit in the Conservatives’ desire to file for divorce. By and large most of your demands seem perfectly reasonable. Before we can properly file for divorce, we need to flesh out the details of our separation agreement. Below is the Liberals’ counteroffer.

  • Liberals accept, at face value, the idea of splitting the country in half by land mass. We propose splitting the country according to the electoral map from the previous four Presidential elections. Any state that went for a Liberal in 3 or more of the last 4 elections will be the sole custody of Liberals. The following states voted for a liberal in 4 out of 4 of the last Presidential elections: Maine, Washington, Delaware, Maryland, New Jersey, Connecticut, New York, Vermont, Massachusetts, Michigan, Pennsylvania, Minnesota, California, Rhode Island, Wisconsin, Illinois, Oregon, and Hawaii. The following states voted for a liberal in 3 out of 4 of the last Presidential elections: New Hampshire, New Mexico, and Iowa.
  • Liberals accept all of the terms outlined for the liberal judges, NAACP, ACLU and NOW. Liberals assume that by accepting the entire NAACP that Conservatives do not wish to have any of the people they represent as well. Liberals wish they be allowed to move to the new Liberal union, if they wish.
  • Liberals concede guns and the NRA. However, Liberals object to all cops and the entire military. Liberals believe police officers are an important part of any civilized union and wish to retain the services of those already employed in our union. Furthermore, Liberals wish to keep all military bases that currently reside within the confines of our union. This includes 31 bases in California alone.
  • Liberals accept all of the Conservatives’ terms with regards to Oprah, Michael Moore, and Rosie O’Donnell. Liberals are more than happy to take a billionaire philanthropist, a man whose first film documented the plight of blue collar men and women working in the auto industry, and a loud mouthed lesbian into the new Liberal union. Furthermore, Liberals accept responsibility for finding comfortable bio-diesel transportation for all three.
  • Liberals object to the idea of taking “capitalism” as capitalism is, in fact, an idea rather than an object that someone can easily negotiate possession of. Liberals conceded all rights to 100% free markets as Liberals believe free markets, driven by corporations’ quest for profits, left unchecked are dangerous to the markets themselves (akin to giving drug addicts unfettered access to drugs). Furthermore, Liberals insist that corporations be dividing according to the new unions’ respective borders. As a goodwill gesture, Liberals will set up a special district, with equal access to both sides, on Wall Street.
  • Liberals accept Conservatives’ demands to take all homeboys and hippies. Furthermore, Liberals wish that illegal aliens be divided along the new unions’ respective borders. Texas seems just as willing as California to accept illegal aliens and, as such, Liberals feel it’s only fair Texas and similar states bear the burden equally.
  • Liberals concede all demands on hockey moms, greedy CEO’s, and rednecks. Liberals are, quite frankly, perplexed as to why Conservatives wish to keep such worthless possessions, but concede them nonetheless.
  • Despite finding Hitler’s actions despicable, Liberals will take all copies of Mein Kampf so that future Liberals don’t repeat history. Liberals believe history is important and should be preserved no matter how horrible that history may be.
  • Liberals accept all demands on the equitable division of news organizations. Furthermore, Liberals wish to keep NPR and Howard Stern, who is an ardent Liberal and benefactor of the ACLU.
  • Liberals concede to the Conservatives both the  drug addict, Rush Limbaugh and college dropout, Sean Hannity. Liberals are more than happy to take Senator Al Franken and Cornell University alum, Keith Olbermann.
  • Liberals accept their right to pursue peace agreements whenever possible and with whomever is receptive. However, Liberals wish for a clear definition of what Conservatives mean by “threaten”. Liberals are worried this may infer to “the stink eye” or “acting gay”.
  • Liberals accept all peacful people, including peaceniks, and peaceful protestors into the new Liberal union.
  • Liberals accept all peaceful religions and peaceful religious people. Liberals naturally assume anyone not wishing for peaceful coexistence will refrain from moving to or living within the Liberal union.
  • Liberals concede rights to SUV’s, Hummers, etc., but reserve the right to create alternative fueled and/or hybrid versions that do not rely on foreign oil at their descretion. Furthermore, until such technology has been brought to mass market, Liberals reserve the right to use these things in good faith for the jobs they were designed. In other words, Liberals will continue to use SUV’s and pickups for organic farming, responsible logging, etc.
  • Liberals accept all of the terms outlined for hybrid technology and fuel efficient vehicles. Liberals believe achieving foreign oil independence is crucial to surviving in the future and, as such, request all solar panels, wind farms, and hydroelectric power plants. Liberals reserve the right to pursue responsible usage of nuclear power as well.
  • Liberals wish to accept all terms on healthcare. Liberals strongly believe in the preamble to The Declaration of the United States of America, which states that life, liberty and the pursuit of happiness are among our unalienable rights. Liberals believe that neither life nor happiness can be achieved without access to proper healthcare and that, by denying equal access to healthcare, you are, by definition, denying access to peoples’ unalienable rights.
  • Liberals concede the concept of trickle down economics to the Conservatives. It did, after all, work very, very well for Ronald Reagan and George W. Bush (both presided over major Wall Street crashes; 1987, 2001 and 2008 respectively). Liberals, however, wish to pursue any economic policy they wish, which may, or may not, include the policy pursued by Bill Clinton (which resulted in a $127 billion federal surplus).
  • Liberals wish to keep the shared history both Conservatives and Liberal share. It’s not easy to divide that up. That being said, Liberals concede the flag if so desired, but object to Conservatives’ use of “The United States of America”. The name implies an ambiguous network of diverse states working together towards a common goal. The homogeneous Conservative union (filled solely with conservative, Christian, white people) should probably choose a more concise name. Liberals suggest The United States of Jesusland.
  • Furthermore, Liberals wish that the Conservatives break it gently to Mississippi, Louisiana, Alaska, West Virginia, North Dakota, Alabama, Virginia, Kentucky, South Dakota, etc. they they won’t be able to get more money from the federal government than they put in anymore either. Liberals understand that Conservatives are against the redistribution of wealth and, as such, assume this won’t be an issue.

The resulting Liberal union would take 54.16% of the GDP with it, Silicon Valley, New York City, San Francisco, the home of Boeing, most of the good wine, the arts, the movie industry, the auto industry, the entire Ivy League, Stanford, University of Michigan, CalTech, UC Berkeley, JGI (first to map the human genome), Lawrence Livermore Labs, most of Boeing’s manufacturing facilities, the nation’s largest airports, nearly all of the major ports of entry, etc.

The Liberals wish the Conservatives luck. The Liberal union will have the largest GDP for any country in the world, soundly beating The United States of Jesusland by $1.1 trillion.

The Conservatives will need to figure out where to get their movies and TV shows from. Conservatives will also have difficulty finding doctors since a full two thirds of the top medical schools now reside in the Liberal union.

Manufacturing SUV’s and Hummers is difficult when most of the manufacturing plants reside either outside of both of our new unions or reside in states within the Liberal union. Either way, those manufacturing facilities are controlled by companies residing in the Liberal union. Furthermore, most commercial aircraft are now built within the Liberal union and controlled by Boeing, which resides in two Liberal union states.

The Liberal union will also be sure to ship all of our fancy new drugs to The United States of Jesusland as five out of the top five pharmecutical companies reside within the Liberal states.

Actually, now that we think about it, divorce sounds like a splendid idea.

25 Things

  1. I love all green vegetables except peas. 
  2. I own a very large male cat. His name is Crash and, no, you can’t have him.
  3. I’ve participated in a (recreational) sailboat race. 
  4. I’ve been to Thailand twice.
  5. I have one full sleeve tattoo and one 2/3 sleeve tattoo. One is all machine (gun) and the other was all done with bamboo (hand pump).
  6. I’ve lived in California, Washington, Montana, Wyoming and Michigan.
  7. I used to dream of being a fighter pilot. Instead, I code websites and my cousin Gino is a Top Gun pilot in the Navy.
  8. I was in a fraternity in college. Not only was I IFC President, but I was also my chapter President, Chapter President of the Year, Greek Man of the Year, and a Harvey C. Dent Man of the Year finalist for Sigma Tau Gamma. This amuses my West Coast friends to no end.
  9. My mom, a hairdresser, cut my hair until I left for college with the single exception of a flat top I got in elementary school.
  10. I’ve had two major surgeries as a result of sport-related injuries: ACL reconstruction on my right knee and back surgery to alleviate a herniated disc.
  11. My first pet was a dog named Daisy. 
  12. I’ve been snowboarding for about 12 or 13 years now. My first board was a unidirectional K2 board. 
  13. My degree is actually a Bachelor’s in Business Administration. This drastically reduces my geek credentials in the eyes of some of my peers.
  14. I do not own a TV and have not for many years now. I don’t have cable either. Nor any sort of gaming platform (unless my MacBook Pro or iPhone counts).
  15. I’ve participated in three triathlons (two sprints and one Olympic).
  16. I’ve never written a large production application in anything other than PHP to date. This will change in the next few months when my first Python+Django project launches.
  17. I’ve spoken at many conferences you’ve never heard of, including one in front of over 1,000 people. Doing so does not bother me.
  18. I have a fetish for bikes.
  19. I still chat with my high school sweetheart, one of my college girlfriends and my ex-wife regularly. I consider them some of my closest confidants and friends.
  20. I have a little brother that looks so much like me that my fraternity brothers called him “Mini Me” and he’d get stopped on campus by people asking, “Are you Joe Stump’s little brother?”
  21. I have good friends I’ve never met in person. This doesn’t mean they’re not good friends though. 
  22. I brush my teeth in the shower.
  23. I wish I had the time and/or skills to learn to play the guitar. 
  24. Despite taking years of Spanish classes and conversational Spanish courses I’m horrible at speaking it, but can follow conversations and am decent and deciphering written text.
  25. I greatly dislike the color red.

Teens in Tech Conference

Today I went to watch Digg’s two resident proteges, Danny Trinh and Jeff Hodsdon, give presentations at the Teens in Tech Conference, which was put together by Daniel Brusilovsky. The conference was full of youthful enthusiasm and, overall, a hilarious and fun event for teenagers by teenagers.

After Daniel and Sam Levin had given the opening introduction, Jessica Mah gave a presentation on being a teenage entrepreneur. After she and Danny Trinh had finished their keynotes I tweeted out some rather blunt criticisms of Jessica’s keynote. Unfortunately, I couldn’t elaborate on why I thought that way in the 140 characters that Twitter gives me so I thought I’d elaborate in a blog post.

  • The main crux of her talk was that you should ignore your teenage obligations (school, homework, etc.) to pursue being an entrepreneur. Jessica Mah is a rock star amongst teenage tech nerds and, in my opinion, is being irresponsible as a role model by saying, basically, “Fuck school! Build stuff!” Even more perplexing, is that, despite this being her overwhelming advice, she’s currently a junior at UC Berkeley.
  • She mentioned a story where she was basically brushing off customers for one of her companies in favor of playing video games. How is horrible customer service a good idea?
  • Mah kept making the point that procrastinating makes you awesome. I’m fairly sure that my good friends Gary and AJ Vaynerchuk would disagree with this point. You’ve got to, as Gary says so eloquently, “Hustle your face off.” if you want to succeed. 
  • She kept saying that being ignorant was a good thing. I think her point was that they have naivety and youthful enthusiasm on their side, which they do. Ignorance, on the other hand, tends to, by definition, mean a willful lack of knowledge.

Contrast her talk with Danny Trinh’s hilarious “The Milk & The Cookies” talk. Danny talked about personal maturity (The Milk), which is something you can’t fake and professional maturity (The Cookies) which you get to choose and enhances your personal maturity.  

One of the points that I love that Danny made was that, “You’re not the best.” There’s a fine line between youthful enthusiasm and arrogance. A line I’ve fought with myself. To this day, despite my many successes, I’m not the best at anything. I’m a great PHP coder, a good systems engineer, and a horrible dancer. Danny’s suggestion, which I agree with 100%, is to surround yourself with the best to raise your game. All you can really do is continue to push yourself. 

That’s the lesson that the teenagers at Teens in Tech should walk away with, if nothing else. 

Coding is less science and more craft

My father is a builder, a tinkerer, an architect and an artist. He’s extremely mathematically inclined and thoughtful. He’s also got a lot to do with why I do what I do. Growing up we built, tore apart and fixed more things than I can remember; cars, boats, houses, forts and toys. From an early age it was clear, to me, that my dad loved building stuff with his hands. To this day he’s most at ease working in his shop building furniture out of wood or working on his classic speed boat. And, when he’s done with a piece, you can tell it was built by a consummate craftsman who loves what he does. I like to think that I’ve followed in his footsteps – only I build virtual things with my fingers.

This small story brings me to a recent Twitter thread started by the consummate PHP craftswoman, Sara Golemon, where she ranted (she often rants – with good reason), “Jesus Fucking Christ. Why don’t mother fucking developers go out and buy a mother fucking clue??? Take some GOD DAMNED PRIDE!” My reply to this was, “Sadly, many developers consider coding a “job” rather than a “craft”. There’s a significant difference between the two.” This was quickly followed by Helgi Þormar Þorbjörnsson saying that craftmanship requires knowledge, attention to detail, perfection, etc. My reply to this, and I think this is what my dad really passed on to me, was, “Above all, craftsmanship requires a true love and passion for what you’re creating. You naturally acquire the rest along the way.

My point is that, like it or not, people go into computer programming for lots of reasons; money, interest in computers, high demand in the job market, etc. In other words, and what’s so frustrating to coders like Sara and myself, not everyone who codes is passionate about coding. These are the people who copy and paste code. These are the people who don’t tinker or hack on side projects. These are the people who are afraid to learn or refuse to learn the Next New Thing. So how do you fix people who build their code like an Ikea bookshelf rather than a finely hand crafted M.L. Stump original?

  • Build easy to use, domain specific, concise frameworks for your coders. It doesn’t have to be Django or Ruby on Rails or Cake. Just something that removes their ability to mess up the basics.
  • Create and enforce strict coding and documentation standards. Remove their ability to go rogue and write ugly looking, poorly documented code.
  • Implement code reviews and ensure a true craftsman is in the room when they occur. In other words, shame them into writing decent code.
  • Require unit tests. This reduces the likelihood that their lack of passion will break your code in the future.

As the truly passionate craftsmen and craftswomen of our trade, it’s our duty to ensure our code is well written, well documented, works properly and is fun to both read and write. If you aren’t interested in doing such things I’d appreciate if you found work in another trade so as not to tarnish the craft I love so dearly.

Year in Review

  1. The end of 2008 marks the end of my first year as Digg’s Lead Architect. In that time we’ve rewritten the majority of the site using frameworks that I built. We’re currently rewriting the underlying data access layer to be horizontally partitioned, elastic, services oriented and multi-homed.
  2. In early January, Digg Images launched and, with it, the result of months of work resulting in a completely rewritten submission framework for Digg. This project resulted in me writing and releasing Net_Gearman. I consider this project to be some of my best work at Digg.
  3. In early January I snuck off to Vail for one last snowboarding trip before back surgery. It was on this trip that I finally became comfortable with Western black diamonds, including an awkward drop off of an 8+ foot precipice into 3+ feet of fluffy powder.
  4. On January 23rd, 2008 I went in for back surgery. Two hours after surgery I was up and walking around without a hint of sciatica or back pain. I can’t thank Dr. Fred Naraghi enough for what I view as a second chance at life.
  5. 2008 will be known as the Year of the Conferences for me. I spoke at Future of Web Apps in Miamion a panel at SXSW on scaling websitesMySQL Conference on Services Oriented Architecture, Web 2.0 Expo in New York City, Future of Web Apps in London with Blaine Cook, Future of Web Design on the friction between developers and designers, and Q-Con in San Francisco on Digg’s architecture.
  6. The summer brought another bout of triathlon training. Along with my friend Mark Lewandowski, I trained for my first Olympic distance triathlon, which I ended up finishing in 2 hours, 50 minutes and change. As part of our training Mark and I also did a 72 mile bike race around Lake Tahoe. The race included 3,900 feet of vertical gain over 72 miles and is, without a doubt, the most challenging endurance race of my life. I finished the race in 4 hours, 15 minutes and change.
  7. In June I was elected to the PEAR Group, which is the governing board of my favorite PHP project.
  8. In early September I launched PleaseDressMe with my friends AJ and Gary Vaynerchuk. The site continues to gain traction in the tshirt arena and is, to date, my most successful side project.
  9. In October Aubrey, Kevin and I went on a whirlwind tour of Europe that included Oktoberfest in Munich, London, and Amsterdam.
  10. November brought big news at Digg with the hire of my friend and release manager for PHP6, Andrei Zmievski, as Digg’s first Open Source Fellow.
  11. November also brought about me finally diving into Python and Django for a side project. I’ve built an API for iPhone games that my friend Garren and I plan on releasing soon. More on this to come.
  12. December brought another trip to Thailand with my good friend Chris Lea. We’d originally planned to do Thailand, Cambodia and either Laos or Vietnam, however the islands of Koh Phangan and Koh Samui had other ideas. I type this sitting on Haad Lamai on Koh Samui. So far it’s been an epic trip with highlights including New Year’s Eve on Haad Rin Nok and a trip back to Haad Rin Nok tomorrow for another Full Moon Party.

This year I’m going to follow the year in cities theme that so many other blogs follow because I feel I really have done a ridiculous amount of travel this year.

  • San Francisco, CA
  • Miami, FL
  • Austin, TX
  • San Diego, CA
  • Seattle, WA
  • Vail, CO
  • East Jordan, MI
  • New York, NY
  • Munich, Germany
  • London, United Kingdom
  • Amsterdam, Netherlands
  • Los Angeles, CA
  • Bangkok, Thailand
  • Haad Leela, Koh Phangan, Thailand
  • Haad Lamai, Koh Samui, Thailand

I’m going to start a new theme here today. Below is my year in open source software. This is a list of projects I’ve released publicly and/or have contributed to. I’m not sure how many lines of code this is, but this is, by far, my most prolific year in FOSS contributions.