As some of you are aware, I am a member of the University of Manitoba SAE (Society of Automotive Engineers) Formula Hybrid team. The major project that I have been working on for a while now is a CAN bus controller Arduino shield. The system is based on the one designed by Mike Sefton last year. We are using the same CAN interpreter because the manufacturer was generous enough to donate some chips to us. These chips work well, but they are designed to be used with an OBDII reader, so we are using a few work arounds to get the system to work for us the way we need.

Aside from some simple changes to the circuit, there are two major changes to the system. First, I added a the NUP2105L chip to the CAN bus to give us some over-voltage protection. The major cause of failure last year was over-voltage, which is always a concern when dealing with electric vehicles. The second change was to allow an outside system to communicate with the CAN controller over a serial connection. Last year the CAN devices were controlled directly by the Arduino, but this year the Arduino is basically a middle man that can do some processing of commands if needed.

For the hardware design, I decided to try out a few open source tools. I first tried KiCad because it was more cross platform and a fully integrated suite. There were some things I didn’t like about it though (although I may have just been looking in the wrong place for the feature I thought was missing) so I decided to try out gEDA. I personally liked the feel of gschem better than KiCad’s schematic editor, and the PCB software seemed quite good to me too. The workflow between tools is a bit less intuitive, requiring a few terminal commands, but I am quite comfortable with the command line, so I can see myself using gEDA much more in the future.

The files for the hardware design are posted here: HARDWARE

The firmware for the Arduino is posted here: FIRMWARE

The firmware is currently a very basic repeater but will likely see changes once we start figuring out what specific features we will need. Feel free to post a comment or send me an email if you have any questions about the design.


Those who have been reading my blog for a while will remember that I spent some time overseas working on my final year design project (aka. undergraduate thesis). We finally got our (unofficial) official grade back and we did pretty good. In the interest of sharing the knowledge we gained (as well as showing what we did) I am posting our final report and code here.

Final report

The code was written to be used with the simulator that was supplied by the Budapest University of Technology and Economics. Since this simulator is not our property, it has not been posted. Hopefully the algorithms we used are understandable. If anyone has questions, feel free to contact me.


Last term I took a course that involved a lot of FPGA programming. We used Altera’s DE2 development board as well as their example labs (Digital Logic and the first few Computer Organization labs). While the labs were quite enjoyable and very educational, it was a LOT of work compared to labs in other courses. This was also my first experience with Verilog (or any HDL for that matter) which didn’t help. Getting help with these labs was a bit tough as my classmates were all in the same boat, plus the professor and TA hadn’t done the labs yet. I have decided to post my solutions to these labs in case someone else down the line needs help with them too. I have included a README file with the code with a little more information and emails (or comments on this post) are welcome.

As an aside, I am currently hosting my code at github.com, but am debating switching to Gitorious (they seem to be more open source friendly) or possibly self hosting (Gitorious can be self hosted, or I might try cgit or Redmine). Does anyone have any thoughts on these? Perhaps other suggestions? I would love to self host, but the redundant offsite backups these services provide is always nice. Perhaps I will have to invest in a secondary, offsite server so I can do my own.


New scope!

I just got my new oscilloscope in the mail today! Note to others who might buy this scope, it is a Rigol DS1052E that I got for Christmas and it was purchased from DealExtreme. Apparently they ship the Chinese version, so it came with the Chinese power cord and the menus were all in Chinese. Thankfully I had spare PC power cables I could use, and setting the menu language to English wasn’t too bad as the knobs and buttons are in English and the main menu had just enough English to get to the language select. One thing that DE did that was nice was they added a “gift” note to the box (for only $0.01 extra!) to save me from duty fees, I guess. Thanks DE!

I haven’t used it much yet, but the first photo might give a glimpse into one of my current projects.

(Also, sorry to the photographers out there for the poor lighting in these shots; I took them late at night and was a bit lazy in setting up lighting.)


I have been using an Apple MacBook as my primary computer for almost four years now. The hardware is great (compact, light, and powerful) I have enjoyed that it has a clean interface and the same solid backend as some of my other favourite operating systems (after all, it is basically a customized, rebadged FreeBSD).

Today, however, I was prompted to install the latest OS X update and see that it mandates the installation of the Mac App Store. Anyone who has spent any time with me near an iPhone/iPad/Touch knows how I dislike the App Store. I will try not to rant too much here, but the basic points of my dislike of the system are as follows.

  1. The App Store is a bottle neck for app developers, necessitating a long delay between completion of an app and release to the world. Many apps also get blocked, often with poor rational as to why. This leads me to my second point.
  2. The App Store rejects apps for very hypocritical reasons. Two main examples come to mind. Google Voice was an app blocked because it replaced iPhone functionality. They also removed other 3rd party, Google Voice related apps at the same time. In reality no functionality was replaced as the iPhone had no support for using Google Voice on its own. In fact, there are a number of alternative dialers on the App Store that do replicate the iPhone’s features, yet they were permitted to stay. Another case was one where a dictionary app was blocked because it contained adult words. Meanwhile, the built in dictionary that comes with iOS contains all the same adult words and is included with the phone without an option to exclude those words.
  3. The above points are both ones that I feel are valid concerns, but are mostly just annoyances. My last concern is with the fact that the App Store blocks un-approved apps and leaves Apple with the power to remove any app from your phone that they don’t want you to have (as was demonstrated with the third party Google Voice apps). This demonstrates that Apple has no desire to respect their customer’s rights as product owners. I know that they masquerade as doing this to maintain a high quality product (their success at which is debatable, at best). However, if that were truly their concern, they could provide an “approved” and “unsupported” section in the App store. Apps that are queued up in the approval process could be put into the unsupported section until they get the Apple stamp of approval. An even better option, if you ask me (and just about any free software advocate) would be to provide repositories that users could add to the App Store. They would work just like the unsupported section, possibly right along side it, and would remove the ability for Apple to pull the plug on user software.

This brings me back to the Mac App Store. This new store, to my understanding, requires an iTunes account to access it and, like the iOS App Store, contains Apple approved apps only. At the present, I am still able to install all my favourite apps without Apple’s help, but things are looking bleak in that area. It seems to me that it is only a matter of time before Apple locks down their Mac OS X system as much as they have the iOS devices. Seems like now is a good time to finally jump ship and move on to a system that respects its users.