git the fsck out

Uncategorized 27 Comments »

Update: (later that day…) A full stomach changes everything. Getting some breakfast lessened my git hatred quite a bit. Still, it manages to irk me on a daily basis, and I hate people who make their ill-thought-out blog posts disappear, so I will leave my hate-filled rant for posterity and a warning to myself not to post before I eat breakfast.

Update 2: (Feb 2010) I’ve been meaning to update this for a long time. I’m a 100% convert to git now. I’ve had my religious epiphany. I couldn’t understand how great it was at first, but over the past year I’ve finally wrapped my head around it. So, to all you haterz out there like me, just keep persevering. The light is there at the end of the tunnel. Now, back to the original rant…

Ok, I’m angry, so I’ll go ahead and make a ranty, heretical statement:

I hate git!

But wait! Micah, aren’t you the ultimate Rails fanboy? Don’t you jump on the bandwagon for everything the rest of the Rails lemmings do? RESTful routing? .html.erb instead of .rhtml?

Yes, in general, I do follow all the other Rails conventions and try to stay on the bleeding edge. I hate to feel like I’m falling behind, and that’s an easy feeling to get in the Rails community. So, I try to follow all the trends and at least educate myself on what it means and how it works. In most cases, like being RESTful, I eventually come to understand the underlying concept and appreciate the change. Learning new things often involves suppressing your own skepticism and the urge to stick to the known path.

So how is git different? Well, I’ve been using it for a few months, and the list of cons just keeps growing, while the list of pros stays nice and small. Sure, it’s fast, merging is dead simple, and I can scoff at all my friends still using subversion. But, every single time I want to do something, I have to look up a whole slew of commands. Why can’t I just memorize them? Because they’re horribly arcane and obtuse.

Want an example? Try deleting a remote branch. This seems like something one would do often, after merging a feature branch into the master. However, rather than using something simple, like “delete the remote branch”, you have to cast some arcane spell. For me, deleting a remote branch involves Google, every goddamn time.

The spark that set me off today was my attempt to connect to multiple repos on Unfuddle. For organizational reasons, I need to have multiple user accounts. Juggling usernames and passwords is bad enough. Luckily, they’ll allow me to use the same OpenID for both accounts. Still, when I tried to add my public ssh key, it complained that you cannot use the same public key for two accounts. Apparently, Github has the same policy.

Well, that was two hours ago, and I’m still trying to figure out how to get git to use my shiny new ssh key that is not named id_rsa. A little stumbling around got me some instructions on Github, but right at the top it says that it’s not an ideal solution and should only be attempted by advanced users. Hmm, using multiple different keypairs for different source control repositories does not exactly sound like an advanced feature. Do they recommend we use the same password for all our websites as well? Seems like a pretty basic concept to me.

Update: I was called “borderline retarded” in the comments for blaming git for the policies of github and unfuddle. Harsh, but true. I conflated git with hosts who provide git, and that’s not fair. So, github and unfuddle, my anger shifts to you!

Further, the recommended solution requires editing configuration files for ssh. So, I have to be an experienced ssh user to use git effectively? That’s ridiculous. Seriously, how many developers ever modify their ssh settings? I’ll muck around in git config files without worrying too much. Change settings in ssh without extensive research? Forget about it. Mess that up and you’ll lock yourself out of your machine, or worse, open it up wide to script kiddies who know more about ssh than you.

From a usability perspective, git sucks, and that’s that. If anyone feels compelled to defend git, please do so in the comments. However, don’t tell me how to do the things I’ve bitched about here. Tell me why it has to be so goddamn hard. To make an analogy, it reminds me of the Rails vs Java mentality. Java web apps are horribly convoluted. Sure, you can write tons of arcane XML and eventually maybe get your WAR deployed into Tomcat correctly. But why? Why waste time on this crap when it can be so much easier? Why spend minutes and hours trying to understand the obscurities of git when subversion, the ugly stepchild that it is, is still easier to use?

Subversion has its problems, but dear God why did the Rails fanboys have to jump to a worse solution? Now, in order to keep my certified fanboy card, I need to spend my precious development time tinkering with git, and then writing blog posts about how much I hate it.

You’re asking the wrong question

Uncategorized 6 Comments »

I had lunch with a friend the other day, and he pitched me an idea he had for an iPhone/Android/whatever app. When he was done, he asked, “What do you think?” Without thinking, I answered with, “Hmm, sounds neat. Cool idea.” He told me that’s what everyone said. It was then that I realized he had asked the wrong question. Instead of asking, “What do you think?”, phrase it like this:

