Software Development

Return to main page.

I really like to program a lot. I started when I was 8 years old programming in Basic on a Radio Shack TRS-80 Color Computer II. Two years later we got a Tandy T1000 which was a 286 system with 640KB of RAM and a 20MB hard drive(yes, that's MEGA bytes). In High School, my grandma made a deal that she would double whatever I saved up in two years to help me buy a computer. Well, between selling a horse the next week and my grandpa giving me a $100 every month(she's very frugal with her money, and he wanted to see her have to shell out for the computer), she capped the whole thing at about $2000. So in short order, around my Sophomore year of High School I had a blazing fast Pentium 90MHz(which I still have, on a different motherboard in a different case... It even has the floating point divide flaw that was somewhat famous at the time), a 1 GB hard drive(yes, that is 1 GIGA byte, it was a whopping huge drive at the time), and 8MB of RAM. Well, I upgraded that one occasionally and it carried me through about my sophomore year of college. At that time I got a Pentium III 450MHz with 18GB hard drive and 256MB of RAM. A 100GB hard drive later, that's still my primary system.

Okay, so that was more or less a history of my hardware. In High School, I got into QuickBASIC, which was a huge improvement, followed quickly by C(via Turbo C). Over the years I went from that to Borland C, to Visual C(all legal copies even...). I had several brief interludes with DJGPP in the DOS days. So now, I program primarily in plain old C, but I'm branching in Objective C(via gcc) for my work. I have accumulated a decently large library of useful C code, and a lot of it is organized in a very OO manner and so its pretty easy for me to port them to Objective C objects. I love other languages besides C and so I also do work in several other languages including: VBScript(in Active Server Pages), SQL, Erlang, Forth, assembly(x86, 68k, 68HC12), occasionally QuickBASIC, and I'm trying to build up my skills on PLT Scheme. At some point, I would like to see what I can do in Smalltalk and mess around with Lua some more.

Since I did do my Bachelor's degree in Electrical Engineering, I also messed around with Hardware Description Languages as well. So I know VHDL pretty well, and I have even designed my own microprocessor. My interests in hardware lie in the direction of robotics and microprocessor design(especially stack-based microprocessor's, and architectures suitable for robotics applications). I like to use FPGA's for most of my hardware needs, and I'm really not a huge fan of microcontroller's(e.g. 68HC12, Z80, and the ilk), mostly because I've never had a dev board that wasn't quirky(could just be the quality(or lack thereof) of the labs at Tech though...), while I've had a tenth the trouble with FPGA and CPLD based work.

My first love of programming was computer graphics, and I still come back to it from time to time. I have wanted to do game development, and someday I may actually finish a graphical MUD that Israel Huff and I have worked on for a while. Other times I have wanted to design my own operating system. I still want to design my own programming language. I love digital libraries, and artificial intelligence is something I find amusing.

So after all that, here's a list of things I find useful for keeping up to speed on my various interests in writing software.



Important Papers

These papers are considered relevant, either to the history, or fundamental theory of computer science by at least some. This list is, um, lacking, and more will be added very soon.


Specifics

Basically, links about "specific" technologies and/or techniques. Sometimes papers, sometimes books.


Miscellaneous


Operating Systems


GUI Kits

<sigh> I'm not a fan of X-Windows, that of course doesn't mean I hate it, but I have always been interested in graphics, and so here's some interesting GUI projects, some X-based, many not, that I find to be interesting.

Interesting Software Projects

These are projects that I may have never used, but still have caught my attention because they do something neat, solve a neat problem, or may one day be of use to me(either ideas, or the code itself).


Tools and IDE's


My Favorite Languages


Etudes for Programmers

An Etude is a short musical piece to practice some skill in the performance of a musical instrument. The concept applies equally well for programmers, and here I try to list some short programs to write that will help you become a better programmer.

I would LOVE to have more of these, so as people find them, please send them to me.


Other Programming Language Links

LL1 Discussions

There are lots of interesting discussions and insightful comments about language design on LL1. I'm trying to list here the posts that I find to be worthy of remembering or something I want to explore further.


Blogs


Game Development

Game development gets its own section. I will probably not make a game anytime soon, but its a fun thing to think about, and so here's some sites I like.

Old Skool

This is stuff from back when writing a software 3D engine in DOS that run under protected mode was the pinnacle of game development. This day is long dead. Not that some of that isn't an instructive exercise. But really, many aspects of it are better off dead. That said, here's some of the better put together sources from that era.

Game Source Code

It has been fashionable for Id Software, and a few other companies to release the source code to some of their older games. I posted local copies for those who are interested.


Human Computer Interaction


More Programming Languages

Okay, the list has moved, it was getting to big, and needed its own page. Its now moved to Programming Languages List.