Skip to main content

Posts

Showing posts from 2012

2012 Retrospective and 2013 Resolutions

Another year goes by with more lessons learned in entrepreneurship, finance, leadership, compassion, and most of all love (for what I do and who I care for). Before I dive into the different topics, here's a quick glance at what I've been doing this year:

Travel - Went to Edmonton for my buddy's wedding
- Went to Las Vegas for a bachelor's party
- Went to Winnipeg for my cousin's wedding

Lifestyle - Read Good to Great - Re-read Rework - Re-read Mythical Man Month - Read Game of Thrones (A Storm of Swords)
- Started singing again along with voice exercises - Lost 20lbs

Technology - Started building mobile applications using Titanium instead of the usual PhoneGap.
- Started writing apps for the Play framework
- Did far more test automation on client-side and server-side
- Deployed mobile services to Heroku and setup continuous deployment via Jenkins/Heroku
- Started deploying more apps on Windows Azure either C#.NET or NodeJS
- Developed several graphing solutions u…

My Social Networks

I've been diving into different social networks recently and I've come to realize that the world needs more of these. With the rise of social networks, it's easy to describe the whole ecosystem as a large mansion. Each room represents a social network and we use a series of a hallways to get to different rooms (APIs).

Facebook (The Family Room) I love how Facebook has given me the ability to re-connect with my family. As a man who is extremely family oriented (people who know me know how much I care about my family), Facebook has given me the visibility I need to know how really happy each family member is. For example, most of my "Family" smart list has a lot of baby pictures, weddings, celebrations. Although my family is distributed across the world (Philippines, London, Winnipeg, and Vancouver), it is great to know that my family is in good shape.

In addition to family on Facebook, I use the Timeline as my own personal photo album and life experience audit log…

We Were Young: Staying Motivated and Inspiring Teammates

Historically, leadership has been illustrated as a person who sits on a throne -- the Don Vito Corleone -- the one who yells out orders, commands respect, as well as, disciplines his/her team mates if they make mistakes. In essence, this has caused generations of children to seek out leadership practices that are ineffective in today's corporate and startup culture. While it is always great to be a hustler, a person who is ceaselessly trying to achieve goals -- one should never be blinded by someone's level of motivation in comparison to their composure and integrity.

We were all young at one point where we believed we were invincible. Being invincible meant status --  no one could sway your judgement and no one could tell you you were wrong. As a person evolves through out their life in regards to career and family, they start to become less stubborn. From forging new relationships, rekindling old friendships, and experiencing the roller coaster of life, a person ends up ste…

Using Yeoman, Jenkins in Continuous Integration

Yeoman is a tool that will concatenate and minify your scripts, as well as, run JavaScript unit tests (JasmineBDD) inside a PhantomJS instance. It's fast and easy to integrate into your existing continuous integration process. At present, we have Jenkins as our work horse who will do the following upon each push to a specific development branch:
Concatenate all JavaScripts based on a Gruntfile (GruntJS with NodeJS)Run JSHint on the concatenated JavaScript file (call this all.js)Minify the generated concatenated JS file (call this all.min.js)Run "yeoman test" to execute all the JavaScript specs against the concatenated JavaScript fileThis should fail the build process if any specs fail or if JSHint chokes At this point, you could ship the assets over to CDN on Amazon CloudFront or Windows Azure Blob (CDN) to further reduce latency for your users.
Below is a shell script that can be easily modified to fit your needs:
yeoman concat min --disable-insight --no-color rm -r…

Re-reading Rework

Rework is a fantastic business book for all levels of entrepreneurship. I use this book as a way of reconnecting myself with reality. I'm naturally always relentless and sometimes I find myself slowly being blinded by the passion I invest into my vision. In the time that I've been doing startups (2 years ago), I've learned a great deal of things that I will always know I can transfer into the next venture. I love what I do and I love building products that connect people in valuable ways.

In tying into the things that Rework outlines, leverage is one of the most important things to use in any type of process you use in business. If there's a tool you will allow you to put in 20% of the effort but output 80%, you'll find yourself moving faster than your competition and investing that extra time in refining your product. Being stuck in the trenches where you are frantically trying to figure out what features will grow your platform's user base can be a stressful…

CodeStorm: Answering the question of how to build stronger software engineering teams

With CodeStorm, we're always thinking about what makes software engineering teams hustle. From the tools each team member uses, to the process, to the internal and external initiatives set forth by higher level leadership.



After watching Moneyball (2011), it tells the story of how Billy Beane reconstructed his team and rethought how to build a stronger, better baseball team on a vastly lower budget than his competition. While everyone else in the Baseball industry was using archaic ways of recruiting based on experience and intuition (paying the highest for the rockstars), Billy Beane disrupted everything by recruiting on a specific metric -- On Base Percentage. The interesting thing here is that the players he recruited on his team were undervalued -- they weren't all stars -- and they were all passionate about their craft. In the end, the moral of the story is that the sum of the team is greater than each individual part put together. Moneyball was an incredibly inspiration…

