Monday, November 10, 2008

Wednesday, November 5, 2008

"Yes We Can" -> "Yes I will"

In case you were in a hole last night, Barack Obama is now the president elect of the United States of America.

While watching the election coverage last night, Anita (my wife) pointed out a stark difference in the venues chosen by the candidates to accept or concede the election results and the people in attendance.

Barack Obama accepted the election results in front of 100 000 of the general public [3] in a public park in Chicago [2].

John McCain conceded the election in front of an (at the start) invite-only crowd [4] at the luxury Arizona Biltmore Hotel [1]. Apparently, as the election results came in they opened it up to everyone at the rally [4]. Maybe they began to see the difference in their outlooks that resulted in such an overwhelming win for their competition. Let's hope.

The crowd in Chicago was chanting "Yes we did" most of the evening starting from the announcement that the election had been called. However, Obamas speech centered around the phrase "Yes we can". As we move into the next four years I hope that the general public of the USA and even the world holds on to the phrase in the present tense. Electing Obama was only the start of the change that is needed. Obama cannot enforce this change on his own. He needs our support in small actions, just like we supported him with small donations.

Will we as individuals unite and effect the small changes? Will we change from prejudice to respect? Will we change from exclusivity to acceptance? Will we change from fear to hope?

Yes I will.

[1] -
[2] -

[3] -
[4] -

Saturday, October 18, 2008

Why I haven't seen one hockey game this season

I haven't had any interest in hockey this season. In fact, I think I've watched a combined total of 10 minutes of hockey so far, and that includes the 7.5 minutes of highlights I sat through in order to see the Baseball highlights. I definitely think that the rule changes over the past few years in the NHL have decreased my enjoyment of watching NHL games.

An example of the types of changes that really annoy me has something to do with their relentless pursuit of increased offence [1]. Is the North-American public so enamored with goals that they could care less about anything else? If so, why don't we play 3 on 3 with no goalies and make the nets huge?

I hate power play goals. I always have. I hate them just like I hate penalty shots in Soccer. They're cheap and are too-often the direct result of a bad referees decision. In most sports this isn't so bad because the best referees get to make judgement calls and can thus avoid goals which are within the letter of the rule but violate the spirit of the rule. In the NHL, however, they've made a concerted effort over the past few years to take judgement calls out of it. I for one am sick of it, and won't give them any more of my already precious time.

I'll keep watching football where a hold is only a penalty when the referee thinks it affected the play.

[1] -

Monday, October 13, 2008

More idiots

I typically put my head in the sand when it comes to elections, and then I vote for whichever party I think has a chance of winning that has the most socially liberal policies. This past few months however, I've been trying to read up more often on what's going on, who's supporting what and who I agree with.

Mostly, I've just come to realize how dumb most people really are. I mean, people are suggesting that same sex marriages aren't good for society and then they have the audacity to suggest that this is a biological claim not at all rooted in religious bigotry [3]. Then I find out that the average republican, when presented with evidence that proves their viewpoint is wrong, tends to more strongly believe in the viewpoint [2]! And governments are taught that to stay in power they need to pander to these same idiots because they're the ones who are voting [1].

It's a depressing situation to me. The average person can't be bothered to actually inform themselves on a subject. More importantly, many of the ones who are against progressive, effective policies are prone to more strongly fight against them when scientific research is shown which proves them wrong! How can we be expected to fight this? In Canada they ask for stronger criminal penalties, because in their uninformed opinions this will reduce crime, even though there is ample evidence that it doesn't work [1]. We tried it out in the 19th and 20th Century and it didn't work, so we explicitly avoided it in future laws because we knew it doesn't work. And what happens now? Our government suggests it again because they know that it will win them votes and that's all that matters in today's democracy.

Personally, I'm beginning to more and more believe that the average person is not born with enough brain power or common sense to deserve the right to vote and that democracy is generally busted in its current form. There. I really said it. I know that will be a contentious statement but think about it. If people can't be bothered to inform themselves of what the experts say, and if they can't be bothered to understand that these experts are _actually_ smarter than them and if they can't be bothered to understand that these experts aren't just spouting off opinion but rather that there is truth in what the experts claim, then how can I trust that these same people to vote intelligently.

There are enough issues that aren't actually clear cut, don't have a history of proof, nor a wealth of experts backing it to make elections interesting. We don't need pandering politicians catering to the uninformed voters to further muddy the water.

