Tom Schmidt
Software Engineer
Professional Experience and Skills
I have a passion for software development and learning new technologies, and I have been fortunate to have the opportunity to work on a variety of projects professionally. Here are some of the projects that I've most enjoyed working on.
Large-Scale Software
Shortly after starting my professional career, I took over as the primary developer on a legacy C++ codebase designed for the modeling and simulation (M&S) of radar. After some time working to improve the C++ codebase, I was designated as the technical lead for an effort to translate the core functionality of the M&S software into MATLAB, an environment that the radar engineers were much more comfortable working in.
The team that I led was ultimately able to translate approximately 200k lines of code into object-oriented MATLAB. The new version of the software was welcomed by the end-users, and is under continued development to add additional features.
In addition to the MATLAB port, I independently replaced an outdated MATLAB-based GUI with a modern Java-based GUI to aid the end-users in the configuration of simulations.
Android Development
Our engineering team was asked to design and develop an Android application for remote data capture, as well as a web application for the analysis of the captured data. I was designated the to be technical lead and primary developer, and we were able to deliver and install a functional product only two months after accepting the contract. The highly-accelerated schedule was the result of a looming deadline on the customer's end, and we were relieved to provide them the opportunity to meet that deadline.
Our team lacked any Android experience, so I took it upon myself to learn what was necessary and act as a resource for the other members of the team. This ended up being an invaluable experience for me, and I am very happy to have gained a new skill.
Full-Stack Web Development
After supporting the development and maintenance of a legacy PHP codebase, our team was given the opportunity to create two new web-based applications for the entry and analysis of biological data.
I was tasked with doing a technology survey to determine whether we should stick with our legacy software stack (PHP-based), or switch to a more modern language. Given that most of our team was already familiar with Python (and my strong liking of the language), I ultimately settled on Python and Django, a feature-rich python-based web framework.
After a couple passes through the documentation and the creation of a toy project, I was able to bootstrap both pieces of software and teach the rest of the team the basics of Django, as well as provide continued support as development continued.
I have acted as the primary developer on one of the pieces of software, which has grown to have complex analysis capabilities through an intuitive user interface. A typical day's work ranges from troubleshooting Apache configuration issues to algorithm development to tweaking CSS, and I very much enjoy the variety that it provides.
Personal Projects
I love exploring new technologies, and almost always have some side projects that I work on in my free time. Here's what I'm up to currently.
Simple Graphics Layer
I've always had an interest in graphics programming, but never found the time to delve into it deeply enough to gain a proper understanding. I've recently decided to change that, and so I'm working on a lightweight, open-source wrapper around OpenGL that I've named Simple Graphics Layer (SGL).
The code isn't available yet publicly, but check back soon to see how I'm progressing!
Pixel-Perler
After a family member passed away, I wanted to make a gift for the immediate family, and ultimately decided on creating a portrait out of Perler beads. Given that I'm not the most artistically-inclined person, I wrote some software to turn a photo into a large paint-by-number grid that I was able to print out.
The portrait turned out better than I ever expected, and so I've decided to provide the tools I created to the rest of the bead-art community. You can check out the application at www.pixelperler.com, and you can see the source code on GitHub.
Simple Media Center (SMC)
I own a large collection of DVDs, which I have converted into a digital library that lives on an external hard drive. While being able to watch the content on a computer was nice, I had the desire to be able to watch it on the TV with as little hassle as possible.
To accomplish this, I wrote a simple, clean web interface that allows me to browse my available movies, along with their cover art, descriptions, and various other pieces of metadata. The application is hosted on an inexpensive Raspberry Pi, which is then connected to the TV via HDMI.
With this setup, I am able to play any movie in my collection using my phone, tablet, computer, or other internet-connected device as a remote control. This has vastly improved my satisfaction with my digital library, and is always a hit with overnight guests.
Blueprint Designer
I've recently started playing a game called Factorio, in which you design a factory with the end-goal of launching a rocket into space. The game allows you to create blueprints, which allows for the rapid expansion of modular pieces of your factory.
There is currently no official way to create these blueprints outside of the game, and many people within the community have expressed interest in just that. As a result, I thought it would be a fun project to create a single-page web application that allows for the creation of arbitrary blueprints.
You can follow my progress on that front through the GitHub repository.
Testimonials
Contact Me
About Me
When I'm not writing software, I spend as much time as possible with my lovely wife and our three furry children. I am an avid disc golfer, and enjoy being outdoors in pretty much any capacity, whether it be hiking, camping, or enjoying some of San Diego's restaurants. I am also (slowly) teaching myself to play the violin, and hope to one day be able to play well enough so as not to embarrass myself.