Development, Hardware, Musings

Always good to learn new things (even with PHP)

2012-09-12 Singapore PHP User Group Meetup


Hardware hacking (RaspberryPi) with PHP
GPIO Libraries

Restler for PHP Restful api
Behat (BDD for php)

Facebook groups



Conference, Development, Musings

Things I learnt at Apps World Asia 2011 (Singapore Suntec Convention)

Had the opportunity to present and also attend session at Apps World Asia 2011. Jotted down a few notes (still trying to summarize the content and will probably take awhile).

Presentations I’ve found interesting (not see rest on Slideshare yet)


  • Mobile helps to enable
    • Improved Global Distribution
    • New features, updated content (fast) and adapting to new habits with a new distribution medium
    • Increase revenue with one-click buying (convenience)
    • Lower the barrier to purchase (cost)
    • Flexibility allows experimentation to what works (and what does not)
  • Understanding Local is important in a Global world (Culture)
  • Freemium approach to monetization is becoming very common
    • Give away free (viral) and encourage in-app purchases (long tail)
  • Good Content (Editorial) raises quality and draws repeat readers
  • “It’s about the users”
Development, Musings

A snapshot of what I’m interested in via Delicious and bit more on how I work in general

Just a quick post about how I approach projects/tasks/requests/anything in general. Something for me to review when I’m another 10 years older in 2021.

It’s a habit of mine that I call the RTFM first before asking anyone practice. It’s something I see lacking in some people who are developers and usually I stop talking too much to them.

Starting quite early, I generally found reading first, then asking was a better way to generally not be an idiot about asking silly questions too much. Of course, with the internet (was more like BBS via a 9.6kbps modem), it made it a lot easier to search first, then ask (which got lesser and lesser as more info is put online).

Delicious when they launched was a godsend for the tonnes of bookmarks (all lost now in some major hdd erase). Everything is neatly tagged when I remember to do so but generally 5.4k bookmarks gives quite a bit of insight into what I’m interested in.

The first bookmark was from 4th Oct 2005 and titled “Drag & Drop Sortable Lists with JavaScript and CSS“.

As of July 2011, here’s the top 10 tags

The most surprising? Singapore at 294! Never knew I did so much research into the country I’ve been in for way too many years.
The one year spent on EVE online and continued interest in the serious business of Internet spaceships probably tells me I should work on the technical topics more 😉
After I do a bunch of research, it’s time to experiment,hack around till I understand enough to use it in a project. It can take a long time but it’s usually worth it when you consider that a developer should never stop learning and definitely not stick to just ONE language/skill.
Never be afraid to experiment, fail and try again. That’s where the LEARNING comes in.
Development, Musings

Challenges of being a remote Scrum Master

It’s not easy when one is a Scrum Master remote from the entire team! I’ve heard a few times now that it’s rare and a real challenge to work with.

So why do I do it?

  1. Business Unit requires a tech guy. There’s no technical folks in the local office!
  2. Dev team requires a tech interface for the business unit.
  3. Someone thinks its necessary and hired me for the job.
  4. I like the challenge!

Challenges faced

  1. A lot of non-verbal cues get lost in communications and sprint planning.
  2. Missing out on building the team culture and practices.
  3. It’s not easy to help solve a problem with external factors via Skype/Phone.

Does Scrum help?

  1. The practices recommended (Daily Scrum, Sprint Retrospectives) aim to shorten the feedback loop for delivery of features (user stories). It’s really useful when your entire team is not in the same country.
  2. Daily Scrum is done via Skype and everyone’s on a common Skype channel throughout the day. This helps simulate being in the same room although there is a fair bit of communication gone missing in virtual setup.
  3. Sprint Planning is planned in such a way that both Product Owner and myself are with the team during this period with the team. This means a LOT of flying but it’s also helpful to reduce conflicts and ideally get better planning.
  4. Measuring metrics like Velocity, Operational Efficiency, Reliability, etc helps to let management have visibility into the team’s performance.
Development, Musings

Lot of time flying these days and more time to read

Past 3 months have gone by rather quickly. With a new opportunity and managing a new team in KL, lots of challenges are encountered with the remote meetings and daily scrums.

Attend Certified ScrumMaster conducted by Jesse Fewell in KL from 8th to 10th November. The great part? I’m now a Certified ScrumMaster! With one year or more of practice, I’ll be applying to be a Certified Scrum Professional.

Scrum is a relatively common sense approach to project management, I’ve enjoyed learning about the process and how it reacts to dynamic business needs. For teams who are new to process (as in my team), it’s definitely challenging as it requires a high level of transparency to daily work and significant openness to embrace change. There are many barriers to bring a team to such a level ranging from old attitudes and behavior and tendency for most people to be very reserved with their opinions.

Couple of books have helped open my mind to how a business can benefit from having a sense of urgency and not being complacent about their success.

Leading Change

A Sense of Urgency

Our Iceberg is Melting: Changing and Succeeding Under Any Conditions

Managed to read this in an hour or so while waiting for RT to start. Good book to read after you’ve read the previous two. Found myself laughing at some parallels to real life. They may be penguins in the story but lots of people behave a lot like that.

Managing Virtual Teams: Getting the Most from Wikis, Blogs, and Other Collaborative Tools

