"Every man dies. Not every man really lives." - William Wallace

toad's wild ride

the past

On this page you will find details about my past. This includes my education and my work history.

education summary

Bachelor of Science in Computer Science (3.317 GPA)

Kansas State University - December 1998

Master of Science in Computer Science (3.786 GPA)

Kansas State University - May 2002

education - the story

I attended public school in Manhattan, KS starting at Theodore Roosevelt elementary school. I then went on to the Manhattan Middle School (junior high) and finished at the Manhattan High School (MHS). I was never a star student but I did just good enough to get by. Unfortunately, my parents saw something in me so they made me take things like advanced english, calculus, and some advanced science courses (cell biology as well as human anatomy and physiology taught by Mr. Lamb). Because of those challenges, I started to try harder. Besides, I couldn't let my best friend get better grades than me! I definitely inherited my dad's competitive streak.

While attending high school, I was able to start taking classes at K-State to jump start my college education. This was great because I got to leave high school early (at lunch) to attend my K-State classes. This made my senior year much more fun than most students have the chance to experience.

After graduation from MHS, I enrolled at the University of Missouri at Rolla (now known as Missiouri University of Science and Technology). I had a dream of playing college soccer and this was the best compromise I could make with my dad (I wanted soccer, he wanted me to get a good education). I only lasted 1 year at UMR - I ran through my college fund, gave up on soccer, and was home sick. I can claim that I made the varisty soccer team - unfortunately, I couldn't last while still attending class and participating with my fraternity. It was a fun couple of weeks being a college athlete.

Coming back to K-State was a great choice. It is a great institution, has a great Computer Science department, and was much cheaper (in-state -v- out-of-state tuition). It even had a competitive club soccer team so I could continue to play soccer at a moderately competitive level.

After completing my Bachelor of Science degree in Computer Science at K-State, I decided to continue my education. I wanted to continue learning but I also had a reason to stay in Manhattan ... my future wife was starting her degree program in Veterinary Medicine at K-State.

I started my Master of Science in Computer Science with no idea what I wanted to focus on. At first, I wanted to learn more about computer security. I loved the movie Sneakers and wanted a job just like that. I thought that if I understood computer security I could find a job that matched. I then got involved with Dr. Matt Dwyer's research in software verification and validation. At that point, I was hooked. Working on the validation and verification of software was interesting, the work was fun, and the people were challenging. So I did a project to complete my MS (instead of a thesis or final exam) and extended the Bandera model checking UI to include some cool features.

Upon completion of my MS, Dr. Dwyer offered me a full-time software developer job with his research group. I accepted and that might be the end of my educational story (who knows if I will ever attempt more education ... like getting one of those PhD thingies).

working summary

Technical Support Guy - IET at K-State

May 1995 - September 1995

Web Developer - ISO at K-State

May 1996 - May 1998

Programmer (Intern) - Air Intelligence Agency, USAF

May 1998 - August 1998

Database Administrator (Junior) - ISO at K-State

August 1998 - May 1999

Software Engineer - Innovision

May 1999 - November 2000

Java Developer - Loudfire

December 2000 - September 2001

Graduate Teaching Assistant - CIS at K-State

September 2001 - December 2001

Graduate Research Assistant - SAnToS Lab at K-State

January 2002 - May 2002

Research Associate - SAnToS Lab at K-State

May 2002 - December 2008

Contract Software Developer - AdaCore

January 2009 - June 2009

Software Developer - The IDEA Center

December 2008 - present

working

I have been working since I can remember (I have a bad memory so my working years might have started last week for all I know). From manual labor jobs, to restaurant jobs, and now in my technology career, I have tried to work hard and make the most of every opportunity.

the early years

I started my working career babysitting, mowing lawns, and doing odd jobs around the neighborhood to support my toy habit (GI Joes are expensive for a kid). Once I was old enough, I got a job working with the City of Manhattan as a scorekeeper for youth baseball and softball games. Thanks Buck for the opportunity and the patience as I learned what real work is.

