Category: Uncategorized

  • A "man pages" approach to information

    It still amazes me how Unix man pages shaped my approach to digesting information.

    I first started using Unix-based systems around 1997. My Unix mentor had, in retrospect, a fantastic approach to helping me out on my autodidactic path. Whenever I needed help with a command, he would always prepend his answer with “man”.

    I: How do you check your disk space?
    Len: man df
    I: ???
    Len: man man

    I am now more than grateful for his wisdom, but I cursed it many times in context.

    What amused me the most about the man repository was how it was simply impossible to read one page without reading ten others, by curiosity if nothing else. The same holds true for many subjects, but man pages have this special twist that unlike so many other publications, they never dumb down their content to widen their audience reach, but instead historically assume that the reader is a highly trained operator and knows (or should know) everything about the rest of the system. This shapes an interesting vicious cycle, since it makes for a documentation system with essentially no true beginning or even accessible entry point.

    While this might be perceived as a flaw in the man’s matrix, it truly catalyzed my habit of always pushing myself to learn and know more than just what I need for the very task that brings me to a piece of information. To this day, I find myself quasi-incapable of reading anything without going into the research equivalent to a shark’s feeding frenzy, unless I’m on a on a tight schedule, in which case I only limit and control myself.

    In the end, two things are for sure: Thank [insert fav’ deity here] for hypertext, and Digg, Facebook , Slashdot, et alii sure do not help one bit. πŸ˜‰

  • It's a Love / Hate Thing

    It’s days like this I both love and loathe my vocation all at once.

    Love it: never bored, always have new things to learn, mentally challenging, great interaction with the many development communities, constant stream of new opportunities, etc…

    Loathe it: there are only 24 hours in a day and my body and brain stubbornly force me to sleep for a few of these… Almost every day too…

    Thirteen years of web app dev, and still see it it as the World’s biggest playroom. πŸ™‚

  • parseMe 20070602 Update

    Here’s another update to parseMe (back story), my little GPL’ed PHP-based RSS/Atom feed reader for mobile phones and other web-capable devices.

    You can find the appropriate links below:

    Release notes:

    • Moved my CVS repo to Subversion (svn), hence the revision number differences. I considered moving to a distributed revision control system, since they’re gaining in popularity, but I got lazy after the major rewrite. πŸ˜‰ Maybe for the next release.
    • This is a quasi-complete code rewrite. In this release, I have moved away from the initial goal of keeping within the 500 lines limit (including comments) and having an “educational” flavour, to focus instead on the code structure, the features, further increased security, etc. The security aspect does account for a lot of the extra lines, when coupled with the new features.
    • The parseMe class has now been substracted from the index.php script and has been moved to lib/php/parseMe.class.php.
    • One of the most significant features, on the user end, is that you can now request any number of feeds to be parsed at once. Keeping in mind that the main target audience for this tool is the mobile market (usually slow, tiny screens, low RAM, etc), the usual total number of feeds offered does not lead to major performance hits, unless of course the sources themselves are slow to answer the tool’s request(s). You can of course still set your feed selection in the cookie-based preferences, which now allow for multiple choices.
    • With the multiple feeds feature, the next logical step was to enable some sort of sorting options. You can sort the entries by feeds, or from new to old (descending) or from old to new (ascending). Your favourite sort order can be saved.
    • You can now opt in or out of using the Google Mobile Gateway for destination links, right from the query form, and save your preferred choice.
    • On the server end, self-contained caching is now done through PHP data serialization, since there is no point in reparsing the same XML at every page load, after all.
    • On the security front, and primarily with the concern that we do have an application-writable directory (cache), there are quite a few improvements. Since the data contained in the cache files is not very sensitive by design (and if it is, I’d suggest using ssl and password protecting the app), this is really more of an exercise in good coding practices. And there is of course the concern of php injection attacks.

      • The cache filenames are now generated as a sha1 sum, with the help of an admin-defined shared secret so that they cannot be easily guessed.
      • All cache files now start with a dot (.) so that most web servers will not even serve them, and to be invisible when directory listing is enabled at the server level.
      • On the other hand, there is still a very strong emphasis on user input sanitazation and usage in the logic itself (EG: no client-defined source URL, source validity tests, etc).
    • Fully valid class documentation can be leveraged in IDEs such Eclipse, auto-documentation tool such as phpDocumentor, etc.
  • It's SQLite-Mania Time!

    Between the freshly announced Google Gears and the upcoming Firefox 3, I’m really happy to see the SQLite project picking up some massive and forefront industry momentum. And well deserved at that, since I’ve always thought it was an excellent venture in many respects, though often overlooked by the general development community.

    Firefox will use it for their upcoming Places feature, which aims to be the evolution of bookmarks and history.

    Google Gears, on the other hand, uses it for offline web app data storage. I have to say I’m getting a geeky kick out of seeing SQL queries passed directly via client-side Javascript (although as an offline app, I guess the client is the server too). And not even as a WTF post: bonus!

    Kudos to the SQLite dev team, and good call to the two latest industry icons who chose it.

    That install base sure is going to grow fast! Makes me giggle when I remember thinking that every PC would be running at least 6 different embedded copies of the tiny DB within a few years when I first played around with it, all without 99% of the end users even realizing this. I’d say we’re right on track. πŸ™‚

    Who’s taking bets on Adobe doing the same with Apollo?

  • McGill Website Wins Silver CASE Award

    I guess we must be doing something right:

    The Council for Advancement and Support of Education (CASE) awarded McGill University the silver medal in the Complete Institutional Web Sites category. There were 41 entries in this category, with two silver medals and one bronze medal awarded. CASE is a non-profit association encompassing 3,300 colleges, universities and elementary and secondary schools in 54 countries.

    Via McGill Announcements.

    I don’t actually know any more than this, because the details haven’t been published on the CASE web site yet. I really want to know who we tied with, knowing CASE has members such as MIT, CalTech, Harvard, etc.

    2007-06-16: The CASE web site has now been updated: Web Sites – 2007 Winners

  • French Voters Choose Sarkozy for President


    I really like Le Monde‘s map featured above. Gotta love the colour clichΓ©. And how the colour-coded maps are all the rage now, somehow.

    It’s days like this I really miss living in France. NOT! πŸ˜‰

  • Coming Soon: Ubuntu Mobile and Embedded Edition

    From the source email (@ubuntu-devel-announce):

    We will start more detailed planning at the Ubuntu Developer Summit next
    week in Seville and the first release of this edition will be in October
    with Ubuntu 7.10. If you are interested in the project, please get involved.
    We will be working through our normal development processes on Launchpad,
    the developer mailing lists and IRC.

    Via Digg.

  • PHP 5.2.2 and 4.4.7 Released

    “PHP 5.2.2 and 4.4.7 have been released with a plethora of security updates. Many of the security notifications come from the Month of PHP Bugs effort, and range from double freed memory to bugs in functions that allow attackers to enable register_globals, to memory corruption with unserialize(), to input validation flaws that allow e-mail header injections, with an unhealthy sprinkling of other bugs and flaws fixed. All administrators that run any version of PHP are encouraged to update immediately.”

    Our sysadmin installed 5.2.2 on our test instances earlier today, and we’ll be testing (and closely watching for external reports) over the next few days before rolling it into production.

    Via Slashdot.

  • The Javascript Programming Language

    Yahoo! JavaScript Architect Douglas Crockford provides a comprehensive introduction to the JavaScript Programming Language in this four-part video. This is the first section of the four-part video. See below the embedded video for more links.

    Other programming videos by Douglas Crockford on Yahoo! Video:
    The JavaScript Programming Language (4 parts).
    Theory of the DOM (3 parts).
    Advanced JavaScript (3 parts).

    Via Digg.