Tuesday, November 11, 2014

Technology is accelerating

As Ray Kurzweil says, (information) technology is accelerating.  This is great but increasingly we are seeing devices turning obsolete faster than ever.

  • Who want's to get CRT tv, anymore - even if it was free?
  • Why would I want to buy a motorcycle that doesn't have fuel injection?
  • Would you want a 3 year old cell phone?
When you watched a movie on TV, for the longest time, it was difficult to tell which decade it was filmed in.  You sometimes noticed when there were k-cars on the road and the movie wasn't trying to be set in the 80's.  But once computers and cell phone started appearing then you could tell quite quickly what decade, even what year the movie was probably made.
What worries me is the change of more expensive technologies in the future:
  • My car is obsolete because it doesn't have fulltime internet access or because it doesn't self drive.
  • My house is obsolete because it isn't smart or is too far in the countryside for high speed internet.
  • My city is obsolete because it doesn't have fiber to the home or levitating trains.
How will this affect buyers and sellers.  When self driving cars are common how much is your Mercedes going to be worth?  Should I buy the Tesla today or wait a year when it has more features?  Is buyers remorse going to be an ongoing problem (I just bought this car a year ago and now it is already obsolete).

When will this start affecting people. "I like her, but her animated Tattoos aren't even in color nor interactive - so old fashioned".

Sunday, June 16, 2013

Forusers.com homepage back up

My old web page forusers.com had been down for more than a year.

It had used an old version of TurboGears which eventually my provider stopped supporting and then finally last month my account expired and I didn't renew.
So it was really without a home.  This weekend I decided that I should put it back up.  It's been pretty good to me, it got me this great job because they found my resume on my site.

As I got the old files I found that I actually had more than 3 versions of the site.  The very first one was using Microsoft FrontPage.  My backup was littered with .htm files.

Later I had used PHP, and quite a bit. It's interesting how I used PHP more as programming language and less as a templating language.  It was difficult to understand how the site looked, it was all code and functions.  I had to use the Wayback Machine to find out what it really looked like.

Finally I had used Python and TurboGears.  After that I pretty much left alone, until now.

Since I like learning new things the site is running on Google App Engine with the go backend.  However, I'm not use any of the backend yet, it's basically a static page written in AngularJs.

It's going to take me a while to get all the pages up again, but at least I have a home site again, good to see you again old girl.

Friday, December 10, 2010

Vanity URL

Finally decided to buy scottkirkwood.com for my vanity URL, why not?

It points to my blog.instead of the less memorable scottkirkwood.blogspot.com and paying for 5 years is relatively cheap.

Monday, April 05, 2010

Key-Train Launched

In the spirit of "Release Early/Release Often" I've shipped the first version of key-train (key-train-0.1.0.zip).

Here's a screenshot:

Features include:
  • Training for all the lowercase keys on the main part of the keyboard in two languages (English/Brazilian Portuguese) and two keyboards (qwerty/ABTN).  More languages and keyboards should be easy to add.
  • Easy for others to contribute better lessons and new keyboards.
  • Easy for others to translate the software using the standard gettext package (I recommend using poedit). The key-train.pot file is created automatically - so don't edit it.  For your language, you would create a .po file like, this one.
  • A reasonable progression of keys and training (27 lessons).
  • Speed and accuracy training by typing in parts of Wikipedia articles.
  • Only one lesson file is required for different languages and keyboards.
But the program isn't complete, here's a list of the biggest problems:
  • The package is way too big, I have to split out the Wikipedia parts and drop the articles/paragraphs which would never be used (because they are too long/short or have ö∂đ  ĉȟᴀɹâçťêƦƨ).
  • Although you can change the keyboard, the keyboard displayed on the screen doesn't yet change.
  • The Portuguese translation is both incomplete and of poor quality.
  • The lesson plan needs work.
  • A students progression is stored.  It doesn't continue where they left off.
  • There are no graphs, problem keys, etc.
  • Even though most parts use SVG for display, it still looks pretty ugly.
  • The setup.py doesn't automatically install the dependancies (i.e. python-yaml).
  • It's doesn't use pip, distribute, nor does it have a debian package.
  • There are known bugs.