“Tell me why this idea sucks and will never work.”

Friendly Optimism

If you’re asking friends (or even just generally polite people) about your idea, they won’t want to hurt your feelings. They can tell you’ve got a lot of enthusiasm and excitement tied up in your idea, and it would be a real jerk move to throw cold water on that. So, they answer, “Cool idea!” or perhaps “That’s neat. You know what else you could do?” Very few will give you real, jarring, critical feedback. Instead, they’ll try to be good friends and cheer you on. Unfortunately, you need a reality check, not a cheering section.

Ask to be bruised

If you make it clear that your goal is to get real, unbiased feedback, you pave the way for someone to be honest without seeming rude. In addition, if you explicitly ask them for negative feedback, they will be pressed to come up with specific criticisms, instead of vague encouragements.

Once the truth starts flowing, take some notes and ask for more. Resist the urge to get defensive and just let your reviewer express their opinions. Once they realize that you’re truly appreciative for the beating they’re giving, they’ll really start to build up steam. Thirty minutes of this can generate some truly exceptional insights. You may think you know what sucks about your idea, but others may be able to poke holes in it you never imagined.

React and Adapt

No idea is perfect, and your job as an entrepreneur is to overcome and adapt to the imperfections in your idea. If you can’t recognize and counter your own weaknesses, then your success will be severely limited. It’s nice to get a pat on the back every now and then, but it’s absolutely necessary to get raw, unfiltered criticism. Very few will give this freely, so it’s up to you to drag it out of them.

Atlanta Startup Weekend 2 – Better, but I still quit

Uncategorized 6 Comments »

I attended ASW2 this Friday, and while I enjoyed it much more than last time, I still decided not to return on Saturday and Sunday. Consider it a mixture of laziness and desire to work on other stuff.

Update: Just to be 100% clear: I think ASW2 was a good time, I just had a lot on my plate. The main reason I quit is because weekends are the only times I can work on my own startup stuff, and it’s a big investment for me to spend that time on other pursuits. I’m glad I went on Friday, and if I had more free time I might have stuck it out. But, all things equal, the TODO stack for Obsidian Portal doesn’t shrink on its own.

My Pitch: Get Me A Date


Atlanta Startup Weekend – Get Me A Date!

Using Amazon Mechanical Turk, do human reviews of dating website profiles to help people look their best.

Charge a flat fee of $10 for a review. This gets farmed out to two MTurk workers for a rate of $3 each, leaving a profit of $4 for the service. The MTurk workers review the person’s profile and give specific, personal criticism of their photo and bio.

Each review is 100% satisfaction guaranteed. If the customer is dissatisfied, they get their money back…and the MTurk worker doesn’t get paid! Over time, MTurk workers get better, to the point that they can churn through the reviews and make $30-$40/hr, all the while earning money for us!

Essentially, it’s an excuse to play with MTurk. I think MTurk is a fascinating idea, and there are some really cool things that could be done with it, assuming the workforce is steady and high enough quality can be ensured.

Get Me A Date made it to the top 5 (out of about 30 ideas), but when the time came to pledge support for a project, only my new friend John stood up. So, we disbanded and moved to Giving Time.

I spent a little time with the GivingTi.me team, but eventually decided to quit. I liked the idea and the opportunity to work with some new people, but there was one person on the team who really rubbed me the wrong way. Chris wanted to run all the conversations, and seemed to think very highly of himself due to being a CTO of a local startup and having an MS in Software Engineering from Tech. Well, I’m also the CTO of a startup (I give myself titles for AisleTen whenever it’s convenient) and have an MS in Artificial Intelligence from Tech, but I don’t think that’s really all that relevant at Startup Weekend. Skills and personality are important, not titles.

When I was asked if I would be there Saturday morning, and I said no, Chris asked, “Is it because of me?” Rather than play it down and be nice, I was blunt and said yes. If I’m going to spend a weekend hacking away on a never-make-money project, it had better be with people I like and respect. Why spend your free time getting bossed around and talked down to? At the time, I declined to elaborate, since there were about a dozen people in the room, but I am proud of myself for being straightforward and honest.

Ultimately, I didn’t find any of the ideas all that compelling. Plus, I’ve been tweaking some stuff on ObsidianPortal, so that’s where my heart is at the moment. It’s hard to concentrate on something when you wish you were somewhere else.

Anyways, I wish everyone the best, and I hope some good stuff comes from the weekend. I know I’ll be working on Obsidian Portal most of the time, so it’s still a startup weekend for me. :)

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in