Duck Tape Programmer

I’ve first read Jamie’s response to Joel’s writing on him on Coders at Work. I didn’t think much of it, and then I had a chance to read Joel’s actual writing. It sort of coincided with another discussion I had with an aspiring entrepreneur I met yesterday. And I decided I like the term, duck tape programmer.

The aspiring entrepreneur I met had his opinion about certain Rails programmers, and that’s exactly who Joel described as “someone with a coffee mug”.  I don’t think it’s a matter of right or wrong, but about the whole approach towards programming. The entrepreneur said that he has met many smart programmers who can talk up the latest movement and fads in programming world, but when it’s time to deliver, they are stuck in their world, trying to come up with best looking code using the latest techniques. However, the kind of programmers most value to startups are those who just get things done.

Some of the cool things he said were,

Peter asked Zawinski, “Overengineering seems to be a pet peeve of yours.”

“Yeah,” he says, “At the end of the day, ship the fucking thing! It’s great to rewrite your code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products.”

My hero.

Duct tape programmers are pragmatic. Zawinski popularized Richard Gabriel’s precept of Worse is Better. A 50%-good solution that people actually have solves more problems and survives longer than a 99% solution that nobody has because it’s in your lab where you’re endlessly polishing the damn thing. Shipping is a feature. A really important feature. Your product must have it.

I think what Joel referred as duct tape programmers are hackers in Paul Graham’s definition. Just as I concur with Paul, I do with Joel on this. Hacker or duct tape programmer, I aspire to be the one who just gets things done.

I am going to buy that book, which has very similar cover as Founders at Work.

Sweet!

Ready to take a red pill?

The following is a Craigslist Wanted ad I placed when I was doing the social networking website for new parents. I don’t know why, but I wanted to see if I still had it, and I did.

You take the blue pill and the story ends. You wake in your bed and believe whatever you want to believe. You take the red pill and you stay in Wonderland and I show you how deep the rabbit-hole goes.

I am not offering truth, but I am offering you a chance to change status quo and be a founding member of a start-up company.

I am looking for a co-founder in DC metro area with web development experiences in LAMP (Linux, Apache, MySQL and PHP) environment. Prior social networking or web 2.0 development or startup experience would be a plus, not necessary. The right candidate(s) will be entrepreneurial, passionate about starting up your own company, and ready to commit time and/or money.

Social networking has so many potential niche markets, e.g. facebook for college students, linkedin for business users, and dogster for dog owners. It’s true that this space is getting crowded, but with right niche market and understanding of it, one can be very well successful. The key is to target passion centric segment. Only after becoming a leader in a niche market with laser-like focus, you can expand and grow much bigger. Our target customers are definitely very passionate about what they do and they can benefit most from features in the plan.

If you are interested in learning more, please send me an email with your resume and a brief description of why you think you are a good fit. We will take it from there.

I look forward to hearing from a fellow entrepreneur.

3D Printer for less than $2,000

My ingenious friend who has been building his own version of Segway finally got his own 3D printer working (based on open source project).

Best part? He is selling a complete printer (Not a kit!) for less than $2,000. If you want to build it yourself, you can always follow the open source project. But for rest of us who do not have enough spare time, this is the most cost effective way to getting hands on a 3D printer.

$1799 to be exact. Shipping is extra.

If you would like to order one, please send me an email at 3dprinter [at] yangtheman.com

Forget Everything, Just Build First

Over the weekend, while nursing a sick kid, I read this guest blog post on TechCrunch by Meebo CEO, Seth Sternberg, called From Nothing to Something. How to Get There. It was so good that I immediately re-tweeted the story and asked my followers to read it right then. You should read it, if you haven’t done so.

I share the same exact sentiment as the following quotes,

Second, like I said, forget everything else and just get your product out the door. No office. No phone system. No hiring. No press. No legal muck. No raising money. No looking for partnerships (who’s going to partner with you anyway?). The success or failure of the adoption of your product is what will create 99% of the initial value of your company. If no one ever uses your product, you have no value. Oh, and for the record, raising VC does not help get traction – in another blog post, I’ll argue that if anything, it hurts.

I am so glad that a successful entrepreneur who went through multiple failures are giving the same advice I feel as my mantra for a startup. How awesome is that.

Forget Everything. Just Build First.

How to integrate Clickpass (and OpenID) with a Rails app

I saw Clickpass in action at the Hacker News, and I thought it was another great way to reduce another login account. I wanted to implement it for my Open Translation project.

However, when I tried to find tutorials for using Clickpass with a Rails app, I couldn’t find any! How could it be! The pesudo code example Clickpass provided was for Java, I think, and thus it wasn’t any help to me. I was completely lost.

Then I realized that in the core underlying architecture of Clickpass is OpenID. Then it all made sense to me. I found a great tutorial on OpenID and Authlogic on a Railscasts episode (I am not using Authlogic for my site, though, but for the Open Translation project, I probably will.). So the following is a mixture of the Railscasts episode, ruby-openid gem, open_id_authentication plugin and Clickpass setup.

1. Install the gem and the plugin.

sudo gem install ruby-openid

Continue reading

How to integrate Facebook Feed with a Rails app

On Monday, I’ve gotten Facebook Feed publishing to work with my site, and it took about two hours including TV watching time. I could’ve done it faster if I actually paid a full attention. It was all possible, thanks to Chris Schmitt, who has an excellent tutorial on his site.

