I love to program computers and I've gotten pretty good at it. My family's first computer was an Apple IIc, but I didn't start messing with programming until we bought a PC around my 8th grade year. I started programming DOS batch files then learned BASIC and then studied BASIC in high school in a Business Computer Programming class taught by Mr. Marshburn. I also took two years of computer science in high school where we studied Pascal. All of our work was done on an HP mainframe that had a 20Mhz processor. It was loaded with security holes and I learned a lot about Unix and C programming in that class.

I started working in assembly language on my own and picked it up quickly. I was interested in computer graphics and sound and in those days you had to be efficient to do any kind of animated graphics.

I wrote a program that assigns students to lockers for my high school. I first wrote it in qBASIC, but then it reached the limits of what the BASIC LANGUAGE could handle. I rewrote it in assembly with ASCII graphical menus with mouse control and took execution time from 2 minutes to 15 seconds. After realizing that no one would be able to maintain the 2800+ lines of assembly, I rewrote the program again in C using linked lists in about 400 lines of code. I later wrote a Visual Basic front end to capture how they wanted to assign the lockers and then used the C program to do the meat of the work.

The summer before I went to college I worked at QuantumMediaConsulting. There I programmed in C (djgpp) to make a 3-D game. You could fly an airplane off an aircraft carrier, shoot down four other planes with guns or missles that had boxy smoke trails and then return to the air craft carrier for a difficult landing. As I was not a good data structures programmer at that time and I was using linked lists of lined lists all hand coded, sometimes it would crash. I also worked on a business card maker VB application where you could position text and buttons and then export your settings with a VB runtime to be put on a floppy disk. It was here I got my first exposure to Perl as a cgi language, and Java applets.

I studied computer science at Texas A&M. I was able for the most part cruise through most of my CS classes. Finally I took two classes from Dr. Salih Yurttas where I really grew in my programming ability. The classes were Formal Programming Languages and Structured Programming in Ada. It was in this class that I learned the importance of styles and how they vary by programming language. I learned what it meant to write object oriented code, what it meant to write readable code, and how to read code. Dr. Yurttas would always grade our homework by reading the code without even running the program. His homepage is located at http://faculty.cs.tamu.edu/yurttas/. I can imagine him reading his homepage: "This is the homepage for dr. salih yurttas, but more important than that is the courses that I teach, but more important than that is learning about the languages. He is a quirky guy, but I learned a lot from him and am a better software engineer as a result.

I also took a few electrical engineering classes and I liked piddling around with 8051 microcontrolers.

Through all of the summers I went to college except one, I worked at Karta. There I learned about Active Server Pages, ODBC, and Access when I wrote a demo site for KCI and did other various web scripting tasks. I wrote all of the cold fusion code and SQL to store Plans of Instruction for Lackland Air Force Base. I wrote a C program to test PC's for y2k compliancy that was used to check computers in several medical centers. I wrote an asp program to interface with an SQL 6.5 Accounting system to generate reports, some of which were in VML. I wrote an entire project management website for managing projects, clients and tasking that included reports to show utilization of resources.

The summer I didn't work for Karta. I rewrote http://www.7deadlysims.com from asp/access to jsp/postrgresql and also wrote http://www.8thdeadlysim.com. I did the work for free to get a percent of the revinue and those sites continue to serve thousands of customers.

Sometime around then I found a text editor called jEdit. It has a plug in architecture where the plug-ins are just jar files. It comes with a BeanShell based Macro language that allows you to manipulate the java objects that make up jEdit itself. I've written several macros that help me significantly.

I started work full time for Karta in January of 2003. The first three quarters of the year I worked mostly on a Learning Content Management System (LCMS). The goal of the LCMS was to give our instructional systems designers (ISD) a website where they could author content in a powerpoint/photoshop like manner. Then the content could be exported and bundled with a javascript runtime to a packaged SCORM complient course. The server is written in jsp/java using versioned XML datafiles. I made use of XML Schema and JAXB when it was still in beta. I also wrote a program to take the generated Java classes for storing the data and generated Javascipt classes. The authoring is done client side in Javascript. I taught myself how to write object oriented Javascript where several interfaces make use of around fifty Javascript classes. A good article is located on http://www.crockford.com/javascript/javascript.html. I wrote utility methods to perform my own version of inheritance that supports calling methods of the super classes that were overridden. I also designed an event listening model that allows listener classes to be fully W3C compliant-- even when run on Internet Explorer. It was in this project that I realized how better a browser Mozilla is than IE, especially considering the Venkman debugger.

Around November 2003, I started working on a vehicle locating service. After using JAXB/XML I was interested in other persistence frameworks. I found an excellent one at Hibernate especially when using XDoclet to generate the object-relational mapping. That way my persistence classes can have custom coded business logic in them. Part of the application is a Java application that takes data from the device and processes events based on speeding or geofences. The web interface consists of several JSP configuration pages and two flash based interfaces: tracking and geofences. The tracking interface was written with ActionScript 2.0 and uses flash remoting to poll the server for new location information about the vehicles it's tracking. Communication between the Java web-app and the application for devices occurs through JMS.

TagInfo