Laptop keyboard

My enumerated programming experience.

Here is a fairly complete catalog of programming, database, and web design projects I have undertaken over the years. They include personal projects, coursework, and volunteer development. The scale ranges from small scripts to production applications. Projects are listed in roughly chronological order, with the most recent appearing first.

First employment 2014–present

  • Navball three.js

    KSP-style navball visualization of vehicle attitude and reference indicators.

  • data_sampler Rust

    Utility program for aggregating multi-channel data using a monotonic index channel, allowing them to be efficiently plotted without subsampling errors. Based on a previous version in JavaScript, but implemented with array-backed trees.

  • AssembleFramesCxx C++

    A high-performance rewrite of AssembleFrames featuring cache-aware Lanczos-2 chroma decimation and Chebyshev-approximated transfer function translation.

  • pvd2abc C++

    Convert VTK data from a ParaView animation to the Alembic format for importing into visual effects pipelines. Used to provide data to Double Negative for Warped Side of the Universe.

  • McuBlink C++, Makefile

    Example applications and makefiles for various microcontroller boards, demonstrating how to program "blink" in raw C++.

  • MusicUi Scala, Akka HTTP, D3.js

    Web interface for browsing a music library and controlling music playback through a "raw" ALSA device, ensuring lossless transmission of audio data from file to DAC.

  • PlotServer Scala, Akka streams, Play, Polymer, D3.js, Websockets

    A stream-based, caching time-series data server with a hierarchy of aggregation levels, and a web frontend for browsing, plotting, and interacting with channels.

  • stock-explorer JavaScript, D3.js

    Multi-channel interactive data analysis interface in which selections are highlighted across all plot types. Demoed using stock market share price data.

  • Bayesian Blocks visualizations D3.js

    A visual explanation of thhe Bayesian Blocks algorithm, and an application of Bayesian Blocks to kernel density estimation.

  • PhotoLuts and FujiRafWriter Scala, RAF, dcpTool

    An attempt to infer Fujifilm's color look-up tables by synthesizing images that smoothly sample the majority of the camera's RGB colorspace, analyzing the resulting Lightroom-processed colors with and without camera profiles, and generating DNG profiles for non-Fuji cameras.

  • SpaceNavTest C++, CUDA, OpenGL, GLFW

    3D visualizer in which a vehicle can be manipulated in 6-DOF using a gamepad, an RC controller, or a SpaceMouse; written using “modern” OpenGL.

  • GlfwImage C++, CUDA, OpenGL, GLFW

    Interactive, GPU-accelerated local Laplacian filtering.

  • Web-based telemetry client Scala, Akka, Play, WebSockets, Bootstrap, CoffeeScript

    Browse, monitor, and plot live telemetry.

  • Arduino projects AVR C++

    • BLDC motor driver
    • PWM RC receiver to USB joystick adapter
    • Perceptually uniform light dimmer
  • Raspberry Pi projects Scala, Akka, JNI

    Components towards the long-term goal of writing a tricopter flight controller based on actors.

    • IMU, pressure sensor, and GPS drivers
    • I2C Java interface (unfortunately, Oracle’s Device I/O project performs terribly and is full of bugs)
  • LFF-CPU C++

    A CPU implementation of 1D local Laplacian pyramid signal analysis using either spatial-domain Lanczos decimation or frequency-domain spectrum partitioning via FFT.

  • FC Gram C++

    An implementation of Fourier Continuation.

  • FV Explorer Scala

    A 1D HRSC finite volume solver and plotter for Burgers’s equation.

  • SpaceX simulation software C++, Python, Modelica, Scala

    Dynamics, subsystem, and sensor/actuator simulators for analyzing and testing rockets and spacecraft.

  • SpaceX software candidate test C++

    No, I won't tell you what it is.