If you'd like to contribute you can say so on the discussion list or send me an email (at scott @ forusers.com).

Thursday, January 21, 2010

fsck'd my drive

After a few power failures during a week of storms I rebooted my Ubuntu Linux computer and fsck found some errors. Next time I booted it found (and corrected) even more errors, until, eventually I wasn't able to boot anymore (couldn't find grub).

I have a good backup system* so I wasn't too concerned (although this was my first real test).  I had run smartctl on the first sign of trouble and it didn't give any errors, so it didn't appear to be a hard disk failure. I figure this is an opportunity for me to setup 64bit version of Ubunt and I've also been thinking about dual booting to Windows® because Steam looks like an easy and cheap way to install games.

I put an old version of Windows XP in the drive and... it blue screened.  It just didn't want to install.  I tried two other versions and it also failed.  I then got the Ubuntu disk and it installed with no problems.  I tried Windows again, again it failed to install even though I had reformatted the disk when install Linux.

After much forth and back I decided to reset my BIOS to factory defaults, and low and behold, Windows installed!  Not very nicely, however.  I had no Ethernet, no sound, slow graphics and in only one monitor, but at least it was running.  I then installed 64 bit Ubuntu desktop and proceeded to restore all my files.

Next day I went back to Windows to figure out what was wrong.  It's been years since I've touched Windows and I was at a loss. How can I get the updates if it can't connect to the internet? Then I thought every time we buy some device it comes with a little CD which I normally throw out - I wonder why they do that?  Do people still use CDs, how archaic?

So I put in the CD for my motherboard which I luckily happened to have kept and in installed the drivers for Ethernet and sound and I was back business. Now I have Steam installed and the Torchlight game I bought for $5 bucks.  I'm a little sad that my computer has Windows on it, but such is life.

*Actually, I should have also backed up my package list (i.e. dpkg --get-selections) and my cron list (crontab -l), then it would have been even more painless. I've updated my backup program to dump out this information as well.

Sunday, December 27, 2009

Seven Segment Display in Inkscape

Today I got a little sidetracked while working on my key-train (keyboard training) project.  I thought I might spruce it up a little by using a seven segment display for the digits (say for the words per minutes), similar to what kTouch has.  I found an open source font, but it appears to be difficult to just use a ttf font in GTK.
So I figured, it's only 10 images, I'll just make them in svg.

I vaguely remembered a heathenx inkscape podcast describing how to make an LCD display and decided to use that at my base. Unfortunately, they didn't provide any source files in the show-notes (as far as I could see) so I had to watch and redo the drawings myself!

By naming each of the seven segments I could create the 10 digits simply by deleting a few elements in one template svg file.  I can create the template as beautiful as I like and quickly create the 10 derived images with these programs.

Unfortunately, both ImageMagick and GraphicsMagick don't handle svg blur properly so my little routine to make the nice combined image doesn't work correctly, but here's what a blurred (glowing) digit might look like.

So the you have it, some open source 7 segment SVG digits for you to use.

Monday, December 14, 2009

Choo choo, get on the Key-Train

Well I've done it again, started another open source project. Renata and I want Victor to learn how to touch type, but these days, it's hard to find a school that teaches just that.

So I looked at what available in open source and found KTouch.  It's pretty good however I found some issues with it:
  • The lecture files aren't very obvious. It's not clear, for example, that it has already loaded the default lecture file.
  • The keyboard is rather plain looking.
  • The scrolling text area you type in is nifty, but gets in the way for advanced users.  My typing speed is limited to how fast it can scroll back.  Also, as you get near the end of the line it's becomes difficult to see what characters are coming up, slowing you down and creating additional errors.
  • Like many other typing tutor programs, it shows only one line of text at a time, it's not obvious how many lines you have left to do. The first time I ran it I thought it was going to go on forever.
  • It doesn't teach you proper hand positions very obvious (i.e. it doesn't show a picture of the hands in position).
  • It forces you to learn the space and return key very early.  It also doesn't show you how you should click them (i.e. use the thumbs for the spacebar and pinkie for the enter key).
  • It allows you to type-in mistakes, forcing the student to learn the backspace key very early as well.
  • The progression of keys is rather odd. It teaches the C, N and T keys before G and H keys for example.
  • It doesn't teach all the keys, Comma, Dot, Slash, and Quote keys are never taught, for example.
