12 Feb

I’d like to introduce the remotenames extension I’ve been working on. It is derived from Augie Fackler’s remotebranches extension. This extension keeps track of remote branches and remote bookmarks. Built on top of the namespaces API in Mercurial, it requires[…]

15 Jul

After a bit of work, I just sent my first attempt to get diff working with a memory context. My basic idea was as follows: make memctx inherit from workingctx so that it gets all the goodness of a regular[…]

15 Jun

I’m happy to report that I’ve been selected as a Google Summer of Code student for Mercurial! It was even announced on the mercurial-devel mailing list, so it’s all official and everything! I’ll be posting here about my progress as[…]

1 Jun

I guess it’s finally time to admit that I won’t be coming back to developing this plugin. The builtin Facebook sharing in Aperture does 90% of what I need so the motivation just isn’t there. Plus, as far as I[…]

21 Apr

This is a quick update to let everyone know what was happening with this particular error (I know. There are many bugs in the plugin. I hope to be able to use the ‘new’ Facebook Graph API and release the[…]

12 Jun

A new version is finally here! This is completely rewritten from scratch and comes with a load of fixes. A few things to note: The name mapping feature is missing. I don’t really plan to bring it back until Aperture[…]

11 Jun

If it isn’t abundantly clear, this is just a heads up that I’ve made a new website and switched to using WordPress instead of Blogger. This is all in anticipation of the newest version of the plugin which is about[…]

7 Jul

I went ahead and posted a new version for the people that wanted watermark support.

6 Jul

This is a quick update to post the new fix for the loading of metadata. No longer will you have to do the crazy instructions as listed below. I honestly didn’t think that I would be able to fix it[…]

3 Jul

This has been a long time in the making. Apologies to the people that emailed me with plug-in errors. There are major changes to this version. The biggest change is the switch to the newest version of MKAbeFook. New features[…]



My Career
Backend Developer

Backend Developer

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.

Software Developer

Software Developer

September 2014 to now, OSIsoft, LLC

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.

Facebook Contractor

Facebook Contractor

April 2014 to September 2014, Facebook

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.

Google Summer of Code Student

Google Summer of Code Student

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.

Graduate Research Assistant

Graduate Research Assistant

January 2010 to May 2013, Argonne National Laboratory

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.


Graduate Assistant

August 2006 to December 2009, Louisiana State University,

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.

Student Co-op

Summer 2009, Argonne National Laboratory

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.


Givens Internship

Summer 2008, Argonne National Laboratory

Worked under H. Zhang and L.C. McInnes to add PETSc preconditioners to BOUT++, writing new code in C++.

Undergraduate Math Teacher

August 2007 to May 2008, Louisiana State University

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.


Research Programmer with B. Bourdin

Summer 2006, Louisiana State University

Conceptualized a numerical program for solving elliptic equations using MPI and PETSc.

The finite element code used a custom implementation of P_1 and P_2 elements based on PETSc distributed arrays. Key concepts included structuring data, scatter/gather among processors, and linear solvers.

.NET Programmer

June, 2003 to August 2006, Velocity Squared, LLC

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.


PHP Programmer

August 2001 to July 2002, Louisiana Department of Education

Designed online web applications with extensive database access using PHP and created graphics for web pages. Other duties included configuring hardware, installing software, and teaching workshops for educators on Javascript, SQL, and Adobe Photoshop 6.

Data Visualization Programmer with J. Tohline

August 2001 to May 2002, Louisiana State University

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.


Dynamic Web Programmer

August 2000 to May 2001, LA School for Math, Science, and the Arts

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.


Web Programmer

August 1999 to May 2000, LA School for Math, Science, and the Arts

Created web pages using HTML, CSS, and JavaScript for faculty. Other duties included graphic design and knowledge of web server maintenance.