“"Who is Apple and what is it that we stand for? Where do we fit in this world?" - Steve Jobs”

Steve Jobs speak about the essence of branding that you should focus on your core values instead of what you trying to sell. It becomes a seed that you can grow on in your marketing message.

Nike sells a commodity, they sell shoes. And yet when you think of Nike you feel something different than a shoe company. In their ads, as you know, they don’t ever talk about the product, they don’t ever talk about their air soles, how they’re better than Reebok’s air soles. What’s Nike do in their advertising? They honor great athletes and they honor great athletics. That is what they are about.

Nike is all about great athleticism, Apple believes that people with passion can change the world for the better.

There you have it, next time when you struggle to describe or do design work for your startup. 

Be Good and stand for something

How to test Rack middleware with RSpec?


Rack middleware is incredibly simple and powerful, it allows you to decouple logic into a layered architecture.

We have identified a simple pattern when we are building many Rack middlewares for our Issue publishing platform.

The trick is to utilise both Rack::Request and Rack::MockedRequest objects.

Now, I have followed this pattern and converted DHH’s SSL requirement rails plugin into a rack middleware in less than 10mins.

Rack it up

Photo by paavani@flickr

“With a bad idea, you’ll have a ton of competitors, with a good idea, some competitors — but with a great idea, you are your only competitor.”
— A thought. (via sefsar)



Muhammad Ali vs Street Fighter in Rue Saint Denis, Paris

I have a large white wall in my apartment this needs to be on.  Immediately.

(via parislemon)

Shop2 at Angelpad Demo day


Demo Day

Day of, I was standing behind the curtain where 130 investors sat waiting to hear our pitch on the other side.  All of us in the program were anxious. I recall waiting to deliver my presentation and thinking,

We have spent many, many months of programming, 10 weeks in the accelerator program working with our team in Sydney across timezones. It’s all coming down to these 3 minutes.

It felt like the backstage of a boxing match.

The Shop2 Story: A Shoppable Magazine Curated by Brands & Bloggers

The pain point is this— brands struggle to mobilize their content. It’s fragmented in multiple sites and ultimately gets lost or forgotten. Consumers don’t yet have a consolidated, tablet-friendly interface to access shoppable content that is optimized by discovery.

Shop2 provides a solution by allowing consumers to create their own edition of a shoppable magazine, designed for tablets first. Shop2 captures fashion editorial and shoppable content around brands and styles into a magazine-like experience.

From UNSW Incubator to Angelpad

Shop2 is also part of UNSW Incubator inside of University of New South Wales, where they were selected by a committee including Maurice Pagnucco (UNSW CSE) and Alan Noble (Director of engineering, Google Australia).

It is amazing to see how fast the Sydney startup community is growing. It spread from incubator to co-working space and now to Universities

Angelpad is a incubator based in San Francisco, founded by Ex-googler Thomas Korte. Korte takes a hands-on mentor approach where he works closely with 12 startups over 10 weeks at Angelpad’s HQ offices. The program provides valuable experience, education, coaching and collaboration to participants.

I have an a-typical Angelpad application experience.  I got an email from Thomas Korte on Thursday, had a skype call on Friday, and was then asked to jump on the plane on the next day because the class started that Monday. It was an opportunity I simply could not pass up. We feel very fortunate.

A Necessary Market Shift

With brands like Net-a-Porter becoming more like a media outlet in that they produce editorial and rich media content, mobile devices and tablets are becoming the next first point of brand experience with consumers. As Korte touched on in his Tech Crunch TV interview with the rise of couch computing and tablet computing, brands have a unique opportunity to interact directly with consumers.

A shoppable magazine for tablets is both a novel and strategic marketing channel that delivers content, discovery and shopping all in one consolidated interface. Shop2 is building the shopping magazine of the future that is social, personalised and shoppable. You can request a beta invitation or follow our startup journey on AngelList.

Minimal viable marketing for tech founders

Gebreid jongenspakje

Technical founders often struggle at marketing, or maybe it’s just me. I’ll list three things that I’ve learnt from startup marketing.

Customer development

Engineers are obsessed with crafting beautiful solutions using interesting technologies. They think what are the cool stuff they could create with their power.

However, those who follow Eric Ries’ would understand that “you can build anything these days.” It’s more important to validate what you are building is wanted by someone even before you commit to building it. Specifically:

  • Does it solve the right problem for the right customers?
  • Who are the customers and where to find them?
  • What is their pain point and why do they need your product?

By questioning yourself honestly early on, you force yourself to validate is what you dream up a real problem that deserves your invaluable time and effort.

Some resources I found useful are Cindy Alvarez’s “how to find people”, and a video from mixergy for a crash course into customer discovery.

Stop networking, start making friends

“Networking isn’t my thing” and I’d rather build something to show you rather than laboring my point in words. As an Asian I have learnt the importance of 關係 (GuanXi) , or connections. There’s a saying that you need connections if you ever want to be successful doing business in Asia.

This is also true for tech founders. It’s about getting other people to understand your idea and maximize your chance of success. If they understand your goals, they’re able to preempt potential roadblocks and proffer useful advice, or refer you onto relevant sources.

You don’t have to suddenly become a car salesmen. You just need to be yourself, be genuine and tell your story with passion. I find that preparing a polished 30 seconds pitch about your idea is really helpful.

“Do your work with your whole heart, and you will succeed - there’s so little competition.” - Elbert Hubbard

It’s important to pay attention to other people’s needs as well. Networking isn’t only about self-promotion. It’s also important to offer help for reciprocal benefit. I believe it’s about forming deep, meaningful and lasting relationships that open up future opportunities rather than 20 five-minutes chatters.