I also found that the BBC has a nice online keyboard trainer that does a good job in many respects.

I decided to try my hand at making a keyboard training program for Linux with PyGTK.  I already have some experience with keyboards in my key-mon project, although this project looks like it'll be a little bit larger in scope.

Screenshot, so far:

Here's what I want to include, eventually:
  • Show the hand positions.  I'm taking photographs of my hands and digitizing the outline with Inkscape, like I did above.
  • Have a nice looking keyboard, the one above is an early (ugly) version.
  • Show the whole lesson in one big textbox. Thus it will be obvious when you're done and how far you have to go.
  • Use interesting text.  I'm thinking of grabbing pages from Wikipedia (like above) and using that instead of randomized text for the more advanced levels.
  • Use real words when possible. Use the aspell dictionary to verify if the words exist in the chosen language.
  • Use bi-grams and tri-grams from the chosen language instead of random sets of characters (I believe that is what KTouch does as well).
  • Automatically drop incomplete or weird training sessions to not adversely affect the final scores and progression statistics.  For example, you started training and then the phone rang.
  • Have it all scalable, by using SVG for all the graphics.
  • Have lots of options.  For instance:
    • Show (or not) the keyboard depending on the level.
    • Permit mistakes or not,  i.e. forcing the student to hit the backspace or not.
    • Show the key the user typed on the keyboard or not.  Could be distracting.
    • Show where the key is on the keyboard when the student makes a mistake.
    • Sound on/off.
Grabbing text from Wikipedia isn't that difficult and I'm contemplating using text from there for the advanced lessons.  My first thought was to use text from Project Gutenberg, but I found it difficult to find useful text there in other languages. Also, it's too easy to grab possibly inappropriate text, and the text in Gutenberg is all old, and may contain language that isn't in common use today.  Wikipedia is modern, safe, clean, interesting and has article standards.

I'm also planning to grab Wikipedia text to get some rough bi-gram and trigram frequencies for each language for 'random' text. It won't be perfect, but who needs perfect?

