Resume
Mark Larwill
Software Developer Extraordinaire
Throughout the arc of my career I have been fortunate enough to gain experience with a wide range of interesting networking technologies including mobile ad-hoc networking for military radios, IPSec VPN software on firewalls, and networking systems supporting in-flight Internet. I have a deep knowledge of, and passion for, computer networking. I have tons of experience with C++, but I also enjoy many other programming languages. The language itself isn't as important as good fundamentals and finding the right tools for the job. I enjoy keeping my mind busy, and while that's usually done at my job, occasionally I have a few extra execution cycles I spend here.
Education
- Master's in Computer Science, University of Southern California, GPA 3.6, May 2010
- Bachelor's in Computer Engineering, University of Illinois at Urbana Champaign, May 2006
Experience
Caterpillar Inc. (Progress Rail)
LaGrange, IL
September 2019 to Present
- C++ software development on the Unix/Linux-like QNX Real Time Operating System (ROTS)
- Team Lead on software watchdog project. Researched options, chose and documented final design. Split up tasks and delegated work to team members. Managed schedule, design, documentation, testing, and merging. The project result increased software reliability, and reduced locomotive down time.
- Supported critical customer issues, including working with OS developers to gather evidence, reproduce issues, find root causes, and test and verify fixes.
- C++ development including, templates (STL and otherwise), socket programming with Unix Domain Sockets, poll() system call, signal handlers, pipes, etc.
- Developed responsive multithread code using pthreads library, and ensured proper synchronization using mutexes.
- Saved budget by leveraging free open source software, to host a Wiki using Docker and DokuWiki.
- Ensured accountability for code quality and maintenance by installing, using, and documenting a free open source copy and paste detection tool.
- Consistently participated in the peer review process, both submitting my own code for review, and reviewing others' code (using smartbear collaborator).
Panasonic Avionics Corporation
Lake Forest, CA
December 2014 to August 2019
- C++, C, and BASH Software Development on Linux for systems providing satellite based Internet.
- Added support for new hardware by writing a Linux C++ app that read configuration then derived and applied switch settings. This replaced a complex script that had become unmaintainable with a simple, flexible, and configurable system.
- Replaced a buggy whitelist system, with a simplified solution that combined open source software, an application written in C, and various BASH scripts. This resulted in a simpler system with fewer bugs that was easier for customers to understand.
- Implemented a backup satellite connection for VIP aircraft by writing an SNMP interface in C, as well as BASH scripts to configure the DNS server, and firewall SNAT rules, which kept a VIP customer happy and aided in securing valuable contracts.
- Applied extensive knowledge of IP networking (802.1Q VLANs, ARP, IP, TCP, UDP, routing, policy routing, SNAT, DNAT, 1-to-1 NAT, DHCP, DNS, unicast, multicast, transparent proxy, DSCP marking, Linux iptables firewall, mangle, filter, nat, connection tracking, etc.) to implement new feature and fix hundreds of bugs.
- Transitioned from traditional waterfall based management, to an Agile methodology, increasing responsiveness to customer requests.
- Applied a continuous integration development cycle utilizing static code analysis tools, peer review, and an automated build framework with Subversion and Jenkins, and later Git and GitLab, reducing code errors, and downtime due to build breakages.
WatchGuard Technologies
Tustin, CA
October 2010 to October 2014
- Developed IPSec VPN protocol daemon for Linux written in C, providing one of the core features of the consumer firewall product.
- Updated Java based GUI to add new hash algorithms to IPSec VPN tunnel configuration increasing user security.
- Added iPhone VPN support months ahead of the planned solution, by using tcpdump to analyze the iOS key exchange parameters in use, and add support for a missing parameter defined in RFC 2470, this caused enough sales to earn a personally engraved iPad as a bonus.
- Enabled next generation of IPSec (IKEv2) by writing wrapper daemon for open source L2TP client, keeping customers secure by using the latest protocols.
- Supported new cryptographic authentication algorithms (SHA2-256, 512) by patching Linux kernel and updating userspace protocol daemon, providing suitable replacements for weak encryption.
- Solved long time elusive VPN bug by adding additional diagnostic information to the Linux kernel and dumping it to userspace, proving the issue was a bug in the hardware crypto driver code, leading to a bug fix, and appeasing long time customers who had been running into the issue.
- Optimized software to handle large scale configurations using valgrind and kcachegrind. Reduced algorithm computational complexity from O(n2) to O(n) improving speed of sub modules by 90% and 91%.
- Upgraded continuous integration and test framework by debugging perl scripts and updating them to work with the current code branches, improving testability.
The Boeing Company
Huntington Beach, CA
June 2006 to October 2010
- Developed mobile ad-hoc network monitoring software on Linux in C++ with an oracle 10g database back-end. Worked with sockets, TCP, UDP, multithreading, synchronization issues, Unix signals, and polymorphism. Used Perl/Shell scripts and CppUnit to automate testing and installation.
- Experienced with software development including, concept of operations, systems engineering, requirements analysis, design, implementation, deployment and maintenance. Understands the importance of good communication among software developers and the importance of adaptability while maintaining focus on execution.
- Worked with complex mobile ad-hoc networking (MANET) software on software defined radios. Debugged and isolated problems in a mult-layerer network protocol stack. Collected data and did performance analysis. Familiar with TCP/IP, UDP, routing, OSPF, multicast, HAIPE Encryption. Experienced with lab work and troubleshooting hardware and software problems.
- Integrated software products from several subcontractors and tested the software. Kept strict configuration control of software and test equipment. Created software test plans, software test descriptions and software test reports (STP, STD, STR). Tested several requirements simultaneously using thread based testing. Mapped requirements to specific threads.
- Performed over-the-air testing for field tests in Palmdale California. Supported preparations, execution, data collection, analysis and reporting of field test operations.