So what do we do? How do we fix it? What can I do? Voting in the past 2 elections hasn't helped, I live in a riding that always (in a landslide) supports the politicians who are suggesting these backwards, uninformed policies.

[1] -
[2] -
[3] -

Sunday, October 12, 2008

Gah! Are people really this stupid?

From (1)
“How can you be a bigot when you’re looking out for society as a whole?”

ummmm? Does he really not see the parallels between him saying this and other groups that have promoted bigotry under the "society will be better" banner?

(1) -

Monday, September 15, 2008

Busy Busy Busy ... and then Vacation

It's been a busy few weeks. On August 15th, I switched jobs and started working with some friends of mine at a local company focused on the art scene. During the next 4 weeks, we launched 4 websites and 1 major feature. Unfortunately I can't yet talk about all of them, but I am excited about the ones that I can talk about.

Artcity Festival
is a yearly festival of visual arts. Great people, fun time and launching the start of their new online home was a pleasure.

Free and Easy Travel is a Canadian based travel company that provides guided trips to South-east Asia. They have been doing so for a number of years and as such have tons of content, phenomenal photographs and are all around great guys. This site is on of my favorite designs from Ian Russell.

Structured Abstraction is the company that I now work for, and recently the guy who now does business development, Jay MacGillivray, was voted to be the Top 40 Under 40 in Calgary. Congratulations Jay! He was recognized for his phenomenal work in the arts community of Calgary. It will be a pleasure and a joy to work with him again. Because of his award there would be an increased awareness of what he has been doing and we wanted to ensure that we had a reasonable website up and going, so in one day we wrote the content, (harder than it sounds), launched the website and designed and implemented the graphical pieces surrounding the content.

Unfortunately I can't say much more about the other two, but suffice it to say that I was BUSY BUSY BUSY. Now, if you consider that just before I left Etsy Inc. we wrapped up a year long port of an older busted middle layer and replaced it with something that scaled horizontally. That puts the count up to 6 releases in 4 weeks!

So now I'm on some welcome vacation. It starts with a Week in Florida with my Family. Then, we spend less than a week in Portland, Oregon with my Sister and Brother in Law and their 1-year old DeLuca. Then we travel to Greece for 8 days and Beirut, Lebanon for 6 days to visit with my Wife's Family.

Now that I think about it, I'm not sure how relaxing it will be. :P

Friday, September 12, 2008

Friday, September 5, 2008


I want one:

By shifting around the panels with an internal 3 axis gearbox, light output can fill the light gap left by a waning sun, maintaining a constant light level through the day.

Monday, August 11, 2008

Olympic Swimming & Michael Phelps

I am so sick of hearing about Michael Phelps [1]. The world is watching and assuming that he's going to set a world record of the number of gold medals won in a single Olympics. Or at least, the media thinks we are. But I don't care, in fact it angers me everytime I hear about it. Michael is a fine athlete, and I look up to and respect him. But the only reason he's up for 8 medals is because we have SO many pointless swimming events. The process for choosing which events are in a particular Olympics may as well be arbitrary in my opinion.

Let's think about it. Baseball isn't an Olympic sport (Edit: Baseball _IS_ an olympic sport, but won't be in the future, apparently, it's too regional. I apologize for the incorrect information). Cricket isn't an Olympic sport. But they're some of the biggest sports in the world. But swimming has 2 distances: 100m and 200m, AND there are individual medals for the Butterfly, Breaststroke, Backstroke, Freestyle and Medley. !? Why are each of these in the Olympics? Running is similar, but not quite as bad. But if running were like swimming, then we'd have the 100m backwards run, the 100m frog-jump race, and the 100m crawl and the 400m medley (where you do 100 m of each). But we don't. Why? Because these events are about SPEED. They're about being the fastest. Everyone KNOWs that crawling, running backwards and frog jumping aren't as fast as running normally. So we don't contest those sports. On the other hand, if one runner came around and could frog-jump the 100m race faster than everyone else, we wouldn't stop them from frog jumping during the race? No.

Why not reduce the running and and swimming to JUST the various distances, and let the runners and swimmers achieve that distance however they'd like. We know the butterfly stroke and the backstroke are slower than the freestyle, so forget making them speed events. Then, if we _still_ want the other strokes, make them judged events on style, not speed events. It could be like figure skating - you get 2 minutes in the pool and are expected to perform each style and get rewarded based on how beautiful they are.

