Surviving a Hackathon and Beyond
Edmund Kwok, Chief Technology Officer (CTO)
Think in
components
Don’t reinvent the wheel
Focus on MVP / core
features
Get out of the
building
Always learn /
experiment
Comment your
code
Use a VCS
Be part of the
community
Have Fun!
Before
During
After
Always
About me..
• Started off as Freelance Drupal Site Builder / Developer /
Themer in 2004
• Clients in US, UK, UAE, Singapore, India, Malaysia
• Studied Psychology for 2 years, dropped out after interning
at a Startup
• Full time as iMoney CTO, Employee #2 in January 2013
• Email: edmund@imoney.my
• Twitter: @edkwh
• #1 Financial comparison site in the region - Malaysia,
Singapore, Philippines, Indonesia, Thailand, Hong
Kong
• Compare financial products and apply online, for
FREE!
About
• #1 Financial comparison site in the region - Malaysia,
Singapore, Philippines, Indonesia, Thailand, Hong Kong
• Compare financial products and apply online, for FREE!
• Product, Marketing, Operations / Call Ops, Admin and
Tech Team
• Tech Team - 4 developers (including me), 2 UI / UX, 1
iOS / Android
About
Think in
components
Don’t reinvent the wheel
Focus on MVP / core
features
Get out of the
building
Always learn /
experiment
Comment your
code
Use a VCS
Be part of the
community
Have Fun!
Before
During
After
Always
What should you do before,
during and after a hackathon?
Don’t reinvent the wheel
Focus on MVP / core
features
Before
1. Core Features and MVP
• What problem are you trying to solve?
Ask ‘Why’ until
you get to the
core of your
idea
1. Core Features and MVP
• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
Pareto’s Principle
Small Problem
20%
Main Problem
80%MVP
20%
Product
80%
1. Core Features and MVP
• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email
validation, animations, parallax, cron, machine
learning, world domination etc
• Trim, trim, trim, lean lean lean
1. Core Features and MVP
• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email
validation, animations, parallax, cron, machine learning,
world domination etc
• Trim, trim, trim, lean lean lean
• Build UI later but still focus on UX - deliver a functional
product
Beautiful, but not too
practical?
Which was more functional?
1. Minimum Viable Product
• What problem are you trying to solve?
• Focus on core features, must haves VS nice to haves
• Skip extra functions - user registrations, email validation, cron,
machine learning, world domination etc
• Trim, trim, trim, lean lean lean
• Build UI later but still focus on UX - deliver a functional product
• MVP = Minimum viable product, not minimum vegetable / value
product
1. Spend some time to see what’s
out there before writing code
2. Don’t reinvent the wheel
2. Don’t reinvent the wheel
There’s a FRAMEWORK for that
Yo dawg!
We so need a real time framework that we
can build real time shizzles with.
Meteor.js
https://www.meteor.com/
2. Don’t reinvent the wheel
There’s a PLATFORM for that
Yo dawg!
What about our own Analytics tool to track
visitor behaviour?
Piwik
http://piwik.org/
2. Don’t reinvent the wheel
There’s a LIBRARY for that
Yo dawg!
Maybe a kick ass tool that creates
interactive data visualisations?
d3.js
http://d3js.org/
2. Don’t reinvent the wheel
There’s a SERVICE for that
Yo dawg!
Gah, we need to setup a backend
infrastructure to support our mobile app!
Parse
https://www.parse.com/
2. Don’t reinvent the wheel
There’s even a THEME for that!!
Fundify - The WordPress Crowdfunding Theme
http://themeforest.net/item/fundify-the-wordpress-crowdfunding-theme/4257622
Yo dawg!
Let’s build a crowd sourcing site for
Malaysia!
2. Don’t reinvent the wheel
There’s a MODULE for that
Yo dawg!
I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There’s a PLUGIN for that
Yo dawg!
I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There’s a COMPONENT for that
Yo dawg!
I just though of this cool XYZ idea!!
2. Don’t reinvent the wheel
There is an APP for that
Yo dawg!
I’m sure this is not out there!! An app that
tells you when a watermelon is ripe to eat!!!
Melon Meter
https://itunes.apple.com/us/app/melon-meter/
id450015952?mt=8
1. Spend some time to see what’s
out there before writing code
3. More time to focus on your
solution and deliver a functional
app
2. Use and integrate what you
need (not everything you want)
2. Don’t reinvent the wheel
• PHP https://packagist.org/
• JS http://microjs.com/ | http://www.jsdb.io/
• Ruby https://rubygems.org/
• iOS http://cocoapods.org/
• Node.JS https://www.npmjs.org/
• Themes http://themeforest.net/
2. Don’t reinvent the wheel
Think in
components
Comment your
code
Use a VCSDuring
3. Think in components
• Separate out components - modules / objects /
entities / sections / pages / screens
• Common & shared vocabulary when discussion with
team, reduce confusion of being vague or ambiguous
• Easier to track logic flow