Shortly after I got my first taste of real employment, I got hired as a bus-boy at a local restaurant chain called Bonanza. It was a buffet-style restaurant that also served steaks, chicken, and other various main dishes. I worked at Bonanza for over 2 years and worked my way up from bus-boy to line cook. I was never trusted to work the register (which was probably a good thing since I was not very mature) but I learned almost every other position in the restaurant. I felt slighted though since I never got a raise.

I got tired of making minimum wage and wanted a chance to earn some real money. Unfortunately, I had no real skills so I convinced my mom, who was a real estate agent at the time, to hire me as her assistant. This was a great job since I got to have a very flexible schedule, not to mention getting to spend time with my mom. I was tasked with lots of little duties including errands and setting up schedules. My least favorite part of the job was making calls to set up showings for her clients. I hated making phone calls, especially to strangers.

During summers I had extra time and extra energy. So my friend Matt and I decided to start up our own business. We founded Grass Masters USA which was a full-service lawn care business. And as Matt likes to say "we were neither masters of grass nor covered any significant portion of the USA." But we did have a lot of fun mowing the lawns. We didn't make a lot of money but we covered the cost of the gas we used driving around and the food we ate while we were "working". This made summers fun.

the real jobs

Once I got into college, I had to a find real jobs to gain real experience. Otherwise, I knew getting a job right out of college would be very difficult.

Technical Support Guy - IET at K-State
May 1995 - September 1995

The summer after my freshman year I worked at the Information and Educational Technology office (IET) at K-State (an office in the Communications department in the College of Agriculture). I was hired to work in technical support for the extension agents at K-State and around the state of Kansas. This involved troubleshooting issues and walking users through solutions. We spent most of the time supporting custom software used by extension agents to manage finances but also worked with MS-DOS, WordPerfect, and in some cases, Windows 3.11.

This position helped me to learn how to troubleshoot technology issues as well as the importance of communication in finding a solution. This is a common issue in technical support that breaks down frequently. A customer has a problem and the support personnel fail to listen and to communicate clearly. At times, support personnel treat clients as "dumb users." Not the best way to solve problems.

I owe Roger, Gary, and Kathy a debt of gratitued for the opportunity, training, and patience.

Web Developer - ISO at K-State
May 1996 - May 1998

During the summer after my sophmore year I found a job doing web development for the Information Systems Office (ISO) at K-State. I was responsible for taking over the development of a couple of applications for K-State. The first was an online admissions application for entrance into K-State. The second was an online application for scholarships. Both were written in Perl and interfaced with K-State's SIS in an "interesting" way (SIS was the Student Information System that ran on the K-State mainframe system and held all student data including applications, scholarships, and grades).

The admissions application was already under way when I started at ISO so I started by testing and doing some simple code clean-up. The scholarship application was completely my fault ... or responsibility. This was my first real programming and my first experience with Perl so it wasn't the prettiest code ever written (it will likely end up on the Daily WTF).

During my time at ISO I was also involved in other projects including:

  • Tested the initial KATS system which allowed students to access their student records and enroll in classes via the web.
  • Y2K Fixes - Had to learn a little about COBOL and the mainframe to help with this project.
  • Helped to develop the Registrar's office website. I created the initial template and once given content, organized and created the site.

I owe Mike Stauffer, Mark Grinter, and Dale Grunewald for their training and guidance.

Technologies/Keywords: HTML, PaintShop Pro, Perl

Programmer (Intern) - Air Intelligence Agency, USAF
May 1998 - August 1998

During the summer of my senior year in college, I was able to do a summer internship with the United States Air Force. I worked in San Antonio, TX at the Air Intelligence Agency as a programmer. There were many really great things that I got to experience during this time including getting security clearance (TS/SCI) and working with some really great people. But the best part was working on an application that was truly important.

This internship provided me great opportunity and great challenges. I helped to extend an existing simulation application (written in C++). I also had the opportunity to help run several simulations with active duty personel (real pilots). It was truly an honor to be working with such great people.

Technologies/Keywords: C, C++, make, SGI Irix, Sun Solaris

