Rob Landley, Programmer
Linux Developer 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, network administration, kernel tweaking, SMP/threading, web
backend and GUI development. Also worked as college instructor, columnist,
and convention organizer.
For fun I implemented most of Android's standard posix command line
utilities (the toybox package merged in Marshmallow) from scratch in C,
and wrote and maintain my own open source cross-compiling build environment
that automates Linux From Scratch builds under QEMU emulating a dozen
different processor types as an automated regression test of those
PROGRAMMING WORK EXPERIENCE:
- 2015 Position: Linux developer for se-instruments.com.
- Project: Board Support Package for synchrophasor
product, using a nommu superh (sh2) compatible clean room VHDL processor
implementation. Reverse engineered old (uclinux+code sourcery) BSP build,
updated/migrated package versions, built new toolchains, forward-ported kernel
patches from 3.4 to 4.x, etc.
- Project: Open Source Community Development for
nommu linux and jcore processor. Managed launch of jcore open hardware
project on github. Authored website content, managed
mailing lists, submitted patches to kernel.org and elsewhere, wrote
extensive documentation (see http://nommu.org/jcore), gave
"Turtles All The Way" open hardware presentation at LinuxCon (Tokyo
and Portland), Linux Plumber's Conference, and Texas LinuxFest.
- Project: nommu support for toybox replacing
busybox and uclinux utilities in BSP
- 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 initramfs to tmpfs.
- 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.
- 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.
See "http://kernel.org/doc", the source control repository at
"http://landley.net/hg/kdocs", 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:
BusyBox - Maintained versions 1.01 to 1.2.2.
Starting in 2003, extended busybox to fully replace the corresponding GNU tools
in a development environment (for Aboriginal Linux), and for SUSv3 compliance.
Wrote new versions of sort, sed, catv, dmesg, halt, count, losetup, mdev,
mkswap, mount, nc, 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
Aboriginal Linux - Created and maintained an
embedded Linux build system implemented as a series of bash scripts. Modular
design creates cross compiler, root filesystem, and bootable system image as
orthogonal stages. Project goal is to produce nearly identical native
development and test environment for multiple hardware targets using commodity
PC hardware (emulated via QEMU and accelerated via distcc). Default
configuration creates the smallest system image capable of recompiling under
itself, based on just seven packages (busybox, uClibc, linux, gcc, binutils,
make, and bash). Currently supports x86, x86_64, arm, mips, powerpc,
sh4, and sparc targets. See
"http://landley.net/aboriginal/about.html" for details.
Toybox - Created and still maintaining a new
BSD-licensed command line implementation which replaced Android's Toolbox in Marshmallow.
See http://landley.net/toybox/roadmap.html for details.
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.
- Wrote documentation for Linux kernel. See
"http://landley.net/writing/" for examples.
- 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 CELF ELC 2010, Flourish 2010, and elsewhere.
- 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.)
- 1995-1997 - IBM internal courses in SOM, OS/2 PM, and Java.
- 1992-1995 - Bachelor's degree from Rutgers University (Camden, NJ). GPA 3.419, Majors in Computer Science and General Science, minors in Math & English.