Easier to reuse

Easier to extend

Easier to read code

Easier to collaborate
Insights CRM
Insights
DB
Publishers
Mobile
App
Call
Operators
Mortgage
Consultants
Webapp
Analytics
…
Mortgage
Admin
Management
Leads DB
Leads
Collector
4. Use Version Control
Systems
• Maybe ‘no time’ to use a VCS, but small investment
that goes a long way
• What if you need to revert back to a code that was
working perfectly 45 minutes ago?
• Undo undo undo undo undo undo undo undo, copy,
redo redo redo redo redo redo redo redo paste

or

Undo undo undo undo undo undo undo undo, copy,
accidentally hit ‘z’ = GAME OVER, redo history gone
4. Use Version Control
Systems
• Very useful for solo developers:

MyAwesomeCode-old.php

MyAwesomeCode-new.php

MyAwesomeCode-newer.php

MyAwesomeCode-newest.php

MyAwesomeCode-even-newest.php (?!!)
• Vital when working in teams - merge code safely with
different developers working concurrently
• Quicker & cleaner deployment - only changes are
brought in with git pull or git-ftp
• GitHub Flow - branches are cheap and easy
• Every new stuff is branched off master
• Everything merged to master
• git co -b NeedToShower

git add ..

git commit -m “Awesome code that solved water crisis”

git co master

git merge NeedToShower
4. Use Version Control
Systems
5. Comment your code
• Helps you remember what you were doing, clarify your
intentions
• Makes it easier for team members to pick up where
you left off
• But avoid unnecessary comments. As much as
possible, let the code speak for itself
When you’re a zombie, your code will eat your
brains!!!

(But your code comments will stop the rot and save you! :D)
See more comments!
• http://stackoverflow.com/questions/184618/what-is-
the-best-comment-in-source-code-you-have-ever-
encountered
• http://stackoverflow.com/questions/143429/whats-
the-least-useful-comment-youve-ever-seen
Get out of the
building
Always learn /
experiment
Be part of the
community
After
6. Get out of the building
• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
6. Get out of the building
• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
• Then move to neighbours, colleagues, trusted friends
who will be honest, critical, opinionated, but above all,
supportive
6. Get out of the building
• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins,
• Then move to neighbours, colleagues, trusted friends
who will be honest, critical, opinionated, but above all,
supportive
6. Get out of the building
• Get feedback from people who would use your
product - especially those who would pay for it
• Start with your mum, dad, brother, sister, cousins.
• Then move to neighbours, colleagues, trusted friends
who will be honest, critical, opinionated, but above all,
supportive
• Are you Running a Business or an Expensive Hobby?
7. Always be learning / experimenting
High rate of learning = exponential gains
https://medium.com/@KyleTibbitts/56dddc17fa42
• Get off the Island - explore other languages,
technologies, expand your mind, challenge yourself,
go beyond your comfort zone
• Examples:

Meteor.JS - Real Time framework

Puppet / Chef - Provisioning servers

Vagrant / Docker - VM for consistent development

Leaflets - Open source mapping library