It's not about me, it's about the team

Practicing servant leadership for the past few years, I've always made the effort to make every person and team I come across better -- through amplifying their confidence, increasing their ability to execute on tasks/missions, as well as, provide them with inspiration to chase after goals that they are most passionate about. There is greatness in everyone -- it's always my goal to amplify that because win-win situations can only be achieved if the whole team is greater than the sum of its parts. This is how you grow determined, energetic, positive learning teams based on mastery and purpose.
In looking at different perspectives on the definition of leadership, there has always been this ongoing misconception of what "leadership" is. People seem to think that rank is what makes you a leader. Partially. Generally, the graceful and professional actions of a leader in a number of situations definitely lead to them moving up in rank but to be a true leader is based on w…

Valuable tips for students wanting to get into Software Engineering

Software development and technology moves extremely fast. It's an ever-changing landscape of different tools, platforms, and initiatives. With such a fast-paced discipline, I've been hearing questions from students wanting to get into software engineering, such as, "what are a few things I need to do in order to land a job with a team that's just as passionate as I am?"

Let's face it, being a software engineer is the hottest career right now. There's a war for talent where companies (startups and large corporations) are fighting over the best of the best software engineers that are leaders in their respective masteries (backend, frontend, mobile, games, etc). We're in an age where the cost of technology is so inexpensive thanks to cloud computing and continuously evolving toolsets. In addition to this, teams are now practicing lean. Lean is a simple way of quickly testing viability and value proposition by shipping fast and shipping often. This means…

The Rise of Apps in Windows 8: Why you should join up for WOWZAPP hackathons!

When Microsoft commits to surfacing a new platform for new experiences, new business ventures, and new technologies, they usually go big. To me, this is a strategic opportunity for anyone that is a software developer as it opens up so many doors from a career perspective and at different levels of professional networking and talent acquisition.

From November 9th to November 12th, there will be a WOWZAPP Microsoft-hosted Windows 8 hackathon where there will be onsite Microsoft software engineers and technical evangelists to help you get up and running. This is a great opportunity for a developer wanting to make a name for themselves as Windows 8 is a compelling new operating system that will set the bar for business applications, games, and social media touch points for the next few years!

Come to the hackathon with your ideas on solving issues in a specific problem-space!

Cheers,
Jaime

Plenty of Fish - Lessons Learned Meetup

Today, I had the fantastic opportunity of going to a retrospective by Plenty of Fish. As you may know, Plenty of Fish is the largest online dating site and it was all started by a local BCIT graduate named Markus Frind.





Below are notes that were taken on my iPhone. I do apologize as I am continually editing this blogpost.


What is Plenty of Fish? An online dating site.
Why enter the dating market? Back in 2003, it was the only thing that was interesting to build. Markus already knew ASP but wanted to learn more about building web applications with ASP.NET and improve his skills on his resume. 
How do you deal with the network effects problem? In the early days, Plenty of Fish gained traction through Vancouver and Toronto.  There wasn't any silver bullet or magic around it -- Plenty of Fish heavily relied on organic user growth and SEO. The focus was to retain users more than go out and acquire new ones.
What are some early challenges you faced? Markus actually ended up doing every…

Running MongoDB on Windows Azure

It has been an exciting journey so far in trying to grow the Vancouver Windows Azure meetup with my business partner Jef King. Our mission has always been to inspire the community to build solutions on top of Windows Azure -- Since the release of many different SDKs, developers are now able to bring value to their users easily with common technologies. These technologies include Python, NodeJS, PHP, and Java. We are now at over 130 members with 10+ meetups that average 30 people coming out.

Check out the video! John Woakes, lead software developer from iQmetrix done a brilliant retrospective on running MongoDB on Windows Azure for the past few years. It's been an exciting ride for him and his team!

Cheers,
Jaime

Inspiring talk by Kyle Vogt, co-founder of Justin.TV/Twitch.TV

Truly inspiring talk -- especially where he dives into the trough of sorrow. Here are the notes I took in regards to the 16 lessons learned:

Buy catered lunch -- employees would be waiting at long lineups or walking far just to get lunch -- Keep them at the office so they can socialize.Use Google Apps -- Simplifies email, calendars, and document sharing.Use data-driven development -- metrics on new features / AB TestUse hiring screenersKeep your job interviews shortDon't hire a PR firm -- Marketing associate instead, leveraged his own connections..full time thinking about the productPut one guy on fund-raising -- This should be a focused initiativeWork from home -- You don't need an office nowadays, keep costs down... need one room for a separate phonecallUse the cloud while you're small -- don't buy actual hardware unless you're a hardware company.Listen to your users the right way -- Users can tell you what's wrong..not what they want, observe the pain points…

