|
So that's where all the FarSight half-pennies went...
You can reach me via email.
Links
|
|
|
skills
- Programming Languages: Java, C#, C/C++, T-SQL, bash scripts, VB.NET, MSIL, VB6, VBScript, HTML, XML / XSLT / XML Schema
- Technologies: AWS, CDNs, SAN, OpenAPI, NoSQL, .NET, WCF, WPF, RESTful APIs, DCOM, DNS, distributed architectures
- Familiarity: Javascript, SQL (Oracle, MS Access, Paradox, MySQL, Postgres), Scheme, PowerBuilder, perl
areas of interest and development
- Finance: How the stock market works on the backend
- Automation of repetitive tasks
- Code Generation (e.g. when data driven solutions cannot work)
- Databases
- .NET, DCOM, Daemons, and interprocess communication
- Scaling e-Commerce websites
- Cloud computing
- Finding Windows bugs
- Linux, routers, DNS, NAT, and building home LANs (wired and wireless). I am hosting this webpage out of my house.
- Overclocking Intel hardware: I have built several Intel PCs from parts, including an AMD Phenom II X4, a triple boot P4, and an overclocked dual boot Celeron 450
- Power Boating
- Boy Scouts (Eagle 3/1990)
Professional Experience
|
Amazon Robotics - North Reading, MA
June 2021 - present
Full Time Senior Software Engineer, Robotics Operations Management Team
| |
Current Responsibilities:
- Design and implement code and infrastructure for large scale data analysis pipelines for robotic telemetry.
- Drive adoption of Java 11 and Graviton 2 (ARM) servers across Amazon Robotics.
- Improve code quality and overall software process through design reviews, code reviews, and retrospectives.
- Formally mentor colleagues to help them excel within their own roles.
- Escalation point for “tricky” customer-visible, time critical software issues.
Significant Completed Projects:
- Spent 5 months designing and implementing Java microservices with the Amazon Last Mile team. I gained a lot of experience with AWS services, including API Gateway, CloudFront, CloudFormation, CloudWatch, ECS, Fargate, IAM, KMS, Kinesis, Lambda, S3, SNS, SQS, and Step Functions.
- Drove an “operational excellence” project that identified and fixed deficiencies in existing data analysis pipelines. The project virtually eliminated the prior on-call burden of daily high severity incidents, and decreased AWS spend by 70%.
|
TripAdvisor, Inc - Newton, MA
July 2013 - May 2020
Full Time Senior Principal Software Architect
| |
Current Responsibilities:
- Conceive, design, iterate, and build out software and hardware infrastructure for microservices at TripAdvisor.
- Drive adoption and implementation of microservices across multiple teams and Business Units.
- Mentor colleagues, answer technical questions, and assist and/or lead the design of new microservices.
- Improve speed, stability, reliability, and scalability of customer-facing systems.
- Identify, investigate, and resolve software, CentOS, JVM, Garbage Collection, and 3rd party framework bugs and performance issues in production and pre-production environments.
- Escalation point for “tricky” customer-visible, time critical software issues.
- Research and recommend new technologies, hardware, and vendors, and drive implementation.
- Software development for infrastructure and core services.
- Capacity modeling and planning for customer-facing systems.
- Rotating role: Manage release of code to production systems (24x7 pager duty)
- Rotating role: DevOps (24x7 pager duty)
Significant Completed Projects:
- Conceived, designed, and led a team (including myself) to build out software for the new TripAdvisor microservice stack, currently utilized by hundreds of services.
- Worked on tooling for swagger IDL, a language neutral IDL.
- Refactored large parts of the existing codebase, and integrated with an artifact repository.
- Built out a hosting framework, based on Jetty, Jersey, Jackson, Docker, and Kubernetes.
- Built support for build, test, and deployment automation.
- Built a service-discovery mechanism that was compatible with legacy systems.
- Designed and evangelized a transition strategy for migrating legacy systems over to the new architecture.
- Wrote hundreds of pages of design and runbook documentation for microservices.
- Designed and implemented an authentication and authorization scheme for services, based on client SSL certificates, with the assumption that all services run in a hostile environment.
- Designed and implemented a service gateway to allow external clients to access services.
- Designed and implemented a service discovery scheme that works with both Kubernetes and legacy services.
- Upgraded the legacy site and all microservices to Java 11.
- Designed and implemented a code generator to create type-safe wrappers for Postgres SQL consumed from Java.
- Designed and implemented code that increased the capacity of the website by 2x without buying new hardware.
- Designed and implemented code that greatly improved site stability, preventing outages in any one system from cascading to other systems.
- Redesigned connection pooling logic for web services, memcached, and databases.
- Redesigned service-to-service serialization framework. Significantly decreased latency and CPU overhead of service-calls. Added tracking and reporting to detect backwards compatibility problems before they manifested.
- Designed and implemented a Java code generator to output easy-to-use wrappers for Postgres SQL.
- Investigated and fixed OS configuration issues, unblocking transition from CentOS 5 to 6, then later from 6 to 7.
|
VistaPrint, Inc - Lexington, MA
May 2003 - June 2013
Full Time Lead Scientist and Production Systems Architect
| |
Responsibilities:
- Research and recommend new technologies, hardware, and vendors, and drive implementation across teams.
- Subject Matter Expert for customer-facing E-Commerce website architecture and infrastructure.
- Capacity modeling and planning for customer-facing systems.
- Implement instrumentation code, profilers, tracking databases, and visualization tools to monitor performance of web, application, and database servers, aid investigation of production issues, and drive capacity planning.
- Work across teams to keep site stability, performance, software defects, and hardware costs in check.
- Manage configuration for Content Delivery Network, IPAnyCast DNS, and Cloud hosting vendors. Includes managing vendor selection and/or migrating between vendors, and managing vendor relationships.
- Escalation point for "tricky" ASP.NET, .NET framework, and OS level issues. Local windbg expert.
- Project architecture consultant, aiding other teams with high-level software design work.
- Liaison between development and operations teams, to make sure that projects are operable by NOC team, have proper error reporting and monitoring, and fit within the context of existing environment.
- Rotating role: Supervise release days to hasten resolution of release related code issues.
- Consultant for disaster recovery planning.
- Software development for infrastructure and core services.
- Firefighting.
Prior Responsibilities:
- Head Database Architect and Administrator in 2005. Tracked and improved performance, was the consultant for software development team, managed backups, SAN storage, and handled acute issues (24x7 pager duty).
- Rotating Release Manager in 2004. Supervised execution of build and release process.
- Rotating Problem Manager in 2003. Investigated and triaged acute production issues (24x7 pager duty).
Significant Completed Projects:
- Conceived, designed, and implemented mechanism for zero-downtime website releases. Removed need to take a 2-5 hour outage every 3 weeks, resulting in millions of dollars in extra revenue every year, without using additional hardware. Side effects of the design change were a reliable rollback mechanism, the ability for developers to make non-backwards compatible database changes without worrying about breaking the website, and a mechanism for pushing out marketing campaigns, pricing, and content updates multiple times per day.
- Designed system architecture for VistaPrint-hosted customer websites, including the "site builder" application, hosting webservers, customer content storage, and custom DNS. The system currently handles close to 500K sites.
- Designed and implemented recurring billing system for hosted customer websites and other subscription products.
- Designed system architecture for splitting up legacy data center into multiple, geo-redundant sites.
- Designed and implemented caching layer for marketing data stored in T-SQL. Worked around deficiencies in .NET memory management.
- Conceived and implemented "affinitizer" software to force processes onto specific server CPU sockets to avoid NUMA overhead. This allows VistaPrint to squeeze 20-50% more performance out of "processor dense" multi-socket HP DL385 and DL585 servers, saving greatly on rack, power, and OS licensing costs compared to single-socket servers.
- Conceived, designed, and implemented a configurable code-rewriting .NET profiler. The software bootstraps itself, and enables runtime function augmentation, or even replacement, in Microsoft Framework and 3rd party binaries, without having to recompile the binaries. Usage includes adding instrumentation to code that is otherwise opaque, fixing 3rd party bugs, and tracking bad developer habits such as using LINQ in inappropriate ways. The profiler also gathers code coverage statistics, and tracks "unmanaged" system resource leaks.
- Designed and implemented a C# preprocessor using Antlr, to transform .NET "attributes" into code.
- Designed and implemented a C# code generator to output easy-to-use wrappers for DB stored procedures.
- Designed and implemented the context-aware site content localization system.
- Redesigned and implemented a high performance session and navigation tracking database.
- Conceived, designed, and implemented a very tight compression scheme to fit drawing instructions for customer documents onto a query string, permitting rendering to scale out more efficiently across data centers.
|
NerveWire, Inc - Newton, MA
December 2002 - April 2003
Senior Applications Consultant / Full Time Senior Software Engineer
WiPro acquired NerveWire in April 2003
|
|
Responsibilities:
- Writing specifications, requirements gathering, analysis, design, and writing code for client applications
- Enterprise level project design, architecture, and implementation
|
Merrill Lynch & Co. L.P Intelligent Technologies Group (ITG) - Cambridge, MA
April 1999 - December 2002
Vice President / Full Time Senior Software Engineer
Merrill closed the ITG office in December 2002 and contracted crucial employees to NerveWire to complete active projects.
|
|
Responsibilities:
- Writing specifications, requirements gathering, analysis, design, coding, deployment, and project management for applications related to Merrill's online channel, MLDirect.
- Enterprise level project design, architecture, and implementation.
- Travel to production facilities to supervise project rollout, and to debug production problems.
Significant Completed Projects:
- Customer alert service for account-based criteria, running on Win2K, written in C++, VB6, and XSLT.
- Equity price and volume alert service written in C++/DCOM.
- A high volume User Communications service on Win2K in C++ that processes outgoing customer messages. This project required reverse engineering of the Microsoft Exchange IM protocol.
- Designed an XML installation validator scripting language and wrote C++ script engine.
- ISAPI test harness application to ease IIS development.
- VB6 'Windows Explorer'-like frontend for the command line based ITG build system.
- Win2K/C++ based new project wizard to simplify OS/390 host development.
- Generic C++ Win2K performance extension DLL to facilitate publishing information from Win2K services.
- C++ Command line tool for manipulating all aspects of the Windows Task Scheduler
- GUI tool that attaches to another process, via DLL injection, to monitor COM object creation.
|
D.E. Shaw Financial Technologies - Cambridge, MA
July 1997 - April 1999
Full Time Software Engineer
Merrill Lynch acquired DESoFT in April 1999
|
|
Responsibilities:
- Investigated, analyzed, and solved day to day operational issues associated with running a 24x7 full scale production Internet stock brokerage
- Mentored visiting colleagues from DESoFT's remote India office
Significant Completed Projects:
- Designed, implemented, and optimized parts of the accounting code for the DESoFT Internet stock brokerage system.
- Implemented accounting Code to reconcile clearinghouse data with DESoFT's data
- Designed and implemented VB6 client to aid investigation and correction of data
- Implemented code to handle accounting for stock options
|
Patents
- US 7644355: Representing reflective areas in a product image.
- US 7885861: Method, system, and storage for creating a montage of composite product images.
- US 7903122: Representing a printed product using image blending.
professional background (prior to 1997)
- I began programming at the age of 7, writing basic programs on a Commodore 64. However, I did not become a professional until the summer after my senior year in high school, when I wrote customer, inventory, vendor, and order tracking system, using Paradox for Windows, for Phyllis Ann Accessories in Dallas, Texas. The system is still in use today with only a few modifications over the past few years. In the recent past, I built an online catalog for Phyllis Ann Accessories.
- While I was at Dartmouth, I did some internships in the greater Boston area. In the spring of 1995, I worked at Banyan, Inc, where I wrote a Lotus Notes GUI and a parsing program in C to help engineers write release notes for production patches. In the summer of 1996, I worked at Boston Catalysts Group. There I did two projects - the first was an overtime tracking system for the Boston Transportation Department, written using Microsoft Access, and the second project was a management system for the MIT Board of Trustees, written using Powerbuilder and Oracle SQL.
- In my computer classes at Dartmouth, I completed some interesting projects, including an appointment calendar program, a ground up implementation of OpenGL, a somewhat handicapped yet functional C compiler, and a project that modified Sun's Java VM so that the entire state of a program (including all objects, and the program stack) could be saved to disk and restored later.
education
I graduated magna cum laude from Dartmouth College in 1997 with a BA in both Computer Science (3.97/4.00) and Biophysical Chemistry (3.78/4.00)
Revised February of 2013. Copyright © 2003-2013, Joshua Mills.
|