David Foster

Skills

Outdated. This page is being maintained for historical curiousity only.

Please see the new About page for accurate information.

Computer Languages

Java, C#

Java is my native programming language and the language that nearly all of the projects featured on this site are written in. I know every syntactic construct (including some rather esoteric ones) and am quite adept at applying design patterns in this language. In addition I am very familiar with the structure of Java bytecode and the workings of the Java Virtual Machine. Most of my experience in this language was obtained by working on decomp4, my Hotline client, and my KiSS viewer.

In all important respects, I have found C# to have the same basic philosophy as Java, during my use of it at Microsoft.

C

C was the first "real" programming language that I learned, and I still make good use of it when writing low level code for microcontrollers. I know every syntactic construct in this language. My experience in this language comes from writing code for the embedded systems in robots and from my work on C Refactoring Workshop.

C++

I have been writing code in C++ almost as long as I have been using straight C. I avoid the use of many of C++'s advanced features (such as the use of templates for template metaprogramming) because I think they are too easily abused. As a side effect of this policy, there are a number of advanced C++ constructs that I am not familiar with (such as the special *_cast operators). My experience in this language comes from the same areas that I use C.

x86 Assembly

In the past I have written small programs in x86 assembly, just to see what was possible with the bare metal of the machine. I am familiar with but not proficient in inline x86 assembly in C. My experience with this language comes from other instructors at National Computer Camp, extensive tinkering, and authoring a set of 33 instructional worksheets for learning x86 assembly.

AppleScript

AppleScript is a scripting language for Mac OS that allows you to control programs and documents in order to automate repetitive tasks. It is heavily based on HyperTalk, the first language that I learned. Today I use AppleScript to create small programs that automate tasks for me. My experience with this language comes from writing the GTPrint Printing Scripts, writing small scripts to automate odd jobs, and from observing parallels with the HyperTalk language.

HyperTalk

HyperTalk is an old high-level scripting language used in Apple's HyperCard program, which is similar to Visual Basic. This is the first language that I ever used and also the first language I mastered. I learned this language through extensive tinkering in my copious free time when I was very young. My most significant project in this language was my Dungeons game.

Web

HTML, CSS

I have written and maintained several small websites by hand, including this website and the GT ACM website. This website is the first site that I have used CSS to do non-trivial styling of pages.

JavaScript

I am still learning this language. Recently (as of March 2008) I have started using JavaScript to implement my own interactive web applications. My most significant use of this language to date is in NetDraw for the Web.

Drupal

Drupal is a content management system run by several dynamic websites. I learned a lot about this framework while building a new personal website that used it. Drupal is excellent for community sites - especially those that require fine-grained access controls.

MediaWiki

MediaWiki is wiki software that is run by several well known sites, including Wikipedia. I helped set up and subsequently upgrade a MediaWiki server for the RoboJackets robotics club. I am also one of the primary contributors to the RoboJackets IGVC wiki.

Programs

Eclipse

Eclipse is my favorite Java IDE. I have used it in numerous projects to date.

Microsoft Word

I have used several of Word's more advanced features (such as styles and templates) when I authored a set of instructional worksheets for learning x86 assembly at National Computer Camps.

Tools

Subversion, CVS

I have used both the Subversion and CVS version control systems in several of my projects. Additionally I have experience in setting up repositories for both systems and migrating history from CVS to Subversion repositories.

Apache Ant

I have written Ant buildfiles for several group projects while studying at Georgia Tech. I have also worked with custom Ant tasks before.