Improving Mercurial support at Bitbucket.
In this position, I hope to bridge the Mercurial and Bitbucket communities to help develop an top-notch code hosting platform.
While Mercurial updates have been slow in the past, I plan on streamlining and keeping up to date with the newest versions, while also adding long-awaited features.
Designed and implemented a parser to generate an abstract syntax tree in C#.
I diagnosed a long–standing bug with incorrect parsing behavior in a customer plugin. I fixed the bug by implementing a tokenizer to correctly give the full AST. I worked with Microsoft solutions: Team Foundation Server, Visual Studio, and PowerShell.
Designed a namespace API to allow for managing tags, bookmarks, and branches.
Any git refugee will tell you that one of the biggest missing features in Mercurial is the lack of remote branches. Being a hot topic within the Mercurial community, this task took many months of planning and gathering feedback. After two sprints and many rounds of code view, the framework was accepted and released in version 3.3. I also created an extension to build on top of the namespace api to implement remote branches. This is a work in progress but has already received much positive feedback from the community.
Engineered deep refactor of the internal representation of changesets in memory.
This work opened the way for improving the recording feature (arbitrary selection of hunks upon committing) and in-memory rebasing for Mercurial. The biggest hurdle of this project was tackling the refactoring needed for the status and commit functions. This summer program provided a great educational process of learning the depths of internal Mercurial code, specifically the context, manifest, and localrepo objects. This experience was successfully completed with over 127 patches accepted.
Wrote a paper on BOUT++ (BOUndary Turbulence), a parallel edge turbulence framework.
I added framework for physics-based preconditioning, advanced nonlinear solvers, advanced time-stepping methods, new mesh capabilities, and improved the build system for better software organization. The majority of the work involved improving meshing capabilities to add matrix preallocation for the non-contiguous branch-cuts. In addition, robust and novel IMEX (implicit-explicit) time-stepping methods were added giving the project competitive performance results. Version 1.0 incorporates my work.
Wrote research code to study fracture mechanics.
Assisted B. Bourdin by writing code, providing proofs, building and maintaining a cluster, and helping with class work. One graduate level class dealt with elliptic solvers (∆u = 0 for convex domains) and made use of finite element code we’d developed the previous summer. In class, we extended the code to work on solving edge detection problems using the Mumford-Shah functional modeled with phase fields. Other duties included helping the Dept. of Mathematics’s computer support team in the design of a Kerberos-based authentication system for use with LDAP, http, and Subversion authentication.
Added PETSc solvers to BOUT++.
Built extendable code in collaboration with with H. Zhang , L.C. McInnes , and Lawrence Livermore National Laboratory physicists by adding robust PETSc solvers to BOUT++. This code has been successfully integrated into BOUT++ and version 0.7 incorporates my work.
Worked under H. Zhang and L.C. McInnes to add PETSc preconditioners to BOUT++, writing new code in C++.
Taught college algebra and trigonometry to ~100 students.
In addition to the standard responsibilities of teaching (creating lesson plans, grading, etc.), my duties included assisting students during weekly mandatory math labs that employed online educational software.
Conceptualized a numerical program for solving elliptic equations using MPI and PETSc.
The finite element code used a custom implementation of and elements based on PETSc distributed arrays. Key concepts included structuring data, scatter/gather among processors, and linear solvers.
Designed an online scheduler for photographers that allowed them to coordinate events.
Worked with small teams to solve numerous business and technical problems with a photography and photo printing company. The main product scheduled photographers and allowed them to coordinate shooting a (mostly large) local event. Our software eased the challenge of organizing and executing photo shoots at multiple, distant events as well as pulling together masses of photos, uploading them and posting selected ones automatically to a for sale website. Used design patterns, databases, threads, security, web services, and xml.
During the immediate aftermath of Hurricane Katrina, our team volunteered to help the Red Cross keep track of the thousands of newly arrived storm refugees scattered across Baton Rouge. After a 72-hour coding sprint, we had a functional program that utilized fuzzy text searching, text indexing, and merging databases with high chances of collision.
Worked with a general relativity research group that used OpenGL and CAVE to implement C++ libraries to utilize 3D aspects of the SGI ImmersaDesk on modeling binary stars.
Designed and implemented web-based programs for students and faculty, utilizing server side languages such as PHP, Java Server Pages, and Perl. My most important focus was completing my area of “Distinction,” namely an online application to register students for seminars.