Currently we’re using Pivotal Tracker (coincidently met JB Steadman from Pivotal Labs Singapore during a networking session) with Google Docs for most real-time collaboration of documents.

Skype has been tremendous in helping bridge communications but I think Mumble or Ventrilo might be better to maintain better comms. Video might also be necessary soon as a lot of times, facial cues are an important part to communication

The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise

There are a lot of interesting lessons to learn from this book, still 1/3 of the way through it but the topics on hiring, capacity planning and team dynamics is a good read.

Coaching Agile Teams: A Companion for ScrumMasters, Agile Coaches, and Project Managers in Transition


A year of projects with ST701, Singapore Press Holdings

In the course of a year with ST701 (2009 to 2010), I had quite a bit of fun creating up a framework for PHP Content Management from scratch rather than using the familiar Joomla or WordPress. Didn’t quite manage to use Drupal in the end since I wasn’t involved in the project. Got to cover quite a bit of jQuery and front-end work with some very talented web designers and developers. Parenting and Spree was more enjoyable (looking back) as it involved more product planning  and discussions.

ST701 - Nurture your child

ST701 - Nurture your child

Custom framework with Content Management, Forum, Event Organizer Profiles and Contest Submission

ST701 - Spree

ST701 - Spree

Custom framework with Content Management, Forum, Social Profiles, Dispute Resolution, Group Purchasing and Shopping Cart

Jason Yee's Online Trading Journal - Trade Transactions

Jason Yee's Online Trading Journal - Trade Transactions

Custom framework for Trading Activity Recording



Customization of Dating Portal



Custom framework for Content Management, Online Appointment Booking and Product Catalog

Chrissie Signature

Chrissie Signature

Customization of Magento

Pocket Bag - Reusable Bag

Pocket Bag - Reusable Bag

Custom framework for Content Management, Product Catalog and Order Management

Summerblue Trading Admin

Summerblue Trading Admin

Custom framework for Content Management, Product Catalog and Shopping Cart


Fix for Dreamweaver CS 4 : Server Model SSI.htm: has configuration information that is invalid

Came back from a CS 5 Roadshow and Dreamweaver CS 4 decides to go a bit wonky.

The following translators were not loaded due to errors:
Server Model SSI.htm: has configuration information that is invalid.

Fixing it with these steps (thanks to Sachin (link))

  1. Close Dreamweaver, if it is already open.
  2. Open this folder: “C:Documents and Settings[username]Application DataAdobeDreamweaver CS4en_USConfiguration”
  3. Delete the file “WinFileCache-7A9586CB.dat“
  4. Start Dreamweaver

Installing iPhone OS 4.0 beta on the iPhone 3GS

The recent announcement of iPhone OS 4.0 beta brought some interested features for developers. I’m still pretty new to iPhone development and was trying to figure out how to update my phone. Below are the instructions once you’ve downloaded the IPSW file to update the firmware.

Installing iPhone 4.0 beta on the iPhone

  1. Make sure to have downloaded the iPhone 4.0 beta firmware that relates to your iPhone (e.g. 3GS).
  2. Extract the firmware IPSW to a folder.
  3. Connect the iPhone to your computer.
  4. Get the UDID registered on the iPhone Developer program. Provisioning Portal > Devices > Add Devices
  5. Open iTunes and click Restore while holding the Shift key (for Windows) or Option key (for Mac).
  6. Locate or browse to the firmware IPSW.
  7. Wait for iTunes to unpackage and install the firmware.

UDID can be view in 2 ways:

  1. In Xcode, navigate to the ‘Window’ drop down menu and select
    ‘Organizer’. The 40 hex character string in the Identifier field is your
    device’s UDID.
  2. OR In iTunes, select your device in the ‘Devices’ section and navigate to
    the Summary tab. Click on the Serial Number label to reveal the
    Identifier field and the 40 character UDID. Press Command+C to copy the
    UDID to your clipboard.

Quick way to create patch files based on modified date with xcopy

Recent projects and deployment method made it difficult to simply publish changes to a web server. Had been doing it manually (check for modified files, copy and transfer) and thought it was wasting too much time each day when change requests occur. After some quick research, I realized that the simplest method would just be to use the good old “xcopy” command in windows. (this is why command prompt tools should be taught in schools). For a quick refresher on batch commands, read

I realize that a proper source control (like Git or Subversion) would be nicer but in my case, a simple batch file is just easier to work with.

Copy and paste the following code in your deployment folder that will create a patch folder based on last modified dates of working files.


@echo off
ECHO Usage : events [patch-num] [m-d-y]

SET SRC=c:xampphtdocsevents
SET DEST=c:deploymentevents

IF (%1)==() GOTO END

ECHO Copying files modified on %2
xcopy %SRC% %DEST%%1 /D:%2 /S /C /I /Y

FOR /F “tokens=1-5 delims=/ ” %%a in (“%date%”) DO SET year=%%c
FOR /F “tokens=1-5 delims=/ ” %%a in (“%date%”) DO SET month=%%b
FOR /F “tokens=1-5 delims=/ ” %%a in (“%date%”) DO SET day=%%a

SET TODAY=%month%-%day%-%year%
ECHO Copying files modified on %TODAY%

xcopy %SRC% %DEST%%1 /D:%TODAY% /S /C /I /Y

@echo on