Posterous theme by Cory Watilo

It's ok to be crappy

I attended #barcampsg5 last week. 

It was great fun. I met a lot of great people. It was also my first time to Singapore, our nearest neighbor country, which was a truly eye-opening experience. It's amazing how clean and organized a country can be.

Anyway, back to BarCamp Singapore - I delivered absolutely the crappiest presentation in my whole life.

Thankfully (for the audience as well), it was only a 5 minutes lightning talk. I wasn't prepared. My hands were shaking, and then I realized I haven't speak in front of audience for a very very long time.

Incidentally, the presentation was about 'being crappy'.

My lightning talk presentation

I started the presentation with a controversial quote: "Specialization is for insects", then I went on explaining how one person can be a dreamer, coder, designer and marketer at the same time. Here's a quick summary:

Becoming a dreamer
Realize that nothing is impossible and don't put a limit on your imagination. Take a notepad with you all the time to jot down whenever ideas pop up.

Becoming a marketer
It's the experiments that matters. If one method doesn't work, try another; if the method works well, also try another, then compare and optimize. I also shared about a real life marketing case study on WPWebHost.

Becoming a designer
Focus on simplicity. Look for inspiration (Web Creme is a good place). I also talked about the idea of 'Learning by Profitting', supported by my experience when I built ShoppingThemes.

Becoming a coder
Use frameworks. Blueprint CSS for CSS. Ruby on Rails for web apps. Adopt TDD (Test Driven Development) to build your app. 

Conclusion
I concluded with the quote "Being crappy is not the reason not to do it.". I admitted that despite I'm both a crappy designer and coder (and a crappy speaker, at this point), I still do it for the sake of curiosity, learning and having fun.

BarCamp KL next?

The next BarCamp will be happening in KL on 24-25 April 2010. And yes, I will be there! (and hopefully my presentation gets better)

How I Built Wappr

I have never written an application from scratch before. That's why I built Wappr. My single purpose of building Wappr is to learn. The 2 weeks (weekends, to be exact) time I used to build it proved to be fruitful, better than 1-2 months of hammering books.

Wappr is an 'app wish list'. It pulled the tweets mentioning phrases like 'I wish there was an app...' and people can vote for it. I wanted it to be an inspiration for the developers when they have no idea what to build.

As you probably knew, I have very little programming experience. My only 'real world' programming experience was building theme options for WordPress and working with a 3-person team with minor role. So I knew it from the start that building Wappr will require a lot of 'trial & error' as well as 'looking at other people's code'. 

My first version of Wappr is relatively simple. It only consists of fetching tweets, import them into the database then display them. Most of the code is based on the #168 episod of Railscasts - Feed Parsing. Instead of parsing feed, I wrote my own code of parsing tweets. The tweets were fetched using this Twitter Search gem.

Next, I wanted to let people vote for it. As usual, I looked for any voting-related gem or plugins and couldn't found any. I tried writing it myself but failed miserably. Then, I found out that Simply Rails 2, a book from SitePoint, devotes a chapter on voting. I grabbed the book, followed the step by step tutorial, and then made some changes to implement my own version of AJAX voting (using RJS template). 

The last and most important part of Wappr is user session. I don't want to create a user-registration system because it would be meaningless for people to register just to vote. I tried to create a user session based on IP and cookies but somehow couldn't get it to work. Then I figured it would be easier (and less spam) if the user could login via Twitter to vote. I have been a long time reader of John Nunemaker's Rails Tips so I know he published this fantastic Twitter gem that supports OAth, the best way (and most secured) to handle Twitter authorization. John even published a sample app to show how to use this gem. I wrote this part of code in Wappr mostly based on the sample app.

When I thought the app to be complete at this stage, my marketing instinct kicked in. I thought it would be great if Wappr could automatically tweet the 'app wish' on behalf of the user when it voted. I created a new 'Settings' model and use ModalBox to handle the visual of the settings page. I initially have some difficulties on the ModalBox part but then this article from NetTuts helped me solved it.

Overall, I'm quite happy about Wappr as my first app built from scratch (it also made to the front page of Hacker News and received lots of feedback) but still, I thought it could be better. I regretted for not using Test Driven Development (TDD) approach which I've learned in my previous project and the code could be DRYer. 

If you haven't seen Wappr before, feel free to check it out and don't forget to submit your 'app wish' or vote for them wish you like.

My Local Web Host Wishlist

I used to be happy only with a cPanel, which is already the norm as a hosting control panel. I used to love annual billing, where I paid once and use it for a year. I used to love the gigantic web space and bandwidth provided even when paid a little. I used to satisfied with our local web host.

Not anymore.

With the rise of new technologies and new demands, our local web hosts remained stagnant. I'm not asking our local web hosts to become like Heroku, SliceHost, Rackspace Cloud or Linode. But I can wish, can't I?

I wish I could be billed monthly, fairly. 'Fairly', as in not forcing me to subscribe to annual/biennial subscription by charging a premium for monthly subscriptions, or worse, not even providing the option for monthly subscriptions.

I wish I could only pay for the features I need. I don't need the GBs and TBs of space and bandwidth and whole lot of other useless features, and I'm certainly not paying for others if they use it from my own pocket.

I wish they support Git. I want to update my site with a simple 'git pull', instead of uploading the whole directory with FTP.

I wish they would be more focus. It's about not spending so much resources on other stuffs (like marketing, launching new products, going into new sectors), but instead, focus on providing the best hosting experience to the existing customers (like stable and fast server, responsive and helpful support). This is actually pretty tricky and not as easy as it sounded. But if achieved, a happy customers will tell their friends, families, colleagues about that awesome local web host for many many years to come.

Well, that's about it. Are those too much to wish for?