Then include some of the other, unique sports in the world in the olympics and open the door to allow more people to win medals, not just cater to one guy. I watched him win one race, so I'm done. I could care less what else he does.

[1] -

Sunday, August 10, 2008

Dell M1330, Defective GFX cards, and Laptops

I've been planning to buy a new laptop for a few months now. What I want:
  • a small laptop, please note that this does not necessarily mean thin - it means easy to open and use reasonably comfortably on an air plane,
  • light-weight (sub 4lbs)
  • A hardware accelerated graphics card with dedicated memory
  • An SSD option.
  • Reasonable battery life. No, an upper limit of 3-hours isn't reasonable. I'd like something that can last for a long plane ride.
  • Resolution is important to me, I can't work in a 1024x768 or something similar. I currently have 1680x1050 and I wouldn't want to lose much in the terms of screen real estate. (I know this conflicts with my want of a light laptop, but a guy can dream, can't he?)
8 months ago, someone introduced me to the Dell XPS m1210 [1]. And it quickly became the top competitor on my list of laptops that I was considering. I couldn't afford it at the time, so I kept my eye on it. Soon, dell replaced this model with the XPS M1330 [2] which was even more appealing. But recently I've found out that the nvidia g84 and g86 are defective [3]. The Dell m1330 is one of the laptops with this card [4]. So that got me to thinking of not ordering the m1330 with the nvidia card. I mean, if portability is my ultimate goal, the graphics card conflicts with that. I could order it with the integrated Intel card, but there are a number of laptops out there with this card which are more portable.

So I got to looking around and I ran across the as of yet unreleased Sony Vaio Z Series [5]. Wow, what a sweet laptop. It actually satisifies ALL of my requirements and more. It's a high powered, very light machine with a great screen, dual SSD drives (w/ raid) and great battery life (or so they claim). Too bad it's $4k. Any other suggestions?

[1] -
[2] -
[3] -
[4] -
[5] -

Wednesday, July 30, 2008

Disbanding Terrorist Groups

A new Rand Corporation report comprehensively surveys the ways that terrorist groups have been disbanded in the past: "Military force was rarely the primary reason a terrorist group ended." Instead, historic wars on terror have been won with policing and settlements. Rand's conclusion? To defeat Al Qaeda, we need to end the war on terror.


Monday, July 28, 2008

This is entirely too much fun.

Speakeasy Speed Test

Saturday, July 19, 2008

Peters Who?

Boogies Burger is much better, and just around the corner.

The bacon maple milkshake is worth it.

Friday, July 11, 2008

Building a mod_secdownload using Apache and mod_rewrite

A friend of mine [1] runs a small record label, named Flemish Eye [2]. He's a great designer and understands PHP well enough to do most things, but I help him with anything that falls out of his expertise. He recently approached me with a request to build a secure download section.
The basic idea is that wants to provide a free download of the songs in an upcoming record in mp3 format to whomever purchases the record. So he would generate a set of secret codes, and

Read More

Wednesday, July 9, 2008

Bill C-61

Meh, some acquaintances of mine met for a peaceful demonstration surrounding Bill C-61 which aims to make Canada's copyright laws more like those in the US. I haven't had the time to keep up with the bill or to read it and its critcisms, so I didn't feel it was appropriate for me to comment.

But, I am grateful to those who did attend and did voice their concerns as I'm sure that my feelings about the bill would likely be similar.

Hopefully some real dialogue can happen, and the bill can be updated to reflect everyone's interests not just the large companies supposedly fighting piracy. Specifically, I hope that the bill can consider those of us who do not partake in piracy, and our rights to digital mediums as a right of expression and right of backups.

I am sick of paying a 'piracy' tax.

Tuesday, July 1, 2008

A simple problem deserves a simple solution


This past Friday evening I let some frustrations from the week boil over into name-calling on a friends blog post. I apologize to my friend, and I apologize to the Twisted community. Both deserve better.


In my final comment on that post I expressed my intent to respond and to further explain the feelings about twisted that caused me to react in the way I did. I also promised to do my best to ensure that my future posts would be a constructive experience. It is my intent that the series of posts will result in one of two things, or preferably both.

  1. I hope that I will learn something from these posts. Whether it be something about Twisted. Or whether it only turns out to be a lesson on communication.
  2. If any of my complaints are valid, hopefully they will be communicated in a such a manner that the Twisted community can address them and subsequently improve twisted.
Please read the rest of this post on my website.

Monday, June 30, 2008

cherrypy 3.1 released today

w00t! Cherrypy 3.1 [1] was released [2] today. I'm quite excited about it. For starters, I actually contributed some code. Although it wasn't much I did help debug some socket issues on OS X, and I helped flesh out and finalize the engine plugin interface. Although, I really shouldn't concentrate on my contributions as they are very minor.

Apparently Cherrypy trunk gained support for the Google App Engine over the weekend and I'm very excited about that. Anyways, congrats to fumanchu and the rest of the team!

[1] -
[2] -
[3] -

Monday, June 9, 2008

Saved? I don't think so

According to CTV and TSN, they have saved Canada's Second National Anthem. As nostalgic as the song is for me, it really surprises me how nuts Canadians are going over this fact. Honestly, I had no idea that so many Canadians watched Hockey Night In Canada because of the music?

If they really want to save the song, they should release it under the Creative Commons.

[1] -
[2] -
[3] -

Monday, June 2, 2008

A new browser competitor

Aside from the face-palming-symptoms of dealing with XML [2] DSL's [1][3], I came to another conclusion recently.

Flex, is touted as "a highly productive, free open source framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops, and operating systems." [4]

To me, that just reads: Flex, combined with the Flash Player is a browser within a browser. Proof:

  • MXML is equivalent to XHTML - it's a declarative layout language.

  • Flex MXML documents can have embedded actionscript. This is nearly identical to embedding Javascript inside of XHTML. Heck, these two languages have the same origins: ECMAScript

  • The Flex Libraries are well, equivalent to any of the multitude of Javascript Libraries JQUery UI, Dojo, YUI and eventheir own, competing, javascript library Spry.

  • Flex also has an equivalent to CSS that it calls ... well ... CSS even though it's not CSS.

Confused? So is everyone else.

The Flash player needed to run Flex comes as a binary blob provided by Adobe. Alternatively you can use the incomplete and differing FSF implementation of the flash plugin: gnash. Ergo, there are multiple, incompatible potential target environments for flex applications.

On the browser side we have the choice of a plethora of browsers, Safari, IE, Firefox, Opera, Flock just to name a few. The browser most like Flex, also comes as a binary blob for the web. Firefox, is available for all major platforms, and applications which target FF will deploy consistently on all major browsers, desktops and operating systems.

So, adobe re-invented the web, it's technologies and in turn re-created the same problems. They had a chance to improve upon it, to make something better. But didn't. *sigh*.

But more importantly there are many implications to this realization, one of which is the potential of opening up the flash specification, such that competing players can be created. I'm beginning to doubt that Adobe will ever do this. And it may be to their benefit. Having a plethora of competing, incompatible flash player implementations will turn flash development into the same nightmare that current web developers face with the competing browsers.

[1] - DSL -
[2] -
[3] -
[4] -
[5] -
[6] -
[7] -
[7] -
[7] -
[8] -
[9] -
[10] -
[11] -
[12] -
[13] -
[14] -
[15] -
[16] -
[17] -
[18] -
[19] -
[20] -
[21] -

Thursday, May 29, 2008

Very Concerning

I'm not sure what bothers me most. The fact that there exists a corporation who's business model is the equivalent of digital rioting, or that their servers aren't entirely in their control?

[1] -

Thursday, May 1, 2008


I demand MOAR unit-tests. MOAR!

Tuesday, March 25, 2008

A moment of zen

Zope is so high level it gets in your way. Twisted is so low level it gets in your way.

Friday, February 1, 2008

Fun at the turing tar pit

<lakin> lol
<jtate> fumanchu: definitely twisted
<fumanchu> yesterday our CEO sat down next to me and said, "even Glyph says it doesn't scale" :P
<lawouach> :)
<jamwt> haha.. great post
<fumanchu> I love the phrase "turing tar pit" -- brilliant
Seriously, Fun at the turing tar pit is a great read.