Database Administrator (Junior) - ISO at K-State
August 1998 - May 1999

During my last semester as an undergraduate student and my first semester as a graduate student, I had a job as an assistant database administrator. This meant I got to learn a lot about Oracle as well help automate some of the regular tasks. I also got involved in some simple software development. With the help of another student, we developed a wrapper application that would install and run the Peoplesoft client.

My favorite task as a DBA was writing a script to automatically download patches for Oracle. I never realized how many patches they had but my script regularly downloaded a dozen patches each night. Once downloaded, a Senior DBA would evaluate the patch to see if we needed to apply it. I assume that Oracle DBAs now have better tools to do this but this was a necessity at the time.

I owe Judy, Martin, and Mike for their time training and guiding me. They took a piece of raw clay and molded me into a barely presentable DBA.

Technologies/Keywords: Oracle, WinBatch, bash scripting

Software Engineer - Innovision
May 1999 - November 2000

The first summer of graduate school brought me a unique opportunity - a real programming job at a small software company in Kansas City (to be precise, Lenexa, KS). Innovision offered me a summer job with the possibility of continuing as a tele-commuter when I went back to school.

While at Innovision I learned Java and was first exposed to XML and the related technologies. One of my favorite projects was working with Matt Hamer on weavelet.com. It was a personal portal for XML data. Google Reader and FeedDemon are similar in many ways to what was created at Innovision.

Another fun project that I got to lead was research into client-side technologies in web browsers. I created something I called a "Non-Visual Applet" that would download information and update the page without a refresh. At the time it was truly unique. It made use of Java Applets, JavaScript, and what was referred to as DHTML (dynamic HTML). We used this to build several demos but it never quite worked as a product. We had major trouble with browsers abilities and their lack of commonality. In other words, we could get it working in Netscape Navigator but not in Microsoft Internet Explorer.

I also got to be involved in the following:

  • System administration for our servers and workstations.
  • Maintenance of the Innovsion Financial Server (IFS).
  • Recruiting at the K-State Career Fair.
  • Development of the next generation platform for Innovision: Nepal.
  • Installation and experimentation with the IP phones.

I owe Bill Cary for the opportunity to work in a great company. I owe Nick, Ed, and Barton for training me and suffering through my "know-it-all" attitude.

Technologies/Keywords: Java, Perforce, SGI Irix, OpenBSD, HTML, JavaScript, JScript, XML, XSL

Java Developer - Loudfire
December 2000 - September 2001

While still working on my graduate degree, I had the opportunity to work with a small start-up company based in Wichita, KS. It was run by two brothers (Kent and Craig Johnson) who were already experienced in software start-ups. The focus of my work shifted quite a bit as time went by. I started with a project to do "screen-scraping" of weather data and then moved onto working with caller-ID info using the JavaComm API. My favorite project was building an interpreter for a custom language using SableCC.

This job taught me a lot about rapid development of software. Kent expected a lot of me so I pushed hard to get software done fast and correct. And he taught me how to use the proper tools: CVS, JUnit and Ant.

Technologies/Keywords: Java, Ant, JUnit, SableCC, JavaComm API, XML

Graduate Teaching Assistant - K-State
September 2001 - December 2001

For a semester during my graduate degree I was a Graduate Teaching Assistant (GTA) for the Fundamentals of Software Design and Implementation course in the Computng and Information Sciences department (the introduction to programming class - CIS 200). It was taught by Bill Shea (instructor). The course taught the fundamentals of programming where we used the Java language and the BlueJ development environment.

This was a fun semester because I really liked teaching. But I can't see myself doing this full-time because the semester was essentially ruined by a few students that decided to cheat. As I tend to say, that 1% of bad truly out-weighed the 99% of good students.

Graduate Research Assistant - SAnToS Lab at K-State
January 2002 - May 2002

For a semester during my MS degree, I was paid to work on the Bandera project and to complete my degree. This meant spending all day working on Bandera, writing documentation, and writing my thesis. This including evaluating graphing libraries (Grappa, JGraph, and OpenJGraph to name a few) and extending the user interface used for viewing counter-example information. Because of the architecture of Bandera, I had to learn a great deal about the back-end model-checkers (Spin and JPF).