Start a blog and learn social media

If you are a startup tech founder without a blog, you need to learn blogging. Blogging forces you to understand copywriting, and embodies an internal habit of articulating eloquently what’s in your head.

Lessons you learnt from blogging and promoting your blog post on social media will help you to build your online profile and awareness around your ideas and projects.

It took me a while to convince myself to blog and even longer to start one. It’s important to know that blogging is part of the foundation of any good marketing. Still not convinced? Do yourself a favor: read “Should I start a blog?


Startup is no longer a technical problem. It’s somewhat a team problem (right people, right skill) but more importantly a marketing problem. Are we “building something people want”? If you’re a solo tech founder, who has learnt the minimal amount of marketing, you have an improved chance of success or finding a business partner.

What is your minimal viable marketing hack that worked for you? Please share it in the comments section below, i’d love to hear it.

Couch speeding

I gave a talk “Couch Speeding” yesterday at November 09 Roro ruby group meetup. There are a few common performance issues when dealing with couchdb database and i have shown a few tips and solutions that i have found over the past months.

Play FPS with real gun

This is something me and my buddies talk about a lot in the past, today i have found one on youtube actually did it.


Setup Xapian and Ruby binding on Ubuntu server

Today, I need to get my Xapian setup with Ruby 1.9 on my Ubuntu 8.04 vps and there are very little documentation on setup Xapian and ruby, so I decide to share and cover some information on the setup process.

In the past I have introduced Xapit in a post Fulltext search your CouchDB in Ruby, It is a Xapian fulltext search toolkit for ruby and it’s easy and extensible, also i have added a CouchDB adapter to Index your CouchDB database using Xapit.

Here is a list of documentation about installing Xapian,


Latest ubuntu package for Xapian i can find is 1.0.4, so i decide to download the latest package of xapian-core and xapian-bindings from the official website.


wget http://oligarchy.co.uk/xapian/1.0.14/xapian-core-1.0.14.tar.gz
tar zxf xapian-core-1.0.14.tar.gz
cd xapian-core-1.0.14
./configure && make && sudo make install

xapian-ruby binding

xaipan bindings contains language binding to many languages including ruby, python and php.

wget http://oligarchy.co.uk/xapian/1.0.14/xapian-bindings-1.0.14.tar.gz
tar zxf xapian-bindings-1.0.14.tar.gz
cd xapian-bindings-1.0.14

./configure && make && sudo make install 

If you have a alternative ruby interpreter such as (ruby 1.9 or REE) then you need to pass in the location of your ruby interpreter during setup.

./configure RUBY=/opt/ruby1.9/bin/ruby1.9
make && sudo make isntall

Quick Test

A quick irb session will reveal if everything has gone smoothly.

irb(main:001:0>require 'xpaian'
=> true


Now you have successfully installed xapian and it’s ruby binding. Checkout acts_as_xapian or xapit if you are looking for a fulltext search solution in your Rails application.

Testing Rails on Ruby 1.9 using Rspec + Remarkable


When I started developing with Ruby on Rails last year and one of the remarkable thing I have found is the test-first cultural of the ruby community. There is a exhausted list of TDD/BDD/stubing/mocking libraries, sometime it’s frustrating to get a good setup that is simple enough to maintain.

I consider myself as a newbie in TDD and instantly loved the syntax of Rspec and it’s expressiveness, but dislike it’s complexity. Finally, there it comes the Shoulda and find all the validation/association testing macros are really time savers.

As you can see, I stepped into Ruby 1.9 and find little information about a nice setup testing your ruby application in Ruby 1.9. Shoulda didn’t work for me and found it wasn’t Ruby 1.9 ready at that time (couple months ago) and things may(or not) have got better.

It forced me to look for alternative, and i discovered…


Remarkable is a framework for Rspec matchers that supports macro and internationalization. Remarkable-rails allowed Shoulda style testing in Rspec.

Those macros enables simple validation/association testing on your ActiveRecord models and It ran straight out of the box for Ruby 1.9.

It has remarkable taste

# It has your style. You can choose between:
it { should validate_numericality_of(:age).greater_than(18).only_integer }
it { should validate_numericality_of(:age, :greater_than => 18, :only_integer => true) }

should_validate_numericality_of :age, :greater_than => 18, :only_integer => true

should_validate_numericality_of :age do |m|
  m.greater_than 18
  # Or: m.greater_than = 18


In general Rspec works on Ruby 1.9 but it depends on a test library (test-unit) that isn’t part of ruby 1.9 standard library anymore.

Stay with good old test-unit with this particular version that works, you need to remove any newer version you have. (hint: gem update)

gem install test-unit --VERSION=1.2.3


It’s description speak for itself.

Fixtures aren't fun. Machinist is.

Remarkable setup for Rails

Finally I would like to share this remarkable setup that i used for many rails project. All gems are included as gem dependencies for test environment.


Testing stack

config.gem "rspec", :lib => false
config.gem "rspec-rails", :lib => false
config.gem "remarkable_activerecord", :lib => false
config.gem "remarkable_rails",  :lib => false
config.gem "notahat-machinist", :lib => "machinist", :source =>"http://gems.github.com"


RAILS_ENV=test rake gems:install


I find the experience testing in Ruby 1.9 is faster and more responsive. As a side note, however, I was actually planning to replace test-unit completely with minitest and gotten to a point it works perfectly for non-rails project, please let me know if you have solved it or have similar experience.

I hope you enjoy this post as part of Ruby 1.9 series i am writing.