Posted by jldavid on Jan 16, 2012

I’m excited to announce I’ll be moving to Toronto & taking on the role of Chief Technology Officer at Digiflare (http://www.digiflare.com) starting February 1st. I’ll be putting on two hats – supporting the technology efforts within the company for an amazing roster of clients (http://digiflare.com/work), along with bringing new products to market for consumers.
I’d like to thank Bradley Wing, Matthieu Houle, Stephane Marceau and Nicolas Gaudreau for hiring me on to work as a Senior Manager in the kickass YellowAPI and mobile team at Yellow Pages Canada – it was a fantastic & valuable experience, I’m truly grateful. I’ll miss working with everyone in Montreal! Keep an eye on YellowAPI, lots of exciting things to come this year: http://www.yellowapi.com
Note – I’ll be in town for the next two weeks (my last day at YPG is January 27th) and flying out to Toronto on January 31st.
Read More
Posted by jldavid on Jan 7, 2012

I’ve noticed that many new startups try to include an element of serendipity in their products. If you look at Wikipedia, the current definition of serendipity is “a happy accident or pleasant surprise; specifically, the accident of finding something good or useful without looking for it”. My good friend Lenny Ratchitsky did a great talk at TEDxCondordia entitled “Losing Serendipity” which explains how serendipity is important in our daily lives, and how he integrated elements of discovery and chance in Localmind (you can view his presentation on YouTube here).
With this in mind, there are two different approaches you can take with a product:
- The Serendipity approach, in which you can surface useful information that your users are not expecting. A good example of this is Foursquare’s Explore feature. It shows you interesting locations around you ranked by your friends checkins and tips. Using explore, you can discover an interesting restaurant or cafe based on recommendations.
- The Personalization approach. Using this approach, you can profile the user and determine his/her likes and dislikes. Using these signals, you then provide information that is the most contextually appropriate for the user. Hunch (which was recently acquired by Ebay) is an example of a recommendation engine which statistically looks at your likes/dislikes and provides tailored recommendations. Another example, Facebook made changes to their News Feed a while back to display only “Friends and pages you interact with most” (which was partially rectified with the recent Timeline update).
What approach should you take? Take your pick. The missing element is profiling the user’s affinity for risk or change. Some people enjoy having the same breakfast every morning, others actively seek out new places to eat. The winning formula in my mind is a system that looks at behavior, then dial up serendipity or personalization on a user by user basis.
Read More
Posted by jldavid on Jan 2, 2012

In the early 1990′s, I got the opportunity to meet Majel Barrett-Roddenberry, the wife of Star Trek creator Gene Roddenberry (she also did the voice of the Federation computer, which inspired Google to create Project Majel – a Siri like interface for Android). I introduced myself to Majel by saying – “Hi, my name is Jean-Luc”, in which she replied: “Uh-oh, copyright violation.” After a few laughs, I asked her how Gene invented my namesake, Jean-Luc Picard. What’s a little known fact is that Gene admired sea explorer & ecologist Jacques Cousteau and wanted to create a “Jacques Cousteau of the stars”. However, calling the character Jacques would have been too obvious; so he took inspiration from his love of French film, took the name “Jean-Luc” from filmmaker Jean-Luc Godard and did a “mash up” with the Cousteau character.
Soon after, I asked my parents where they got the idea to call me Jean-Luc. Let’s just say my dad decided to take art film classes after I was born. The title of this blog is “Make It So!”, a wink and a nod to my fictional counterpart.
Update – here is the signature from Majel Barrett-Roddenberry to yours truly:

Read More
Posted by jldavid on Jan 1, 2012

One of the questions I get asked a lot is what developer platform is the most scalable. Some people seem to believe it’s Java or .NET, others feel it’s Python or PHP. There also seems to be a misconception that Ruby doesn’t scale well. A definitive answer to this trick question? They all scale – up to a point (*when your infrastructure has millions of users & transactions – then you have to rely on in-memory databases, content delivery networks, caching servers, x64 servers, ect to keep things snappy). To illustrate this, I’ll delve into the architecture of some of the most popular social networks out there. Let’s take a look at a few key examples:
Foursquare
Dodgeball (the precursor to Foursquare) started out as an ASP site running on an Access database. Founder Dennis Crowley (who was not a coder) created the site using a “Learn ASP in 30 days!” type of book. Later, Dodgeball was rewritten in PHP and MySQL. Foursquare.com was likewise originally written using PHP/MySQL on Apache. When Harry Heymann joined Foursquare (he was the last employee from Dodgeball after the Google acquisition), he helped the company scale up using Scala and the Lift Web Framework. Foursquare is compiled into Java bytecode and mostly runs on Jetty (Jetty project page). Foursquare also runs in MongoDB (MongoDB project page). Here is a fantastic deck explaining the process of migrating Foursquare.com from PHP to Scala/Lift. On a side note – Foursquare also uses Apache Hadoop, and Apache Hive in combination with a custom data server (built in Ruby), all running in Amazon EC2 to do analytics on their data (here is a Foursquare engineering blog post about it) – I also had the privilege of seeing the system in action when I visited Foursquare’s Cooper Square HQ in 2011.
Facebook
In 2006, when Facebook was opened to the public (anyone over 13 with a valid email address could join), Facebook was built using open-source software including PHP/MySQL on Apache (some of the front end PHP code got leaked in 2007 – you can get interesting insights here). Facebook used memcached (project site) to help the site stay responsive for 12M active users. Facebook employees also used a combination of Python/Perl/Java/g++ and Boost managed using Subversion and git – you can read a detailed account on the Facebook site. Today, Facebook has over 800 million active users and as you can imagine, the infrastructure to support the load has become way more complex. The front end uses PHP converted into C++ using HipHop, the business logic is built using Thrift and persistence is managed using a combination of MySQL, Memcached, Cassandra & Hadoop. All of this is running on what’s estimated to be 60,000+ servers! You can learn more on this Quora thread.
Twitter
Twitter started as a hack project at a company called ODEO, which was initially focused on RSS syndicated audio & video. Twitter founder Jack Dorsey (one of the ODEO engineers at the time) was really interested in status and tried to find some way to make it easier for people to share what they were doing. The Twitter project was initially written on Ruby on Rails (which was the backbone of ODEO) and evolved from there. Raffi Krikorian (Director of Twitter’s Application Service) has a really excellent OSCON talk which describes Twitter’s current infrastructure. According to Raffi, Twitter is ”the largest Ruby on Rails website on the planet“). Twitter is currently active in rewriting their infrastructure to the Java Virtual Machine (JVM), Scala, Thrift and Clojure. Here is a deck on Slideshare with the gory details on the migration. Raffi’s advice – “One thing we want to emphasize to start ups out there is that switching to Java doesn’t imply that we think that Ruby is a mistake. Ruby got us fundamentally where we are today. We are somewhere between the 9th and 5th largest site on the internet…we have some of the best world class product engineers who can write code in Ruby faster than anyone I’ve seen…And we think that’s really important…and pivotal.”
YouTube
According to this documentation dating back to 2008 (and this YouTube architecture video from the 2007 Seattle Conference on Scalability), YouTube was originally built using a combination of Apache, Python, Linux (SuSe) and MySQL. The YouTube engineering team also used psyco (dynamic python->C compiler) and lighttpd (for video instead of Apache). This architecture was at the time supporting over 100 million video views per day. Few details are known about the back end infrastructure today, however you can use the YouTube Direct platform to host your mini-customized version of YouTube on Google AppEngine (via the YouTube API).
Moral of the story
Java, PHP, Ruby or Python – they are all suitable languages/technology stacks for a startup & will scale enough to make your product a success. The real question you should be asking – which one of these platforms will make your developers as productive as possible?
Read More
Posted by jldavid on Dec 30, 2011
One of the critical tasks for any startup is finding the right technical talent to build out your mobile/web/hardware products. Here is some useful tips and tricks I’ve amassed over the years to interview & hire the right people. I can usually segment someone in one of three categories before the interview even starts:
- Right out of school: The easiest category of people to find and cost efficient. A good hire if you’ve already assembled a strong team who can help train and ramp them up, or if you want to mould someone into doing a specific task. May not be the ideal person if you want the individual to jump from the frying pan into the fire as they need lots of initial supervision and/or guidance. If you correctly identify their strengths & get them working on productive projects, they can be extremely loyal employees.
- Professionals: These programmers are a little more difficult to hire as a startup, as they have worked in established companies/government/enterprise and have set expectations in terms of stability and paycheque (which may be hard to come by if you are bootstrapping and trying to get your first round). They are self-starters and can usually tackle coding problems without supervision – aka, hit the ground running. The challenge with this category is that they start getting set in their ways (wanting to use frameworks/techniques they are familiar with). The trick is to leverage their experience, but also get them out of their comfort zone, working with brand new technologies (which will also keep them stimulated in the right way).
- Rock stars: Extremely hard to hire, as they would rather start their own companies than work for yours. These individuals can usually produce/problem solve very quickly. You can attract these individuals using prestige – offer a co-founder position, equity, the promise of fame and fortune. Rock stars tend to be social butterflies – you can find them at hackathons, Facebook/Google/Microsoft events, ect.
Here are the types of questions I like to ask to assess the suitability of a candidate (you can optionally chart these out on paper during the interview process, as individuals will fall on different ends of the spectrum based on the questions):
- Technical: the goal is simply to set a baseline. For example, if I have a candidate which is supposed to be a PHP programmer, I’ll get them to write a three line fahrenheit to celsius converter function. This will help you weed out people who call themselves programmers, but don’t actually know how to code. This exercise is less about they actual code they produce on paper, and rather understand the thought process they use to create code. Have they spent hours debugging code in the past? Or are they new at writing code.
- Team fit: Is the individual a team player, or a lone wolf coder? Do they have a personality and a story to tell? Are they passionate about their job? Is the individual generally likeable, and could you imagine sitting beside him/her for eight to twelve hours at a time? What blogs/webcasts to they watch? How do they learn new techniques, and who do they admire?
- Flexibility: Most programmers are problem solvers. But is the individual “set in their ways” or willing to take on new challenges? Is the individual a specialist or a generalist?
- “Forcing Function”: Each employee bring with them a behavioural component to the team. Are they rigorous & perfectionists? Then they can bring more structure & best practices, useful if your team has been producing sloppy code. Sometimes, the right hires can help address higher order functional issues with the products/technology you are building out.
I’d say the number one question I get asked is where a startup can find talent. My trick is to get involved in the developer community. For example:
- Set up a day-long hackathon at your HQ, post it on EventBrite and promote it on popular websites in your area (for example, NextMontreal is a hub for sourcing technical and startup events in this part of Quebec). Bring in pizza, beer, cola and prizes. Assess the hacks at the end of the day – usually the ones that stand out will be produced by the kind of talent you would likely want to attract to your company.
- Attend industry events (Google, Microsoft, Facebook, ect event) and meet with people. You’ll be surprised how many developers you meet that may be looking for their next gig. Great networking opportunity & a good way to source talent.
- Get to know the deans/profs at local colleges/universities. Offer to present on entrepreneurship at a class – get to know students, offer summer jobs at the school’s career and planning center, ect.
Read More
Posted by jldavid on Dec 29, 2011