Graduate school 2008–2014

  • LensPlotter Scala, Play, Bootstrap, SVG

    My gold-medal entry into the LensRentals.com data processing contest.

  • Frontiers of Neutron Star Astrophysics website PHP, Bootstrap, MySQL

    Design of website and online registration and payment system for an astrophysics conference hosted at Cornell.

  • MshExplorer Scala, JavaFX

    Design perceptually uniform colormaps with arbitrary hue ranges for use in scientific visualization. Resulting maps can be used in DgView or exported to Gnuplot and ParaView.

  • AssembleFrames Java

    Assemble a sequence of image files into an H.264 video (encoded with x264) via an intermediate YCbCr 4:2:0 stream. The original colors should be accurately reproduced by a standards-complianat playback system.

  • Coursera “reactive” coursework Scala, Akka

    Unit projects for Principles of Reactive Programming, including a replicated key-value store.

  • sRGB ColorChecker HTML, Bootstrap

    Page to test browsers’ support of color management for the sRGB colorspace (also tests sRGB and BT.709 support in H.264 video).

  • DgView Scala, Akka, Swing

    Visualizes data from spectral element meshes. Parallel rendering is performed by actors, which interface with SwingWorker to update the UI. Animations can be saved as both frame sequences and raw video.

  • ScalaElements Scala

    Library of spectral elements, including basis functions, cardinal functions, and quadrature nodes and weights. It refactors some of the spectral math classes from DGenerate and adds support for additional bases, including trigonometric functions and Zernike polynomials.

  • ActorControl Scala, Akka

    A framework for sensors, actuators, controllers, and modelers integrated using actors. Features a modern, high-level ODE integration package (in limbo, though the ODE integrator is fully functional).

  • TooMassFun Scala, C, C++, CUDA, GSL

    Fit black-body temperatures to point source data from 2MASS and render images of the Milky Way. See Coloring the galaxy.

  • AudioActors Scala, Akka

    Framework for actor-based real-time audio processing, originally written as scaffolding for controlling Hue lights with beat detection (in limbo; may be revisited when LIFX bulbs become available).

  • Personal website (Cornell v. 2) Scala, Play, Bootstrap, PostgreSQL

    The website you are currently visiting. Enjoy!

  • HydroFFT C++, Thrust, cuFFT

    A basic algorithm for interpolating 3D Cartesian power spectra to cylindrical coordinates on the GPU using parallel primitives from Thrust.

  • DGenerate, aka ScalaSpEC Scala, Akka, Breeze

    A parallel Discontinuous Galerkin solver implemented using actors. Designed to explore the suitability of high-level languages and communication architectures for high-performance computing and to test the scalability of Akka clustering and remote actors. Designed to accommodate heterogeneous computing (by having one actor in a routing pool manage a GPU, for example).

  • Coursera “progfun” coursework Scala

    Unit projects for Functional Programming Principles in Scala.

  • WebPlotter Scala, Play, LESS

    Plot diagnostics of numerical relativity simulations with a web interface that allows breaking up summary plots into individual plots.

  • SXS GWDB Scala, Play, LESS, SQL

    Prototype web interface for a public database of gravitational waveforms produced by the SXS collaboration.

  • VtkVtiGen Scala

    Convert VTK “structured grid” datasets to “parallel image” datasets for more efficient IO and access to better volume rendering options in ParaView.

  • Mastermind solver Scala

    Solve a game of Mastermind with an arbitrary number of pegs and colors in the fewest number of guesses. Facilitate implementation and evaluation of alternate algorithms based on entropy measurements of the solution space.

  • PowerSpectrumEstimator 2 C++, FFTW

    Computes FFT periodograms “done right”, incorporating advice from Numerical Recipes and Spectrum and spectral density estimation by the Discrete Fourier Transform (DFT), including a comprehensive list of window functions and some new flat-top windows.

  • StereoZoom Scala

    Simulate stereo recording for arbitrary microphone locations, orientations, polar patterns, and mixes. Captures both amplitude and phase differences and models the Doppler effect for moving sources.

  • FloatingPyramids C++, CUDA

    Tool for performing dynamic range compression on images using Laplacian pyramids. Implements algorithms described in the papers Local Laplacian Filters: Edge-aware Image Processing with a Laplacian Pyramid and Fast and Robust Pyramid-based Image Processing.

  • Udacity CS344 coursework C++, CUDA

    Unit projects for Introduction to Parallel Programming, including a high-performance convolution routine and a Poisson equation solver.

  • EYH website PHP, CSS, MySQL, Perl

    Re-design and maintenance of Cornell’s Expanding Your Horizons website and online registration system.

  • Spectral diffusion solver C++, LAPACK, BLAS

    Project for CEE 6300: Spectral methods for incompressible environmental flows. Solve the diffusion equation in 1D using spectral methods with a variety of timesteppers (both implicit and explicit). Also compute eigenvalues for a given stepping scheme.

  • Lights Off Cornell backend ColdFusion, Oracle SQL

    Assisted Jolyon Bloomfield with the initial design and implementation of the registration and scheduling system for a campus program providing service opportunities in turning off unused lights at night across campus.

  • Fitting IMF models with MESA simulations C

    Infer probability distribution for stellar observations from discrete evolutionary tracks, for use in Bayesian analysis of initial mass function models. See Astronomy 6560 project report.

  • Battleship AI and tournament protocol handler X10

    Play multiple games of Battleship using a tournament protocol that would allow strategies to adapt given knowledge from previous games. Protocol is modeled as a finite state machine designed to be resilient to failure or unexpected messages.

  • Zernike polynomial spectral element C, FFTW, BLAS

    High-performance implementation of a spectral element for the unit disk, including spectral transforms, interpolation, differentiation, and integration. Used to validate implementations in SpEC and to guide the development of a spectral element for the unit sphere.

  • Ising model solver C

    A high-performance MCMC solver for the Ising model, written for a project in Physics 6562: Statistical Physics I.

  • PGS website PHP, CSS

    Redesign and maintenance of Cornell’s Physics Graduate Society website.

  • SpEC C++, MPI, PETSc, FFTW, BLAS

    Numerous contributions to the Spectral Einstein Code, including:

    • Finite volume solver for GRMHD using upwind constrained transport (paper in preparation)
    • Protocol for maintaining a shared cache file used by independent processes and an implementation of a file-backed mutex class that functions on distributed network filesystems.
    • Reconstruction and interpolation framework for finite difference grids with excision based on 1D stripe kernels
    • Experimental communication optimization based on asynchronous MPI
    • Optimization of FFT-based spectral elements
    • Implementation of basis functions for B2 and B3 topologies using Zernike polynomials (see poster)
    • Initial data solver for binary neutron star systems, based on existing code for black hole–neutron star systems
  • TOVSolverC C, GSL

    Solve for neutron stars possessing a specific property given an equation-of-state, or solve for stars possessing two properties while fixing a polytropic equation-of-state.

  • Spectral elliptic solver C, PLplot

    Solve a 1D elliptic equation using pseudospectral methods and plot the solution.

  • TOV solver Python

    Final project for Physics 7684: Computational methods for nonlinear systems. Compute and plot the mass-radius relation for neutron stars given tabulated equations-of-state (which are interpolated using cubic splines). Other course projects include code for performing network analysis, exploring scaling laws, and rendering bifurcation diagrams.

  • Physics 7682 coursework Python

    Projects for Computational Method for Nonlinear Systems exploring networks, percolation, iterated maps, and more.

  • My brother’s website HTML, CSS

    Personal website for my brother, Patrick Muhlberger.

  • Trailerpark movie website HTML, CSS

    Implemented website designs for the feature-length student production Trailerpark, enforcing standards compliance while also ensuring broad browser compatibility.

  • Personal website (Cornell v. 1) PHP, CSS

    New website hosted at Cornell’s Physics Educational Computing Facility.

  • NR3 RNGs for GSL C

    Implementations of the random number generators introduced in Numerical Recipes 3 that can be plugged into GSL’s RNG framework.

  • Inverted pendulum control simulator Java, Swing

    Animate the dynamics of an inverted pendulum governed by a tunable control system (discrete or continuous). Perturbations could be applied by clicking with the mouse.

