Olivier Lalonde's blog

Hey. I'm a friendly hacker, HN addict and startup guy. I tweet as @o_lalonde.

The Benefit of Hindsight

I recently stumbled upon a quite interesting piece of history buried in TechCrunch’s archives. It’s a July 2006 article written by Michael Arrington which introduces a “sort of “group send” SMS application” as he described it at the time. For those who haven’t guessed yet, the “application” he is referring to is now known as Twitter, a 190 million users strong social network and company currently valued at around $10 billion. Yet, at the time, very few people believed the startup had any chance of success and even fewer could have predicted it would grow to become a billion dollar company. 

Here are some gems from the article and comments. It would be superfluous to comment them as I believe they speak for themselves. If you find yourself laughing at this (as I did), take a moment to realize just how wonderful the benefit of hindsight is. 

All comments date from 2006. I didn’t include the names of the commenters (but they aren’t really hard to find).

There is also a privacy issue with Twttr. Every user has a public page that shows all of their messages. Messages from that person’s extended network are also public. I imagine most users are not going to want to have all of their Twttr messages published on a public website. 

I do not understand the utility of adding the SMS messages to a public webpage or making messages from my network public. I would have to pass on that type of offering. The ability to make messages private should be added asap. 

Odeo was a failure from the get go. No revenue model. I asked their VC - CRV - what the revenue model was a year ago and he said “to sell to someone bigger.” Okay, that was a web 1.0 answer, and now we get Twttr - an even dumber idea with no revenue model, but a 2.0 concept.

I think this is the dumbest thing ever! Who would want all their personal text messages on a public website for anyone to read and track? 

Not innovative and not focused. Twttr sounds like a disaster in the making…

i do not want to be woken up at 4 a.m. because my friend got drunk and decided to text Twttr with “asdl im at barasdf sooo drunksalkfjs”…i find it interesting such an annoying feature is supposedly causing viral growth…i’m done developing social software if the key to success is to be intrusive 

Finally, a last blog comment that caught my attention on an other old Twitter article:

It’s kinda wierd, John Resig and I had been thinking about building this exact system, though it never really got past the, “Wouldn’t it be cool if” stage. Meh, I’m just glad it exists now. It was a personal itch I wanted to scratch and I’m not going to complain at all if someone else scratches it. Plus the Odeo guys made it much prettier than I would have. - Bob Aman

I’d be curious to know if the John Resign being referred to is the same guy who went on to build jQuery. Did John Resig really almost build a Twitter before Twitter?

MultiVac, the Line Tracking Robot

Here’s a line tracking robot I built with friends at university. I thought I would post it here before it sinks into oblivion. It was built using a 16bit micro-controller (ATmega16), a PCB, a small motor and some sensors. The programming was done in C/C++. Source code and hardware (if you can pick it up - Montreal) available upon request.

Any ideas of how I could turn it into something useful? I also got a proximity sensor if that can be of any use.

HN Crunch: Greasemonkey Script for Hacker News

I’ve just written HN Crunch, a little Greasemonkey script for Hacker News which adds a profile picture next to the username of HN members who have their own CrunchBase profile. The script is is open source.

Screenshot:
[[posterous-content:kckxuJuPdw9auihyixTy]]

Right now, it doesn’t have many HN users in it so please help me complete the list in the comments below or in the HN thread by writing the username / CrunchBase URL pair. To try it in action, I suggest you head over to pg’s thread list.

Updated list:
  • pg: paul-graham
  • spolsky: joel-spolsky-2
  • a4agarwal: sachin-agarwal
  • techcrunch: michael-arrington
  • epi0Bauqu: gabriel-weinberg
  • AndrewWarner: andrew-warner
  • swombat: daniel-tenner
  • dhh: david-heinemeier-hansson
  • daniel_levine: daniel-levine
  • bkrausz: brian-krausz
  • ‘mceachen: matthew-mceachen
  • rgrieselhuber: ray-grieselhuber
  • rdamico: ryan-damico
  • jon_dahl: jon-dahl
  • answerly: joe-fahrner
  • jlm382: jessica-mah
  • brianchesky: brian-chesky
  • billclerico: bill-clerico
  • dhouston: drew-houston
  • danielha: daniel-ha
  • rantfoil: garry-tan
  • petesmithy: pete-smith
  • justin: justin-kan
  • gduffy: greg-duffy
  • spencerfry: spencer-fry
  • thinkcomp: aaron-greenspan
  • jack7890: jack-groetzinger’