Inspired by Marc Andreessen, putting my thoughts down in a few bullet point:
- IPOs will keep driving interest in startups. The upcoming Facebook and Yelp IPOs are stirring up the market. When you look at successful examples like LinkedIn, it’s increasingly clear that new startups have more options than just looking to be acquired. Having spent a lot of time in San Francisco in 2011 & talking to local entrepreneurs, you get a sense that there is a definite boom happening as apartments are getting harder to come by and competition for talent is fierce. More of the same in 2012.
- Mobile app growth will be exponential. If you look at stats such as Android and iOS Now Control Over 80% of Smartphone Sales in U.S. and recent studies, it’s obvious that mobile apps are exploding. At work, I’ve observed the trend that our mobile web apps are on track to outpace native apps for iOS and Android in terms of traffic and usage. Mobile app development is made easier for developers with frameworks such as jQuery Mobile, Titanium and PhoneGap. We are quickly approaching the point where there is “an app for that” for most things, get ready for a slew of creative new apps for scenarios you haven’t even dreamed of. Update: Looks like Gartner agrees with my assessment.
- The “Quantified Self” will become more mainstream. We are early days with portable sensors – most have been focused on fitness up till now (witness the successful FitBit, and the unfortunate rise and fall of the Jawbone Up). Platforms such as Arduino have brought microprocessor and sensor hacking accessible to mainstream coders – witness hack a day. Raspberry Pi and other projects are very exciting and hint at the potential of portable computing devices. Expect advances in smart clothing and portable motherboards.
- 80′s retro tech will be cool. My generation is currently at the reins of popular culture – expect TV/movie references to Commodore computers (recently relaunched as a modern PC by Commodore USA), TRS-80′s, Ataris. Expect remakes of popular 80′s movies such as Wargames (TRON anyone?). SID (Sound Interface Device) music is heard in dubstep songs by Skrillex. I’m waiting for the movie adaptation of Impossible Mission (not to be confused with Mission Impossible). What is old becomes new again.
- DVDs & CDs will finally become obsolete. Case in point, I’m in the process of digitizing and discarding my entire CD collection. Of course, I fall in the “Innovator/Early adopter” demographic rather than “Laggards” in the Technology Adoption Lifecycle. But consider this – popular devices such as iPads, tablets, phones, and netbooks intentionally exclude optical disc readers. As revenues increase from digital channels such as iTunes, Netflix, Rdio, Spotify, production of physical media will decrease except as a niche product for top selling artists & for special collectors sets (like it happened for vinyl).
- More Organic Design. If you look at the background for the Siri app, you’ll notice that it has a very distinctive cloth like look. Hot apps such as Path2 have also adopted a cloth like interface, and I foresee more naturalistic interfaces & materials coming up to match natural experiences.
Bonus:
Happy new year everyone!
Read More
Posted by jldavid on Dec 7, 2011
When you start developing Windows 8 applications, you have several deployment options including local deployment, remote deployment and the simulator. The simulator is especially cool as it provides the “look & feel” of a Windows 8 tablet. In deploying to the tablet, you may encounter the following error message:
"Unable to start the tailored simulator. Simulator has not started."
Or you may get this other error message:
"Logon Failure: user account restriction. Possible reasons
are blank passwords not allowed, logon hour restrictions,
or a policy restriction has been enforced."
The reason for the error is that after the Windows Developer Preview installation process is complete, a set of policies are enforced including limiting the use of blank passwords (which in turn limits access to the simulator). To fix this issue, follow these steps:
- In the Metro Start Menu, start typing “administrative tools” to bring up the settings page
- Navigate to Administrative Tools > Local Security Policy > Accounts: Limit local account use of blank passwords to console logon only
- Change the value from Enabled to Disabled
Then presto, it should work!
Read More