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#
© Copyright 2024