Last night I decided that I'll create the image for the keyboard on the fly.  They keyboard shown above was created with my Inkscape plugin. The original idea was to use this only as a starting point and then to pretty up the graphics afterwards.  I realized, however, that always building the keyboard on the fly gives me more flexibility for the keyboard layout (ex. international keyboards). It also will be easier to highlight better what keys you are learning, what keys you've already been taught and what keys have yet to be taught.
    You'll find the code at key-train, but it's not quite usable yet, I still have some work ahead of me!

    Wednesday, December 09, 2009

    Keyboard Monitor is being used

    I saw this week that Meet the Gimp is using my keyboard monitor program and gave me nice plug as well.
    It was thrill, but bittersweet, since key-mon still doesn't support the Wacom table (and I don't know how to fix it).
    I also feel it could look a little better (at least that I can fix).

    Thursday, December 03, 2009

    Feeling a little homesick

    Street view has some great shot's of Lennoxville.

    Bishop's University

    View Larger Map

    Lion's Pub

    View Larger Map

    Also of the the house I grew up in in Montreal.

    Exibir mapa ampliado

    No street view for Kingston yet. But there's this areal view of where I used to go windsurfing.

    Exibir mapa ampliado

    Thursday, November 26, 2009

    Additions to key-mon

    I've been busy and did lots of updates to key-mon, my keyboard status monitor.

    The big news is that it's now resizable!

    Normal size:
    Normal screenshot

    Small size:

    Larger size:

    It can be scaled to any size not just three, here it is at 2x without the mouse and showing the meta (Windows) key:

    Heathenx is helping me get nicer looking images, especially at smaller sizes. For the really small sizes I needed to change the look a bit,  so now I have two sets of SVG files, one for the normal size and another for the smaller size.

    Creating the different sizes was a bit of a pain. GTK wants to read the svg from disk so any changes made to svg needs to be dumped to a temporary file.  Also GTK doesn't seem to have a parameter to load and resize, so I end up manipulating the svg so that it is scaled larger or smaller.

    The extra work was worth it, I think.  Some screencasts today are high resolution, so the key status monitor will be tiny.  Other screen casts are very small, so the key status monitor takes up a lot of space. Now application is infinitely flexible and can serve anyone's needs.

    Last night I thought of another application.  Showing the full keyboard and showing what you are pressing as you press them.  A million years ago I wrote an application for school (written in Turbo Pascal 4.0) to help the students learn the keys to Word Perfect 5.x and MS Word 3.x. I could reuse some of the code from key-mon to do something similar, maybe for a typing tutor of some sort.

    Monday, November 23, 2009

    Created another open source utility key-mon

    This weekend I was watching screencasters.heathenx.org a video podcast about Inkscape with the Miro player. Heathenx had to apologize that his key status monitor wasn't displaying mouse activity.  This wasn't the first time I've seen problems with this utility, earlier in the year Meet the Gimp also had some problems getting it to work.

    I downloaded the program and put in on my machine, and sure enough the mouse wasn't working for me either. Looking at the output, it complained that I have more than one mouse and it was going to pick the last one.  It lied, I looked at the code and it actually picked the the first one. I changed the code so that it did pick the last mouse and it worked.  I thought of submitting a patch, but I realized that arbitrarily picking the last one might break the program for others for which it was working.

    To my delight the code was written in Python, using PyGTK. It wasn't even that much code, I could probably write a similar program to from scratch in a day. I've never used PyGTK (I mostyl have used wxPython), but a little googling showed that it is definitely the better choice in this case. PyGTK is already installed on most linux boxen (unlike wxPython).

    At that point I started cataloging the issues I saw with the program:
    • Doesn't support the Meta (aka windows key).
    • Doesn't support the scroll wheel, something that's used quite a bit in graphics programs.
    • Need to be root to run it.
    • There's no open repository (like code.google.com) to submit patches or issues to.
    • Doesn't have a context sensitive menu, you can only change options at the command line.
    • The window is not re-sizable.
    • If you don't care about the mouse or certain keys - you are out of luck.
    The original code kept all the images as PNG files, which is ok, but a little bit of playing around I discovered that GTK+ supports SVG extremely well (alpha transparencies and all).  I realized that I could create the images on the fly directly from the svg files!

    Instead of having 6 large images for the mouse (normal, left-button, right-button, middle-button, scroll-up, scroll-down),  I would need only one for the mouse and 5 other smaller pieces for the buttons and scroll wheel. GTK obeys the SVG document size, so I just need to make them all the same size and everything should overlay in the right location (code).

    It also means that I the potential to make the window re-sizable.  If the images are two small, I can make the bigger - too large, I can make them smaller (although I haven't done this yet).  For many of the keys I can just search and replace the SVG contents to show different text, reducing about 100 keycap images that I would have needed to create.

    The original code used the evdev module by Micah Dowty. With a quick code search I found a more recent version of this module.  With this version I could throw it all the keyboards and mouses and it would track them all, thus fixing the mouse problem.  Running it's built in demo showed that I could easy keep track of the meta key and the scroll wheel as well.  Also, on my machine, I didn't need to be root to run the program another bonus.

    I still have some work to do on it (more keys, packaging, refactoring). Here's what it looks like so far:  The pale buttons is just the lower dark buttons with a white semitransparent rectangle on top.

    It's amazing what you can code in a day these days.
    Visit to http://code.google.com/p/key-mon/ and have a look.

    Monday, November 02, 2009

    More Timelapse

    Here's the camera taking images of the evening sky.  I stopped it when it got so dark that it was taking nearly 4 seconds of exposure per shot.

    Here's the movie made at 25 fps with 900 photos at 5 second intervals.