Monday, September 24, 2012

Using Sublime Text 2 Build Systems, NodeJS and Mocha

Recently, I've been switching between TextMate and Sublime Text 2. The latest feature I've been using quite a bit on NodeJS projects is the Sublime Text 2 Build Systems. Although I don't specifically use the "NodeJS Build System", I do use the Make version with a minor edit to how it pipes its commands through shell instead of its own sandboxed way of doing things. This enables the build system to leverage your current bash settings.

Below is a screenshot of my Sublime Text set to Make build system:


Below is a screen shot of what was changed (~/Library/Application Support/Sublime Text 2/Packages):


A Sublime Text 2 build system is a preconfigured plugin for Sublime Text with associated keybinds to make running tests, compiling the project, and deploying your application easier. It's a productivity monster. People who come from the Visual Studio or Eclipse (Java) world will love it as running your GNU make build system can be as easy as +B (if you're on OS X).

This is the result:


Hope that helps!

If you're wondering what my Makefile has, it's a simple one that invokes Mocha and points to the tests directory, as well as, changes the reporter to be less chatty.

Monday, September 17, 2012

You Only Live Once

"YOLO" stands for "You Only Live Once". From what I've seen, people tend to use this phrase as an excuse to do unlawful or reckless things.

I work extremely hard to be a role model for my family and my teammates. A few years ago, I took a second to reflect on how really successful I've been based on my core values that have matured along the path of life. I'm a firm believer that the test of a person's integrity is based on their values. These are values I am willing to die for and I do what I have to do to uphold them.

Be respectful


Everyone has their own path in life and it's important that you respect their decisions. Never impose a belief or work ethic on someone -- but inspire them to be better and encourage them to make a difference in others' lives.

Be professional


We always come across someone in life that is nasty to you, or your family, or your teammates. This should never phase you. The best thing you can do is be professional and just be positive.

Be relentless


Work your ass off. Set the bar high and leave no stone unturned in whatever you do. Search for the best in the people around you and amplify it.

Be selfless


Never expect someone to pay you back for your kindness. The only way to inspire people to be a better person and improve is go out of your way to support them without expecting something back. Being a mentor and being positive is extremely infectious.

If you only live once, why not live to inspire others to be better? Make a difference.

Monday, September 10, 2012

LiveBolt: Cloud-based deadbolt automation -- Cheap hardware integration and cloud computing

Cloud Computing has disrupted the way we build software today by reducing infrastructure costs dramatically. Five years ago, in order to even start building an application, you would need to put down several hundred thousand dollars to pay for servers. Now? Free while you're small and then scale up when you've got users (Windows Azure / Heroku). In today's blog post, I wanted to quickly blog about the reduction in costs on hardware that integrates with cloud services.

I am talking about LiveBolt, the winners of the Tech Crunch Disrupt hackathon. For only $60, you get a mount that integrates with your door's deadbolt and you can get entry-level home automation. In only a few hours, this team was able to ship an MVP that provides instantaneous home automation. The value proposition here is that you can easily get into your house without using keys (which are annoying to have... I'd rather use my iPhone to unlock/lock things).

The future is bright as we continue to hack together solutions that bring value -- I always emphasize "hack" as a way of describing a solution with a short time-to-market and obvious value proposition. Infrastructure costs and hardware costs are going down which allows us to pave the way to the future with innovation and creativity.

Keep hacking away and solving problems!

Thursday, September 6, 2012

Designing the Amazing Insights Logo

Amazing Insights is a real-time server analytics and logging application that any .NET developer can easily integrate into their existing solutions. When designing the Amazing Insights logo, there were a few core characteristics that needed to be accentuated to empower the brand:

  1. High Performance
  2. Confidence
  3. Well balanced
With these 3 characteristics of Amazing Insights, I set out to look for inspiration. 

 I finally came to BMW M logo as a source of creativity as I was walking near a Best Buy and saw an M6 parked in the front.

The BMW M has a global reputation to be BMW's high performance line up in any class. The classes include M3, M5, M6, M-Coupe, and M-Roadster. If you want a high power vehicle within the BMW brand, you had to get an M.

