Tanya M. Lattner
*****@******.*** (http://nondot.org/tonic)
OBJECTIVE
I'm looking for an exciting and challenging programming position that allows me to utilize
and expand my current skill set. The majority of my experience is in compilers and
networking, but I am open to a variety of positions that focus on applications, user
interfaces, operating systems, and other system software or tools.
OVERVIEW OF SKILLS
C++, Java, C, Python, Perl, optimizing compilers, code generation, LLVM, networking,
databases, PHP, SQL, GUIs, XML, project management, release management, ...
EDUCATION
B.S. Electrical Engineering University of Portland, Portland, OR 5/2000
M.S. Computer Science University of Illinois, Champaign, IL 6/2005
Thesis: An Implementation of Swing Modulo Scheduling with Extensions for Superblocks
WORK EXPERIENCE
Apple Inc., Cupertino, CA 05/07 - Present
Compiler Engineer
Built, deployed, supported, and extended a new in-house tool used by the Fairplay
team.
Tool depends primarily on mid-level transformation and analysis algorithms, using local
and inter-procedural techniques.
Performed regression, correctness, and performance testing on the tool.
As a production tool, we release every 3-6 months and are continually planning,
designing, and implementing the next features while addressing any bugs.
Due to the nature of DRM, specific details about this tool are under NDA.
Hewlett- Packard, Cupertino, CA 06/05 05/07
Software Engineer
Focused on code generation and optimization in HP s Itanium backend for the HotSpot
Java JVM.
Implemented an efficient and aggressive copy coalescing algorithm, Fast Copy
Coalescing and Live Range Identification, and extended it to support predication.
Modified and tuned heuristics for tail duplication.
Implemented an SSA updating algorithm to efficiently update SSA form after CFG
transformations such as tail duplication and loop unrolling.
Implemented a new superblock scheduling heuristic that considered branch probability.
Implemented an algorithm to preserve Java memory model by correctly inserting
memory fences or using specific load or store instructions.
Expanded the existing testing infrastructure by writing scripts and dynamic web pages to
track failures and build statistics such as build time, compile time, and JVM size.
Fixed bugs in numerous phases of the compiler, for example, block layout, predication
framework, scheduler, register allocation, copy coalescing, and liveness analysis.
National Center for Supercomputing Application, Champaign, IL 09/00 - 03/05
Research Programmer
Chief Architect of the NLANR Network Performance Advisor project. The Advisor
measures, displays, and analyzes network metrics. It builds on existing network
diagnostic tools, processing their output in order to provide advice to end-users. The
Advisor is made up of a number of components, such as the performance data collector,
historical archiver, data analysis engine, and front ends. It is written in Java and uses
XML-RPC.
Continuous collaboration with the Internet2 End- to- End Performance Initiative project
called PIPES, which allowed our network measurement infrastructures to communicate.
Participated in the Networking Measurement Working group of the Global Grid Forum
(GGF) to develop a common network measurement request and response schema.
Created a Java GUI for Iperf, which measures bandwidth and tunes TCP configuration
parameters for network performance.
Developed a FTP client in Java that uses x509 certificate security with the Globus Cog
Kit. This allows researchers to securely transfer files to large mainframe computers on
the Grid.
Developed an internal information framework for the Web100 project. This framework is
a combination of a MySQL database, PHP web site, and a local private customized
SourceForge install.
Maintained and created external web pages, provided user support, and
reviewed/created documentation for the Web100 project: http://www.web100.org
IBM, Beaverton, OR 5/00 9/00
Software Engineering Intern
Enhanced GDB on DYNIX/ptx to support POSIX threads.
Created Linux Resource Center web site for internal use.
Worked with the team to enable Linux application support on DYNIX/ptx.
Cypress Semiconductor, Beaverton, OR 1/99 8/99
Technical Intern
Upgraded, maintained, and customized the bug tracking system.
Developed a Perl program to analyze Cypress Warp reports and VHDL source files. The
results aided in categorization and automated testing.
I upgraded and ported a large MFC application to Unix, using customized Stingray products
(Objective Toolkit and Objective Edit).
INTERESTS AND ACTIVITIES
Contributing to the Open Source LLVM project: http://llvm.org
Release manager.
Co-organized the 2008 & (upcoming) 2009 LLVM Developers Meeting:
http://llvm.org/devmtg/
Implemented Swing Modulo Scheduling for my thesis.
Partial redesign of nightly tester test results database, testing scripts, and php scripts
that display the results.
Wrote initial llvm-ar implementation.
Converted the regression testsuite to use Dejagnu.
Nontechnical interests:
Running (half marathons), cooking, pottery, gardening, and travel.
REFERENCES
Available upon request.