Resume - Johan Herland Software Engineer - Git Expert - "Move slow and mend things" ------------------------------------------------------------------------------- johan@herland.net +31 6 19252349 Schutterstraat 8 http://herland.net/johan 2611 MX Delft @jherland Nederland ------------------------------------------------------------------------------- Summary - Passion for designing and implementing elegant and useful software solutions to challenging problems. - Always looking for root causes and more fundamental solutions, rather than superficial patches and merely fixing symptoms. - Experience in distributed development with Git, contributing to open source, developing good tools to improve team productivity. - Experience with all levels of the software stack: - low-level embedded Linux work, communicating directly with hardware components, - build systems, test infrastructure, CI/CD pipelines, both for S/W running stand-alone and embedded into H/W devices, - application-level programming, from high-level Python down to hardware-near C, - working with web standards, both as a web browser developer, and a web developer. - Excellent communicator from always studying and working in multilingual environments. Shared knowledge and mentors colleagues. ------------------------------------------------------------------------------- Work Experience Tweag Delft, NL/Remote Developer Productivity Engineer September 2022 – Present - Senior consultant, helping clients improve the software developer experience with tools such as Bazel and Nix. - Co-maintainer of FawltyDeps, a dependency checked for Python projects and Jupyter notebooks. Cisco Systems Norway AS Oslo, NO Software Engineer October 2011 – September 2022 - Platform developer in the Webex Devices team, part of the Collaboration Technology Group. - Development of multiple generations of Webex/TelePresence video conferencing endpoints. - Embedded Linux development, integration of open-source and 3rd-party components. - Maintenance of build systems for application development towards various custom H/W platforms. - Git expert: trained developers and administered in-house Git infrastructure. - Improved the developer experience in a large and complex codebase (decades of development, various custom hardware support, actively developed by hundreds of developers across many timezones). Git project Online Contributor May 2007 – November 2014 - Primary author of the `git notes` feature for attaching useful metadata to Git objects. - Active participant in the Git community. Opera Software ASA Oslo, NO Core Developer July 2004 – September 2011 - Maintainer of central components (Unicode, legacy encodings, selftest infrastructure, etc.), making them lightweight, efficient, and portable. - Championed and implemented company-wide version control transition from CVS to Git. - Unix developer until September 2007: Developed and ported Opera to embedded Unix/Linux-based platforms. ------------------------------------------------------------------------------- Relevant Skills - Natural Languages: Native Norwegian. Full professional English. Elementary Dutch. Elementary German. - Programming Languages: Python, C, C++, Bourne/POSIX shell. Learning: Nix, Rust, Haskell. - Other Languages: HTML, CSS, JSON, XML, SQL, LaTeX, etc. - Methodologies/Practices: Test-driven Development, Agile Development, Design Patterns. - Operating Systems: Linux/UNIX user since 1996. NixOS, Arch, CentOS, Ubuntu, Debian, Gentoo, LFS, etc. - Embedded Development: Embedded Linux development, Android, build systems for cross-compiling own and 3rd-party software. - Systems development: How a modern Linux system is put together, systemd configuration, Filesystem Hierarchy Standard, etc. - Containers/Virtualization: Knowledge of Linux namespaces and isolation primitives, Docker/Podman and QEMU. - Security: Low-level security features like Seccomp, SELinux, Linux Capabilities, ASLR, RELRO, stack protection, etc. ------------------------------------------------------------------------------- Technical Writing 2023: Behind the scenes with FawltyDeps v0.13.0, Tweag blog matching imports with dependencies https://www.tweag.io/blog/2023-09-21-fawltydeps-mapping-strategy/ 2023: Announcing FawltyDeps, Tweag blog a dependency checker for your Python code https://www.tweag.io/blog/2023-03-14-announcing-fawltydeps/ ------------------------------------------------------------------------------- Public Speaking 2022: The Git Parable, Tweag internal knowledge sharing Online/Remote https://youtu.be/ANNboouhNHE 2018: The Git Parable, NDC TechTown Kongsberg, NO https://youtu.be/jm7QsI-nNjk 2018: Building useful project utils in Python, NDC TechTown Kongsberg, NO https://youtu.be/p4iuZnXzqmI 2017: Making a Headless Android Device (with Patricia Aas), NDC TechTown https://youtu.be/YHwjECuhGcM Kongsberg, NO 2016: Elegant Filesystem Interactions in Python using pathlib, ACCU https://youtu.be/Vrh63V7OoY8 Bristol, UK 2013: The Git Parable, ACCU Bristol, UK http://www.infoq.com/presentations/git-details 2012: The Git Parable, Meetup with the local Tekna chapter Oslo, NO ------------------------------------------------------------------------------- Attended Trainings 2021: Linux Security and Isolation APIs, Michael Kerrisk Online/Remote 2020: SELinux Administration, Ralf Spenneberg Online/Remote 2019: Fast Track to OpenEmbedded and Yocto Project, C. Simmonds Kongsberg, NO 2019: Secure Coding in C and C++, Olve Maudal Oslo, NO 2018: Intermediate Python, Robert Smallshire Kongsberg, NO 2016: Building and Using Shared Libraries on Linux, Michael Kerrisk Oslo, NO 2016: Linux/UNIX System Programming, Michael Kerrisk Oslo, NO 2015: Python Advanced, Kevlin Henney Oslo, NO 2015: Python Foundation, Kevlin Henney Oslo, NO ------------------------------------------------------------------------------- Education Queen's University Kingston, Ontario, CA Bachelor of Science with First Class Honours 2000 - 2004 - Computer Engineering, Software Option. - Received Dean’s Award (above 80% grade average) in 2002 and 2003. Final standing: 84% grade average. - Focus on software architecture, software development and real-time systems. - 4-year intensive program with a final-year thesis project: Robot Pool ”Straight-Shot” Planner and Executor: - Part of a larger research project in robotics and machine vision on creating a pool-playing robot. - Developed two calibration processes for Pool Robot in C/C++. - Published paper: Robotic pool: an experiment in automatic potting https://ieeexplore.ieee.org/document/1389787 ------------------------------------------------------------------------------- Other Experience Herland Software (sole proprietorship) Website development and administration June 1998 - January 2008 - Administered web and mail services for multiple customers and domains. - Created web page layout and programming web applications. Queen’s University Kingston, Ontario, CA Research Assistant April 2003 - August 2003 Department of Electrical and Computer Engineering - Developed software for a research project in robotics and machine vision (Pool Robot). - Low-level programming in C and higher level programming in C++. Queen’s University Kingston, Ontario, CA Teaching Assistant January 2003 - April 2003 - Assisted undergraduate students on laboratory assignments in a course on Data Structures and Algorithms. ------------------------------------------------------------------------------- Other Skills - Driver’s License: Norwegian Class B. - Professional Memberships: ACCU, IEEE, NITO - Hobbies – Cycling: Road and gravel biking, cyclotourism, sportives, home mechanic. - Hobbies – Music: Jazz Piano, music theory, playing various genres in big band and smaller settings. ------------------------------------------------------------------------------- This document is copyright 2004-2023, Johan Herland. Last Modified: Sep. 2023