In regards to confidence and balance -- I went with higher font size A and I but a smaller font for the rest of the letters. In trying to project confidence, everything is uppercase and the grid lines up perfectly to speak to its solidity. With power, comes the need for balance. In order to gain balance, one needs to provide control. In the Amazing Insights logo, the base is lined up perfectly and the stripes (//) with the A are exactly 2 pixels apart giving it 3 stripes.

On the whole, ABC is moving forward on sales, branding, and product development. Thank you all for the wonderful and honest feedback.

TransLink rolling out Fare Gates

Translink will be rolling out new Fare Gates which automate the process of validating tickets. This a great initiative. In the article, it denotes that having this system in place will generate $4 million dollars annually. Let's be honest though -- $4 million at SkyTrain's scale (500,000 daily users) is chump change -- There's more tha. At best case, let's say 50% of the people in daily usage are 3-zone and out of the 50% we have 10% that are not paying for 3-zone bus passes and end up paying twice a day at $5 a ticket (2 ways).

250,000 * 0.9 * $7.55 ($151/20 work days assumption) = $1,698,750
250,000 * 0.1 * $10 = $250,000
Total = ~$2million revenue per day based on 3-zone daily users (best case scenario). These super rough numbers don't even count 1-zone and 2-zone. Based from experience on using the SkyTrain every work day even sometimes on weekends for the last 7 years -- There's no shortage of people coming from Surrey. I actually think most customers are from Surrey based on how packed it is during rush hour (7am to 9am and 4pm to 7pm).

Taking this even farther, I don't believe the goal for Fare Gates is to make the customer's transportation experience better -- it isn't to make their lives more easier, safer, or more comfortable. It is to ensure they can implement more automation and reduce the man-power (guards) required to keep the operation going. This is just what needs to happen to run at their scale. So the question I have is will reducing the number of guards at each station make customers feel more safe? I doubt that.

Let's think for a second and say TransLink lays off 1,000 guards. Let's also assume that each guard is about $100,000 per year (base salary, vacation, health insurance, sick days, etc). That's $100,000,000 in savings with a $20,000,000 investment in automation (FareGates). Furthermore, I'd like to describe my perspective as a daily user.

The fundamental problems (as a daily user of SkyTrain) are scale and safety. People think of TransLink as a fantastic way of getting between Surrey and Downtown Vancouver. It is; however, it comes with its own set of problems. Those problems include drug addicts / violent drunks causing problems on the train, civil disputes randomly starting, and gradual rising costs of monthly transportation passes.

I fully understand that when running a business, the most expensive resource in staying alive is the people. People are expensive. Moving forward, automation is the key to saving operational costs -- but I think that TransLink will need to be more vigilant than ever to ensure the safety of their customers and the scalability of the system as a whole. There are far too many people using SkyTrain during rush hour and customers need a way to feel safe and comfortable without costing an arm and a leg on monthly transportation passes.

Tuesday, September 4, 2012

Thoughts on Responsive Web Design

As part of our core initiatives to make ABC more user-friendly, I've redone the homepage (landing on master very soon) to be more mobile-friendly and gives a clearer perspective to the end user on the value that our suite of tools provide. Incidentally,  this included using common patterns found in Responsive Web Design practices. After working through a 6+ month old site, I've come to realize that media queries can be an absolute nightmare for older sites -- but none the less, there is always a solution: find the highest value pages and give them a responsive interface.

In our particular case, our primary goal was to increase conversion of user registrations (I think most startups have this as a common goal). That said, we've RWD'd the homepage and I'm currently moving towards the product pages now including CodeStorm (devops social network) and Amazing Insights (real-time logging and analytics for Windows Azure). 

With lessons learned, when starting a new project, I'd look at Twitter's Bootstrap project. It is an amazing UI library that comes with grids and reusable components. Additionally, as long as you set the viewport meta element and include its responsive stylesheet, you can get a fully responsive website in a matter of minutes. That said, this comes with assumptions. The assumption is that you're using the same grid system as Bootstrap. Adding to that, Bootstrap's documentation is fantastic: it is full of examples and provides notes on limitations/caveats/gotchas.

At the end of this effort, I ended up just rewriting the company front-end to be in line with Twitter Bootstrap's examples. The out-of-the-box responsive web design you get from following the markup structure is extremely valuable in that you can continue to RWD all your pages with the least amount of worries for specific use cases.