What I do:
I am co-Chair of the School of
Information and Communications Technology at Seneca College
of Applied Arts and Technology in Toronto, Ontario, Canada.
My specialities are "hard-core" programming related: C, C++, UNIX,
Windows, etc. If you are interested in game programming source code
or driving simulations, check out my long neglected
EDrive project, which
I hope will eventually be useful for people preparing to
take a high-performance driving school at a race track.
If you want to reach me, send
me mail or stop by the School of ICT at the Newnham
Campus, office A4005. I do get a lot of email and sometimes things get
buried under the deluge, so please hound me if I don't respond.
Some reading for your perusal:
Here are some books I wrote on programming using C and C++. We used them
at Seneca for many years, but language standard changes make them somewhat out
of date. Nonetheless, I think they chart a compelling path for someone trying
to become a professional programmer, so I am releasing them here.
These books are linear, designed to be read
straight through, not designed as reference material where you jump in at
any point. The linear nature means that topics and ideas are introduced
gradually in a sequence that makes sense. Each book assumes that you have
read the one before. Enjoy.
- Foundations of Programming Using C - enough of a
subset of the C language is introduced in order to write programs that can
solve the majority of general purpose problems.
- Foundations of Object Oriented Programming
Using C++ - assuming that you know the basics of C (see above), this
introduces the concepts of object oriented programming so that you can tackle
more complex problems.
- Practical Programming Techniques Using C++
- assuming that you know some C and C++ (see above!), this covers the
twists and turns that were omitted in the earlier books, now that you are
ready for it. Some very practical techniques which are typically not well
covered, such as how people approach multi-platform development or go about
implementing data structures, are used to exemplify the technical content.
Here are some game programming materials I put together for a course I
used to teach:
Here are the slides for my FSOSS 2008 panel presentation:
Open Document format
Here are the slides for my CDOG 2010 presentation:
Open Document format
Here are the slides for my Seneca Faculty Forum 2012 presentation:
Open Document format
What I like:
Programming, running, BMWs
(esp. advanced driver education using
mine, although I miss my old one [photo Fardad Soleimanloo]),
red wine and garlic laden food, pizza,
Favourite obsessive timewaster:
on the PC (updated April 12, 2001). Check out my opinions, even though
they are old and need a serious update. I also have a not-quite-as-old review
of the amazing Gran Turismo 3 - A Spec for the
Sony PlayStation2, although I've since moved on to a Playstation3 and
Gran Turismo 4 and 5.
might want to check out two programs that are being marketed and sold on
the Internet: Live For
Speed and rFactor. Both have free demos
that let you get a feel for them before you have to plunk down any money.
Equipmentwise, I have a Logitech G25 wheel
(works with PlayStation2/3 and the PC), which is far
superior to any other wheel/pedal set I've tried. It features 3 turns lock to
lock, a six-speed shifter (for games that support it, plus paddle shifters for
games that don't) and a clutch pedal.
2013 update - a busy life sadly leaves me little time to play video games,
although I have found that mobile games are much easier to slip into and out
of. In particular, I'm really impressed with
Real Racing 3 on my iPad mini.
Some complain about the "freemium" model the game has, which forces you to
either pay real money or just wait (for things like repairs and upgrades), but
I have found that the mandatory waiting gets me to put the darn thing away for
a while and get other things done! Steering the car by tilting the iPad is
a surprisingly effective way to "drive", and it feels right even though there
is no force feedback.
Hardware failures, haircuts, spending money on clothes, "flavoured" coffee
(yes, I prefer my coffee with no flavour!), MARKING
Free stuff I've made
EDrive - currently
still just a prototype for a driving simulation. Maybe someday it will be
more fully developed.
a simple-to-use, multi-platform text editor, now open source.
QFMT (Quick Formatter):
This converts a text
file with imbedded formatting instructions (similar to, but much simpler than, nroff)
to a formatted pure text file. Useful for creating documentation
that must be readable anywhere. QFMT is free for use - the copyright message
is there so that you can't claim you wrote it and then try to sue me for stealing
it from you. It is provided without warrantee of any kind.
- qfmt.c, the QFMT source code (written in very old
K&R style C, compiles everywhere I've tried it, including VAX VMS!). Please
don't judge its code style - I wrote it when I was young, before I became
of the opinion that overreliance on global variables inhibits good modular
- guide to using QFMT (or look at
this qfmtdoc.fmt which is QFMT documentation
provided as a QFMT document, do "qfmt qfmtdoc.fmt | more" to view it).
- precompiled binary for Linux
- precompiled executable for use at the Windows