1. Simply you first need to create a sub-class inherited from Facebooker::Rails::Publisher inside a controller. In my case, I wanted to publish a feed when a new playground is added and an existing playground is edited, so it made a sense to put it in playgrounds controller. publish_pg takes objects and sets parameters, and publish_pg_template creates a feed message based on those parameters.

class PlaygroundsController < ApplicationController

[SNIP - other actions]

  class FacebookPublisher < Facebooker::Rails::Publisher

    def publish_pg_template
      one_line_story_template "{*actor*} created/updated: {*pg_name*}"
      short_story_template "{*actor*} created/updated: {*pg_name*} in {*pg_city*}, {*pg_state*}",
                           "Check out what {*actor*} said, and rate or add comments to help other parents!"
    end

    def publish_pg(pg, facebook_session)
      send_as :user_action
      from facebook_session.user
      data :actor => facebook_session.user.first_name, :pg_name => pg.name, :pg_city => pg.city, :pg_state => pg.state, :pg_id => pg.id
    end

  end

end

Continue reading

Deploying a Rails app on Heroku (paperclip, gems, yml)

I just moved my PlaygroundsRUs site from AWS to Heroku, and I couldn’t be happier. My first full month bill from Amazon was about $75, and $74 of that (99% of the total cost) was for running an instance. Harlan told me about Heroku after he deployed his ForkThis demo on there.

Most of the transition was smooth, but there were a few hiccups on the way. One of them still hasn’t been resolved (one of the plugins is having conflict with PostgresSQL, which is used by Heroku). I will enumerate what I had to go through so that it might be easier for you.

1. Secret YAML files

I have a public GitHub account for deploying on AWS using ec2onrails. Since it’s public and anyone can see it, I had to omit sensitive

.yml

files in config directory that contained passwords and keys. It’s easily done by specifying those files in

.gitignore

and listing them in

:nonvc_configs

in

config/deploy.rb

used by ec2onrails.

I found out that for Heroku, the same can be achieved by creating another branch, including those files, merging with master, and pushing it to Heroku. So, the following lines should do the trick.

git checkout production
[remove those yml files from .gitignore]
git merge master
git push heroku production:master

Continue reading

SF Women 2.0 Startup Weekend Wrap-up

Last weekend, I attended SF Women 2.0 Startup Weekend. At first, I didn’t know what to expect, but I ended up having a blast. I wasn’t sure if I wanted to pitch my idea, but I decided to do it while taking a shower in the morning. No one ended up joining my team, and I think it was just wrong crowd to pitch an idea around solar industry. I ended up joining an eccentric geek, H@rlan Knighwood, and worked on his project, ForkThis.  He coined it “Massively Parallel Creative Collaboration Engine”, which sounded like a title of a Ph.D. thesis. We had four core members and two floaters, and one of the member and I came up with gentler, funnier explanation, Friendly Online Rapid Kollaboration. What he has is a really cool idea. Anyone can start an idea, and anyone else can take the idea and “fork” it. After many forks, original forker can see what the differences are (similar to diff in unix-like OS) and accept/reject them and update the original idea. The team talked about different business models, but my personal opinion was that first focus should be to make it free and get as many as users possible. A few obvious options would be charging for private collaboration (Github) or charge for packaged solution (Zimbra). Anyhow, over the weekend, I added external forking – scraping external site’s page and creating a new fork – and twitter integration – option to tweet a new fork. Harlan worked on creating javascript snippet for website owners to copy and paste to their sites and massaging format after scraping.

Overall, it was a really cool experience. About 170  people showed up and 38 people pitched their ideas. 100’s of people getting together in one place, some pitching ideas, forming instant teams, and creating product/service and basically starting a company in 54 hours!  It just can’t get any cooler than this. Startup Weekend takes a place in many other cities (not all of them simultaneously), but the turn-out in SF should top the list. There are just so many interested in starting a company.

The pitches were also quite interesting, too. Some outrageous, some out of this world, and some really useful. Those with familiar concept (web 2.0, social networking, and twitter) were able to form a team easily. On the last day was presentation and demo, and the one that looked coolest was Foodspotting. They came with something that was already in progress, and thus didn’t start from the scratch at the event. To be fair, Harlan already had working demo he came in, too. However, Foodspotting was probably the most stunning visually. All their graphics were all slick and looked very polished. Whoever there designer was, s/he was awesome. One of the judge panelists pledged $5,000 to Foodspotting in funding before he left.

My philosophy around web sites was functionality/simplicity first and looks second. Perhaps I should think differently about that?  Users are humans, and I think it’s something you can’t get away with. Humans are naturally drawn to beautiful things from building to opposite sex. Having an awesome designer is definitely an asset.

Anyhow, the whole 54-hours took me back to college years. Teams of people working on interesting stuff, friendly people willing to answer and help others – not just team members, and overall just aurora of creativity, drive and affinity. Again, I had a blast and I wish I can help host one in Korea as well.

The following is a slide of pictures I took at the Startup Weekend.

Team Members: Harlan Knight Wood, Yang Chung, Tee Chapple, Toya Thomas-Cruz, Olivier Minkowski, John Weiss

Johny and I are interviewed at 8:18 mark