Monday, December 31, 2012

2012 Reflection


It’s the last Sunday of 2012, it’s night, and it’s the perfect time to reflect, ponder and feel good about wasting time :) Looking back on what I wrote for the beginning of 2012, it feels like a wasted post with nothing to look forward or reflect on. I guess I had forgotten about my feelings back then.

The shitty part about setting goals is we shall feel miserable if we didn’t achieve them, and not necessary happy if we did. But without goals, it feels kinda lost and empty. The heart yearns for something, and goals are just translation of the wishes.

My “Shitty” Startup

I think the end of 2011 is around the time Silicon Valley Comes to Malaysia hits town, and I was pumped up about applying for funding, join some incubators and competition, looking for co-founder and looking forward to develop a “real business model” for my startup. The funny thing is none of these happened or work out and perhaps I had made a fool of myself, but today I am fairly please that none of these wishes came true. Today I still own 100% of my “shitty” startup, with no co-founders or investors to disagree with, and it had a 150% income growth without a “real bossiness model” which is really good for me, financially stable to embark on the next adventure, and I feel really happy and tasted some freedom (something which I always look forward to).

I didn't actually accomplish much in 2012 in terms of productivity, but I guess the time is ripe to rip the fruits after years of ploughing. It is true a true reflection of opportunities awaits those who are prepared for it.

Sadly, Malaysia Most Wanted Prices and Events didn't work out, so I will probably shut it down soon.

End of Consultation & Freelancing

Year 2012 marks the end of consultation and freelancing for me, partly due to my startup business is picking up and I got tired of freelancing after 5 years, and made worse by a couple of collection issues and bad debts.

Freelancing is tough (dealing with customer expectations), but it does pay the bills. Sadly, the experience isn't very satisfactory, as it feels like selling your soul for money: the customer will never pay you enough to produce the best product, or understand the price and elements of a good product. What is the difference between mobile apps with a development budget of RM 5000 vs. RM 50,000? Most of the time customer pays for features, but it’s very difficult to price the user experience, look and feel, fragmentation support, scalability, etc.

In a very crude sense, a prostitute can’t be a wife. You can pay for sex, but you can’t buy love and care.

Life and Travel

Freedom of life is important to me, which include financial freedom, having time to do other things besides work, and don’t have to sell my soul for money. With the growth of Malaysia Most Wanted Food and retirement from freelancing, I felt that it’s a big step towards the right direction.

If my memory serves me right, I only manage to do one significant travel in Vietnam for close to a month. I do enjoy the last travel, not too rush, not too complicated. I was probably hooked with the idea of travelling about 8 years ago, and I am still looking forward to achieve my one year travel plan someday :)

Sometimes life comes up with a little extra challenge besides work and love. I ended having to revive my teaching affair at my cousin’s school due to a strange twist of fate, which I never quite truly enjoy because it doesn't feels right. Teaching PowerPoint to students so that they could pass some Microsoft Exam is not exactly my idea of education or fun, but it does reminds me that sometimes exam could bring the best out some someone. Two of my students try to take the exam twice but failed. I could sense that the idea of failure does bother the students, and one of them does stand up to the challenge, being more focus and determined, and I could really feel his improvement and confidence built-up, and I forecasted he would pass on the third try, which he did. As much as I dislike the idea of exam, but totally abolishing it might not be a good idea as well.

In the last month of 2012, I became the unglamourous chairman to save my apartment from turning into a cowboy town, with only RM 7,500 in the bank account, RM 40,000 of water debt, 30% cost overrun and residents reluctant to pay maintenance due to the worsen situations. It’s a tough challenge to handle, which I forsee could easily takes 3 months to turn the tide (with some luck on our side), and plenty of things happening in between. I believe things happen for a reason, and running away or ignoring it is probably not the right way to do it.

Good or Bad?

I think 2012 is probably one of the better years for me, with more “excitements” as well. As we get older, it’s sometimes tougher to hang on hope and trust, believing that human are naturally good. Some people decided that it’s okay to not pay someone after engaging their services, while some people decided its okay not to pay maintenance fee because they are not happy with how things are, and not to mentioned all the bad things people did to each other on the news everyday. I wish everyone would be more understanding and think of others beside themselves, where the employers mustn't forget how it feels like to be an employee, and the employee trying to understand the difficulties of the bosses. Why do I need to believe that everyone is naturally good? If not, I shall be living among the scumbags, and that is not a good thing.

The world we live in, need a little bit of care, understanding and forgiveness, so that we can start living as human in this humanly world again. When you stop caring about others, others shall stop caring about you; and what kind of world would all of us be living in? That shall be the end of life as we know it. Never do something to hurt others intentionally or unintentionally, neither shall we do something we shall regrets.

I hope everyone could still feel their good heart.

Tuesday, December 25, 2012

The Unglamorous Chairman


Unexpected in the month of December 2012, I volunteered myself as the committee member of the Management Corporation (MC) of my apartment while the ex-committee and management company decided to quit due to financial difficulties and disappointment with the residents. In the next 2 days, I was voted as the Chairman because I was late for the meeting 5 minutes. Now, I am the Chairman of the MC of my apartment, on a rescue mission to save the apartment from turning into a cowboy town, with only RM 7,500 in the bank account, RM 40,000 of water debt, 30% cost overrun and residents reluctant to pay maintenance due to the worsen situations.

I landed on an unglamorous job (with a glamorous title) with a whole load of shits to handle.

Why shit happened?

The apartment is having a water leakage problem since 2007 (suspected due to aged water pipes), and our monthly water billed had increased from 2007’s RM 7000 to 2012’s RM 13,000 (at its peak, we are paying RM 17,000 per month). Countless committees and management companies for years had tried to solve this issue, but the water bill fails to go below its RM 13,000/month mark.

Poor man can’t be chooser; as we get poorer due to the water leakage (loosing between RM 6000 to RM 10,000 per month), we still try to maintain the “luxury” life of 3 security guards per shift, a private management company, full-time cleaners and etc. Even though the maintenance fee is raised 50% last year, it just couldn't sustain its current operations. Any logical person would ask why not reduce the services? I believe the answer has very much to do with the psychology of the residents, which I shall explain shortly.

To Rescue or Punish

Like all company with in bad financial situations, it’s time to come up with some serious cost cutting measures and prioritize spending. It’s slightly “easy” for us that the previous management terminated all the services, thus we basically start with zero cost.

In the beginning, some residents suggested that we should “punish” those who didn’t pay the maintenance charges by not restoring the security guards and let SYABAS terminate the water, thus forcing these people to bear the consequences of their actions. I was swayed by this argument for a while, until I realize this is not wise for various reasons (I got persuaded by another Committee member):

  • We will end up disappointing 70% of the “good residents” just to punish 30% of the bad apples
  • If someone get hurt due to the lack of security, it shall haunt my conscience
  • Water termination will cause much inconvenience for the children and old folks
  • If we punish everyone (even though some agreed to be punished), there shall be no hope in restoring support and order


Basically, we acted against the will of the vocal residents and restore security guard. Then we went to SYABAS to negotiate an installment plan for the debt, the tabled the solution in the resident meeting, where a majority (sadly only 10% of the residents attended the meeting) voted to pay SYABAS to avoid water termination.

Our plan is to control the expenditures, increase the collection rate, solve the water leakage, restore operations and restore fairness. Luckily we have a cooperative committee, and some helpful residents.

How people think?

After talking and interacting with lots of residents, I realize I learned a lot about human nature in one month than the last 30 years of my life.

  • During the week where security is absent, security is not at risk but parking chaos happened. Residents who park used to park their cars outside the apartment compound (they have 2 cars but no second car park) started to park their car in the compound on others’ parking space, or park inconsiderately on the walkway.
  • Surprisingly, when only one security guard is restored and stationed at the gate entrance (there is nothing much a one man guard could do), the parking chaos is 90% gone.
  • Surprisingly, some residents’ main concern is whether someone sweeps the floor of the compound, not about better security or solving water leakage or financial problem.
  • Even in time of crisis, most people couldn't make the painful choice of cost cutting.
  • Most residents despise unfairness, wanted the committee to take action against those residents who didn't pay maintenance charges.
  • Most residents just wanted an avenue to rant about the problems, but still willing to pay the maintenance charges and be a “good citizen” for the common good. The main tasks of committees are listening to the residents, and assure them things are under control. Talk less, listen more.
  • Some of the debtors refuse to pay due to “personal” reasons, such as broken relationship with the committee members, clerical errors and disappointment with the services, lack of communication channels, etc.
  • Even at time of crisis, some people still expect optimum services and refuse to participate in resident meetings, and perhaps think that things will magically be restored.
  • Most people would start to make their own assumption without approaching the committee for clarifications, which allow false rumors to spread easily. I personally believe communication channel are important, where we put notices on notice board, request for resident’s email to send out weekly updates, have resident meetings, but I believe we hardly reach 60% of the residents effectively.
  • The chicken and egg situation: some residents expect “the good old days” and optimum services to return before they are willing to pay the maintenance charges, but the entire operation could collapse if less than 70% of the residents pay the maintenance charges.
  • There is always a 10% hardcore people who resist or oppose, and another 10% who are helpful and supportive. Another 40% are "good citizens" who do their part and continue to pay maintenance, while another 40% sitting on the fence with a wait and see attitude. Our job is to convert the last 40%.
  • Personal conflicts between people, lack of tolerance for people with different views and harsh tone and languages are the main causes of failure in this conflict. Be polite, be listening, willingness to sacrifice, explain your plans and views, and ask for support and show gratitude. It's somehow like a politician running for election, except that there is no financial or power gain here.


