Legacy Geeky Projects
This page will outline some of the geeky projects that I've undertaken over the years. Totally pointless but you might find some items amusing.
Elementary
I was lucky enough to get a computer when I was 6/7. It was called an XT. It ran MS-DOS 3.20 . I did the first programming that I ever worked within GW-BASIC, coding hangman-style games.
As I moved forward within elementary school, around grade 2-3, I was exempted from gym class to take an optional computer class that the school offered. We started working with TurtleDraw on the Mac IIE. I remember discovering how to write functions at this time. I also figured out how to use the random generator supplied by TD, and coupled this with the functional programming to do all sorts of neat screensavery type stuff.
I didn't do too much with computers for the remainder of elementary school - puttered around and learned batch file scripting and other useless tidbits like this.
High school
In high school, things started becoming interesting. My dad helped me set up a part time business where I would do basic desktop publishing for people. I remember doing up master CB lists for truckers in Northern BC - they were quite popular at the time.
During grades 8-10, I was fortunate to take a number of computer related courses at our high school. Our teacher, Mr Kuroda, would use remote control software on the Mac systems so that he could demonstrate assignments. I quickly figured out that I could use the system break key on the side of the Mac to bring up a low-level console which would interrupt this process if I started before he did. I could then drop out of the console and do what I wanted while he taught the lesson. I think this was my first bit of "hacking".
In grade 11, I took the grade 11 programming class that the high school offered in Turbo Pascal on the Mac. My recollection is that about 1/3 into the semester, I completed the curriculum in its entirety. The teacher allowed me to continue onto the grade 12 work which I completed another 1/3 in. I then spent the remaining month of the semester playing networked Risk or writing various applications to "play".
In grade 12, I began to volunteer within the career prep area, helping them adminster their computer. The tech for our school was always overburdened so he was glad to leave me be. He wouldn't give us the administrator passwords for the machine however. I remember my friend Mike Alborn sneaking the SAM files off the workstation so he could crack it with L0pht so we could get admin rights and help them do work. The career prep folks ended up taking all my volunteer time and applying it toward my mandatory work experience requirement for graduation.
After high school
When I graduated, I immediately started work for Macrolink Administration Ltd. as an IT technician. Macrolink was developing digital curriculum for K-12 and worker training situations. I was able to polish my Office skills and help develop some neat processes and systems with my friend Richard Duval.
I remember spending a summer working with the 6.15 version of Btrieve database which came with our copy of Maximizer. We had purchased the software only to find out that it was immediately end-of-lifed due to the poor quality of the release. I spent a whole summer fighting with the software on a pretty much daily basis. In the end, I learned lots about how power management functions, how networked databases work, and how the DLL resolution within Windows functions. All in all, very good lessons.
I then proceeded to taking courses at UNBC. In the end, I finished up on two and a bit years of Computer Science, and about three years of Math. When I finally walked away from it all, I basically ended up missing a couple Math courses and my elective requirements. The tradeoff was that I was able to do lots of work with Linux and Solaris - coding with C++ and doing some really neat algorithm courses. I took some fun courses in computational complexity which still give me tingly feelings.
At the same time at work, I started pursuing Unix quite seriously. I was introduced to FreeBSD by the fellows at Mag-Net who I ended up working for 5+ years later. I ended up moving over to OpenBSD and developing firewall/VPN solutions. At the same time, I started introducing Mandrake into my hosting. We upgraded from a pooled dial-up modem running over NetBEUI on Windows, to a dual-ISDN line in FreeBSD, to ADSL service on OpenBSD. I started getting into the concept of hosting our office content - setting up self-hosted email and web sites. We continued with our NT 4 Server and I got to play with P2P and finally domain-based networking.
Things continued to progress. We purchased a computer lab and I started working on segregation of a TCP/IP network... setting up SQUID proxy caching and restriction...
My programming became more front and center. I wrote my first search engine complete with spidering, indexing and searching - all through PHP (file I/O in PHP used to be brutal to work with!). I started playing with Dan Bertstein's qmail and looking at how it worked on a low-level. In the end, I rewrote segments of the code to do transparent copying of messages passing through the queue, through another PHP interface into a MySQL database. With this, I was able to do comprehensive email reporting and reconstruction of threads. With a couple clicks, I could easily see every message coming into and out of our office and developed all sorts of pretty little reporting.
Life was good. We started hiring technicians at work to work under me, and I was able to start moving coding projects forward with my team doing a lot of the grunt work. We developed some really neat and forward looking stuff.
But in the end, Macrolink decided to close their doors and move on. I started a consulting business called Pachogrande Consulting Ltd. which still survives to this day, although it doesn't generate revenue any more and is basically a vehicle for my open source work. I got to go through the process of drumming up work, working with and as a subcontractor, invoicing and collecting, etc. I enjoyed the experience overall but got very frustrated with the collections process. I did some neat work with analog decoding of caller ID information and released a very rudimentary module within CPAN.
I decided to call Mag-Net up and see if they wanted to hire me. They did and I started work in January 2005. I quickly took over the hosting in its entirety. I developed, and am in the process of developing, a number of neat sysadmin-y things. For example, I developed a stats system backed on awstats that handles stats reporting for multiple independent domains on multiple different boxes onto a centralized storage location where the customer can view but not edit data. I then did reporting against these stats files so I can pull out bandwidth totals and similar for billing purposes. I got into SNMP work with switches and equipment - polling all sorts of fun data.
I started developing in Delphi for Windows and have built some neat applications here.
I've gotten heavily into the Windows Server 2003 Active Directory model. It's neat hooking into the infrastructure from Unix as you get to see the underlying mechanisms. I've built a whole bunch of computer sites - single DC, multiple DC, multiple sites - from speccing hardware all the way to final installation and configuration of the user applications and development of backup and recovery planning.
In my spare time, I'm presently working with LDAP and looking at larger scale networks from a purely planning perspective. I've been playing around with designing a school district infrastructure in a fantasy sense as I think it has enough distinct components to be interesting!