Why I wrote node-twitchtv, a NodeJS client for TwitchTV API

I use twitch.tv daily -- some of the main gamers I follow are nl_kripp, kungentv, kingkongor, and reckful. They're really . The mission is simple for Twitch: connect gamers with their audiences, anywhere and anytime. It is open sourced on Github and can easily be integrated into your existing NodeJS solutions by using "npm install node-twitchtv".

After searching on npm for a TwitchTV / NodeJS client, it seemed like no one has attempted this. I decided to take the deep dive and give it a shot. In part of the design for this module,
Round 1: Retrieving basic data like games, channel streams, users
Round 2: Authentication with OAuth2 (server-side workflow)
Round 3: Video streaming as easy as "npm install node-twitchtv" (once the APIs are open)

Where I was going with this: NodeJS runs on all platforms now, it even runs flawlessly on Microsoft's new Windows 8 operating system (which uses the same tools for Tablets and PCs). My heroic vision was, If you wanted t…

Lessons Learned from Titanium SDK

It's been fun hacking together projects that integrate with Facebook's Graph API. In a matter of a few minutes, I was able to get login working, fetching friends, relationships, and profile information. Titanium team has been doing an amazing job at providing examples and documentation.
Don't trust the comments in Q&A section
Sifting through pages and pages of questions and answers that seem somewhat relevant to your issue will take an exhausting amount of time. Adding to that, some answers are 3 years old! I don't even know why they keep that sort of information around -- it is incredibly misleading. I really wish they would move to StackExchange.
Dig into the Objective C libraries
When I couldn't understand why I wasn't able to set http headers using the out-of-the-box HTTP Client in JavaScript, I figured out that there are only specific times you can set HTTP headers. Thankfully, I built a Service Locator and Service class that poly-filled everything fo…

Using PHP and Git-based Deployment on Heroku without Facebook Apps

Getting PHP up and running on Heroku is easy. Although you can easily deploy PHP applications on your own traditional web hosting provider (Monster Hosting, 1&1 Hosting), PHPFog, or Windows Azure, in this blogpost, we quickly go through how to get up and running on Heroku.

Just before going into it, a while ago, there was a partnership announced between Facebook and Heroku. As an application developer, if you wanted a place (for free) to deploy your social application, you could use Heroku -- and you would have a lot of automation behind setting up your canvas/tab configuration. This was back in the day when they had Page Tabs!
Traditionally, developers would use web hosting companies like 1and1 where you needed to pay a small amount per month and you would have a web site; however, the question was, "will it scale?". Being on a platform like Heroku, Windows Azure, PHPFog gives you the options you need to scale accordingly based on your social application's virality…

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 O…

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 an…

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 h…

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:

High PerformanceConfidenceWell 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 p…

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 …

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 projec…

Windows Azure Mobile Services: The Hacker Way

Microsoft recently released Azure Mobile Services, which allows your teams to quickly create a data store and a few operations (insert, update, delete, read) to quickly start pushing/pulling data from your mobile clients (iOS, Android, Windows). I call this "back-end as a service" or "BaaS". Furthermore, It is becoming a hot topic for the past few months as Parse is currently tackling the same problem space. It turns out, there are many more companies in the same arena. Also, to point out, the Microsoft team actually built that with NodeJS / SQL Server.

The value in BaaS is in its ability to provide mobile hackers a quick way to prototype (create an MVP) without having to think about the back-end architecture. This is quite powerful because thinking about architecture might put you down a path that slows down your team's momentum. It is definitely needed -- but not for creating an MVP and putting it infront of real customers and then taking in feedback.
Mobile …

Autonomy, Mastery, Purpose -- Software Engineering

Software engineering is hard. We all know from a technical perspective, we hit our heads against the desks trying to figure out solutions to problems that have the most constrained environments and it's up to our ingeniousness to think outside the box and solve it. This is why I love software. In today's blogpost,  I won't be talking about the technical aspect of software engineering but the human side: team building.

The next generation software engineering companies that create the most interactive, engaged, and fun environments will be built on top of 3 core concepts: autonomy, mastery, and purpose. This is a widely used phrase and it's evangelized by Dan Pink. In his book, "Drive", it dives into the problems of current working environments for software teams but then it goes into a few studies and examples of how to evolve the working environments to create teams that know how to hustle, have fun, and drive value to their customers.

Valve, Github, Atlassi…

A focus on making DevOps more open and connected

After serving the RESAAS vision and its team of high performance salespeople, visionaries, and software engineers for the past year -- I've made the decision to take on a different challenge that involves helping DevOps be more open and connected to their tools, teams, and solutions using social and big data as vehicles to achieve our grand vision. It's official -- I have left RESAAS and I'm determined to make things easier for DevOps as it continues to grow as an integral role in software engineering teams.