Take for Granted Expectation

There are certain things in life where we take for granted, where we assume as long as we pay our taxes, there shall be policemen, firemen and doctors to take care of us; as long as we pay our bills, there shall be water, electricity, communication and Internet; as long as we pay our apartment maintenance, there shall be services like security, cleaning, maintenance of basic amenities and etc.

What if these things suddenly disappear, and what should we do? Suddenly it’s bestowed upon us to take over the management of the country, or become policemen, or required to take actions to restore water and electricity supply.

Would you rather sit still and hope for the “good old days” to return, or decide to take actions and make it happen? Or would it be possible that someone unconsciously prevented order from being restored?

Why become the unglamorous Chairman?

Logically, it doesn't make sense to become the Chairman of an apartment in dire financial where the supportive level of residents are dwindling. The job doesn't pay, and consume plenty of hours and sleepless night, and the committee would probably be blamed if we fail to turn this around, and we don’t really expect rewards or thanks even if we made it. Why not spend the time and effort with our family, or develop our career and business?

Initially, I refuse to accept that this situation could not be solved, thus I volunteered. Then, I hate the lousy feelings of having to quit and give up. Perhaps in a certain sense, I felt it’s time for me to do good to others (besides my family), to give back to the community so to say. Now I try to convince myself this could serve as a valuable lessons in my life, where I could learn something from it. Deep down, I naively wanted to believe that human are intrinsically good in nature, that there is still hope for humanity so to speak. I believe in kindness and hope. I refuse to believe that residents in my apartment are somehow more inferior than others.

In the time of darkness, hope and trust is the only beacon of light: trust that people are genuinely good, and hope that people would be understanding and do the right thing.

Monday, December 10, 2012

Review: What I wish I knew when I was 18 by Stephen Fry


Notes:
  • Technology is like a Mirror: if an idiot looks in, you can't expect an apostle to lookout
  • Chasing techniques and answers (to happiness and richness) is fatal
  • The worst things you can do to yourself in life is setting goals (goal orientation is disasterous): 1) You don't meet your goal and call yourself a failure 2) You meet you goal and ask, "I'm here, now what?"
  • Work is more fun than fun
  • The things that unsuccessful people have in common is they talk about themselves all the time (I need ...) = Egoistic
  • The real of Heroism is people who quietly get on with their life and think about other people
  • How can you know England if England is the only country you know
  • One of the wonderful given ability in life is the ability to give
  • Would you rather be someone who ask for money, or be someone in the position to give?
  • On one hand you want to belong to a tribe, on the other hand you want to be outside and unique
  • Online comments are usually nasty and resentful, which are meaningless and demoralizing
  • Self-obsessed people are poisoning themselves and people around them
  • The more in the world you encounter Kindness and cheerfulness, the better the world would be (it dwarfs talent, energy, commitment, justice, virtual, truth, ...)

Friday, October 26, 2012

Review: Brian Chesky of AirBnB (2010)


Video: http://www.justin.tv/startupschool/b/272180383

Notes:


  • Everyone is once powerless and obscure.
  • Press tactics: don't start with CNN, they won't cover you. Google for related keyword/news, find the bloggers who talks about it and email them. Then the local news will pickup from the bloggers, then the state news, then it's reach CNN. Got the 1st 800 listings.
  • When you have plenty of time, make cereals
  • PG interested because these guys won't die
  • Whatever you focus on, you get
  • Community marketplace for space
  • Rent airbed for events -> cover non-events -> rent rooms -> rent apartments -> rent any space (private island, tree-house, boat, castle for events, etc.)


Launches


  • Launch 1: Rent airbed from our apartment for an event (local hotels are sold out)
  • Launch 2: Airbed for conferences for all over the country, launch by SXSW
  • Launch 3: Stay with local while travelling (press tactics)
  • Launch 4: Making Cereals
  • Launch 5: Demo Day: YC (users -> profit)


Review: Ben Silbermann of Pinterest @ Startup School


Video: http://startupschool.org/2012/silberman/

Notes


  • Making things can take a long time (quit jobs 2 years ago - work on multiple projects, 4 months to launch, get 3000 accounts in 3 months)
  • Commitment to HAVE to make it work. You should just do it, or stop talking about it.
  • Ways investors says No: 
    • Call me back in a few months.
    • Who else is in?
    • There is NO way this will happen.
  • Lessons about investors:
    • Even rich people are subject to free cookie, investor are people too.
    • Hack the leverage: fear of losing the deal, the believe that the thing will be so big.
    • Don't take investors' advice as face value, they make mistakes too, judge for yourself.
  • Be great at 1 thing, the ONE thing worthy of people's time
  • Investors are subjects to the same bias and trends everyone else is reading on techcrunch and hacker news.
  • Convince investors through users who is their friends and wives.
  • A lot of different ways to succeed, not necessary following the trends; trust the user, data and your instinct
  • Build something you believe in, else you will definitely burn out
  • Don't give up: don't let others talk you out of your dream

Thursday, October 18, 2012

Empower the People (how to make money online)


When I first saw Google Adsense, it was like holly shit: everyone could make a living by serving advertisement (without the hassle of securing advertisers) on their blog and website, as long as they produce contents which interest people. It is no longer the privilege of magazines or newspapers or big media websites, and the cost of running is practically zero (blogger is free, singup for Google Adsense is free, only time is not quite free).

Now, everyone could make a living online by producing contents (e.g. write a blog about cars, pets, fashion, technology, etc.). Personally, I felt this is both liberating and empowering. One of the reason I really love Google is because they empower the commoners and small business owners, creating products where almost everyone could take advantage of to make a living (Adword, Youtube, Google App, Google Place for Business, etc.). Google made it possible, easy and free (most of the time); the only thing stopping you is yourself.

You probably need to be trained (and probably certified) for years to be an accountant, lawyer, doctor, engineer or programmer. If you do not have a formal education, you probably ended up in a low paying labor intensive job. Besides using the Internet, certain conventional industry allow everyone to make a better living without a high prerequisite: Insurance and Multi-Level Marketing (MLM). Almost everyone could be easily trained to be an Insurance agent within months, and many housewives successfully become a MLM agent (e.g. Amway) within weeks. Everyone could make a better living, as long as you could excel in sales.

Besides Google, there are plenty of options which empower to make a living online:

  • Etsy: Sell your DIY products online
  • eBay: Auction anything online. Check-out Lelong for Malaysia.
  • Youtube Partner Program: The more people view your video, the more money you make (it’s like Adsense for Video). Sadly not available in Malaysia yet.
  • Airbnb: Everyone could rent their empty apartment or room as holiday home. Check-out iBilik for Malaysia.
  • Fiverr: Sell your small service for a fee
  • TaskRabbit: Run an errant for others
  • HomeTuitionJob (Malaysia): be a home tutor


The question is: can you do well in one of the following?


You can choose not to work for others if you don’t like to, and you don’t need a lot of money to start making a living online. Nothing is easy, but it’s definitely very possible :)

PS: If you are passionate about your choice, you will be happier, satisfied and hopefully make a sustainable living, and definitely last longer (able to preservere).

Friday, October 12, 2012

PWNED: WebCamp KL Online Culture


I believe WebCamp KL is the most interesting and engaging tech group in Malaysia, I have no doubt about that (but there is always room for improvement). The community is smart, knowledgeable and helpful; but sometimes I felt something is missing there: humility and respect.

Authority

There are bound to be some influential people in a community (maybe it due to their charm, background or contribution), and they are usually the most vocal one as well. But with great power comes great responsibility, as they could “skew” the direction of the discussion.

Sometimes I am not sure people agreed with them because they are popular or cool (fan mentality, like following TechCrunch), but most of the time their comment garner more support (or likes) than a more insightful one posted by a loner. The discussion always go in favor of the most popular person, not necessary the most insightful one. As someone with such “power”, I hope they are aware that their actions are watched and followed closely by others, and I do hope they would put their power into good use.

IMHO: someone with authority who is at times pessimistic, yet people still cheers on his quality; someone felt the responsibility, thus being cautious in posting.

Pwning the Noob

On the other extreme of the spectrum is the noob, who always get pwned by someone with no humility, the mob, and sometimes the Authority.

“Who want help me build a social network with 5 million users” might sounds like noob request begging to be pwned, but every actions has it consequences. My wife told the about something she heard on the radio show, about a famous music producer refuse to be a judge on those TV singing contest, and he persuaded his fellow colleagues not to do it as well. His reasoning is: basically what the judges do are squashing people’s dream, or giving them false hope, which are cruel things to do. What makes you think you have the power to judge others and predict their fate?

