I am a software developer driven to constantly improve my craft.
I find great satisfaction and enjoyment taking my projects from simple ideas to complete and working solutions that I can continue to build upon.
This is true whether at work or in my personal projects.
In my professional career I have learned much about the intricacies of integrating modern and legacy software solutions together.
This has allowed me to quickly learn a wide variety of new skills as well as the pitfalls of popular business software solutions.
My passion, however, comes from my personal projects and research.
I find a sense of fulfillment when I begin knowing little to nothing about,
and by the end of the project I am not only fluent with the topic but can apply what I have learned to other personal and professional projects.
Such projects include creating a MVC blogging platform and a home automation platform from scratch.
My goal is to continue advancing my career and passion for Computer Science by learning new things while exploring new areas.
At my ERP Developer position at Gulfstream Aerospace I work primarily with process integration and web application development. The organization uses various SAP, non-SAP, and legacy software solutions that need to be integrated where SAP PI is used as the primary tool. This mix of software provides me experience with many technologies and areas, including enterprise integration patterns, web services, SQL, Java EE, SFTP/FTP, HTTP, and Linux server administration. I also develop web solutions using SAPUI5 that give me experience using Javascript, HTML, and OData.
GPA: 3.4
In my weather station project I worked with a friend who wanted to collect and display real time weather data from a remote property. I designed and built a MySQL database, Java Spring web service, and web application front end to meet these goals. I also wrote the basic C/C++/Arduino code that handles HTTPS communication with the web service as well as MQTT communication with a local onsite raspberry pi all from a esp8266. As the project has been progressing the system design has had to be modified. Most notably the implementation of a queue on the weatherstation esp8266 was added to retain weather records in the case of an internet or web service outage.
This is a current project.
Phase 1
My home automation project was designed to control relays, get the ambient room conditions, and other information on my devices anywhere over the internet.
This project began primarily as a learning experience with the basics of electronic devices and to refresh my Java and C programming knowledge.
I also learned many new things about Linux server administration.
I started by learning about the esp8266 microprocessor, which is very popular for IoT projects.
I discovered Sonoff wifi switches, which use an 8266 and could have my device code flashed on them.
I used ArduinoIDE to write and flash C device code to handle connecting to MQTT topics and listen for commands such as toggle.
In the second part of the project I developed a Java Spring RESTful web service that would take requests from the user interface and translate
them into commands to be sent via MQTT messages to the devices. A MySQL database was used to store data about the devices and topics.
The web service handles adding, editing, and removing devices, and communicates with them.
In the final part of the project I developed the front end to consume the RESTful web service.
I chose to use a web frontend with PHP/Javascript because I was most familiar with it and I could create it quickly.
The devices connect on the local WIFI network and subscribe to a topic on a MQTT server that is hosted on a local home server.
The web service is also hosted on the same server. The web front end is running on a VPS connected to the local home server using a VPN.
The project has resulted in a basic, but usable home automation platform.
I plan future phases of the project to add many more features that are found in the big home automation software suites today.
While I could have elected to just use a pre-made software solution, the learning experiences from this project have been invaluable.
Phase 2
In the second phase of the project I wanted to bring the ability to chain multiple control actions together like many home automation platforms allow users to. The primary goal was to have an “All lights on/off” button, but I wanted to make it generic. The final result was adding “actions” which could be configured from the frontend UI. Actions are defined as a set of IF conditions and a set of THEN actions. These actions can either be triggered by an event on a device (I.E. a physical button pressed on a device) or assigned to a button on the web interface. IF conditions can query the control database table for persisted states as well as do a real-time status request to a control. I created actions in this more generic way with future phases in mind, specifically adding motion and magnetic sensor controls. For example, I would like to have a motion sensor control within a hallway which, when motion is sensed would check the light value of a space, and turn on lights in the room if needed. Also within this phase I did general code refactoring to improve efficiency and code reuse.
This is a current project.
In my blogging website project I created a platform to publish and view blog posts about craft brewery visits.
I used Google OAuth 2.0 to implement a user authentication system. An authenticated user with the proper permissions can create,
edit, and delete blog posts using a WYSIWYG editor as well as add breweries to the visited brewery page.
The visited brewery page shows both a list view of breweries as well as plotted their location onto an embedded Google map.
Each visited brewery entry allows the author to add a rating, photos, logo, notes, address, website url,
and list of beers tried for the brewery.
I built the website from scratch using PHP for the backend, Javascript with AJAX for the frontend,
and a MySQL database to persist the data. I used this project to learn the basics of the MVC pattern
by creating my own version of a MVC framework. I have continued to improve and use the basic PHP framework
I created in this project with my other projects that require a web frontend.
The Pragmatic Programmer (10th Anniversary Ed.)
Making Embedded Systems
Clean Code
My interests include getting outdoors whether it is hiking, biking, or running. As well cooking, woodworking, and gardening.