Tuesday, January 15, 2008

Mozilla Hired Humanized Founders

Wow. I never even knew about this company, called Humanize. But Mozilla just hired 3 of the main guys [1]. I just checked out Songza [2] and it's got a very simple, very cool interface. Not to mention that it lets you just listen to music. The interface is so simple, so clean, I immediately started using it.

It's always fun to learn about cool companies who are making great products. Specifically I google aza raskin and found his wikipedia page, which linked to a very good article "never use a warning when you mean undo" [3].

[1] -
[2] -
[3] -

Monday, January 14, 2008

How to simulate webfaction's apache/django setup in ubuntu.

I was recently interested in profiling my personal website which is a django application. Unfortunately, I use a shared hosting account on Webfaction. I haven't asked but I'm sure they don't appreciate having their servers hammered by an ab or siege process. Not to mention that it would use up your own bandwidth unecessarily. Also I wanted to be able to quickly and easily see the affects that various tweaks might have on performance and memory usage of my apache processes.

So I set about trying to replicate the basic apache setup that they provide. Typically, Webfaction provides the end-user with their own apache instance and config which runs the long running process, and then Webfaction proxies to this application for requests that come in on this domain. I don't have access to their proxy-server configuration so I haven't yet bothered setting one up, and for the purposes of this post will assume that profiling the application using just the long-running process apache to which the user has a configuration is good enough.