Why We Should Eradicate “Agnosticism” From the Dictionary!

This is a follow-up to a very interesting thread on HN.

From Wikipedia: Agnosticism is the view that the truth value of certain claims—especially claims about the existence of any deity, but also other religious and metaphysical claims—is unknown or unknowable. …

Before I start, let me illustrate my point. Assume the following statements are true:

  • We currently live in the Matrix.
  • There is absolutely no interaction between our universe and the Matrix.
  • There is no way to escape the Matrix.
  • The laws of our universe remain unchanged.
  • There is no imaginable experiment that could even subtly hint the existence of the Matrix.

Given those assumptions, you can’t prove or disprove the existence of the Matrix, be it through a thought experiment or a physical experiment.

That makes you a Matrix agnostic. In fact, the amount of things we have to be agnostic about is only limited by our collective imagination: it could be that our universe is an “atom” inside a much larger universe, it could be that life is an illusion induced by some sort of dream, etc.

As expected, there are tons of naive counter-arguments to this assertion. Let me quote philwelch, as he said it better than I ever could:

The standard answer is that all of our naive beliefs about the world would be false. You are not actually sitting on a couch, your simulated body-projection is simulated to be sitting on a simulated couch. The very fact we can’t tell whether or not we’re in the matrix undermines all our knowledge.

The more insightful answer is that even if we’re in the matrix, everything about the physical world is still true, there is just a metaphysical fact we are unaware of–namely, that the universe happens to be a simulation. You’re still sitting on a couch, and the couch is still made of atoms, and the atoms are still made of subatomic particles and so forth, but it turns out all the subatomic particles are just data structures in the matrix and we didn’t know that before. Nothing is undermined.


Let me expand this reasoning a little further:

  • Is there a point in knowing if the Matrix does indeed exist ?
  • Will it change anything about our knowledge of the physical universe ?
  • Will it change the way we live our lives ? 

Answer: No.

Any metaphysical statement that can’t be evidenced, even subtly, through physical experiments is simply meaningless. On a side note, it is important to note that the fundamental laws of our universe, which could also be classified as metaphysical statements since they describe the physical - the precise definition of metaphysical, can be determined through experiments and that’s what makes them meaningful.

In other words, agnosticism is simply a word that means “can’t know the unknowable”, which is quite redundant. I’m pretty sure everyone can agree, theists and atheists included, that it is impossible to know the unknowable. You either believe there is a God because you think there is evidence for it - be it through the Bible, the Torah, prophets, miracles, martyrs or this inner connection with God that some call faith -  or you don’t if you believe there is no evidence for God. Following that line of thought, agnosticism, as in believing that God is unknowable, equates to atheism, as in believing there is no evidence for God.

In conclusion, I suggest that we eradicate this meaningless word from the dictionary!

I’m looking forward to answer your thoughts and counter-arguments in the comments!

PS: This rant was intentionally extremist as I wanted to make my point as clear as possible. I’m actually a very nuanced person and I have nothing against agnostics. Perhaps the definition of agnosticism should be changed to: “Person who believes there is some evidence for God, but not enough to take a position.”

Project Idea: TL;DR Browser Add-on

This is a follow-up to a question I asked on Answers.OnStartups.com. Here’s how it goes:

I often find myself reading long blog posts and articles only to find out that I already knew most of what was discussed. Other times, I find out that the topic wasn’t really relevant to my interest. Indeed, headlines are often misleading.

That’s what lead me to the following idea: a browser add-on that would overlay short and concise TL;DR (Too Long; Didn’t Read) summaries over web pages. The system would be community driven and moderated: anyone could add their own summary of the content and the best TL;DR messages would be up voted by the community. Additionally, as suggested by Jason, authors could be allowed to write their own official summary.

My bet is that this system could be valuable to people faced with too much information and too little time. It could be successful in the same way Twitter’s 140 characters limit contributed to its success: reducing information overload and increasing signal-to-noise ratio.

