About Jamie
- Random information about me...if you like that sort of thing
Me.
It's generally a good idea to restrict the information you give out to strangers....let alone strangers on the internet, who happen to be *especially* mad. Possibly. Nevertheless, I'm going to feed your random (and no doubt extremely bored) curiosity a bit more than is probably a good idea.
You will, no doubt, have guessed my name is Jamie. Well done, have a biscuit. The more astute amoung you will probably have figured out my surname is Thompson, if you have, have another biscuit. Go on, I won't tell your dietician. Maybe. I was born in 1982 (making me 26 years and 3 months old) in Sunny Edgware, jewel of north-west London. My poor parents are Mum and Dad, or as you may know them, Karen, Gerald and Mick (another biscuit if you can figure that one out).
I lived in the super-happy land of Burnt Oak for awhile, whilst attending the nursery and infant sections of the Hyde school in Colindale (the one next to where that bomb went off (the post office one) back in 2001-ish). When my family moved to their present home in leafy Bushey, I moved schools to the bastion of grey and yellow uniforms, Merry Hill infant school. I was only at Merry Hill for a year, but I met some important friends there, who I knew for many years hence. The done thing was to go up the road to Ashfield Junior school, so I did, and it was here that my life started on its current path. In 1989 we got a second-hand Commodore 64...not to mention a couple of hundred games with it. I was enthralled. I'll stick the programming-related waffling in the section below so you can skip it if you're not *that* bored;)
These days I adore programming, my childhood passion was Lego...and I had tons of the stuff, but my greatest wish was to have more, so I could build something bigger or be able to use the particular brick I wanted even though I's already used them all...with programming, I discovered I had an infinite supply. If you ever get the chance, have a browse though "The Mythical Man Month" , in particular pages 21-23. Many people cannot comprehend my passion for what I do...but Frederick Brookes describes it wonderfully.
My other interests are pretty average really, I like to draw, though I rarely have the time to do so properly these days. I'd have probably become an wannabe artist rather than a wannabe programmer if I hadn't discovered programming. I like to read too, though again, I don't do it very often. As of typing this, my last read was Frank Herbet's "Dune". Another favourite of mine is that perrienial favourite, "The Lord of the Rings", it's the depth of the mythos that Tolkien created...well that and the fact I've always been a sucker for epic stories. The writings of Terry Pratchet (his "Discworld" series in particular) also fill a special role in my soul, for they share my twisted sense of humour. I doubt I'll ever need to become a writer, as Terry Pratchet has already written my masterpieces.
The same passion for epic storylines also drives my passion for anime, as there just seems to be something inherent to the overwhelming majority of content that makes it more than just a visual style. Most likely its a combination of being targeted towards an adult audience and the inherent freedom that animation provides to the storytelling. Though, even with modern advances in computer generated imagery for live-action films, the quality of the writing in the majority leaves much to be desired. The fact that most anime is presented as multiple episodes probably helps alleviate the problems with storytelling in a visual medium roughly equivalent to that of a written short story. My notable favourites are "Martian Successor Nadesico" (it has a similar satirical slant on the genre of mecha-orientated anime as "Discworld" has on fantasy), "Ghost in the Shell: Stand Alone complex" I like this far more than the original feature film...this series explores both the characters and the philosophical ideas of the story's world in a far greater depth, another favourite is "The Mysterious Cities of Gold", an oldie, but a wonderful story...though thats probably just nostalga working its magic.
I think I'll leave it there for now. I'm sure I'll come up with something else later.
- Jamie
My Programming History
The Commodore 64's manual a.k.a. the "User's Guide" was fantastic...it taught you how to program the machine! I can't say I picked it up too quickly. I didn't really start for a couple of years or so, and even then I got throughly confused when I typed in some of the samples perfectly and they didn't work (the manual was wrong, as in later years I went back and corrected them and obviously they worked after that). So I generally was stuck around the level of:
Hardly going anywhere fast to say the least.
Whilst at Ashfield though, I started playing with the BBC Model B computers that they had, and I once again started programming. Nothing fancy, but at least the manuals were actually correct this time, which as you would expect, helped considerably.
After leaving Ashfield I moved on to Bushey Meads, where I got my first use of IBM-compatible PCs. These 486 SX25 monsters were so alien to me I spent most of the first year thinking I had to log in using a sixth-formers account. Not clever. After discovering I had my own login credentials and that we should be using those and not the sixth-former's I was browsing around the applications on the network and I discovered that the school had a BBC Basic interpreter, and I used this to reuse my extensive BBC knowledge to make software with the power of, umm..
Ooooh. The progress.
I like to think that I'd have made faster progress if I'd had any kind of resources availible to me...but until I got to university in 2001 I'd never met someone else who I could talk to about programming....and way back here in mighty 1994, the internet was something I hadn't heard of, and neither had my school, whose extensive resources consisted of Encarta on the mutlimedia PC (oooh! A CD-ROM!) or the archive of the Times newspaper on a CDROM that used caddies. *sigh* It could've been much worse I suppose. We had a legion of disk-less RM-branded 80186 PCs in the technology workshops *shudder*.
Oh a random whim, our network admin added an icon (we weren't allowed the run command from program manager...though some of us had it) for QBasic...and that made me realise how wonderful programming could be without line numbers. Evil, awful, despicable line numbers. I started experimenting with QBasic late in the second year, but still hadn't quite got the hang of program structure (not surprising with only the online help to guide me). The main thing that I distinctly remeber was not grasping the concept of seperating code from data (i.e. loading data from a file and acting upon it). I can remember making programs where every level had it's own subroutine *grin*. Still, at least I was *using* subroutines...I was liberated from "GOTO".
My learning was hardly being nurtured though, when the time came to choose my GCSEs the closest I could get to anything IT-related was....office studies. Thats right, ofice studies. Writing memos, letters, and shorthand. Secretary classes essentially. Boy that was a mistake...but at least it was easy (in the exam it had a line-art drawing of a PC and peripherals and wanted you to name them), even so I only got a B grade, but I take solace in the fact that (then as seems to frequently happen now) there were irregularities in the marking that saw everyone getting grades less than they were expecting, but it cost 25 pounds to query the marks...and they needed at least 5 or so people to do it...and not enough people were bothered to go through the hassle. People ask how many GCSEs you have, rarely what you have them in.
I hit the limits of QBasic when I started experimenting with 256-colour graphics. QBasic's commands only offered addressing up to the standard VGA mode 19 (0x13 in hexadecimal), which offered 320x200 pixels with a linear framebuffer. Now QBasic is real-mode, and hence 16-bit, meaning that the largest addressible area of memory is 64KB, and with a 320x200x1 screen using 62.5KB, all seems well. But most VGA cards came with at least 256KB, though QBasic only gave you a single 64KB frame buffer (screen's worth of image data) to work with, preventing the use of techniques such as page flipping to prevent flicker. This was due to the design of the VGA card by IBM engineers to provide a linear frame buffer, where they skipped every 2nd, 3rd, and 4th bit thorugh some funky VGA register magic to make writing ot the buffer simpler; a noble aim, but an awful solution.
Mode X was the answer to this problem, as by manipulating the magic VGA registers manually you could reconfigure the card to allow you to write to the video memory you wanted to, thus accessing the full 256KB. It was possible to reconfigue the card to using a 320x240 mode (which was good as it had square pixels, unlike 320x200) with 4 screen buffers. The problem was that you had to write pixels by masking the other 3 pixels by twiddling the VGA registers...but it was possible and I managed to port a set of functions in the C language to QBasic.
It was then that I discovered the folloy of my ways. By Hacking out my own graphics functions, I lost the ability to use the built-in cut and copy image moving functions (think like in an image editing program). This was awful as I had no idea how to store the frame buffer contents and then paste them later. I gave up on QBasic and started playing with C.
C was interesting, as by this time Windows 95 was in full swing, and DOS programming was dying a nasty death. We had internet access, but lacking major search engines most of the tutorials I found were all still DOS-orientated and din't work well in Windows at all. Windows 95 *does not* like you switching graphics modes and twiddling VGA registers. Especially when you don't put them back as they were. I found all of my DOS compilers and libraries hoplessly out of date, and I was suffering as a result. I then obtained Visual C++ 5, and with it, the DirectX 3 SDK. I spent what seems like a lifetime trying to get the samples to compile, but I did, and I was amazed. I started fiddling with the samples and managed to port some of my C programs across using DirectDraw as a raw framebuffer, but I still had no idea about writing Windows applications and Win32 was still a mystery. The DirectX SDK advanced to version 5 and then 6, and all the while I was beginning to understand COM, but still struggling with Win32, and then suddenly I had an epifany and that was it, I just suddenly understood the message pump and and window proceedure and all the other nasty stuff that goes into making Windows programs, and I could start making things that weren't just rehashes of the samples.
I started on a game I'd toyed with in QBasic that used tile-based graphics to give the illusion of a larger, scrollable play area. I'd used a Link sprite I'd transcribed from the GameBoy game Link's Awakening via graph paper (no emulators back then!) and drew my own background tiles. I ported this to C/DirectX and then started getting to grips with C++ and classes. This I struggled with for a year or two until I once again had an epifiny and started thinking in OOP terms. Since then I've explored some of the deeper boundries of C++, discovering many flaws in the process and how to work around them. These days my interests lie mainly with design-related themes such as design patterns, portability and extensible frameworks.