College 2004–2008

  • IOTL/ATS command checker Java

    Compare instrument command requests (ATS format) for the gamma-ray burst monitor with the final satellite command schedule (IOTL format) for Fermi (formerly GLAST) received from Goddard, ensures that the commands match, and checks that maintenance tasks are scheduled during South Atlantic Anomaly crossings. See NASA Academy report.

  • GBM database viewer Perl, SQL, HTML, CSS

    Provide an internal web-accessible view of GBM pipeline databases. See NASA Academy report.

  • IPN burst report generator C

    Generate burst reports for the Interplanetary Network from GBM data, summing the optimal subset of detectors to maximize the signal-to-noise ratio of the final lightcurve. See NASA Academy report.

  • GBM data self-consistency checker C

    Compare CTIME, CSPEC, and TTE data from the Fermi (formerly GLAST) gamma-ray burst monitor and check them for self-consistency. See NASA Academy report.

  • PowerSpectrumEstimator C, FFTW

    Computes FFT periodograms “done right”, incorporating advice from Numerical Recipes. Used for analyzing HNBody data in the context of trying to explain Pluto’s high inclination via orbital resonances (see research paper).

  • Scientific notation practice Perl, HTML, CSS

    Refresh the most popular component of the Astronomy Workshop.

  • Gamma-gamma angular correlation Monte Carlo simulator Java

    Parallel simulator to compute detector cross sections for different detector geometries. See Physics 405 project report.

  • Linguistic entropy estimator Java, Swing

    Estimate the entropy per character (in bits) of a language by having a participant guess the content of a passage of text letter-by-letter.

  • Octree implementation Java

    A from-scratch implementation of an octree data structure, intended to facilitate development of a Barnes–Hut N-body integrator.

  • Clock plot Swing component Java, Swing

    Swing component for rendering “clock plots”. Useful for visualizing weekly schedules, these plots show time on the azimuthal axis and day-of-week on the radial axis.

  • ⟨redacted⟩ x86 assembly, C

    Yes, I’m enigmatic like that…

  • Headline puzzle tools Java

    A collection of tools to assist in solving the headline puzzle.

  • Personal website (UMD) HTML, CSS

  • N-body integrator Java

    See Astronomy 415 project report #6. Additional coursework for Computational Astrophysics is described on my old Research page.

  • Finite element method for Laplace’s equation MATLAB, misc. GIS tools

    Implementation of a basic finite element solver for use with geopolitical boundary conditions and source terms. See Physics 411 project report.

  • UMD observatory website contest HTML, CSS

    Co-winning entry for a redesign of the UMD Observatory website.

  • Astroterps website HTML, CSS

    Redesign and maintenance of the Terrapin Astronomical Society website.

  • ShiftShaper Java, JSP, CSS, MySQL

    Web application allowing UMIACS Help Desk employees to choose shifts and to ensure that all shifts are adequately covered and supervised.

  • UMIACS directory search Java, JSP, CSS, LDAP

    Perform multi-field searches on the UMIACS LDAP directory and return results as graphical address book cards.

  • Quiz Bowl web scheduler Java, HTML, CSS

    Generate round-robin schedules for quiz bowl tournaments.

  • PrinceGeorges.org map and timeline HTML, CSS, Javascript, MapServer

    Allow navigating websites for community research projects on PrinceGeorges.org both geographically and chronologically.

  • Blog and mission site for Goddard’s College Freshman Intern Program HTML, CSS

    Served as both community outreach for PrinceGeorges.org and as the outreach component of a mock Discovery-class NASA mission to the Moon.

  • Shock analysis extractor Java

    Extract user-specified parameters from a shock analysis website and save them to a spreadsheet for use in existing workflows. See Physics 299 semester report.

  • Upstream events finder IDL

    Identify upstream events in WIND data and facilitate manual removal of false positives. See Physics 299 semester report.

  • Web scheduler Java, HTML, CSS

    Render an attractive, color-coded HTML view of a student’s course schedule suitable for printing.

  • STK model visualizer Java, Java 3D

    Render 3D models of satellites and other defense assets by parsing the model format used by STK.

  • Skills Survey JSP, CSS, MySQL

    Catalog employees’ skills.

  • Map projector Java

    Transform GPS coordinates to an arbitrary aerial perspective (fit from calibration points) to allow points of interest (in this case, Wi-Fi access points) to be plotted on an artistic version of the UMD campus map.

High school 2000–2004

  • Quiz Aid Java, Swing

    Group project to develop a graphical flash card application that would keep track of user statistics (served as project leader).

  • Xiang Qi Java, Swing

    Pair project to develop a graphical implementation of Xiang Qi (Chinese Chess) with a basic single-player mode in addition to two-player support.

  • Battleship AI Java

    Artificial intelligence for the game Battleship (ranked first in class).

  • Lego Mindstorms movement library Java

    A set of calibratable routines for instructing a robot to move and turn in terms of physical units (like inches and degrees).

  • ⟨redacted⟩ Java, Swing, HTML

    Yes, I’m enigmatic like that…

  • Console Blackjack Java

    A text-graphical Blackjack game rendered in the Windows Command Prompt using DOS box-drawing characters.

  • CS2 coursework Pascal

  • Personal website HTML, Javascript

    One of my first websites, which included some entertaining interactive quizzes.

Childhood pre-2000

  • Anagram guessing game QBASIC

    DOS game that asked questions, read in answers, and informed you whether you were right or wrong.