As anticipated, there is already a good deal of browser add-ons for annotating web pages, but none of them explicitly promote the usage that I am describing. I will be working on this little add-on in my free time and hope it’ll eventually gain enough traction to really become useful. I’m open to constructive criticism and suggestions: just leave your thoughts in the comments !

TL;DR: Community-driven Firefox add-on that overlays short summaries next to long texts.

Who Am I and What You Can Expect to Find Here

Hi! I’m Olivier Lalonde, a Software Engineering student at École Polytechnique, Montreal. I’ve been programming professionally for many years, both as a freelancer and as a full time employee. I’ve also worked on many small projects of my own, some of which were successful and some others not. Sadly, the most successful so far was an invoicing manager I built during summer when I was 15, which brought me close to 10K$ in revenues, which was a large some at the time. I’ve also co-founded Wozad, a behavioral advertising network that we decided to dead pool following Google’s announcement to get in the behavioral marketing game. My current language of choice is PHP although I’ve recently started using Ruby which I enjoy so far.

I am an entrepreneur at heart and programmer by profession. Don’t get me wrong: I do enjoy programming and solving complex problems very much but consider programming as a tool as opposed to an end in itself.

My interests include: web development and open standards, startups, user experience and innovation. This what I will write about on this blog most of the time.

My current projects are:
Voz Labs: my web development shop.
iRosetta: a StackExchange powered Q&A site for language.
dORM: an ORM for PHP.

You can also find me here:
olalonde @ Hacker News
olalonde @ Answers.OnStartups.com
o_lalonde @ Twitter

E-mail: olalonde@gmail.com

I’m a casual blogger and English isn’t my native language. I write this blog first for myself in order to help my limited memory, put some order in my thoughts and practice my written English skills. Don’t expect professional journalism from this blog !

Project Idea: AJAX Without Writing a Single Line of Javascript

I had this idea of a Javascript library for rapidly implementing / prototyping AJAX on a web page. Here is how it would work:

  1. User clicks a link on a page.
  2. Javascript requests a server side script through an AJAX request and passes the HREF attribute of the link as a parameter target_url.
  3. The server script DIFFs the target page with the current page and returns a JSON string containing every modifications of the DOM. The format could be as such:
[
   {
       "action" : "delete",
       "path" : "/p[1]"
   },
   {
       "action" : "modify",
       "path" : "/ul[1]/li[1]",
       "node" : {
           "innerHTML" : "modified 1st line",
           "attributes" : {
               "class" : "testClass"
           }
       }
   },
   {
       "action" : "insert",
       "parentPath" : "/ul[1]",
       "siblingPath" : "/li[3]",
       "node" : {
           "tagName" : "li",
           "innerHTML" : "should insert after 2nd item",
           "attributes" : []
       }
   }
]

This would delete the first paragraph, modify the 1st list item in the 1st unordered list and insert a new list item before the 3rd list item in the first unordered list.

A use case of this library could be for a blog with a "Show comments" link. Instead of the browser reloading the entire page with blog comments enabled when clicking the link, the request would be sent asynchronously to the server script which would return the appropriate DOM modifications to display the comments. Of course, this particular example could easily be implemented with trivial Javascript, but my point was to show how it would work in "real life".

Limitations of this technique:

  • innerHTML isn't (yet) a standard
  • Blindly manipulating the DOM might interfere with other Javascript code already present on the page
  • The entire process would have to be faster than actually loading the target page
Benefits of this technique:
  • It could be used to unobtrusively implement AJAX without having to write a single line of Javascript, resulting in a productivity increase.
  • It could possibly be used as a browser add-on to enable faster page rendering. (This idea came from my frustration of having to wait for the whole DOM to be re-rendered by web browsers when clicking links within a site. Often times, a big part of the DOM structure remains the same and yet, your browser has to render everything once again.)
In a nutshell:
  • This technique should be used for productivity boosts and on pages that share a similar layout.
I had a hard time putting this idea into words and I hope I made myself clear. I would appreciate some feedback from fellow developers!

PS: So far, I've done most of the Javascript implementation. If anyone is willing to help for the server script, let me know!