By reading Software Will Eat The World -- one can agree that software has the ability to disrupt a wide array of industries and markets. The great thing about this is with cloud computing, costs to ship an MVP have been reduced drastically. Furthermore, having production systems serving millions of customers have caused the "DevOps" role to emerge in Internet-based software companies.
DevOps can be defined as a hybrid of operations, quality assurance, as wel…

Tools We Use at RESAAS

If you're ever wondering what we use for tools at RESAAS, I've taken the time to write about the different tools we use for specific parts of our engineering initiatives. This includes automation, project management, and feature development across different operating systems and platforms.

Feature Development on Web
Visual Studio 2010 Professional - This can be downloaded through MSDN. Additionally, since our whole platform is built on Windows Azure, we use the Azure .NET SDK to integrate with many of Microsoft's cloud services, such as, Blob, Tables, Queues, Service Bus, SQL Azure, and Traffic Manager.

Sublime Text 2 - A free text editor that has interoperable plugins with Text Mate. It also works flawlessly across Windows and Mac OS X.

SASS (Compass) - A easy-to-use language on top of CSS which gives developers the ability to create reusable mixins, css variables, as well as, auto concatenation and minification.

Mojo - A JavaScript microframework that lets developers levera…

Windows Azure Web Sites: Too easy and too much fun

Microsoft recently landed an incredibly powerful feature: Windows Azure Web Sites. This feature allows developers, designers, and basically anyone to deploy web sites (PHP, NodeJS, Static) to Microsoft's public cloud.

The barrier of entry has been lowered significantly and that's because of the amazing work of the Azure teams. I've attached my slide deck here. In trying to come up with some good slides, I didn't want the audience of 30 people sitting there through a bunch of slides. I wanted it to be more interactive and I wanted to really illuminate how amazingly simple the process is.

In part of the talk, I ended up doing 3 demonstrations


1. Deploying to Azure with Git (git push azure master)

created a static html fileadded azure as a remotepushed to azure within seconds


2. Creating a Wordpress site with a MySQL database

3. Using Express (NodeJS) to deploy a web application to Windows Azure  used the express node module to generate a new siteinstalled all dependencies us…

Scaling an engineering team: "Caliber"

Being tasked with growing a team and finding talent is a tough challenge. If you're in a place where the talent pool isn't as large as, say, San Francisco, you could be on a really bad spot. From a business perspective, whoever you choose to sign to the team can have an extremely positive effect on the product or an extremely bad effect on the product -- this is why you should always choose carefully who you decide to hire.

In building a team that executes and delivers effectively, I believe that the most important values of a high caliber team is the cohesiveness of the team (how well they work together in regards to execution), the shared vision (believing in where they need to go), and the ability to adapt to shifting environment variables (team learning, incremental improvement). Much like a hockey team that has a chance at the Stanley Cup, the only way to win it is for the team to fully understand the importance of supporting each other, believing in the vision, and alway…

Visual Studio Keybinds Front-End Engineers Use

After being in Microsoft land for the past year (I joined RESAAS, primarily a .NET shop), I've grown attached to Visual Studio. It's an amazing IDE. In the last 5 years, I was primarily on Mac OS X with TextMate/Vim so I grew used to using keybindings to increase productivity. With Visual Studio, I realized that the only way to be productive is to use keybinds! Visual Studio without keybindings can make it almost impossible to use as the menus are nested beyond 2 levels. That said, I use Visual Studio for JavaScript and HTML. Everything else like SASS, CoffeeScript, and NodeJS, I use Sublime Text 2.

Below are a few different keybinds I use on a regular basis. I'm sure that these will change in the future once Windows 8 launches and every developer will have Visual Studio 2011 in their hands!

Key BindDescriptionControl + ,Go To File - When you're working on a large code base, it's easier to just navigate to the file.Control + Shift + FSearch Solution - Quickly find …

The Cost of Continuous Delivery

Continuous delivery is a process in which developers can land features on master (or trunk if you're on subversion), have it run through continuous integration (unit tests, user interface tests, service layer tests), have it propagate through the various stages of your deployment pipeline and have it on production in short matter of time. It sounds great because you'll never really need an ops team anymore and really dispels the need to have iterations (in 2 weeks, a feature lands, instead, a feature lands when it lands).

A build pipeline like that saves money for the company in that respect and makes it so that engineers can react more quickly to problems without having to go through layers of communication; however, it surfaces many more issues. As a software engineer on a fast pipeline that is continuously delivering to customers, it is increasingly more important to have test coverage. Below is a list of aspects of testing that need to be seriously thought of
Unit TestingW…