We talk about passion and dream, yet we unconsciously eating people’s dream for lunch. Are we trying to role-play Simon Cowell or Donald Trump here? It might not be a smart or insightful question, but if possible, try to refrain from sarcasm or personal attack which bruises someone’s pride.

Ever wonder why only a handful of people are the most vocal on the community? All the newbies are so afraid to try to say something and get pwned (or already pwned).

Pretending to be pwning the Noob

There are always some fraction wars, like HTML5 vs. Native, PHP vs. Ruby/Python, and NoSql vs. RDBMS, which are legitimate questions with no clear winner, depending very much on who are the fan boy and use case.

I still remember I raised a light comment of HTML5 for games, then some people jump to the gun saying they HATE people like me for following the hype, claiming HTML5 is not for games. I can accept his argument, where traditional PC and Console games does require higher hardware capability (then again, I saw some FPS build on HTML5), and I agree developing game on HTML5 is pretty darn challenging; but think about casual games, and HTML5 provide no-install and play instantly (which are critical to higher play rate).

The dude saw an opportunity for pwning, and go straight for it. If someone of authority made the same statement, I doubt the dude will do the same. People are so eager to prove that they are right and more superior, that they are willing accuse someone else of being lesser in order to push their values and views into others, and claim victory (PWNED!).

Humility and Respect

I hope we can agree that most successful people are humble people (e.g. Robert Kwok), as they would not dare to say that they are right and others are wrong, and they usually brush off their success to some luck factor. I have no doubt Donald Trump is a smart and successful businessman, but do we want to learn from him as role model? Why not Warren Buffet?

I have no doubt a lot of people in WebCamp KL are smart, knowledgeable and probably successful; I do hope there is more humility and respect shown in the group. A humble person doesn’t point their finger at someone, and say that someone is wrong, underprivileged or deserved your pity. You can voice your different view in a general manner, but personal attack is not cool.

Most people would agreed they could respect someone with different political or technological views, but most of the times their actions speak otherwise.

Guidelines for commenting

Before you post your opinion, ask the following:

  • Are you being humble and respecting others’ view? (You are SO WRONG and you know shit!)
  • Are you noob pwning or pretending to be noob pwning? (DIE, you stupid minions)
  • Are you giving your personal views without hurting other people in the process, directly or indirectly? (I despise those people who believe in HTML5 hype)
  • When you click like, it is because it’s insightful or something you agree or you are just supporting your friend and authority? (try to show support for good stuff, not just the popular stuff)

Maybe it’s my fault 

Then again, I feel like I am the only one noticing the problem, so there are chances that there is nothing wrong with WebCamp KL Facebook Group, the problem is just me: am I too sensitive?

Maybe it because I am not the “Authority” voice (no charm and reputation), yet I like to be vocal at times (I have spent enough quiet days at school, it’s time to speak up). So I have been in the receiving end of what I would like to call “pretentious noob pwning” (I am a noob? NO!!! Haha). Sometimes I pity a newbie got noob-nuked by someone with no respect for others, and the worst case when the mob join in the fray; and the only thing I could do to salvage them is finding something likeable in their comment (hopefully there is one), and click like.

Sometimes, I do feel like refraining from posting anything anymore. The “cyber-bullying” phenomenon is not that serious yet, but I do hope it’s not going to get worse. If WebCamp KL is to be an elite club (natural progression), let it be the elite club with humility and respect, not ego and pwning (head hunter culture) as its core culture.

Use your judgement and power of likes wisely to upkeep the balance, and refrain from personal attack (directly or indirectly, intentional or unintentional).

Tuesday, October 09, 2012

Which 20% to focus on?


20% of work produce 80% of the results
so how do we know which 20% to focus on?

When I first started Malaysia Most Wanted, the vision is pretty simple back then, to allow people to search for restaurants online (online restaurant data was pretty crappy by then). I need to focus on 2 things: data and search.

I build a basic platform (ala crowd-sourcing / user-generated content); try to put in as much restaurant data as possible, and make searching (or discovery) its first class citizen. I continue to maintain the system (not much new features) and feeding it with more data (either manually or through user submissions), and the website grow organically until one day I decided to put more effort into making it better.

I believe all these years I sort developed a MVP product (data + contribution system + search), where I jump to work on the following list of features for various reasons for the past 9 months:

  • Develop a better UI (the old UI does looks 1.0, and investors frown upon it): increase engagement but not traffic.
  • Redo main page from search-centric to discovery-centric (people don't know what they are looking for): feels good, lesser impact.
  • Browse for restaurants by Map (restaurants near you is the way to go, right?): still a fancy tool on website, maybe on mobile apps.
  • Browse for dishes by Photos (Pinterest and Foodspotting, yeah!): it's hard to be both Pinterest and Yelp.
  • Launch a newsletter and encourage user sign-in (the Groupon-way): people like newsletter? not much impact.
  • Launch promotions sections (Paid listing): everything on the Internet is FREE!
  • Establish constant contact with Restaurants Owner (the paymaster): sales is time intensive.
  • Frequents update on FB and Twitter (everyone is on social network, right?): maybe I don't know how to do it right, still learning.
  • Mobile App (everyone need a mobile apps, right?): mobile app adoption is costly and difficult
  • Grant application, Pitching session, TV Reality show, conference, etc. (Securing fund=success, right?): I realize I don't need tons of money to pull this off, thanks to Adsense.

None of these new things had produced significant result (web traffic) for the website. I think I diversified my goals into business model discovery and trying to pivot into social sharing, where I believe I should focus on one thing only at this stage: traction. I have limited resources in terms of time and skillsets (coding=good, growth hack=average, marketing/sale=bad), and I should align my resources (time + skillset) to accomplish my goal (traction).

Which 20% should I focus on?

I am a believer that content is king (+ search), followed by community engagement. Build lots of content, focus on search + discovery, and build a community (encourage them to contribute to the platform, like Wikipedia or StackOverflow).

Forget about business model (at this moment), just focus on building the most effective platform to search and discover restaurants, and painless and fun to contribute information. Everything else is secondary at this moment.

Saturday, October 06, 2012

Review: The Lean Startup


Notes


  • Build, Measure, Learn
  • What is startup? Human institution designed to create something new, under condition of extreme uncertainty.
  • Startup = Experiment to creating a sustainable business
  • Entrepernuership = Management
  • The good entrepernuer doesn't have a better idea than a bad entrepenuer (equally ridiculous), the only different is they don't give up, neither do they preservere into studborness
  • Pivot = change is strategy, not a change in vision
  • Startup Runway = how many more opportunity to pivot before we run out; raise more money to extend the runway or get to the moment of pivoting sooner
  • Learning is used to justify failure; could you fasten the learning from 6 months to 1 months, or by testing the market with a smaller product or no product at all?
  • Innovation Accounting = MVP, weekly pivoting meeting
  • How do products grow? Are we creating value? What's in the MVP? Can we go faster?
  • Don't just listened to me as I am a failure, or I could be lying to you. A true entrepreneur don't take down notes at seminar like this and go back to implement them. What work for me might not work for you, and what work before might not work now. What I hope you would do is take bits and pieces of this scientific framework, experiment with it and tell me what you think.
  • Daily/Immediate release cycle drastically reduce deployment time due to smaller batch size
  • No penalty is releasing MVP early: either you get more customer feedback and promise them a better release, or they actually like the MVP more than the full product (Google search box vs Yahoo portal).
  • Manager's role is big corporation is to prevent innovation, and to continue working on proven methods; if you want innovation  you should employ someone with the job title "Entrepreneur" and put them in a subsidiary or something.
  • Focus on long-term benefits, as you can't do anything meaningful if you just focus on short-term profits.
  • If you are wondering about product-market fit, you don't have it; you launch with the press when you have good results to show (not just fancy product with probably ZERO customers)
  • Product is marketing; in a startup, there is no distinction or silos of department


Monday, October 01, 2012

Interesting: FAKEGRIMLOCK's Minimum Viable Personality

The world is full of boring products, don't make more!
Personality = Interesting = Care = Talk = Win!

3 Questions
1) How you change customer's life? (Superhero)
2) What you stand for? (Awesome)
3) What do you hate? (Boring)



More:

Be On Fire!

Thursday, September 27, 2012

Community-owned Hackerspace


A hackerspace or hackspace (also referred to as a hacklab, makerspace or creative space) is a location where people with common interests, often in computers, technology, science, digital art or electronic art, can meet, socialise and/or collaborate. – Wikipedia

Somehow, I do like the idea of hackerspace. I am a believer if we can group a bunch of passionate like-minded people together, we can do great things together. A comfortable venue for people to easily hangout (on purpose or bumping into each other) is the fundamental of friendship, which foster trust, and eventually allow them to work on projects together (or help each other in various ways), and hopefully form the culture of hacking and creation.

How is hackerspace different from co-working space?

Co-working space is just physical space where anyone can come in to work, equipped with a desk and Internet access for a fee, and perhaps to hold a meeting. You will probably meet all walks of life (not necessary like-minded people), and there is no culture or atmosphere to interact with each other, or to work together. Hackerspace should have the crowd you are looking forward to meet, who understand your lingo, share your passion and can’t wait to help or complement each other.

