About me? You want to know about me? I assure you, I’m not all that interesting:
I began having an interest in computers at a very young age, probably because my father always had computers around. I distinctly remember that he developed a custom menu system for MS-DOS that would load on startup. I remember option #5 was for games. I was always fascinated with computers, and I learned to build them at a very young age… my parents tell me I was around 8 years old when I built my first. I’m sure I probably didn’t really understand 100% of what I was doing, but I can distinctly remember being that young and really enjoying it. At some point my father opened up a shop in Florence, NJ where he would build computer systems for people. We always had computer parts at home. I remember installing, among other things, sound cards, hard drives, CD-ROM drives, floppy drives, and SIMMS memory… the kind you had to put in on a slant and then snap them in. It mattered if you didn’t fill up the memory slots that you put them in the right order, or things just wouldn’t work. I remember that the notches on IDE cables weren’t there, so you had to know that the red stripe went a certain way on the hard drive and it matched with the little 1 printed on the motherboard that my father could never read. I had small hands, too, so he would always enlist my help getting into the tight spots on those wonderfully laid out motherboards and cases.
Those were the good ol’ days, and though I miss them, I love what I’ve learned along the way, and I love what computers have become today. We have more memory on our video cards nowadays than we had hard drive space, even after compressing your drive with Stacker 2. I find that awesome, and I don’t want to go back to what things used to be… that was boring and dismal in comparison, though the nostalgia definitely has a special place in my heart.
I came across programming languages pretty early too, but I never did much with them… I didn’t understand what the big deal was I guess, and I was always into games more. I saw QBASIC at some point, but it didn’t really seem to matter unless I was typing 1000 lines of a Super Nintendo Game Genie code generator that I had printed off some message board somewhere because I didn’t know how to download files at the time. I learned from some guys that hung out in my dad’s shop that you could use a hex editor on a saved game of Dune, finding your spice credits amount, and replacing it with FFFF for 65535 spice… the FFFF didn’t really make sense to me, but I knew it was the best you could get. I figured out that in Joe Montana football, I could create a team and set their stats. I created a super team and destroyed everyone… I still do that sort of thing today, because it’s fun.
Really programming for me started pretty late. Other than the little QBASIC I saw, I didn’t see any other languages until I got into IRC (Internet Relay Chat) during the days of Windows. mIRC was the client of choice (and still is IMO), and it had a wonderful scripting engine where I really learned the basics of programming. I would write bot programs to take over IRC channels by ping flooding people, coordinating 10 bots over DDE, simply by entering commands on the “master” script. It was called DoMBoT, and it was my first real programming project. Eggdrop bots also became a source of interest for me, but I never really got into programming in their scripting language TCL… I found mIRC to be much more user friendly.
Some time during my IRC beginnings, I learned that my ISP (CyberENET at the time, later Pulsar Communications or vice versa) gave everyone an account on their UNIX server. I’m sure that was because it was the way they handled user accounts and that they just didn’t have another way of allowing dialup connections without having an account on the server. I figured out that I could run my own IRC server, and I found a private network to link to called Warwick Online. I believe it was or still is another ISP somewhere in Warwick, NJ. I think they still exist at http://www.warwick.net/. Since all IRCD software was open source, or at least the one we used was, some other networks had modified the source code to do cool things, like theming their networks. I distinctly remember a network called Icenet that changed their /lusers statistics to read “Ice Cubes” instead of “Clients” so that it read “50 Ice Cubes Locally” or something of the sort. At that point, I realized that the IRCD I was running was also open source, and that I could make my own modifications. It was written in C code, and that is where I really started to learn that I could modify other programs to do what I wanted them to do. At some point I convinced someone online to buy me a book called Master C so that I could really learn C from the ground up. I still have the book for nostalgia’s sake, though it came with two 3 1/2″ floppies with program in it to test your knowledge and walk you through learning C. It was quite useful, and it was really the first bit of education I had regarding programming.
Enter Junior year of High School. I heard about a computer science class where they taught C++. It was the second year doing C++, whereas previously they were doing Pascal. I had never seen C++, and I wondered what the pluses were about… it must be cooler than C. It was, and it is. I soaked it up, and I loved every bit of it. In the beginning, I thought I was the master programmer and that I would smoke all these other people. I quickly learned that I was good, but not better than anyone there. They all had their own backgrounds, and they became great friends. I still talk to some to this day, though I have lost touch with others. I learned so much in that class, and I wanted more. My teacher at the time, Mr. Soroka, was my homeroom teacher, and I had attendance problems. I would frequently get to school late, sometimes missing homeroom and some of first period, and the next semester’s AP Computer Science class was first period. He didn’t want to let me take it, because he wasn’t sure if I was taking it seriously. I specifically remember pleading with him, and I am very grateful that he allowed me to take the class. I still had attendance problems, and I did miss the class many times. For the most part, I was there, though, and I did well. I, as did some others in the class, scored a 5 out of 5 on the AP exam. We had a great teacher, and he gave me the most solid foundation in programming that I could have ever hoped for. I attributed most of what I learned about software development to that class for a long time.
I took a year off after high school, and enrolled in a community college to get my Associate’s Degree in CISM. There, they did C++ too, and I was so excited to learn more! Unfortunately, the first class was below my skill level, and it was boring. I immediately started officially tutoring the other students, even though I had not completed any of the courses… I had to get a letter from the professor stating that I was able to tutor all three levels (Beginner, Intermediate, and Advanced) of the C++ class in one on one sessions. There I met another tutor, Rob. We hit it off and started bouncing ideas off each other in the computer lab. One day he showed me the “Game of Life” program he had come across, where you have a grid of blank spaces and asterisks that signify life.
- For a space that is ‘populated’:
- Each cell with one or no neighbors dies, as if by loneliness.
- Each cell with four or more neighbors dies, as if by overpopulation.
- Each cell with two or three neighbors survives.
- For a space that is ‘empty’ or ‘unpopulated’
- Each cell with three neighbors becomes populated.
I loved the idea… it was fascinating. I quickly wrote the program based on those rules, and it was amazing! It looked so organic in the patterns that emerged from those simple rules. I had done this with objects to represent the Life that had properties which I used to determine whether or not the cell was alive or dead based on the rules. I had an idea. I wanted there to be three types of animals… humans, lions, and hyenas. Each would have a strength value, a maximum age value, and I changed the rules to incorporate those.
The New Rules
- For a space that is ‘populated’:
- Each cell surrounded by more opposing strength than friendly strength dies
- For a space that is ‘empty’ or ‘unpopulated’
- Each cell with three friendly neighbors becomes populated.
I didn’t know how to accomplish this, because I wanted to do this with a two dimensional array, but I couldn’t figure out how that array would hold all my objects, even though I could only make it have one type. I was in the beginner class still, and I had not learned about polymorphism. Rob showed me what I needed, and it was awesome… I had finally learned something new! I made an abstract base class Animal that had all the methods I needed to define an animal, and I overrode functions so that they did different things based on their type. The grid was a two dimensional array of Animal pointers, and I started the game with a random number of each animal in random places. It was truly amazing to see the lions take over sometimes, but the humans take over some other times, etc… it was an amazing learning experience for me, and it showed that programming didn’t have to be boring.
I went on to get my Bachelor’s Degree at the Richard Stockton College of New Jersey, where I really didn’t learn any programming other than an assembly and cobol class. I saw the rest of college as a means to the goal of becoming a programmer. I did learn along the way, but I didn’t have any programming classes that I felt taught me a whole lot, except for maybe the Web Service Engineering class where we didn’t even develop a web service…
During my last year of school, I took a job as a PC Support Technician for Glassboro Public Schools in Glassboro, NJ. I worked with the director of technology there, George and other technicians to support the antiquated infrastructure they had. Shortly after I started there, we were knee deep into a huge overhaul, including replacing every single computer in the district with brand new Dell Optiplex 270/280 systems (this was around 2004 I think), and every teacher and administrator got a Latitude D610 laptop. When that was complete, we worked with the borough to get a fiber ring installed through Glassboro. We had 12 strands of fiber off the ring of 60+, which we used to install redundant connections to each building, two ways on the fiber ring, bringing them all back to the central office.
While that job wasn’t exactly what I had in mind for a career, it was definitely a huge learning experience for me in a field that I never expected to be in. I learned a lot about networking there, and made some great friends. I also developed a PHP/MySQL application for tracking support requests (work orders) while I was there. They used it for a short time, but later went with a turnkey application after I was gone. It wasn’t exactly a shining example of good software craftsmanship anyway.
At some point working there, I fell off a 5 foot ladder while running cat5e cabling to a class room. I fell not-so-flat on my back, but suffered only minor contusions. That incident became a catalyst for change, and I quickly began looking for programming work. George knew that I wanted to be a programmer, and I know he didn’t expect me to stay there forever. I had learned a lot there and I am thankful for the memories and great friends, but it was time to move on.
I took a job at a small company called Computer Service and Support Laboratory Information Systems Inc. Long name, I know! I stayed there for just under 3 years, and I had the pleasure of working with a couple good programmers. The lead developer there (Chris) and I had similar interests. He was an experienced programmer, self taught with lots of experience, and he taught me a ton about the right way to write code. There I learned business oriented programming, and three tiered architecture (application/presentation layer, business layer, data layer). It really opened my eyes to what a well written library can do for you. Unfortunately, Chris left before he could impart all his knowledge and experience to me, and I eventually felt the need to move on as well. I now work for Harrah’s Entertainment as a Programmer Analyst working on www.harrahs.com. It’s another huge learning experience for me to say the least, because it’s the first large company I have worked for, and I had never been huge into web development, even though I did do some at my last job. I thought I knew a lot, as usual, but it’s always just the tip of the iceberg when it comes to programming it seems.
One of the things Chris showed me was the XNA framework, and I am continually amazed by it. It has always been my dream to develop games professionally, and XNA gives me a great jump start in the long learning process that is to come with that. I’ve only just begun, and it’s already been one heck of a ride! I’ve been doing things that I’ve only dreamed about in the past, simple as they may seem (BeatPong), and it’s all because XNA is so amazingly freeing! I had tried to get into game development with DirectX and C++ in the past, but nothing ever took off, mostly because it just felt so clunky and cumbersome. Even if I never end up developing games professionally for whatever reason, I am happy that I have the ability to tinker with such an amazing framework (XNA), and that it is 100% free.
I have a beautiful family that supports me more than I could have ever hoped for. Although, right now, support from my daughter comes in the form of “Daaaaddyyyyyy” but that is enough for me My wife of almost 5 years, Lori, is one heck of a woman, and she puts up with a lot of what I will call “quirks” because I get to sugar coat it when I write almost 3000 words about myself!
That’s my past and present… if you have read this far, then I have either forced you to, you find me interesting, you love me enough, or maybe a combination of those. Whatever the reason, thank you for allowing me to show you the origins of my Geek Powers