Technologies/Keywords: Java, IBM VisualAge, Grappa, JGo, GraphViz, JGraph, OpenJGraph, Swing, AWT, CVS Verisoft, C, JavaPathFinder (JPF), Spin, Promela

Research Associate - SAnToS Lab at K-State
May 2002 - December 2008

I was initially hired by Dr. Matt Dwyer upon completion of my Master of Science degree. He wanted "a code cowboy" to work on Bandera. So I started my time with SAnToS as the lead developer of Bandera. This quickly changed as the forces on the lab changed and I took over some system administration duties. This included the deployment of the GForge project management system that we used to host all of our research projects.

After publication of a conference paper titled "Evaluating the Effectiveness of Slicing on Model Reduction of Concurrent Object-Oriented Programs" (published at TACAS 2006), the Bandera project went into hibernation. I was then moved over to the Cadena project to help with development and testing and eventually become the lead developer. In this role, I got to help evolve the code-base (bug fixes, feature requests, and some refactoring). I also got to extend the code-base by developing plugins that worked with Cadena. I built Eclipse plugins for TinyOS application development including a nesC parser (using ANTLR) and text editor (syntax highlighting and some code-completion).

I was also involved in designing and developing an Eclipse plugin to support the development of Ada and SPARK applications. This included the evaluation of existing plugin options and choosing to extend the work of the Hibachi (open-source) project. I was also able to contribute some code back to the project as the work progressed. Over time we found the Hibachi project limiting so we started to work with AdaCore and their GNATbench product. This forced me into developing a abstract layer that allowed us to extend both set of Eclipse plugins.

During my time in the lab I was very involved in managing people and resources. I was given a great deal of responsibility to manage the budget (this included several grants and our monthly expenditures were around $40k). I also had the chance to recruit, hire, manage, and fire employees. But the most interesting management duty was evaluating and purchasing hardware and software. I got to have a lot of fun shopping and tinkering.

Technologies/Keywords: Java, JUnit, Ant, CVS, JavaPathFinder (JPF), Eclipse, SWT, JFace, nesC, TinyOS, SPARKAda, Python, PHP, GForge, Debian Linux, Ubuntu Linux, Gentoo Linux, XML, ANTLR, AdaCore GNATbench, Hibachi

Contract Software Developer - AdaCore
January 2009 - June 2009

For a time I worked with AdaCore as a contract software developer. I was tasked with being a liason between AdaCore and the SAnToS Lab and help to develop their GNATbench product. During that time I had a chance to work with some great people on a great project. I learned a great deal about developing in a commercial environment.

During my time with AdaCore I was able to help fix several bugs and implement some new functionality. This required me to get familiar with their development environment, practices, and their codebase.

Technologies/Keywords: Java, JUnit, Subversion, Ant, Eclipse, SPARKAda, AdaCore GNATbench

Software Developer - The IDEA Center
December 2008 - present

I am currently a Software Developer working with The IDEA Center. In this position I spend most of my time developing new software, maintaining existing software, and system administration.

One of my first projects was to get a continuous integration server installed and working. We chose Hudson and I installed it in a XenServer VM running CentOS Linux with an Apache Tomcat web server. The install was the easy part; the hard part was getting the existing projects to build in Hudson using their Ant build scripts.

One of the biggest projects I worked on during my first year was redesigning and implementing a report generation server. This required me to investigate and evaluate several technologies (DocBook, LaTeX, Eclipse BIRT, etc.) to find what would be efficient and flexible enough for our needs. The previous implementation used Java 2D to generate a picture and then exported to a PostScript file that could be printed.

Technologies/Keywords: Java, JUnit, Ant, Subversion, Eclipse, Windows XP, Windows Server 2003, CentOS Linux, Citrix XenServer, VMWare ESXi, Hudson, DocBook, LaTeX, Apache Tomcat, XML