I believe the infrastructure between a co-working space and hackerspace might be almost similar, but not quite the same (as a Vietnamese told me, same same but different). A co-working place need to provide more rentable places to be profitable, thus the more the table the merrier. A hackerspace should provide infrastructure which encourage experimentation, collaboration, idea & knowledge sharing, and perhaps a quiet space for those who need to concentrate and work. Maybe a lab for hardware hacking, a place to showcase your product so everyone could use it and gave feedback, a reading corner, a place people where people who like to hangout (on weekends as well) because it’s fun and cool.

I might be a software programmer, which I might also be interested to learn about hardware hacking, and I don’t mind trying some art creation. A hackerspace should have enough diversification which can co-exist and complement each other.

Isn’t the existing hackerspace good enough?

I didn’t actually went to any hackerspace before (I am not aware of any which is interesting enough), but I did visit fluentspace once. It’s nice and spacious, with good working chair. Some interesting people work there, some freelancers, some overseas talent on a short visit at Malaysia.

Why I didn’t go there often? I could find myself a few excuses, and let see if it hold:

  • I didn’t know the people there well enough to attract me to the place. Why not go there and make some friends? Well, I’m a shy person. I wish there are some ways to find out who is working there, what are they working on, and find something which interest me.
  • The fee is slightly high for me, RM 600 for a desk and a daily pass of RM 40 per day. I am not saying it’s expensive by market rate, but I am working from home (you can’t beat free). If I am comfortable working from home, why am I looking for a hackerspace? I would probably work from home most of the time (especially when I need to concentrate), but I would like work together with other people occasionally, maybe once a week, or maybe have a more relaxed working day on weekend (btw, fluent space closed at 7pm and weekends). In my mind, I was hoping it would open on weekend for some hacking fun, and perhaps a more flexible walk-in fee (maybe RM 10) for half a day (it’s good for the business if they have surplus).
  • Location: though Kelana Jaya is not that far away from Puchong, but the idea of traffic jam, toll and parking already made me feel tired. It might sounds like a lame excuse, which I agreed this is just a minor factor (it would be cool if it’s within walking distance, or within LRT reach which Puchong have none).
  • Most important is lack of updates on what’s going on there (or who is there working on what), thus nothing to attract me to visit.

How to start a hackerpace?

Personally, I don’t believe a hackerspace should be a business; if you focus (on worry) about profitability, we can’t really provide a real “hacker” experience for the community. Without a business model, how do we sustain the place?

We could borrow the idea from Wikipedia, where every year a donation is held to secure enough funding to run the place for a year. The money come from poor hackers like me, and hopefully some hackers who sold their startup for millions, and perhaps some corporate sponsors like Google, Amazon, Microsoft, MDEC and etc.

We could do it ala Kickstarter way: create a plan, crunch the number, and ask the community if they would like to support the idea. It helps to validate if the idea serve the needs of the community, and the community would get on vote on the location on the 1st hackerspace (follow the majority backers). Those who contribute RM 1000 probably will get 1 year free membership; if you sponsor RM 20,000, you get to name the place (e.g. Hackerspace Professor X).

How to run it?

Trust or Foundation

The place should be managed by a trust or foundation, so that no one party owns the place, and the board members would be elected on a yearly basis (people will move on eventually, and fresh bloods can take over with more innovations and ideas).

Decentralized Structure

I would like to toy with a decentralized structure, where the place is truly run by the community without central management. One thing I dislike about physical office is that the owner needs to be physically present to manage the place (open up, close up, etc.), or employ someone trustworthy (hard to come by) to manage it on behalf; when the worker is on MC, the owner need to run the errant; if the owner is on MC, the place is closed.

For starter, a group of trustworthy people (the keeper) would have access (keys) to the place, so it solves the problem partially where multiple people run the place together in rotation (with backup). What happens when every keeper decide to go on holiday with no one to man the place? How about a member could send a request to enter the place, then the keepers could approve it and perform a remote unlock of door? Or a member could request for a unlock key a day earlier, and use it to enter the place for the day. For this to work, it requires two things: trust and infrastructure.

Trusted Community

A member of hackerspace would be required to create a profile, with your Facebook, Google+, Twitter, Github or LinkedIn so that others could connect with you, and know you a little bit better. You would need to update what are you working on, and what do you hope to achieve by working in hackerspace. Perhaps I am building a Wikipedia for hackers, and I would like to learn about hardware hacking as well.

In order for you to become a permanent member (allow access to the place even at 2am midnight), someone must vouch for you (know you better, make sure you are not here to sell drugs or planning to break-in), or probably a 3 months probation.

A normal member or guest could still use the place when someone is around, though profile creation is still very much encouraged.

Open Source Design

To create a self-governed hackerspace, I believe it requires a certain hardware and software infrastructure, where members would work together to make things to improve the experience.

On the hardware front, we need hacking to allow remote door access, or automatic changing of access code, or a remote lockdown when break-in is detected. Perhaps a smarter surveillance system, notifying the keeper when motion is detected when no one sign in.

On the software front, we need an app to know who is in the house for the day, what they are working on, and what events are planned for the day. Perhaps who is looking for what kind of help, or who is offering what.

We would open sourced such hackerspace infrastructure design, in order to help others create a better hackerspace.

Passport System

Location is the main drawback of a hackerspace, as we can't have a single central space which suits everyone. What we can do is to encourage more people to open hackerspace (with the help of open source design) at their local community, encourage existing hackerspace to form an alliance, or perhaps turn “unofficial” places into a hackerspace (cafĂ©, office sharing, house, etc.).

With a passport system, a member could travel to any hackerspace, either free or with a discounted rate. Most of these hackerspace will share the common infrastructure  (you would know who is there and working on what, so you would feel less like a stranger). With the app, we could easily find hackerspace near us, or any pop-up hackerspace.

24/7

I would like a see a hackerspace which opens 24/7, thus the decentralized structure is required to avoid bottleneck. Some people like ungodly morning hours (5am), some like late nights (2am), and some people only have time on weekends and holidays, and the place should be flexible enough to serve these needs. Sometimes when I am in the flow, and the last thing I need is people telling me to go home because they are closing.

Fee

Not all hackers are equal: some are still struggling with money, while some have some to spare, while others are thinking of ways to share their wealth in a meaningful way. The concept is to pool money from everyone, so that the community could enjoy the benefits.

Most of the setup and running cost are covered by the yearly donation, but fee are still collected to instill commitment, and cover extra benefits like food. Only minimum fee are collected. People could pay RM 200 for a monthly pass, or RM 10 for a day pass, where the fee are fairly negligible with enough flexibility. To encourage new comers, there is a 3 day free pass for first timer.

If you can't afford to pay, we could offer sponsorship in exchange for your work on one of our hackerspace open source project.

Events

I think events are a core part of community. Besides getting speakers to share their ideas and experience, I think it’s nice to have idea validation day, demo day and let’s work on something for the community day as well.

Most events should be suggested by the community, and if it manage to get enough backers, then the show shall goes live; it there is not enough backers, perhaps it’s time to iterate and refine again.

Play Together

Besides hacking together, it's important to play together as well (or at least trying something outside of hacking). Card or board games, organize paint ball sessions or hiking trips; and to test the limit of your comfort zone, a salsa session.

If you insist on going back to geeky stuff, a LAN game or hacking-on-an-island wouldn't hurt as well.

Conclusion


The Cube
I always pass by The Cube in Puchong, which is a RM 4 million semi-d shop house, 3 storeys with plenty of private parking spaces. I always dream that when I make it, I’ll turn one of these baby into a hackerspace for everyone (then again, RM 4 million could do a lot for a startup). Then Setia Walk just opened up, which is a nice community shop+mall (nice environment with water features, and plenty of food), and plenty of office spaces (hopefully affordable). Maybe that would be nice.

Setia Walk
This is not an idea which I alone could accomplish, and even if I am capable of it, it would be meaningless without the community behind it. Some might think that it is just a fancy physical space, but I believe it’s the place which will trigger a shift of culture and mindset. I still remember when I quit my job 6 years ago, not knowing any friends who did the same, and almost dip into depression, but luckily I survive the change. If hackerspace was there, the survival rate would be higher, and the co-operation rate would be higher, and dreams beyond one person’s imagination would come true.

Monday, September 24, 2012

Review: Freedom Inc

I believe this is a good book (or at least I believe in the idea), but sadly it under-delivered by throwing too many elements which make up Freedom Inc. (you know you wanted to create Freedom Inc., yet there are too many ideas and lessons being thrown around). Like most books, at least it has some good case studies.

Freedom Inc. - Free your Employees and Let Them Lead Your Business to Higher Productivity, Profits and Growth. It might seems like a "dangerous" idea to toy with, believing that your employee are motivated and responsible enough to act in the best interest of the company without the need of tight supervision or told exactly what to do, but I believe that's the fundamental trust between employee and employer. Once you establish the trust and freedom culture, everyone start to take responsibility to make the company better, and self-govern among themselves, and the entire eco-system would prosper.

