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[…]

Sean Farley
I'm an open-source developer and like to research mathematics.
Portfolio
Blog
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[…]
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[…]
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[…]
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[…]
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[…]
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[…]
I went ahead and posted a new version for the people that wanted watermark support.
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[…]
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[…]
Résumé

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 [latex]P_1[/latex] and [latex]P_2[/latex] 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.

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.

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.

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