Announcing Kafei Interactive Inc.

Today I am pleased to announce the formation of my new company, Kafei Interactive Inc.. The new company continues the work that I was doing as Granola Systems (BC) and takes on some of my work for Groupe Rutagi (NS/QC). I look forward to continuing my work with the Drupal community under this new banner from my new office in Montréal.

Comparing Canadian mobile Internet offerings

This week I finally bit the bullet and purchased a high-speed internet connection in USB form so I can work outdoors with my laptop this summer. I have done much research and had many questions along the way so this article hopes to resolve some of those frequent and common questions.

Does it work on Linux?

Yes. It does. All of the "Internet Sticks" or "USB Internet keys" currently sold in Canada support Linux.

In Debian 6 the device will be detected within about a minute and will then appear in your Network Manager menu. Don't click the connection yet - you have to configure a couple things first. You should open your network connections, click the tab where your "modem" should be and select "add provider". This will ask you what country and provider you are using. Do that! It has the 'dialup' info for your carrier ready to go for you.

The other thing it will need to know is a PIN number if you are on Telus. I put that in the PIN field and the password field. I put my wireless number into the username fields as some forums recommended. Apparently does not like that field to be blank.

What is the coverage like? Which network?

All of the Canadian offerings are currently on the same network technology, HSPA+, which is a variant of GSM. Those familiar with wireless will recognize that Bell and Telus are jumping over to the GSM side of the spectrum. Because of this, I considered all operators equally.

Telus and Bell have roaming agreements with the prairie telecoms and I plan to do some traveling though that region regularly... so they win in this case. I have Rogers network access already with my cellphone but they only really have coverage in Manitoba and some parts of Alberta.

For those new to this, Rogers runs it's own network, while Telus and Bell roam with each other's networks. They all use the same technology, but there are effectively two big networks in Canada.

Fortunately, I checked in on Sasktel's LTE/HSPA+ rollout and the places I'm traveling to are already running on the "new" network Telus/Bell/Sasktel network. So from now on I should always have a connection while I'm in the country, having the new Internet stick and my existing Rogers phone to rely on.

What is the pricing like? How much data?

Even though I am a web developer I use very little amounts data each month. Seriously. My work is all done on the server, so I connect to that and all the dirty work is done there. No uploading/downloading/uploading process in my world. I also do not watch a lot of video or listen to music online.

Having monitored my laptop bandwidth for a few months I can say I use about 5gb of data on wifi, where I assume no limitations, and about 0.5gb on my wireless account if I use it a lot (full time for 10 days will do it). I plan on using about 3x more data on the new wireless connection than my old one, so 1.5gb should be about right.

All of the network operators in Canada basically offer the same plan. Due to the potential for going wildly over budget I recommend the "flexi" plan (it is roughly $5 more but automatically adjusts to the next level if you go over).

Again, all major operators have this on offer:

$35 starter rate (500mb or so)
$55-60 midrange (up to 2gb on most or 3gb on Bell)
$70ish high/fulltime (5gb)

Anything over that will cost you about $50/gig and in my case Telus is going to stop the card from functioning at the 10gb mark. Probably a good idea since that would mean an extra $250 on top of my monthly bill.

Which Card is Best?

Telus offers two cards, Bell one, and Rogers two.

The best one on Telus is the Sierra series, so sayeth the forums. Construction of the card is better?

The best one on Rogers is the MTE variety. It seems to get higher speeds.

The best one on Bell is... well who cares about Bell.

I ended up with the lower option of the two Sierra cards Telus had on offer, the Sierra 306. I chose this one for a few reasons:

  • It only required a 1 year contract
  • It supported the same network(s) as the higher end model
  • The difference between high speed and ultra high speed is irrelevant (it is just reason to use more data)
  • The pricing for the higher end model is dumber than dumb. The outright cost is $29 more than the lower one, but you pay $79 up front on contract vs. $0... why so much more? Dumb.
  • Currently the bulk of users on the Telus/Bell network are using the older network technology, so there should be no harm in choosing a mid-range card on the new network... the network has few users thus lots of bandwidth.
    • Final Thoughts / Observations

      The stick is much faster than I expected. It is amazing to use.

      As I had been warned by some friends who have used these things, the USB sticks get hot really fast. It is okay though. They are tested to run that hot.

      On a busy day my bandwidth usage is about 65-70mb. Primarily using SSH to connect to servers and a lot of page reloads while I'm developing.

First Drupal code release - Node Tasklist

Yesterday marks my first public foray into developing contrib modules for the Drupal project. I applied for project maintainer status for my new module, Node Tasklist.

From the description of the project:

Each time you visit the page or block created by this module you are presented with the edit form of the most recent node of that content type. When you save your changes, you are returned to the same page so you can perform another update to the node.

Read the description of Node Tasklist in my sandbox.

I made a demo of the module at the end of Montréal's Blitzweekend, where I put the final touches on the code.  You can see the module in action here:

I really love doing work that has a time component.  I have in the past written shell scripts and scheduling systems.  I also have a time tracker I developed in-house with Drupal and much more.  I hope to release all three of those as community projects once the Node Tasklist module is fully polished.

Tips for working with Web Developers

Are you working on a web project right now? Have you hit the wall working with your developer? It has happened to us all, on both sides of the fence, and after 2½ years in the business I have some wisdom to share.

  1. Writing software is a creative endeavor. It is effectively like writing a book, but for a machine to read. It just needs a special language and has lots of grammar rules must be followed. Have some respect for your developer and you will get the best results.
  2. Developers cannot code when they are upset. This is important to understand. If you wrote a novel on your way to work, while stuck in traffic every day, nobody will want to read your book at the beach. Why? It would just not be that laid-back friendly book you want to read at a beach. The same goes for software. Making a dev angry doesn't help get the code flowing. Give your developer space when things flare up.
  3. If you know how to do it, you don't need a dev. Telling anyone how to do their job is generally a faux-pas in any situation but lots of clients love to do it with software. Focus on constructive feedback. Things that help everyone progress through the project.
  4. "That should be easy" Just because a piece of software or a practice you want to emulate is out there in the wild does not necessarily make it easy to setup in your environment. Talk to your developer about how long things should take and ask for alternative ideas if you need things done sooner.
  5. Focus on your goal, not the implementation. What do you want your users to do? It is better to approach a developer with an idea that they can find a way to implement. If you dictate how the implementation should happen, which modules, what type of code, etc, your project will likely take longer and cost more... unless you are in some sort of privileged position to understand how all of those elements work together (ie, if you are also a developer working with a sub-contractor).
  6. Formalize your requirements up-front. There is nothing worse for a software developer than a client who at the very last minute decides that they wanted something completely different. This sounds absurd but it happens. Get a statement of work from your developer and make sure everything you need is on it. At the start. If it isn't, do not be surprised when components are missing or add-ons get billed out differently than the rest of your project.
  7. Do not lie to your developer. This is just basic. If you lie to your developer it will eventually catch up to you. Due to the creative nature of programming breaching trust can have a catastrophic effect on your project. Respect the professionalism of your developer and you will get the same in return.

Any other suggestions? If you have some that I feel are worth publishing I'll add them to the list.