Ian O'Rourke


About

I am Ian O'Rourke, and welcome to my website! I currently work as a Flight Controls Systems engineer, focusing on helicopter autopilots, having graduating with a Master's of Aerospace Engineering from the University of Michigan, Ann Arbor, in 2019, and with a Bachelor's of Aerospace Engineering and a Minor in Computer Science in 2018.

I work professionally on helicopter automatic flight controls systems, and I enjoy a wide range of activities, including software and game development, sailing, flying, hiking, biking, and more.

Profile Picture

Recent Projects

Portsmouth Yardstick Race Calclator

For the local sailing club, I developed a Portsmouth Yardstick sailboat race calculator and race scoring program. This allows us to enter and easily keep track of race scores.

Our club supports a wide variety of boats, so we need to use a handicapping system to align all the different types of boats. This makes the scoring results more fair, as a slower boat will have its time reduced, while a faster boat will have its time increased. For finished times, boats are handicapped based on the Portsmouth Yardstick to produce a "comparable" score. The Portsmouth Yardstick is nice because it contains a large number of supported boats, and where possible, provides specific handicaps for different wind conditions. Different boats handle differently in different wind conditions, so this serves to make the handicapping more accurate.

As racers cross the finish line, they get a wall time. This wall time is then adjusted, higher for faster boats and lower for slower boats (according to the Yardstick), to produce the handicapped time that is used for final skipper placement in a race.

The scoring program I wrote generates static HTML from a variety of input files, consisting of races throughout the years. It allows tracking skipper progress throughout the various seasons, as well as statistics per skipper, per boat, and per series, for some additional analysis. It also cross-checks all results at build time, before publishing, against another scoring program written by another club member. This program was written earlier from the same requirements and serves as a third-party check that the scores are correct before publishing results.

Current scores for the program may be found at Race Scores, based on the source.

Me sailing my US-1, heeling over tacking back to the finish line

Solarium

Solarim is a fictional computer that uses a custom instruction set architecture and language. The instruction set, named Jib, is a simple 32-bit RISC-like instruction set, complete with its own assembly language. There is also a device specification for attaching devices, such as serial input/output devices, disks, displays, and more.

The higher-level language, analogous to an early version of C with a more modern syntax, is named C/Buoy. This provides a way to compile programs into executable code without needing to directly write assembly; however, assembly is always an option.

More information may be found in the documentation, as well as in the source.

Solarium Sun Logo

ModelTea

ModelTea is an open-source example of graphical model generation. It supports creating models in a mathematical representation, similar to Simulink, and allows for exported code generation in C++ so that the exported models can run on embedded hardware. It also currently has limited support for running models live in the editor.

Currently, the core model functionality is undergoing a rewrite to make it easier to interface with the UI layer and expand to allow flexibility in model parameters and data configuration. Future work also entails linking ModelTea with libraries to allow for an interface akin to MATLAB/Simulink for running models from languages like Julia or Python, in addition to the core functionality of code generation.

Code can be found ModelTea, with the accompanying standard library.

ModelTea Example Program

SolarCycle

SolarCycle is a game written for the GMTK 2023 Game Jam. The idea of the game is to work to provide power for a small town and change how you need to build things out to keep the town alive as the weather changes and the world becomes cloudier and more polluted. Each day brings a new challenge - new solar and wind conditions - as the environment changes for the worse. Your goal as the player is to transition and maintain power, initially from a more reliable solar source, to a more sustainable wind source, while also planting trees to keep the environment in check (by the trees reducing pollution levels) and buy enough time with the solar panels before clouds cover the skies, making solar power untenable.

All of the artwork and gameplay was created during the game jam - only the music I had composed several years prior, and it seemed to fit the theme of the game well. The game may be found at orourke.itch.io, where there is an online version, as well as offline downloads available.

SolarCycle screenshot