Cornell Photograph

Software (Under Construction)

Available Projects

Under Construction

Still to Come

  • Xiang Qi
  • Quiz Aid
  • STK Model Visualizer
  • Quiz Bowl Web Scheduler
  • Skills Survey
  • map and timeline
  • UMD Directory Search (never finished)
  • ShiftShaper (no longer under my control)
  • UMIACS applications (?)
  • N-Body Integrator
  • PowerSpectrumEstimator
  • Finite Element Method for Laplace's Equation
  • Language entropy measurement
  • Headline Puzzle Solver
  • Octree implementation
  • GLAST code (?)
  • Inverted pendulum control simulator
  • Gamma-Gamma Angular Correlation Monte Carlo simulator
  • NR3 RNGs for GSL
  • NR3lib (abandoned)
  • Physics 7682 Python code
  • Web page designs (?)
  • Fitting IMF models with MESA simulations


This is my repository for various computer programs I have written over the years. I am currently in the process of digging through numerous old applications and publishing them on this site. Until this process is complete, this page will far from represent my software portfolio, as my more recent work will likely be added last.

I make no claims regarding the quality of any of these pieces of code, but if you find them useful you are free to use them provided you credit me as the original author. Eventually I will decide on a formal license (most likely BSD or similar) under which these applications should be distributed.

Programming Experience

I am almost entirely self-taught as a programmer, and thus the majority of my programming experience is in the form of small personal projects. I have, however, held several programming-intensive jobs during the summers of my undergraduate years.

Beginning in high school, I was employed as a civil servant for two summers. My duties included working with technical software and developing new applications. [Java, STK]

The summer following my freshman year I conducted independent research as part of the University of Maryland's Leaders for Tomorrow program. The research products of all of the program’s participants were to be collected at the website as a form of community outreach. Among my duties were the tasks of renovating the site, readying my peers’ products for web publication, and developing novel ways to browse the site's contents temporally and spatially. [XHTML, CSS, JavaScript, MapServer]

In the summer and fall of 2006 I was employed as a student staffer by the University of Maryland Institute for Advanced Computer Studies (UMIACS). My job duties included those of system administration and technical support. Programming projects included writing audit scripts, migrating and maintaining existing web applications, administering an LDAP directory, and developing new web applications. This position also gave me considerable experience with enterprise computer hardware and exposed me to aspects of HPC/HTC cluster programming and administration. [JSP, MySQL, Perl, XHTML, CSS, LDAP, VMWare, Condor, MPI]

The summer following my junior year I was again employed as a civil servant, where I developed new cryptographic code to fit into an existing infrastructure. [C, x86 asm]

While conducting research in pursuit of my honors degree in astronomy, I wrote an application to conduct spectral analysis on orbital elements and authored several scripts for managing N-body simulations. [C, bash]

Following my senior I was selected as a member of the NASA Academy. Throughout the program I worked at Marshall Space Flight Center developing software to support the science and mission operations of the GLAST Burst Monitor. [C, Perl, MySQL, Java]

While my formal programming education is limited, I have also written a fair amount of code for various classes. In high school my Advanced Object-Oriented Design course led to the development of an AI for the game of Battleship, a game of Chinese Chess, and a sophisticated flash card program. My undergraduate Electricity and Magnetism course resulted in a collection of MATLAB routines to solve Laplace’s equation for boundaries and charge distributions based on geospatial boundaries (see Research). In my Computational Astrophysics class I developed numerous small programs for benchmarking, analyzing numerical stability, computing spin periods, solving non-linear functions, fitting data, performing Monte Carlo integration, solving ODEs, and simulating N-body systems. During my senior physics lab I designed a parallel Monte Carlo simulator for computing the detector cross-sections in an experiment measuring the angular correlation of gamma-rays. Finally, in my first semester of graduate school I implemented routines for analyzing a wide variety of non-linear physical systems. [Java, MATLAB, C, FORTRAN, Python]

Current Activities

In addition to completing my course in computational non-linear dynamics and gradually implementing routines from Numerical Recipes 3 in Java, I am attempting to learn the experimental languages Fortress and X10. I was also considering writing a real-time audio spectrum analyzer and synthesizer for my PHYS 1204 class, and in support of that I have started learning the details of the PCM audio format and the Java Sound API. Most recently, I have been preparing for my new research position by implementing a pseudospectral solver for 1-dimensional partial differential equations, and in the process I have learned the basics of the PLplot library.

As evidenced by this site’s existence, I also dabble in web design from time to time. See my Links page for sites that I have helped design, implement, or maintain. I was recently elected to be the Vice President of Communications for Cornell’s Physics Grad Society, and among my new duties is the renovation and maintenance of the society’s painfully out-of-date website. Look forward to an exciting new web presence for PGS come summer 2009.