Notes:


  • Management for the 3%: born of policies to control a small bunch and inconvenient the rest.
  • Toyota: allow feedback to improve existing procedures; not push down by management.
  • Believe in people willingness to do good job and to learn.
  • "How" company are fundamentally hostile environments for the ideas proposed by the front-line people.
  • Culture eat strategy for breakfast: you can have the best plan and the culture isn't going to let it happen, it's going to die ...
  • The cost of stress
  • Perceived control reduced stress
  • From Artisan to Automation
  • The experiment of 5 monkey and a Banana - the way corporate cultures are being sustained and eventually squash all attempts at change.
  • Entrepreneurial Culture -> Real Manager Required -> Discipline (procedure & policies)
  • Change start from top -> Anubi Baboom
  • Freedom is neither hierarchy or anarchy
  • Ordered Liberty: self discipline form of organization
  • Rather than saying "you're supposed to use new oak barrel", you ask, "how to make the best wine?"
  • Zappos: after 4 weeks paid training, offer compensation for people to quit, to ensure people really share Zappos' vision.
  • Vision is more often something to be put on the walls, pasted into annual report and otherwise forgotten.
  • People start owning the company's vision only when they are free to make their own decision to pursuit it.
  • If the environment is right, then we do the product right and we make tons of money and have a blast. You can't force making money and have a blast.
  • Freedom: it's culture and condition to make decision on your own, and freedom to express your art, craft and passion.
  • People don't resist change, they resist being changed.
  • Discuss in a town hall style meeting.
  • Organization chart isn't very useful.
  • Natural work group: get the right people come together, to the right work, and do it right.
  • We are here to make products, good products, not hours.
  • We'll learn by doing, being people of good faith, of common sense, and of good will.
  • Does your company organization chart shows that man is not intelligent, lazy, irresponsible, are thieves and bad?
  • The good prince is one who, by eliminating the constraints and exclusiveness, allows everyone to blossoms as he wishes.
  • Front-line people set the procedures.
  • Once you wakup everyday, you're at risk. There is only one state with zero risk, and it happens when you're dead. Talk about "love freedom" with risk "or die".
  • Change CEO's behavior from talking to listening, removing bureaucratic symbol and practices that treat people as intrinsically inferior, and radically transforming managers' "how" habits into "why" questions.
  • Self governance.
  • People treated with consideration, support for growth and self direction, they self-motivate and take initiatives.
  • When environment is controlling and deprives people of their universal needs, motivation become externally controlled and people do only what they are rewarded or punished for.
  • Octicon Culture:
    • Multi-job
    • No department, replaced by project leader, guru to ensure professional standard, mentors to support. No more job title.
    • Computer System: allow work from anywhere.
    • No wall or partitions, replaced by plants and trees on wheel.
  • Employee want to be treated as independent individual who are willing to take responsibility.
  • Employee want to develop within their jobs and gain new experience, exciting and challenging tasks are more important than status and titles.
  • Employee desires as much freedom as possible, yet accept the necessity of a clear and structured framework.
  • The more freedom ... we as a company want to give to staff, the more clarity we must create about mission, vision, strategy and values.
  • When people are promised freedom but then being denied it, reacted more strongly than those who has no expectation of freedom.
  • If he wanted to build a free environment, he had to transform the executives' arrogant attitude towards Aviss front-line person - get them to become trainee.
  • Self motivation and freedom to act as if this is your own company.
  • Personal & fair, de-bureaucratizing and re-humanizing.
  • Illusion of Control: People will game the system.
  • Fairness & Respect.
  • Make more mistakes than anyone else, but never make the same mistake twice.
  • The genuine commitment to satisfying people's needs is what convinced employees to join in.



Saturday, September 22, 2012

Freelance Programmer Survival Manual

Since I am in the process of “retiring” from freelancing, I think it might fun to share some of the things I  learn from freelancing.

The best thing of being a freelancer for me is that I get to do what I love (programming), and able to make an honest living out of it. Besides, I get to work from home (no traffic), and don’t get to blame the bosses and company, though I still need to deal with challenging customers. There are a few painstaking sides of being a freelancer: dealing with customers who didn’t understand or honored the scope of work, some people just like endless meeting and those who refuse to pay up.

Define the Contract

At the very minimum, you MUST have some kind of documentation to record the scope of work in black and white. Though it’s impossible to be 100% foolproof, but physical record is necessary when something goes awry. Besides the scope of work:

  • State clearly what is included and what is NOT included
  • Payment condition (30% upfront, 70% upon completion; if the delay is on the customer side - more than 6 months from project kickstart, the vendor automatically eligible for full payment of work done)
  • Warranty period (2 months)
  • Maintenance Contract (mandatory or not, start automatically after warranty period ends, must be continuous; online or on-site support; what is included, and what not)
  • Adhoc Maintenance (RM 800 per day, minimum one day)


The purpose of the documentation is just to cover our ass when something goes wrong (change of contact person, misunderstanding, dealing with an asshole, etc.). It doesn’t mean we must follow the scope of work 100%, as small freelancing project usually start with slightly incomplete scope and require more flexibility to keep things moving forward. Put in some buffer (no buffer or being too optimistic usually means losing money), and use your wisdom.

A Purchase Order from the customer is very IMPORTANT (it state the customer buying something from you at a price); without such document, you can’t proof the project exist, or proof the total payment amount.

It’s all about the Customer

The challenges of the project largely depends on the person you are dealing with, the customer. After sometime, I begin to grade if the customer is i) a good person ii) demanding type iii) win-lose type. I will give a lower price to a customer who I believe to have good character, and I would hike up the price if he is a demanding or difficult to deal with type, and would run away if I can identify an asshole or someone with unrealistic expectation. The customer affect the time and effort required to complete the project.

[2012-09-28: based on feedback from zalew]
It's true that it's hard to judge someone's character (especially when you just met them), what's more unpredictable scenario such as "he can have partners who will make your life a living hell" or "another person took over the project". It's true that it's always unwise to under-charge, but it pretty much depends on how "desperate" you are (plenty of jobs on hand? charge more. Nothing to do? a little discount to close the deal is better than doing nothing).

When someone ask you to do something for free or give discounts because he will give you more future business, IGNORE them.

If you are dealing with a middle-man, the risk is higher: they might not quite understand the scope of work (wrong information means higher risk of failure), and if the customer don’t pay, the middle-man don’t pay. Most of the time, the middle-man will always take care of their own interest first.

When in doubt, either ask for higher upfront payment (50%) and markup higher, or just run.

When someone ask for under-table money, you know things will just get more complicated in one way or another. DON’T DO IT.

Small is Good

I like small scope with small payment, it’s faster, easier with less complication. If a project is too big, break it down to phases with INDEPENDENT scope of work and payment schedule (if the project got cancelled mid-way, you still get paid for some of the completed work).

Collecting Money

Always take upfront payment, and DON'T start work (besides attending meeting and writing scope of work) before you can touch the money. 30% is the norm, and 50% if the risk is higher. The customer might claim the finance depart is processing the payment (around 1 month), and he require you to start immediately because the project is behind schedule. Ask the finance to expedite the payment, or you can start one month later. Lesson learned: I have a customer who refuse to release the upfront payment because I haven’t completely delivered the project, WTF!

I am lucky that most of my customers are good paymaster, and lately I start to understand why. Most of them are either my friends, my family’s friends or my relatives: meaning I have some kind of personal relationship with them, and if they don’t pay, words will spread to our common friends. Reputable corporation with a close friend working inside is good, and repeating customers are the best.

Middle-man are the worst. I deal with 3 of them before:

  • The first one is a very honorable person, he pays me even though he didn’t manage to collect the payment from his customer.
  • The second one is an asshole. The customer pay him partially, and he keep all the money for himself; when the customer didn’t settle the rest of the payment, he just run away.
  • The 3rd one make excuses about late payment, then run away as well.


You should do the following to protect your interest:

  • ALWAYS put in some kind of licensing control in the software, preferably with a few level of control. If the customer are reluctant to pay, popup reminder (“The trial license has expired. Please renew the license.”) or limit certain features. If it’s clear the customer would not pay, just make sure they don’t get to use your product as well.
  • You are in control as long as the customer continue to use the product. Sometimes the project is abandoned, tough luck.
  • Most of the time, customer will make up some lame excuses for not paying, or claiming you are not doing a good job. Some even try to get you to do more work in order to get your rightful payment for job already completed. Be sober and think carefully of your current situation, and not to be manipulated by the customer.
  • Sometimes it's best to cut loses and get out, so that we could move on and focus on better things.
Funny people could refuse to pay you, insist on continue using your product and still pretend to be rightous. I believe we must treat others as we wish others to treat us, and I am always impressed by someone's distorted reality. The hardest thing to learn is how not to be emotionally affected by them, it just ain't worth it.

When to cut losses?

[2012-09-28: based on question from Anonymous] This is a tough one. 

It depends on do you think the customer is a good person in nature, where you still can reason and convince him, perhaps throw in a bit of goodies to close the deal.

