Rob Landley, Programmer
Linux developer and trainer
with speaking, writing, and project management skills.
Programming languages include C, Bash, Python, Java, and Lua. Areas of
expertise include embedded optimization, debugging, cross compiling, system
integration, networking, kernel driver development, SMP/threading, hardware
bringup. I wrote and maintain the "toybox" package providing Android's
standard posix command line utilities, and the "mkroot" cross-compiling build
environment. I've also worked as a college instructor, columnist, and
PROGRAMMING WORK EXPERIENCE:
- 2019 Position: Linux developer for Core Semiconductor.
- Project: J-core GPS platform.
Optimize and document J-core and GPS driver port to ICE-40 FPGA
board bringup for new development boards, maintain BSP, create documentation
and marketing strategy, manage j-core.org community website and mailing list.
- 2018-2019 Position: Linux developer for Johnson Controls.
- Project: Linux conversion of N40 platform, provide
OS image to transplant .NET building climate control app
(Metasys) from WinCE to Linux (Buildroot with Mono) on 20 year old sh4
hardware (200 mhz, 128m ram, 128m NOR flash).
Modified kernel, bootloader, and userspace, coordinated with hardware
engineers and Mono contractor in Germany.
Achieved realtime performance requirements (4ms driver response,
15ms userspace) from heavily threaded (>80) mono app designed to busy-wait
poll under WinCE. Provided Linux expertise to a previously Windows-only
development group converting to Linux-only going forward.
- Project: Convert N50 and newer platforms to Linux. Assist
with Metasys Linux bringup and optimization on newer x86 (Atom) and ARM
(v7 Smarc) hardware using Wind River Yocto build system.
- 2014-2017 Position: Linux developer for se-instruments.com.
- Project: Board Support Packages for synchrophasor
product, using nommu sh2-compatible clean room VHDL SOC developed in house
and open sourced on j-core.org. Worked with hardware teams in Tokyo and
Ontario. Ported existing Linux kernel patches from 3.4 to 4.x. Maintained
three BSP versions: 1) inherited uclinux+code sourcery BSP build (reproduced
toolchains from source using buildroot, audited project licenses,
updated/migrated package versions), 2) new binflt+uClibc version based on
Aboriginal Linux (added target support to existing toolchains, added nommu
support to toybox to replace busybox, and worked with musl-libc maintainer
to add nommu support to replace uClibc), 3) new fdpic+musl version
based on mkroot and musl-cross-make.
- Project: open source community manager.
Created and ran nommu.org and j-core.org websites and mailing lists.
Found and trained new upstream linux-sh architecture maintainer.
Documented hardware and software build processes for j-core FPGA development
(VHDL toolchain setup, bitstream build, j-core C/C++ toolchain build,
root filesystem build, kernel build, board installation and bringup)
for both internal engineers and open source community. Presented
and ran tables at Cool Chips, Linux Jamboree, Linuxcon Japan, LF Embedded
Linux Conference, Texas Linuxfest, and Smart Energy Week.
Created project public roadmap.
- Project: GPS driver. Implemented hard realtime software
correlator to parse raw antenna data (compatible with hardware correlators
in product board), perform sattelite signal acquisition, doppler
and code phase tracking, bit edge detection, subframe recognition, and parity
checking/stripping to produce rtklib-compatible input data frames.
Replaced rtklib with homegrown frame parser and Newton-Rhapson Method
position calculation with fixed point math library. Debugged and optimized
realtime constraints to eliminate dropped periods, and diagnosed
multiple clock skew/wrap sources in input data. End goal was tracking
GPS time with nanosecond accuracy via phase locked loop correcting a local
thermally stabilized clock.
- 2013-2014 Position: Linux build engineer for pace.com.
- Project: Maintained Exodus build system for mips and arm
based DSL routers. Inherited a combination of buildroot, Broadcom BSP, and a
collection of locally developed and vendor code building with Autoconf,
packaged up by shell scripts and all building in an x86-64 Fedora chroot.
Separated layers, cleaned up and sped up build, upgraded package versions
(including migration to new buildroot version), helped migrate products off
of older build systems, implemented new factory install image. Participated
in project planning for sitewide perforce to git migration.
- 2013 Position: Linux kernel developer for
- Project: Direct Attached Lustre service nodes exporting
a Lustre 2.4 filesystem within Cray supercomputers. Ported and brought up
Centos 6.3 and 6.4 on Cray blade hardware. Extracted and ported "Cray Linux
Environment" patches from SLES11sp2 to Centos. Provided design input to "IMPS"
(Image Management and Provisioning System). Backported v9fs driver (9p2000.L
network filesystem, used with "diod" server) from 3.4-vanilla to 2.6.32-centos
kernel. Converted Linux initramfs to tmpfs, removed perl from Linux kernel
base build requirements (reimplementing perl scripts in C and shell), and
submitted both patchsets upstream into vanilla Linux kernel.
- 2011-2012 Position: Linux kernel developer for
- Project: Board bringup for "Hawking Saturn" 3-display room teleconference system.
Adapted TI ARM Linux branch to hardware
(three TI "netra" Cortex A9 SOC, each running android clustering across PCIe
and internal gigabit LAN, plus two FPGAs, audio/video I/O, USB3, i2c,
etc). Diagnosed hardware issues, fixed gigabit ethernet and USB3 drivers,
automated regression test suite for manufacturing,
ported drivers between Linux versions, some driver design work, addressed
USB and u-boot issues on Mars and HDX boards, helped co-workers debug
issues with Android (Gingerbread and Ice Cream Sandwich).
- Project: Board bringup for "Hawking Mars" single display
desktop teleconference system, also Netra based. Wrote Power On Self Test code
in MLO/u-boot and Linux initramfs. Debugged physical memory layout
- Project: Early bringup for "Hawking Millennium" 360
degree panoramic webcam. Initial hardware check, adapted Linux board layout
to hardware (pre-device tree kernel version: worked out configuration,
added i2c tables, built Linux From Scratch root filesystem, etc). Worked with
hardware devs to identify places the wires didn't go through.
- Other duties as assigned.
Debugged customer issues on existing HDX teleconference systems
(PowerPC running realtime preempt branch of vanilla Linux). Advised
on git/gerrit deployment. Knowledge transfer between departing/arriving
co-workers (learned audio subsystem to hand it off, learned DVT build system to
hand it off, etc).
- 2011 Position: Linux kernel developer for
- Project: Linux Containers.
Added container support to network filesystems in Linux kernel (CIFS, NFSv3,
9P), debuged and documented containers userspace tools at lxc.sourceforge.net,
traveled to Moscow to liase with OpenVZ developers, ran booth at Scale with
- 2010 Position: Linux developer for
- Project: Port Linux to the Hexagon processor (QDSP6).
Debugged kernel and toolchain, bootstraped Gentoo userspace, upstreamed patches
to kernel.org and elsewhere. Ran training sessions.
- 2009 Position: Co-owner of Impact Linux LLC.
- Project: Rockwell Collins contract. Diagnose causes of
memory exhaustion in an embedded ARM entertainment system. Create
diagnostic tools, create documentation about Linux VM subsystem, deliver
- Project: Cisco/Linksys contract. Prototyped new
embedded build system for Cisco/Linksys (based on Aboriginal
Linux and Gentoo From Scratch). Performed competitive analysis of OpenWRT.
Upgraded existing build systems (Bruschetta/Prosciutto, derived from Broadcom
BSP) for WRT610n (mips router) and MediaHub (ARM NAS, replaced with PPC version
during development). Ported uClibc++ to Crosstool-NG, debugged a home
automation server, proposed transcoding strategy, diagnosed RAID/partitioning
race condition, etc.
- 2008 Position: Linux Consultant for Oxford Consulting.
- Project: "Scorpion" Embedded Linux C++ programmer for
Ion Geophysical Services. Maintenance and upgrades on SMP Linux
server software controlling seismic data acquisition network, consisting of
thousands of sensors connected via a proprietary bus. This server software
collated and processed shockwave (dynamite) data in real-time to visualize
underground geology and find oil.
- Project: ARM fax machine Embedded Linux C programmer for
Silicon Labs, working on a new fax machine running ARM Linux.
Optimized build environment, converted Python prototype to C, attended
lots of design meetings.
- 2007 Position: Fellowship from the Linux Foundation
- Project: Linux Kernel Documentation. Six month fellowship
to create and maintain a central kernel documentation website, improve and
maintain existing documentation and related tools, and write new documentation.
Started "http://kernel.org/doc" directory
(see source control repository at
and May-Oct 2007 in the mailing list archive at
- 2006-2007 Position: Embedded Linux Developer for
- Project: "BusyBox" 50% of work week spent maintaining BusyBox.
- Project: "TimeSys LinuxLink" General embedded Linux
development. Acted as domain expert in uClibc and initramfs, worked on
cross-compilers and system integration, wrote test software, helped design new
build system, spoke at CELF and OLS, answered customer questions, wrote
documentation, added Mercurial support to source control system, did Linux
kernel development, created a minicom replacement to improve boardfarm
- 2005 Position: Programmer for Giganews
- Project: "GCF support". Implemented (in Perl) a dozen
test cases for GCF (usenet NNTP forwarding software). Wrote (in C) a
statistical usenet spam filtering plugin for GCF.
- 2004-2005 Position: Consultant at Dell
- Project: "Rogers" Hardware diagnostic software for
SCSI/SAS RAID. Implemented a C++ plugin library according to Dell's existing
design, for marshalling data between device firmware (third party binary) and
various user interfaces (web based, command line, and standalone Java
- 2003-2004 (Consulting work still under NDA).
- 2001-2002 Position: Head programmer for WebOffice
- Project: "iLand gateway" A single box firewall and
fileserver for small offices. Web-GUI administration (through Apache with
Python CGI), Virtual Private Network (DNAT+SSH+netcat), Network Attached
Storage (Samba and custom file transfer CGI), DHCP, Bind, PostgreSQL, root
partition on loopback mounted zisofs allowing "firmware upgrade" (whole OS
upgraded by replacing GPG signed file). Based on a custom "Linux from Scratch"
system with the 2.4 kernel. Designed, implemented, documented, and created
manufacturing process for this project.
- 2000 Position: Head of Linux Development for BOXX
Technologies, a high-end graphics/video hardware start-up.
- Responsibilities: Supervised two people,
system configuration/tuning/testing, some software development (C and Java),
design of new release management process, customer support/firefighting.
Convinced Boxx to reconsider exclusive relationship with Intel and try AMD
Athlon, resulting in Boxx and Tyan co-designing the first dual Athlon
motherboard (OEMed as Tyan Thunder).
- 1999 Position: Consultant with Enscicon at
Trilogy for IBM.
- Project: "Order Processing and Forwarding", Java based
client/server project connecting IBM's sales and shipping SQL/MQSeries
databases. Deployed on AIX and NT.
- 1998 Position: Contract programmer for Alternative
- Project: 6 month contract at IBM to resume work on
"Feature Install" (see 1995) to support several new OS/2 products.
- 1998 Position: Head programmer for Quest Math &
- Project: "Interactive Diagrams", a series of 45 Java
applets for a Pre-calculus tutorial on a CD bundled with a McGraw-Hill textbook.
- 1995-1997 Position: Full-time development programmer
- Project: "JavaOS Application Bringup", debugging JavaOS on
Power PC and Intel clients, ensuring compatability with multiple third party
- Project: "IBM Software Choice", for purchasing and
installing IBM's OS/2 software via the World Wide Web (using Feature Install
engine controlled via Netscape plugins).
- Project: "Feature Install", 32 bit Corba compliant OS/2
install, uninstall, and system inventory software used to install "Falcon"
(OS/2 for Power PC) and "Merlin" (OS/2 Warp 4.0).
OPEN SOURCE PROGRAMMING PROJECTS:
Created and maintaind Posix/Linux command line implementation which
replaced Android's Toolbox in Marshmallow. Toybox now provides most Android command line utilities.
See "http://landley.net/toybox/about.html" for details. Registered toybox's "Zero Clause BSD" license
(SPDX: 0BSD) and defended it from proposed OSI changes (including securing
permission from original BSD maintainer Kirk McKusick to call it a BSD
license), then helped get 0BSD recognized by Github's "choose a license".
mkroot - Created a cross-compiling build system
(in less than 1000 lines of bash) to bootstrap a reproducible/hermetic target
build environment which can natively build and regression test target
packages under an emulator (QEMU) on x86, arm, mips, powerpc, sh4, m68k, etc.
See "https://github.com/landley/mkroot" for details.
busybox - Inherited from Erik Andersen,
maintained versions 1.01 to 1.2.2.
Starting in 2003, extended busybox to fully replace the corresponding GNU tools
in a development environment (Aboriginal Linux), and for SUSv3 compliance.
Wrote new versions of sort, sed, dmesg, halt, count, losetup, mdev,
mkswap, mount, netcat, poweroff, reboot, seq, switch_root, umount...
Re-implemented Julian Seward's bunzip2 algorithm to compile to less than 7k and
run 10% faster. Wrote new test suite, documented standards compliance with
SUSv3. Handed off to Denys Vlasenko in 2007 but continued to contribute
for years afterwards (new patch, nbd-client, vi serial fixes, etc).
Aboriginal Linux - Tiny self-hosting Linux
system built from just 7 packages (busybox, uClibc, linux, gcc, binutils,
make, and bash) and capable of rebuilding itself under itself from source
code. Supported x86, x86_64, arm, mips, powerpc, sh4, and sparc targets
(providing QEMU packaging and launch scripts for each). See
"http://landley.net/aboriginal/about.html" for details. Replaced by mkroot (above) in 2017.
NON-PROGRAMMING WORK EXPERIENCE:
- Adjunct faculty member at Austin Community College
(1998-2000), teaching "Intro to Java", "Unix Operating
System I", and "Multiuser Operating Systems".
- Stock market investment columnist for The Motley
Fool at www.fool.com from 1998-2000.
- Convention Organizer: Penguicon and Linucon.
Co-founded Penguicon in Michigan in 2003 (still going, see www.penguicon.org),
founded and chaired Linucon (a 501c3 non-profit) in October, 2004.
- Technical Editor for the "The Art of Unix Programming", by
Eric Raymond, published 2003.
- Linux kernel Documentation maintainer (2012-2014).
Wrote the standard documentation on several topics (most notably initramfs). See
- Ran tutorial sessions ("Populating Initramfs with BusyBox and uClibc"
and "Introduction to cross-compiling") at Ottawa Linux Symposium in 2006 and
2007. Presented paper "Where Linux Kernel Documentation Hides" and hosted
Linux Compiler BOF in 2008.
- Ohio LinuxFest presentation: Developing for non-x86 targets using QEMU.
- Additional presentations at Flourish 2010/2016, CELF/ELC 2010/2013/2015/2017,
Ohio Linuxfest 2008/2013, Tokyo Linuxcon 2015, linuxconf.au 2016, and so
- 1997-1998, 2003-2004 - Enrolled at the University of Texas at Austin, as a graduate student in Computer Science. (Withdrew due to work commitments both times.)
- 1992-1995 - Bachelor's degree from Rutgers University (Camden, NJ). GPA 3.419, Majors in Computer Science and General Science, minors in Math & English.