Google Prediction API - Machine learning API
7. Always be learning / experimenting
Technologies we use
8. Be part of a community
8. Be part of a community
• Get questions answered & know better ways of solving
a problem - Stack Overflow, Quora, etc
• The more you share, the more you gain
• Earn community-cred - build portfolio of open source
code, get noticed, gain customers!
8. Be part of a community
• Get questions answered & know better ways of solving
a problem - Stack Overflow, Quora, etc
• The more you share, the more you gain
• Earn community-cred - build portfolio of open source
code, get noticed, gain customers!
• Part of a bigger global community / movement
• Come for the code, stay for the community
> 3,000 at DrupalCon Portland 2013
Have Fun!Always
9. Have Fun!
• It’s not always about winning and losing
• Make sure you learn, meet new people, make
connections
• Start conversations, joke, laugh, keep the spirits high
• Not the end, but the beginning of greater things
Think in
components
Don’t reinvent the wheel
Focus on MVP / core
features
Get out of the
building
Always learn /
experiment
Comment your
code
Use a VCS
Be part of the
community
Have Fun!
Before
During
After
Always
1. 2 weeks to build an idea. If good,
expand idea, if not, move on
2.Use modules, plugins, frameworks
3.Shared vocabulary with Tech,
Product, Marketing, Management
4.Git - Bitbucket with 20+ repos
5.Always Be Code Commenting
6.a. CEO gets feedback from mum.
Friends comment on Facebook
6.b. Call existing customers to ask
them about service, experience,
what they like / don't like
7.Learn and use new languages,
framework, platforms
8.Join community events,
contribute open source code
9.Have team events - Laser Tag,
Durian buffet, laughter
We run mini Hackathons at
1 2
3 4 5
6 7 8
9
Btw, we’re hiring :D
Senior Web Developer
(Drupal preferred)
• Engineer solutions for pain
points, build cool stuff
• Continuous learning and growth -
AngularJS, Symfony2, Node.JS,
Python?
• Work on Development, UX, CRM,
Architecture, Infrastructure,
Scaling, Mobile Integration,
Machine Learning, Big Data
• Make the world a better place
http://im.my/hiremelah
1/6 of our team
–Steve Jobs
“A lot of times, people
don’t know what they
want until you show it
to them.”
Good stuff!
• Sh*t Entrepreneurs Say 

http://www.youtube.com/watch?v=alZqXA4R2dI
• Epic 80's Entrepreneur Training Video

http://www.youtube.com/watch?v=VcYwtEToZfQ
• Entrepreneurs can change the world

http://www.youtube.com/watch?v=T6MhAwQ64c0
Email: edmund@imoney.my
Thank you! Questions? All the best! :)
http://im.my/hiremelah

