Resume for Benjamin LaHaise Address: 1167 Sixth Concession A Dalhousie Lanark, Ontario K0G 1K0 Email: bcrl@kvack.org Current Goals: - very interested in storage, networking, and telecommunications - prefer low level / Linux kernel related programming work Programming Environment: - expert in network protocols (IEEE, IETF, ITU, GPON, EPON, XGSPON) - expert in Linux related development - expert in C (K&R, ANSI/ISO C89/C99, GNU C extensions) - effective in C++ - familiar in VHDL/Verilog design/coding for FPGA - experienced with Xilinx ISE and Lattice Diamond environments (Spartan 6, Kintex 7, ECP3) - built from scratch hybrid Verilog / VHDL / C / C++ simulation environment to test PCIe, 1G / 10G Ethernet protocol implementations - familiar with Assembly (i960, 80x86, 680x0, 6502, x86-64) - make/GNU make - yacc/lex (bison/flex) - shell scripting (bash, ksh, csh) - generally happiest working on low level projects that straddle the boundary between hardware and software - able to pick up any programming environment - source management tools (patch, diff, CVS, git, bk, hg, SVN) - some use of Python and Selenium for scripting (website scraping for finance automation) Programming Skills: - Looks at the entire system to determine where and how to implement features, improve performance and meet project goals - Improving storage performance through application optimization to improve parallelism and I/O request tuning - Scaling and performance improvement on SMP through profiling, instrumentation, code inspection and algorithmic enhancement. - Device Drivers (experienced in networking, tunneling, telephony) - Kernel Subsystem Development - Protocol implementation: PPP, L2TP, PPPoE, PCI Express (transaction layer - MMIO and DMA), Ethernet (MII, GMII, GEPON MAC) - Learned VHDL/Verilog to implement GEPON ONU/OLT in a Xilinx FPGA. Implemented 1G NIC on Xilinx Spartan 6 PCI Express platform including DMA, checksum offloading functionality, and access to NetFPGA register interface. Implemented GEPON CDR using 5x oversampling on Xilinx KC705 platform. - implement 10Gbps NIC on KC705, 10G PCS/PMA and XGMII to/from PCS, packet FIFOs, scrambler, MAC address steering - attended NetFPGA camp and was awarded best in class for L2TPv2 over UDP packet parsing for IP routing - participant in the Linux kernel open source community (since 1995), including presenting the results of development work at conferences (OLS, kernel summit) - Firmware Development (ISDN/T1, TeleNetworks & TeleSoft stacks, embedded i960. m68k, ARM) Experience: 2017-ongoing President, Community Fibre Company - built a 90+km rural FTTH network delivering Internet, Voice and TV - more than 200 customers are growing - permitting with Hydro Ottawa, Bell and Hydro One - FTTH network design, including distributed splitter architecture - fibre splicing, cable lashing, strand installation - support, finance and customer relations - CRTC regulatory interaction - BGP, PPPoE networking, GPON on Ubiquiti and ZTE platforms - used Python and Selenium to scrape EFT and online bill payment websites - automatic transaction parsing out of PDF account statements (Visa, bank statements) for accounting automation Spring to Fall 2019 private contract project - implemented 10G EPON-like data path for an optical networking demonstration in Verilog December 2017-January 2018 private contract project - implemented a protocol simulation using Dijkstra's algorithm and Linux network namespaces in 4 weeks. January 2013-August 2018 Senior Software Designer / contractor, Solace Systems - forward port Solace drivers from 2.6.18 kernel to 3.x, 4.x kernels - forward ported changes and fixed IPMI related issues in 3.4 kernel - implemented thread based AIO code paths in Linux kernel - converted existing sequential code to asynchronous state machine code to improve request parallelism and better pipeline I/O - improved system scalability (number of messages, disk I/O throughput) - implemented message spool defragmentation feature - prototyped message spooling performance improvements to meet customer requirements - designed and implemented disk transaction journal to port existing hardware ADB functionality to software platform November 2012-2015 contract developer, TuCows - forward ports Linux next3 snapshotting filesystem patches from 2.6.35 to 3.4 and 3.16 kernels - various bug fixes for issues found with next3 filesystem in production - reduced journal contention to lower synchronous filesystem write latency during concurrent snapshot removal March 2012-June 2012 - participated in MITx 6002x Circuits and Electronics course with a passing grade of A. June 2011-January 2013 senior developer, Northforge Inc. - member of the L3 networking team - improved performance of Linux kernel module implementing EtherIP while moving from RHEL 5.x to RHEL 6.x. Performance improved from 20Kpps to 600Kpps through improved use of hashing, implementing RCU for lockless table lookups, and making EtherIP code run in parallel across multiple CPUs. - implemented BMF tunneling and flooding module for the Linux kernel to support multicast over MANET (Mobile Ad-hoc NETwork) - sole developer who designed and implemented PPP tunneling implementation of L2TP, PPPoE protocols on top of Linux pppd (L2TP, PPPoE control protocols implemented from scratch quickly to meet customer requirements for licensing and schedule requirements) - development of virtual environment for network protocol testing using UML (User Mode Linux), LXC (Linux Containers) and modified bridging code to simulate MANET node connectivity. - design and implementation of MANET (Mobile Ad Hoc NETworking) kernel module for ARP optimization - performed VxWorks L3 testing and verification of MPLS, LDP - active participant in interview and hiring process for team expansion - provided pre-sales engineering customer support August 2006-May 2011 founder, LHnet.ca Inc - started a fibre optic internet provider in Lanark County, Ontario to meet the needs of underserviced consumers in a rural setting. - followed through on all necessary regulatory requirements to register as a non-dominant Canadian Carrier in order to run new cables on telephone poles in Ontario. - sourced and integrated equipment for the initial build out the fibre optic network. - obtained fibre optic technician certificate. - performed customer installations and diagnostics starting in 2008. - managed finances. - negotiated contracts with business customers and suppliers. - fixed bugs and improved L2TP / PPPoE Babylon Linux PPP stack to adapt to customer premises equipment - fixed scalability issues in the Linux kernel and Babylon code to scale to 10,000 network interfaces for edge router scenarios - network device driver performance tuning - implemented GEPON OLT/ONU in VHDL using Xilinx SP605 as a prototyping platform - made contact with electronics parts vendors to source devices for use in GEPON OLT and ONU designs Feb 2007-May 2008 kernel developer, Juniper Networks - learned and contributed to development of the JunOS kernel (FreeBSD based), primarily through bug fixes, but also assisted in following through in the development of Release Line Items. - exposed to core router configuration (JunOS BGP, MPLS) - debugged elements of non-stop routing and other JunOS kernel assisted HA features - found workaround for hardware timing issue on IDE interface - general kernel debugging - actively involved in growing the Kanata kernel team by being part of the interviewing, selecting and mentoring of new members Mar 2005-Nov 2006 Staff Software Engineer, Intel Corporation - Linux performance tuning - improved Unix domain socket performance on P4 significantly - Linux ACPI feature development 2003-2004 consulting, Achilles Internet - owner and operator of a small ISP - various sysadmin and kernel consultation tasks - developed C/C++ L2TP stack to terminate thousands of ADSL connections Oct 99-Apr 03 Red Hat, Linux Kernel Developer - general kernel r&d, debugging - contributed to kernel development from Red Hat 6.2 to AS3 - implemented the first aio subsytem for Linux (worked with Oracle to get 10-15% improvement in TPC benchmarks) - merged Large Filesystem Summit support - resolved customer filed bugs in vm, smp, filesystems, drivers - worked with customers and partners on projects to improve: - smp scalability - large memory system support - block io performance - vm performance - team lead on x86-64 port - strong community member for the Red Hat kernel development group and the larger Linux Kernel community - presented talks at the Ottawa Linux Symposium, Kernel Summit Oct 97-Oct 99 Spellcaster Telecommunications, Software Development Consultant - Development of ISDN/T1 firmware - Development of Linux ISDN device drivers - Development of Multilink PPP stack - Development of integrated PRI+DSP Modem bank drivers - all around chasing of bugs from hardware to software issues in order to provide timely fixes to customers: this included changing the firmware (C + i960 and m68k asm), drivers (Linux) and programmable logic (ABEL) Personal Characteristics: - Absorbs abstract concepts rapidly - Highly adaptive and innovative - Able to work effectively alone or in an open source environment - Excells in challenging environments