I have some troublesome customers before, where I did throw in extra effort just to close the deal. If it's something manageable with a clear end, proceed to close it. Sometimes customer just like the feeling of getting some upper-hand and freebies; or their bosses wanted something which are in the "grey areas", so do the poor employee a favor if it's not too much (remind them that it's a FAVOR!).

Lately I have a customer which I feel he is taking me for a ride, or perhaps he just have a distorted reality when he always wanted things his way (no exactly a reasonable way). I try to have a discussion with him to come up with a amicable solution, but the conversation just isn't working, and I could smell there are more problems brewing if I continue to work with him. Not that he is an evil person, but he like to be coaxed, like others to bow to his way, and he will probably pay me if I can make him happy (I prefer to keep things professional, ahem ...).

Why did I quit?

The main problem with freelancing is that it’s a repeated full cycle from the ground with each new customer, with is time consuming and high risk (you can’t leverage on something to reduce the effort). Industry wisdom says that to create a sustainable freelance or software business, it all lies with the maintenance contract: knowing you have money flowing in year after year without doing much. Though it might sounds good, but yearly contract also means I take the responsibility to constantly service customers with no escape.

As mush as I like programming, freelancing is still pretty much fulfilling others’ business requirements for a fee, and that isn’t very fulfilling for me.

I found something else which are more interesting and meaningful to me, and I found a way to make a living out of it.

Follow Up

Discussion on Hacker News



Tuesday, September 18, 2012

System Reboot 2.0


A computer could function well for up to 3 years, after which maintenance or upgrading work need to put in place to keep it running up to 5 years; and the same cycle applies to software development.

I develop the first version using raw PHP (no framework, trying to develop my own framework at the same time) with MySQL and plenty of copy and modify JavaScript from other website, and that failed miserably due to high maintenance and low quality work (that version 0.1).

For the next version, I know that I needed a framework, and RoR is pretty hot. I didn’t get to use RoR due to deployment environment constraint, thus I use CakePHP which is a pretty good rail-inspired PHP framework. JavaScript isn’t that complicated about 6 years ago, so just jQuery and plenty of plugins is enough to satisfy the users. The stack runs pretty smooth, except some minor upgrade from CakePHP 1.0 to 1.1, 1.2, 1.3 and I ended at 2.0; eventually a local hosting isn’t flexible enough, thus I opt for AWS.

If it ain’t broken, why fix it?

The current stack had served we well for the past 6 years, and I could probably extend it for a few more years due to the still active framework community and fairly well maintained codebase (after all, I am the only programmer). The benefit of an old stack is that I get high productivity, it’s fairly easy and fast to implement new features and modules because the foundation and supporting library is already there, and I am used to the ins and outs of the system (no more time consuming debugging of a new component). The downside is that I might had made some lousy decisions on how some things should work, and still pay the price to maintain it because it’s too costly to change. The thing is, I don’t know anything bad about the current system, because I haven’t use a better system. I do enjoy the high productivity, but there are always some temptations.

I wanted to develop a new app, and was planning to use the existing stack because it shall be fast and easy. Then again, I admit I am a bit tired of the old stack. I was fascinated by Google App Engine, Python or Ruby, and heard so much about CoffeeScript and Backbone. I might not find the will to upgrade the existing app to a new stack; but if it’s to develop something new, I should probably learn something new as well. Without much logical reasoning, I decided to seek out a new stack.

Reasons for Reboot?


  • Platform: DIY platform vs. managed platform like Google App Engine
  • NoSql vs. RDBMS
  • Temptation of new language: is python and ruby a step forward from PHP?
  • Micro Framework: it less magic and automation a better choice?
  • The rise of JavaScript (perhaps CoffeeScript)
  • Build system for front-end scripts and resources
  • UI and Responsive web design
  • From a publication-centric to user contribution-centric
  • Unloading of old baggage

Google App Engine

I decide to use Google App Engine. I understand the proprietary and lockdown nature of things (with potential of regret if Google screw up), but I do like the idea of being liberated from system admin stuff (webserver and database installation and configuration, security, scalability, etc.). Besides, it had some nice services like Images (Picasa-grade image serving), Memcache and Task Queues. The downside is dependency on BigTable, and with no possibility of exploring MongoDB; though MySql is possible on GAE, but the setup felt like second class citizen. Another downside is I can’t install almost can't install anything on GAE (except pure Python code without disk I/O). There are definitely some advantages and drawbacks, but I choose to let Google handle the platform sociability part.

The road map and bug fixed might be a bit unpredictable, with certain issues remain unresolved for years (fallen into the black hole) and certain feature taking 4 years to arrive. I am hoping things a more matured after 4 years.

Meteor seems like a possible trend, where we don’t even need to manage the webserver or code on it anymore, where the only coding necessary is JavaScript for the browser. Its looks awesome and magical, yet I am not ready to embrace it yet due to the fact that “I lost control of the webserver”, and too much wizardry and automation kind of put me cautionary mode.

NoSql: BigTable

Why use NoSql? It’s because that’s the preferred storage on GAE, and I don’t mind exploring the NoSql way. The big advantage is that you got a really big database where you need it to scale, and schema changing for traditional RDBMS lock up the table big time. I don’t think I would hit such massive scale. I believe there are a lot going on for MongoDB, but sadly it’s not an option opened to me at the moment.

I do like a few cool tricks with BigTable (or NoSql), especially the newer NDB API. It has a few interesting property attributes, such as repeated where you could make a field into list without additional table. With ProtoRPC, you can have enum fields. You can have structured property, it’s like putting another table structure as a column, thus reducing the needs for multiple tables, and inheritance is supported. JSON, GeoPt and Pickle (Python object) are native fields.

The query might be limited (no like statement, no join).

Python

I am bothered by the favoritism gained by Ruby and Python language, and decide to check it out. Language is like a culture (it's about the people and community, with a specific style). PHP doesn’t really have a feature advantage over Java or .NET, I just don’t like strong-typed stuff and enjoy the flexibility of PHP array. Since I am on GAE, python is the way to go for me.

Python style is consistent using underscore convention, with strict indentation and directory structure representing namespace, and elimination of semi-colons and curly braces (which is fine by me). PHP does have a messy naming convention with its core library. I haven’t dig far, with it does have some nice libraries such as WTForm.

Personally, python felt slightly nicer to code in than PHP, and felt more consistent. Another reason is occasional we saw releases of come cool tool and library at Hacker News, and they are usually written in Python or JavaScript. I believe a vibrant community and continuous innovation is important for a language.

Micro Framework

Django is the de facto full stack framework for Python (like Rails for Ruby), but I wanted to try a micro framework instead (less magic and automation). Plenty to choose from such as CherryPy, web.py, Pyramid and Tornado, and I was deciding between Bottle and Flask. I settle for Flask because it seems simpler with less magic, slightly stronger community support and embraces Werkzeug and Jinja2 (good praise from community, existed for a long time). Bottle one file approach didn’t seem like a seller to me.

I really like CakePHP and think it’s awesome, until I tried something more awesome: Flask. It’s lightweight; with less pre-defined structure and more transparency (the code is cleaner, with more control without hacking the framework). It feels more liberated coding with Flask, the blueprints give it a good structure, and flask-appengine-template serve as a good starting point.

The rise of Javascript/CoffeeScript

I realize most of the development work is done on the front-end browser side using JavaScript, thus front-end coding had become more complex and require more structure (a framework). I choose to adopt Backbone (over KnockoutJs and AngularJs) due to the strong community support, with simplistic yet structured nature. I looked in Chaplin for large application development, but I believe the maturity is not there yet, and I would not develop such large application at the moment.

CoffeeScript is love which couldn’t be explained through logicality: it just feels good to code it, with cleaner code, with arguably increased productivity.

Build system for front-end scripts and resources

Front-end web development had gotten more complex that same kind of build or optimization system is required. I started with Brunch with provided skeleton templates which bring me up to speed with the setup, with an application assembler to auto compile CoffeeScript, to merge scripts and stylesheets, with AMD support.

Yeoman seems like a promising star with extra features such as image optimization, might be worth checking out soon.

UI and Responsive web design

It is convenient to utilize Twitter Bootstrap as the UI foundation (grid system, button, forms, etc.). I am still doubtful about the practicality and development cost of responsive web design.

From a publication-centric to user contribution-centric

In my current app (a restaurant review website), I am more focus on publication: the searching and display of information, where the user contribution features isn’t as intuitive as I would like it to be. Think of Pinterest, where contribution could be easily made through bookmarklet.

Unloading of old baggage

Sometimes things are done in a less ideal manner due to inexperience or out of convenience, where we are continuously paying the price through productivity lost, less elegance solution or potential security risk. Correction work seems like too much work for too little value, or it is almost impossible to undo previous mistakes, or the framework is the limiting factor.

To start a new, you get to be plan once more, hopefully with more wisdom and less mistakes.

Conclusion

As a programmer, we always have the tendency to reboot once things started to get messy, or being tempted by new technologies. I admit it’s a bit of both, and I acknowledge the price of productivity lost that I would need to pay, and I do believe the ROI with better design, productivity, performance, features and maintainability is worth the price.

I almost decided to stick with the old stack, but I believe the timing and benefits are at the sweet spot.



Monday, September 17, 2012

Review: Making The World of Software Engineering More Creative by Josh Linkner



 Notes:

  • Creativity Crisis: My daughter was asked to draw a bear in school, and she draw a purple and funky bear, and the teacher says, "that's not what bears look like, go back and redo it". Lesson learned: Don’t take risks, don’t try something new, don’t do something interesting, just do the bare minimum
  • Uglydolls: toy of the year 2007. Disconnection: we teach people to draw normal bear, yet we reward people who design funny bear. Lesson learned: Doing exactly the opposite is what allows us to reach our true potential.
  • Fear: the number one blocker of creativity. You say like, "well what will my boss say? Will I look foolish, whose going to fund this idea? If it was such a good idea somebody else probably would have already said it. If this project goes forward and I’m responsible for it and I screw it up what does that mean to my career?"
  • Creativity as a muscle, where it could be trained through exercised
  • Jazz: 1% of the notes are on the written page and the rest of it you make it up as you go; spontaneous innovation.It’s not that jazz musicians were born more creative it’s that the culture they’ve built enables that creativity.
  • Creativity isn’t only being Steve Jobs and inventing iPod or disrupting an entire field, creativity in the little everyday things can become transformative. How do you conduct your Monday morning meetings? How close is the printer? Can you save a couple of steps? How are you handling quality control? Creativity applied on an everyday basis again can be transformational.
  • Show a random picture, and ask people what is the picture about. We start to make things up.
  • Curiosity is one the key building blocks of creativity. Ask these three simple questions again and again and again. Why, what if and why not? 
    • Example: Why do socks have to be boring? What if socks were colorful and fun and expressive? Why do socks match? Why do socks come in pairs of two you always lose one and that’s annoying?
    • Solution: Little Mismatched, fun and colorful and expressive. You can’t buy a pair of socks that match. They are color coordinated but they don’t match. In fact you can’t even buy a pair at all because they come in sets of 3 or 5
  • Toyota called the ‘5 Why’s’: like the children keep asking why and why, no matter what answer you put up. 
  • Where’s Waldo: You notice everything. All these things you wouldn’t ordinarily see.
  • I looked at the market conditions of the day it was because I aimed at something in the future (no websites back then, now almost every company have one)
  • Facebook isn’t doing this at all and so we are going to win: by the time you complete the product 12 months down the road, Facebook might be doing that as well.
  • Aim at something in the future, use your creativity and innovation to think what’s about to happen not just what’s happening today.
  • Dyson vacuum cleaner: 5100 times of failure. Failure isn’t fatal; instead mistakes are simply the portals of discovery.
    • We are so worried about playing it safe only to learn that playing it safe has become the riskiest move of all.
    • Video: from failure you learn, keep moving forward
    • Sharply criticizing somebody who comes up with a little spark of an idea or letting him go and run and take a couple of risks along the way?
  • Celebrate the failure of the year.
    • Get out of jail free cards: They say take these cards go on a limb be creative and if you really screw something up hand us one of these cards, you’re off the hook no questions asked.
  • Tradition: blindly saluting the flag of the past. Great in the family, deadly in business.
    • Against Tradition: carve the Haloween pumpkin from the bottom: all the goop just plops right out (use gravity), light candle from bottom (no burn) and carry it around with the natural handle on top
  • Pike Syndrome: an imaginary barrier is getting in the way of progress.
    • I don’t have enough resources, I didn’t finalize my (?) my code isn’t tight enough, I’m too tall, I’m too short, too old, too young, I didn’t go to the right school, I didn’t have the right connections.
  • Role Storming: pretend to be someone, and give ideas based on that persona. Pretend to be Steve Jobs, Oprah Winfrey, Charlie Sheen, etc.





Sunday, September 09, 2012

Passion in Startup, how important is it?


I believe most people preach about the need of passion in startup, but I believe most investors don’t care shit about your passion. I believe most entrepreneurs started something because they see the potential, or because they have the advantage, or just by chance; no matter how inspiring the story of someone who turn their passion and hobby into a successful billion dollar company, but how many of us actually started with a passion. Or can you be passionate about money?

Should you be passionate about your business idea? A startup isn’t just about the idea (or the things the startup is supposed to do), but also about developing the business, growth, hacking and perhaps, make money? How many aspect of doing a startup is the founder supposed be passionate about?

As a programmer for a long time, obviously I am passionate about hacking (a more glamorous term for programming). I wanted to be a programmer for life, and I still do, and that’s the main reason I quit my job (so that I don’t have to turn into a manager for the sake of career advancement). I do the occasional cursing, but the power of creation is just too awesome to let go. I might not be the best, but it doesn’t matter, as long as I can create stuffs which I am interested in. Since I can do it well, and love it, so I should do it more often (freelancing and startup seems to fit the profile).

Am I supposed to be passionate about the business idea? One of my early ideas is about Document Management System (the idea is born out of convenience because I used to work for a company which make such product); it might seems like a nice product to build and use, and the market is there, but I didn’t develop it. Then I thought it would be cool to build something to keep track of property prices, since none is available in the market; I did develop it to a certain extent, but didn’t follow through the end. It is not something I am passionate about (property market), just that I happens to be looking for some property during that time. Then I wanted to develop an application to keep track of grocery prices (because I started doing grocery shopping more frequently after marriage), and an application to keep track of events (hoping to find some cool events, but there are only exhibitions and party which I no longer interested in). All the ideas and ventures probably born out of convenience, or to serve my own needs; so far none of them “succeed”, but one survived. I understand that a interesting idea or monetary reward is not enough to make it happen.

I develop a Restaurant Review app, and it did take off in Malaysia. I develop it to scratch my own itch as well, to find good restaurants to bring my girlfriend to. Many thoughts I am good at “Cari Makan” (finding good food), but it’s the exact opposite; it’s because I don’t know where the good food are, that’s why I need an app to help me with it. I always ask myself, why this idea takes off? Perhaps I have some ideas to solve the chicken and egg problems (I apply the same strategy to subsequent apps, but it didn’t quite work), perhaps I am in the right market (restaurant review vs. property/grocery prices) or perhaps I started at the right time (the competitors are fairly weak during that time). Do I have passion for restaurant/food review? I am not quite sure, but I like trying out new places at times, and sometimes I do really need a helping hand to find suitable places (solving my problems). I am not a food critic (contributors), but I would like to find out interesting food places (consumers). Perhaps one of the important elements is that I eat my own dog food: I use the app, and still found it more useful than other apps.

Whenever good ideas crop up in my mind or some friends suggested we work on something together, I always asked would I be passionate about the idea and interested to use the end product; profitability and market size is my last consideration; and a good strategy to penetrate the market is essential (hope for the best doesn’t count).

How do we know that we are passionate about something (in startup context)?

  • Knowing your startup doesn’t make enough money, you will still push on.
  • You will do things to create a better product, a better user experience, a better solution.
  • You try to forget about it or put it aside, but it will still come back to haunt you.
  • You will use the product you created, and feel that it’s the best product.
  • You believe that you could and will do it for life.
  • Whatever makes you doesn’t hate Monday, and probably motivate you to work 7 days per week.

I understand that sometimes we do things for survival out of necessity, and I understand and respect that; but bear in mind that this is just an interim phase, the heart’s desire will outdo the mind’s logic eventually. Sometimes I tried to work on elements which focus on logicality without interest, but I just can’t seems to pull it through: the mind can’t do what the heart doesn’t believe in. Passion could be overrated (it is supposed to be good for you, but not many actually believe it), but I am a true believer. Without passion as the foundation, eventually things will not hold up and fall into pieces. It is not that things will definitely work out with passion, but it probably wouldn't last without it. The mind and heart need to go in sync to achieve happiness, and work is not an isolated part of life which we constantly sacrifice on.

To truly gain freedom in life, we need to find passion and go for the dream :)

Sunday, July 29, 2012

How to Travel?


In the early days of my employment life, I view travel as a total waste of money: you spend money at crazy rate for a few days, and you don’t get anything physical in return; if a buy a toy, at least you get a toy. That is a logical perspective, until one funny day that I realize travelling is something I wanted to do dearly.


In the beginning it just about hanging out with friends, where we did have a really great time together. Eventually I was hooked with hiking and mountains, where I found it to be a liberating escape from the pressure of work. I just need to walk and walk, then have a great meal and rest, where there are almost no worries at all (except the task of packing is a bit daunting). I am a happier man in the mountains with the nature. I do realize I am more of a mountain person than sea person, as the beach is too hot and the water is too salty. I didn’t fall in love with diving, as the world is too dark and quiet (listen to my own breathing); though the environment is beautiful, and I can’t really “touch” it and be part of it, it feels so near yet so far, the diving suit and goggles feels like an aquarium trapping me in it.

I know the standard packaged tour and few days trip couldn’t give me the satisfaction of travelling, where it felt too rush with little time and interaction to let the feeling sinks in. I tried travelling for a month, where the experience at Nepal is all great because of the mountains and changing scenery, and amazing people. Rajasthan in India is photogenic with its magnificent ancient city, fort and temple, but it’s too much of the same: the only exception is Jaisalmer the dessert (tranquility and peace). When I did China, it’s too much city things and people, even the scenic routes are filled with tourists, which make it convenient but mentally tiring. I know I like travel, but the outcome is yet to be satisfactory: I need to learn how to travel.

I know of 3 friends who travel frequently, and view travel as an important part of their life, and each of them travel in different ways, and probably for different reasons as well:

  1. Christine is a good friend whom I met during my trip to climb Mount KK in Sabah, and I am guessing she travels for no less than 3 times per year, each time on a minimum of one week to a few. She lives in Hong Kong and work as a social worker, thus her holidays are limited, but she make use of her time very well. I’m not quite sure why she travels, but I do know she loves it.
  2. Si Theng embarked on a journey to Spain for a year, while sign up for a language class and learning flamingo dance in between, which seems like a good way to travel: school + travel. I am guessing she wanted this memorable and meaningful adventure before she settled down, and now she is busy raising triplets. She is the one where I set the idea of travelling around places for a year.
  3. Recently I met Ian and Maggie, where they decided to make nomad travelling their way of life. They don’t just travel, but they settled in each city for longer duration, engage with the local culture, people and the little things in life, while making a living out of it. So it’s not just travel, but a way of life. They have been on this adventure trip for 18 months.

An interesting question which Ian pointed to me is why would I want to travel, and such simple question seems to trigger a lot to be pondered upon.

  • I like the idea of going to new places, the feeling of a new world, a different culture
  • I wanted the escape, out of the daily routine, with no work and commitment to worry about
  • I like the sense of adventure, with the hope bumping into nice surprises at every corner
  • I like to ponder on how to live a meaningful life, where I felt traveling is a time and experience to rethink life, a “pilgrimage” to discover things; my passion and priority might be clouded by being too engrossed in the daily rituals, and I see travel as an opportunity to disengage and take a step back, hopefully able to see things in a clearer manner
  • Somehow I planted the idea of a yearlong travel in my mind (the bucket list), it feels “right” as something to do before I die
  • I want to learn to travel: not just visiting monuments and enjoy breathtaking view, but to explore the possibility of alternative lifestyle, learning to slow down, learn to appreciate life, and perhaps learn to live the life of another culture (it feels like a mini restart of life).
  • Perhaps there is a certain rebellious nature in me of not wanting the walk the path where everyone expects me to take, but to feel what is it like to take the alternative path.
  • To seek the paradise on earth.
  • Perhaps travelling feels like Freedom.
  • Perhaps I'm figuring things out as it goes, through trial and error, an elimination process through trying, to find what would I really want to do

May it be the excitement of an adventure, or the desire for a change, to understand life better, or enjoying the freedom: I know I should learn to travel, at least for now.


Monday, July 23, 2012

Review: How to find undervalued talent


How to find undervalued talent from Rasmus Ankersen on Vimeo.

3 simple lessons to improve ability to spot talent:


  1. Identify the right talent based on the right competence required: don't give the wrong competency test, or is the test relevant? how relevant?
  2. Raw vs Polished Talent: learn the story behind, is there more room for improvement with better guidance and training?
  3. Character and Mindset: why are you here?

Saturday, July 21, 2012

Life of the Independent Worker


I had quit working for others for almost 6 years (I think, kinda lost count), it is liberated freedom and quite a culture shock as well. Suddenly there is this new found power with no one to report to (and take orders from), and I am responsible for my own well-being with no one else to blame (the days of my company and boss sucks is over).


The Beginning

The beginning of the journey is filled with mix emotions, as I am not used to such great freedom and responsibility. The great thing about employment is the illusion of direction and comfort, where I just need to complete a set of tasks given by the management, and I go home a happy and satisfied man, with enough money my pocket to spend on leisure. When I gain the power to decide on my own life, what the hell am I supposed to do with all these freedom?

So, I figured out some ways to fill in the extra time: read some books, exercise, catch some naps, work on some pet projects, catching up on all the things I didn’t have the time to do. Wait, why did I quit the job again? Because I believe I can do better than my ex-bosses and companies, and there is a really cool project I like to work on. Right, let’s get to work. Code code code, must complete and ship the damn thing and not letting it suffer a pre-mature death. It’s easier said than done, as many didn’t get to execute their idea and dream, and many more didn’t get to finish it. Though I did finish it, but it didn’t gain “success” (in terms of traffic and income).

Partnership

Perhaps it’s time for Plan B: setup a new company with friends (that didn’t work well after a year). The main challenges in partnership are fulfilling each other’s expectations, where everyone should be on the same boat: taking the same risk and shit, and shared the glory. When the risk-shit-glory ratio is unbalance among partners (which could be very difficult to achieve among strangers), the ship is not going to sail far. As much as I envy some of the Silicon Valley dream team, but the fact is partnership seldom work out due to certain human nature, which I have yet to nail it down. Partnership is like marriage, you don’t make backup plan by having an affair outside; you bet your future life and happiness on one girl, and optimistically, there is no turning back. Pack all your things, get on board together and set sail; no looking back, no ship hopping.

Reignited Dream

After the failed partnership, freelancing works well for me for 4 years, until the day I could no longer find the heart to work on stupid projects for stupid people (sorry). The money is there, the challenges had gone stale, and are no meaning left. I wanted to build something which leaves a mark, something of my own creation, something that could get me to work day in day out without reluctance. I do believe in the Maslow hierarchy of needs: when you fulfilled your physiological (food, sleep, etc.), safety (house, stable income, etc.) and love (family) needs, the next level is esteem. For me, I wanted the achievement of building something I always wanted to do, to put those dreams and ideas into action.

Why now? I believe I started with the same kind of dream and passion when I quit the job 6 years ago, but I didn’t make it due to lack of experience and confidence, and clouded by the needs to create a stable income. Now that I have satisfied the basic needs, and gain more confidence through multiple trials; I am ready to relive the dream again, in a bigger scale and higher commitment than before.

What not to do

After embarking on this new journey for about 9 months, I’m still not quite satisfied with the result. I seem to be fairly busy, but yet the work done doesn’t translate to satisfaction; and yet it always seems there are so much more to be done. I rule out a few distractions along the way, where I have decided on
  1. I shall not debate pointlessly on Facebook, as it’s just a thread which are not going to bring about a change no matter who wins.
  2. I shall reduce on attending events, as I am not good at socializing and networking (defeat the purpose), which are the main agenda of events. If I want to learn something or listen to a talk, there are plenty of good ones on youtube and slideshare.
  3. I shall not waste time chasing venture money (or join pitching events), as I suck at persuading people to give me money, and not many investors could provide a meaningful feedback besides the usual business BS; I shall work on projects within my own means, and the only person I need to convince are my users.

Motivation

At times, I am still plagued by either be laser focus on the existing idea, or experiment with some other relevant ideas? Should I keep on maintaining the current development platform or tryout some of the more shinning technology? I understand the need to be focus and push it through until the product reach critical mass or tipping point, and working on existing technology is more economically viable as we focus on production (which create values) rather than research (which cost time and money). My logically mind tend to vouch for focus and production, but my motivation says otherwise.

I used a Kanban + Pomodoro (KanbanFlow) tools to keep track of my time and productivity, and found that under 2 circumstances that I am super motivated and productive.
  1. When there is a deadline: I realize something too up more time than it should, I mentally flag it as critical and I must ship it ASAP no matter what.
  2. When I get to work on something new, either a new idea or a new technology.
I found that I perform below average on the following circumstances
  1. The feature I am working on is boring, but necessary.
  2. Working on the same project using the same technology for too long.
  3. Working on monetization/sales effort, without the elements of fun or adoption impact.

Technology is my friend

I am always intrigued by more efficient, elegant or productive ways to do things. PHP are more fun to code than .NET and Java (too much hassle and structures), and CakePHP is a beautiful architecture compared to raw PHP, and Python seems like a cooler language than PHP, and Flask (and other micro-frameworks) seems to suit me better than a full-stack framework as it provide greater flexibility with less magic, and Google App Engine have some really cools services which I enjoyed (and save me the trouble of server setup and configuration). I know I could not withhold this natural desire for long, so I start to have some fun with new technologies using my Hackweekend project, without affecting the progress the current main project.

Having fun is important

I realize I could not just focus on one product and continue with older technology just because it works, and I also realize the importance to focus by continuously iterating the product. Now I could relate to the Google 20% time project: no matter how cool or important the current project is, we could get bored after working on it for too long, thus we need to reignite the motivation through the 20% time project or hackweekend. It’s a balance, in the sense that we could not spent all our time working no matter how much we love our work; we need to take a break to enjoy a nice meal, watch a movie and have some fun. Such is the case for work; we need small “leisure” project to keep our work life interesting.

Listen to our heart

I believe being an Independent Worker is an interesting journey, filled with challenges and experiments, and most of the time, we could make the decision to follow our hearts, after we learn to listen to our heart.

Being an Independent Working and working on a Startup are part of my bucket list as well.