First, I set about installing mod_python, which (as always with Debian based systems) was dead simple:
sudo apt-get install libapache2-mod-python

Then I grabbed a copy of my current config:
ServerRoot "/home2/lakin/webapps/lakin_weckers_net/apache2"
LoadModule python_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule cgi_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule log_config_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule mime_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule env_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule dir_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
LoadModule autoindex_module /home2/lakin/webapps/lakin_weckers_net/apache2/modules/
Listen 3077
User lakin
Group lakin
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home2/lakin/webapps/lakin_weckers_net/apache2/logs/access.log combined
Errorlog /home2/lakin/webapps/lakin_weckers_net/apache2/logs/error.log
ServerLimit 2
DocumentRoot /home2/lakin/webapps/lakin_weckers_net/lcw_trunk/htdocs
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/home2/lakin/webapps/lakin_weckers_net/lcw_trunk', '/home2/lakin/webapps/lakin_weckers_net/swim_trunk', '/home2/lakin/webapps/lakin_weckers_net/django_trunk'] + sys.path"
PythonDebug On
SetHandler None
AllowOverride None

The ServerRoot for apache2 in ubuntu is "/etc/apache2". All of the modules can be loaded using two lines. The following example is for the mime_module. I would suggest you follow this method when there is an appropriate .load and .conf file in /etc/apache2/mods-available/. Although updating the module's .so location is possible some (like the mime) module require some extra configuration:
Include /etc/apache2/mods-available/mime.load
Include /etc/apache2/mods-available/mime.conf

Others, like the log_config_module are built-in. Which means our apache setup won't be exactly like webfaction but it'll be close. Also, for those modules which don't have an entry in the mods-available directory, you'll need to update their path. The log directory locations need to be updated as do the user and group that the server runs as and you'll need to add a line which specifies where to put the PIDFile. To finish, you'll need to modify the PythonPath line to update this configuration to where your code lives. My final result was:

ServerRoot "/etc/apache2"
LoadModule python_module /usr/lib/apache2/modules/
Include /etc/apache2/mods-available/cgi.load
Include /etc/apache2/mods-available/mime.load
Include /etc/apache2/mods-available/mime.conf
Include /etc/apache2/mods-available/env.load
Include /etc/apache2/mods-available/dir.load
Include /etc/apache2/mods-available/dir.conf
Include /etc/apache2/mods-available/autoindex.load
Include /etc/apache2/mods-available/autoindex.conf

Listen 8080
User lakin
Group lakin
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/lakin/Desktop/lcw_test/logs/access.log combined
Errorlog /home/lakin/Desktop/lcw_test/logs/error.log
PidFile /home/lakin/Desktop/lcw_test/

ServerLimit 2

DocumentRoot /home/lakin/Projects/
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/home/lakin/Projects/', '/home/lakin/Projects/swim/trunk', '/home/lakin/Projects/django/trunk'] + sys.path"
PythonDebug On

<LocationMatch "\.(css|js|jpg|gif|png|ico)$">
SetHandler None

The syntax of the config file can be checked with a single command:
apache2 -t -f webfaction_django_lcw.conf

And the server can be started and stopped easily as well using:

apache2 -f webfaction_django_lcw.conf -k start
apache2 -f webfaction_django_lcw.conf -k stop