Download Vitae

Sean Farley
Software Engineer and Mathematician
San Francisco, CA
(209) SEANFAR (732-6327)
[email protected]
http://farley.io
Research Interests
version control systems, parallel programming, scientific computing, design patterns
Education
2010–now Ph.D. candidate in Mathematics, Illinois Institute of Technology, Chicago, IL.
Efficient numerical study for a boundary integral method on graphic processors.
2006–2009 M.S. in Mathematics, Louisiana State University, Baton Rouge, LA.
2001–2006 B.S. in Mathematics, Louisiana State University, Baton Rouge, LA.
Minors: Physics and Mandarin Chinese
06-08 2005 LSU Abroad Program, Beijing Normal University, Beijing, China.
1999–2001 LSMSA Diploma, Louisiana School for Math, Science, and the Arts, Natchitoches,
LA.
A JSP/ODBC Client/Server Multithreaded Registration Package.
Experience
2014–now Software Developer, OSIsoft, LLC, San Francisco, CA.
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.
04-09 2014 Facebook Contractor, Mercurial Project, Chicago, IL.
Designed a namespace API to allow for managing tags, bookmarks, and branches.
One of the biggest missing features in Mercurial is the lack of remote branches. Due to this
hot topic in the community, this task took many months of planning and gathering feedback.
After two sprints and many rounds of code review, the framework was accepted and released
in v3.3. Building on top of this namespace API, I drafted a remote branches extension. This
is a work in progress but has already received much positive feedback from the community.
06-09 2013 Google Summer of Code Student, Mercurial Project, Chicago, IL.
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 of the legacy 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. I successfully completed
the program with over 127 patches accepted (most students averaged 20 patches).
2010–2013 Graduate Research Assistant, Argonne National Laboratory, Chicago, IL.
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.
06-09 2009 Student Co-op, Argonne National Laboratory, Chicago, IL.
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.
2006–2009 Graduate Assistant, Louisiana State University, Baton Rouge, LA.
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.
06-09 2008 Givens Internship, Argonne National Laboratory, Chicago, IL.
Worked under H. Zhang and L.C. McInnes to add PETSc preconditioners to BOUT++, writing
new code in C++.
2007–2008 Undergraduate Math Teacher, Louisiana State University, Baton Rouge, LA.
Taught college algebra and trigonometry to ∼100 students per semester.
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.
06-08 2006 Research Programmer with B. Bourdin, Louisiana State University, Baton
Rouge, LA.
Conceptualized a numerical program for solving elliptic equations using MPI and PETSc.
The finite element code used a custom implementation of P1 and P2 elements based on
PETSc distributed arrays. Key concepts included structuring data, scatter/gather among
processors, and linear solvers.
2003–2006 .NET Programmer, Velocity Squared, LLC, Baton Rouge, LA.
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.
2001–2002 PHP Programmer, Louisiana Department of Education, Baton Rouge, LA.
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.
2001–2002 Data Visualization Programmer with J. Tohline, Louisiana State University,
Baton Rouge, LA.
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.
2000–2001 Dynamic Web Programmer, Louisiana School for Math, Science, and the Arts,
Natchitoches, LA.
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.
1999–2000 Web Programmer, Louisiana School for Math, Science, and the Arts, Natchitoches,
LA.
Created web pages using HTML, CSS, and JavaScript for faculty. Other duties included
graphic design and knowledge of web server maintenance.
Honorary Positions
2013–now Kallithea Cofounder, Kallithea Project.
Created an opensource Python clone of Bitbucket / GitHub that supports both Git and
Mercurial. I improved hi-res graphics, added Font Awesome, integrated advanced Mercurial
features, and designed evolved changeset graphlogs.
2012–now Mercurial Developer and Advocate, Mercurial Project.
I am a frequent contributor and maintain two extensions: hgsubversion and remotenames. I
have a deep understanding of the template engine and changeset evolution.
2012–now MacPorts Team Member, MacPorts Project.
What started out with me submitting fixes and bug reports for mostly scientific and mathematics ports ended up with me being invited to the MacPorts team as a permanent member.
I maintain 220 math, science, any Python ports. In 2012, I overhauled standardizing compiler
variants. I learned how to work with a large team and user base while maintaining quality
software.
2010–2012 Computing Cluster Administrator for X. Li, Illinois Institute of Technology,
Chicago, IL.
Built, setup, and administrated the Dept. of Mathematics’s 128 node computing cluster with
an Infiniband backbone for my advisor X. Li. This included configuring a job queue, installing custom MPI, writing documentation, and teaching research groups basics of parallel
programming.
2010–now PETSc Team Member, Argonne National Laboratory, Chicago, IL.
Initially, my work focused on integrating PETSc on older physics-based code for plasma fusion
simulation. Learning about library maintenance (especially linking issues) helped me disentangle a particularly difficult knot of 64-bit integers and direct solvers (e.g. MUMPS, SuiteSparse,
and SuperLU). Specifically, I fixed linking with METIS/ParMETIS and its dependents. As my
pre-doc position went on, this work expanded to include work on non-linear solvers, a major refactoring of time-stepping methods (for implementing implicit-explicit methods), and
mentoring a student to add more options for a configuration parser.
2009–now Vice President, Louisiana School for Math, Science, and the Arts Alumni Association, Natchitoches, LA.
Brought up-to-date this organization’s technology and communication capabilities, thereby
laying the groundwork for a successful campaign for an amendment of our by-laws (the first
since this association’s incarnation) that ended annual dues. Other duties include organizing teleconferences, interfacing with the LSMSA Foundation, and helping to lead reunion
weekend.
Publications
Ben Dudson, Sean Farley, and Lois Curfman McInnes. “Improved Nonlinear Solvers
in BOUT++”. In: arXiv.org (Sept. 2012). arXiv: 1209.2054v1 [physics.plasm-ph].
url: http://arxiv.org/abs/1209.2054.
Talks and Seminars
BOUT++: Performance Characterization and Recent Advances in Design. 22nd International Conference on Numerical Simulations of Plasma. Long Branch, Sept. 8,
2011.
BOUT++ Current Status and Future Plans. FACETS Meeting. Boulder, Feb. 11, 2011.
An Introduction to TikZ: Integrating Graphics within LATEX. SIAM Student Seminar.
Baton Rouge, Oct. 30, 2009.
Parallel Programming: An Introduction to PETSc and Distributed Arrays. LSU
Math Seminar. Baton Rouge, Oct. 30, 2009.
Basic Parallel Programming: An Introduction to Linux and MPI. LSU Math Seminar. Baton Rouge, Oct. 14, 2009.
Progress in Parallel Implicit methods for Tokamak Edge Plasma Modeling. SIAM
Conference on Computational Science and Engineering. Miama, Mar. 4, 2009.
C Introduction: Pointers and Memory Allocation. LSU Math Seminar. Baton Rouge,
Oct. 1, 2008.
Organized Workshops
A Brief Overview of PETSc Capabilities that can be employed by BOUT++. Lawrence
Livermore National Laboratory Workshop (Co-organizer). Sept. 14, 2011.
Net-Centric Development: Building Enterprise Services. Louisiana School for Math,
Science, and the Arts Special Projects. May 15, 2011.
An Introduction to Parallel Programming with MPI. Louisiana School for Math,
Science, and the Arts Special Project. Jan. 4, 2010.
Awards
2009
2008
2003, 2005
2001
2000, 2001
NSF Fellowship (B. Bourdin)
Givens Fellowship (L.C. McInnes)
First place in regional math contest (Mathematics Association of America)
First place in computer programming competition (Louisiana State University)
Excellence Award (Louisiana School for Math, Science, and the Arts)
Technical Skills
Over 5 years experience with analysis (real, complex, functional, numerical, partial differential equations, finite element, and some measure theory) and modeling
(Cahn-Hilliard, Ideal Magnetic-hydrodynamics, Stokes Flow, and Mumford-Shah)
equations
Over 5 years experience with writing numerical code with PETSc, emphasizes on
finite elements, difference, and volume methods; this includes intimate knowledge
of numerical linear algebra, robust solvers, and preconditioning
Over 5 years experience with parallel programming with MPI, including experience
with CUDA, OpenCL, and some pthreads
Over 7 years experience with building, maintaining, and programming on computing
clusters
Over 10 years experience in LATEX with strong emphasis on TikZ
Over 10 years of extensive academic and work experience in computer related domains: scientific computing, data structures, design patterns, software design, web
development, and networking
Over 15 years experience in using open source projects such as Apache Web Server,
MySQL, PHP, Python, Mercurial, MacPorts, Linux/BSD kernels, BIND, mDNS,
and LDAP
Over 15 years programming experience with C/C++, Java, Visual Basic, Perl, PHP,
Python, JavaScript, HTML, SQL, Visual C++, and C#