Surviving a Hackathon and Beyond

  • 1.
    Surviving a Hackathonand Beyond Edmund Kwok, Chief Technology Officer (CTO) Think in components Don’t reinvent the wheel Focus on MVP / core features Get out of the building Always learn / experiment Comment your code Use a VCS Be part of the community Have Fun! Before During After Always
  • 2.
    About me.. • Startedoff as Freelance Drupal Site Builder / Developer / Themer in 2004 • Clients in US, UK, UAE, Singapore, India, Malaysia • Studied Psychology for 2 years, dropped out after interning at a Startup • Full time as iMoney CTO, Employee #2 in January 2013 • Email: edmund@imoney.my • Twitter: @edkwh
  • 3.
    • #1 Financialcomparison site in the region - Malaysia, Singapore, Philippines, Indonesia, Thailand, Hong Kong • Compare financial products and apply online, for FREE! About
  • 8.
    • #1 Financialcomparison site in the region - Malaysia, Singapore, Philippines, Indonesia, Thailand, Hong Kong • Compare financial products and apply online, for FREE! • Product, Marketing, Operations / Call Ops, Admin and Tech Team • Tech Team - 4 developers (including me), 2 UI / UX, 1 iOS / Android About
  • 9.
    Think in components Don’t reinventthe wheel Focus on MVP / core features Get out of the building Always learn / experiment Comment your code Use a VCS Be part of the community Have Fun! Before During After Always What should you do before, during and after a hackathon?
  • 10.
    Don’t reinvent thewheel Focus on MVP / core features Before
  • 11.
    1. Core Featuresand MVP • What problem are you trying to solve?
  • 12.
    Ask ‘Why’ until youget to the core of your idea
  • 13.
    1. Core Featuresand MVP • What problem are you trying to solve? • Focus on core features, must haves VS nice to haves
  • 15.
    Pareto’s Principle Small Problem 20% MainProblem 80%MVP 20% Product 80%
  • 16.
    1. Core Featuresand MVP • What problem are you trying to solve? • Focus on core features, must haves VS nice to haves • Skip extra functions - user registrations, email validation, animations, parallax, cron, machine learning, world domination etc • Trim, trim, trim, lean lean lean
  • 18.
    1. Core Featuresand MVP • What problem are you trying to solve? • Focus on core features, must haves VS nice to haves • Skip extra functions - user registrations, email validation, animations, parallax, cron, machine learning, world domination etc • Trim, trim, trim, lean lean lean • Build UI later but still focus on UX - deliver a functional product
  • 19.
    Beautiful, but nottoo practical?
  • 22.
    Which was morefunctional?
  • 23.
    1. Minimum ViableProduct • What problem are you trying to solve? • Focus on core features, must haves VS nice to haves • Skip extra functions - user registrations, email validation, cron, machine learning, world domination etc • Trim, trim, trim, lean lean lean • Build UI later but still focus on UX - deliver a functional product • MVP = Minimum viable product, not minimum vegetable / value product
  • 26.
    1. Spend sometime to see what’s out there before writing code 2. Don’t reinvent the wheel
  • 27.
    2. Don’t reinventthe wheel There’s a FRAMEWORK for that Yo dawg! We so need a real time framework that we can build real time shizzles with. Meteor.js https://www.meteor.com/
  • 28.
    2. Don’t reinventthe wheel There’s a PLATFORM for that Yo dawg! What about our own Analytics tool to track visitor behaviour? Piwik http://piwik.org/
  • 29.
    2. Don’t reinventthe wheel There’s a LIBRARY for that Yo dawg! Maybe a kick ass tool that creates interactive data visualisations? d3.js http://d3js.org/
  • 30.
    2. Don’t reinventthe wheel There’s a SERVICE for that Yo dawg! Gah, we need to setup a backend infrastructure to support our mobile app! Parse https://www.parse.com/
  • 31.
    2. Don’t reinventthe wheel There’s even a THEME for that!! Fundify - The WordPress Crowdfunding Theme http://themeforest.net/item/fundify-the-wordpress-crowdfunding-theme/4257622 Yo dawg! Let’s build a crowd sourcing site for Malaysia!
  • 32.
    2. Don’t reinventthe wheel There’s a MODULE for that Yo dawg! I just though of this cool XYZ idea!!
  • 33.
    2. Don’t reinventthe wheel There’s a PLUGIN for that Yo dawg! I just though of this cool XYZ idea!!
  • 34.
    2. Don’t reinventthe wheel There’s a COMPONENT for that Yo dawg! I just though of this cool XYZ idea!!
  • 35.
    2. Don’t reinventthe wheel There is an APP for that Yo dawg! I’m sure this is not out there!! An app that tells you when a watermelon is ripe to eat!!! Melon Meter https://itunes.apple.com/us/app/melon-meter/ id450015952?mt=8
  • 37.
    1. Spend sometime to see what’s out there before writing code 3. More time to focus on your solution and deliver a functional app 2. Use and integrate what you need (not everything you want) 2. Don’t reinvent the wheel
  • 38.
    • PHP https://packagist.org/ •JS http://microjs.com/ | http://www.jsdb.io/ • Ruby https://rubygems.org/ • iOS http://cocoapods.org/ • Node.JS https://www.npmjs.org/ • Themes http://themeforest.net/ 2. Don’t reinvent the wheel
  • 39.
  • 40.
    3. Think incomponents • Separate out components - modules / objects / entities / sections / pages / screens • Common & shared vocabulary when discussion with team, reduce confusion of being vague or ambiguous • Easier to track logic flow
 Easier to reuse
 Easier to extend
 Easier to read code
 Easier to collaborate
  • 42.
  • 43.
    4. Use VersionControl Systems • Maybe ‘no time’ to use a VCS, but small investment that goes a long way • What if you need to revert back to a code that was working perfectly 45 minutes ago? • Undo undo undo undo undo undo undo undo, copy, redo redo redo redo redo redo redo redo paste
 or
 Undo undo undo undo undo undo undo undo, copy, accidentally hit ‘z’ = GAME OVER, redo history gone
  • 44.
    4. Use VersionControl Systems • Very useful for solo developers:
 MyAwesomeCode-old.php
 MyAwesomeCode-new.php
 MyAwesomeCode-newer.php
 MyAwesomeCode-newest.php
 MyAwesomeCode-even-newest.php (?!!) • Vital when working in teams - merge code safely with different developers working concurrently • Quicker & cleaner deployment - only changes are brought in with git pull or git-ftp
  • 45.
    • GitHub Flow- branches are cheap and easy • Every new stuff is branched off master • Everything merged to master • git co -b NeedToShower
 git add ..
 git commit -m “Awesome code that solved water crisis”
 git co master
 git merge NeedToShower 4. Use Version Control Systems
  • 48.
    5. Comment yourcode • Helps you remember what you were doing, clarify your intentions • Makes it easier for team members to pick up where you left off • But avoid unnecessary comments. As much as possible, let the code speak for itself
  • 53.
    When you’re azombie, your code will eat your brains!!!
 (But your code comments will stop the rot and save you! :D)
  • 55.
    See more comments! •http://stackoverflow.com/questions/184618/what-is- the-best-comment-in-source-code-you-have-ever- encountered • http://stackoverflow.com/questions/143429/whats- the-least-useful-comment-youve-ever-seen
  • 57.
    Get out ofthe building Always learn / experiment Be part of the community After
  • 58.
    6. Get outof the building • Get feedback from people who would use your product - especially those who would pay for it • Start with your mum, dad, brother, sister, cousins.
  • 60.
    6. Get outof the building • Get feedback from people who would use your product - especially those who would pay for it • Start with your mum, dad, brother, sister, cousins. • Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive
  • 62.
    6. Get outof the building • Get feedback from people who would use your product - especially those who would pay for it • Start with your mum, dad, brother, sister, cousins, • Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive
  • 65.
    6. Get outof the building • Get feedback from people who would use your product - especially those who would pay for it • Start with your mum, dad, brother, sister, cousins. • Then move to neighbours, colleagues, trusted friends who will be honest, critical, opinionated, but above all, supportive • Are you Running a Business or an Expensive Hobby?
  • 67.
    7. Always belearning / experimenting High rate of learning = exponential gains https://medium.com/@KyleTibbitts/56dddc17fa42
  • 68.
    • Get offthe Island - explore other languages, technologies, expand your mind, challenge yourself, go beyond your comfort zone • Examples:
 Meteor.JS - Real Time framework
 Puppet / Chef - Provisioning servers
 Vagrant / Docker - VM for consistent development
 Leaflets - Open source mapping library
 Google Prediction API - Machine learning API 7. Always be learning / experimenting
  • 70.
  • 71.
    8. Be partof a community
  • 72.
    8. Be partof a community • Get questions answered & know better ways of solving a problem - Stack Overflow, Quora, etc • The more you share, the more you gain • Earn community-cred - build portfolio of open source code, get noticed, gain customers!
  • 74.
    8. Be partof a community • Get questions answered & know better ways of solving a problem - Stack Overflow, Quora, etc • The more you share, the more you gain • Earn community-cred - build portfolio of open source code, get noticed, gain customers! • Part of a bigger global community / movement • Come for the code, stay for the community
  • 75.
    > 3,000 atDrupalCon Portland 2013
  • 76.
  • 77.
    9. Have Fun! •It’s not always about winning and losing • Make sure you learn, meet new people, make connections • Start conversations, joke, laugh, keep the spirits high • Not the end, but the beginning of greater things
  • 79.
    Think in components Don’t reinventthe wheel Focus on MVP / core features Get out of the building Always learn / experiment Comment your code Use a VCS Be part of the community Have Fun! Before During After Always 1. 2 weeks to build an idea. If good, expand idea, if not, move on 2.Use modules, plugins, frameworks 3.Shared vocabulary with Tech, Product, Marketing, Management 4.Git - Bitbucket with 20+ repos 5.Always Be Code Commenting 6.a. CEO gets feedback from mum. Friends comment on Facebook 6.b. Call existing customers to ask them about service, experience, what they like / don't like 7.Learn and use new languages, framework, platforms 8.Join community events, contribute open source code 9.Have team events - Laser Tag, Durian buffet, laughter We run mini Hackathons at 1 2 3 4 5 6 7 8 9
  • 80.
    Btw, we’re hiring:D Senior Web Developer (Drupal preferred) • Engineer solutions for pain points, build cool stuff • Continuous learning and growth - AngularJS, Symfony2, Node.JS, Python? • Work on Development, UX, CRM, Architecture, Infrastructure, Scaling, Mobile Integration, Machine Learning, Big Data • Make the world a better place
  • 83.
  • 84.
  • 86.
    –Steve Jobs “A lotof times, people don’t know what they want until you show it to them.”
  • 87.
    Good stuff! • Sh*tEntrepreneurs Say 
 http://www.youtube.com/watch?v=alZqXA4R2dI • Epic 80's Entrepreneur Training Video
 http://www.youtube.com/watch?v=VcYwtEToZfQ • Entrepreneurs can change the world
 http://www.youtube.com/watch?v=T6MhAwQ64c0
  • 88.
    Email: edmund@imoney.my Thank you!Questions? All the best! :) http://im.my/hiremelah