Address and phone converted to image so that automated spammer programs can't harvest them.  For text, please email josh=at-krellan-dot=com
Summary Software engineer with 8 years experience designing and developing software on Linux/UNIX and Windows. Systematic and thorough, with good attention to detail. Problem solver, from design to release. Excellent written communicator and independent worker. Participant and contributor in the Open Source community. Experienced with Linux boot methods, early userspace, and command-line utilities. Proficient with C, C++, Perl and BASH shell scripting, and currently learning Python.
  • RFC standards-compliant software
  • Linux kernel and user API
  • Hardware drivers and interfaces
  • Network communications protocols
  • GPL and Open Source
  • Multithreaded programming
  • Client/server sockets
  • Linux boot and initramfs
  • Documentation
  • TCP/IP
  • C++ and C
  • GCC and glibc
  • GDB and KGDB
  • Subversion and CVS
  • Perl
  • BASH shell scripts
  • Samba
  • BusyBox
  • Red Hat Enterprise Linux RHEL 3, 4, 5 on i386 and x86-64 — AMD64 EM64T
  • Red Hat Linux 6, 7, 8, 9 on i386 — Intel IA-32
  • MontaVista Hard Hat Linux 1, 2 on i386 and PPC — PowerPC
  • Numerous versions of Fedora, Ubuntu, Debian, Gentoo
  • Linux kernel 2.0, 2.2, 2.4, 2.6
  • Microsoft Windows 95, 98, NT, 2000, XP, 2003
  • User of Linux since version 0.99pl14
Experience Contractor 1/2009 - 9/2009
Axcient, Mountain View, CA
Contracted to Axcient — employed through Robert Half International
  • Designed and implemented solution for transferring data and system settings between customer machines, preserving all data and minimizing downtime, providing an upgrade path for customers to buy new hardware
  • Created networking startup and configuration scripts, allowing Java application to be abstracted away from system details, improving its reliability
  • Added progress notification code to Python backup program, so file copy progress could be made visible to user interface
  • Maintained version upgrade shellscript that was remotely applied to customer machines in the field, coordinating with Java application team to include relevant fixes
  • Wrote Perl script to gather CPU, disk, and network usage statistics from Linux, computing percentage and bandwidth used over time
  • Cleaned up source tree, making sure entire product built with just "make", reducing the frequency of build errors
  • Helped piece together custom Linux distribution, that had just what we needed and no more
  • Made numerous small test programs, in C, to assist with benchmarking, stress-testing, and debugging
  • Documented internal work, building up a manual to be consulted by technician assisting customer with upgrades and transfers of machines in the field
Software Engineer 9/2007 - 11/2008
ServerEngines Corp., Sunnyvale, CA
  • Made minimal Linux LFS distribution for embedded device with ARM architecture, running entirely from ROM
  • Enhanced bootloader for both Windows CE and Linux, using yaffs2 filesystem on NAND Flash storage
  • Packaged self-contained and reproducible build environment containing crosstool, glibc, GCC, and all build scripts
  • Scripted menu-driven system for end user to easily configure settings, install upgrades, and perform basic troubleshooting
  • Implemented automatic network OS upgrade, scaling to ease administrative burden for customers with many devices
  • Saved money with multiple OS support, as prospective customers only needed to be sent one device instead of a device for each OS
  • Added custom commands and patches to BusyBox, participating on Open Source mailing list
  • Documented process of reflashing system image from serial port
  • Created bootable image on USB stick, greatly smoothing upgrade process for customers
  • Merged code drops from major customer/partner into source code tree
Software Engineer 9/2004 - 6/2007
Penguin Computing, San Francisco, CA — dba Scyld Software
Contractor from 9/2004 - 1/2005 then fulltime 1/2005 - 6/2007
  • Maintained and extended Scyld Beowulf clustering software Linux distribution
  • Extended PXE DHCP boot protocol to support multiple Ethernet cards
  • Unified boot process by building disk-based PXE using Etherboot and SYSLINUX, simplifying development and testing
  • Designed and implemented priority scheme to safely allow multiple head nodes on the same network, a major feature enhancement requested by customers
  • Enhanced scalability of open source MPICH MPI library by improving startup fanout protocol
  • Provided compatibility of open source LAM MPI library with our BProc software
  • Obviated the need for users to supply their own hostfile with both MPICH and LAM, significantly improving customer ease of use
  • Documented our full process for bringing up new compute nodes and joining them into the cluster, first time companywide this had ever been done, used to bring new employees up to speed
  • Made Linux kernel patch to detect kernel stack overflow, a subtle problem to diagnose otherwise, greatly helping debugging
  • Backported new Red Hat SATA drivers into older Linux kernel version, extending sales life of our older product
  • Cleaned up legacy PVM support, to keep older customer software running
  • Created and supported many internal support tools and scripts
Order Fulfiller 1/2004 - 9/2004
Bay Area Amusements, San Jose, CA
  • Transferred customer order data from website to warehouse receipts
  • Filled out postal shipping forms for international customs
  • Identified pinball parts in warehouse storage
  • Gathered and carefully packed those parts into boxes of appropriate size
  • Shipped boxes via USPS postal, UPS, and FedEx
  • Accepted delivery of incoming parts shipments into warehouse
  • Updated inventory counts for parts on website
  • First fulltime employee of this small business
Software Engineer 3/2001 - 6/2003
Adaptec, Inc., Milpitas, CA — acquired Platys Communications 10/2001
  • Helped develop reference Linux drivers for Adaptec ANA-7711 TCP Offload PCI card, containing hardware-accelerated TCP/IP stack
  • Ported driver from Intel to big-endian PowerPC architecture, helping team complete VxWorks port, solving customer need
  • Wrote driver installation script in Perl for Red Hat GUI users
  • Assisted with simulation and driver bringup on initial ASIC, developing testbed server
  • Debugged and optimized Linux kernel modules, using KGDB and GDB, increasing robustness and performance
  • Instrumented driver, gathering and reporting SNMP MIB-II statistics, meeting customer requirement
  • Qualified and tested driver handling of TCP connections
  • Communicated with outside vendor to debug Gigabit Ethernet autonegotiation issues and coordinated fixes
  • Configured reference implementation of driver via Linux proc filesystem API
  • Maintained patched TCP/IP stack and Linux kernel
  • Documented instructions and build procedures to inform and teach others
  • Acted as company-wide point of contact for certain issues
Member of Technical Staff, Software 6/1999 - 2/2001
Splash Technology, Inc., Sunnyvale, CA — acquired by EFI
  • Designed and implemented architecture for integration of network print server software packages into overall Linux printing engine
  • Developed an RFC 1179-compliant LPR server in C++
  • Integrated software from outside vendors
  • Patched the Linux kernel, increasing performance
  • Modified Open Source software and released changed code back to the Open Source community
  • Installed Ethernet and Token Ring networks for testing
Software Engineer — internship 6/1996 - 6/1997
Compression Labs, San Jose, CA — acquired by VTEL
  • Designed and implemented support software for Windows 95 videoconferencing system
  • Programmed with Microsoft Visual C++ using Winsock, the Windows GUI, and the Win32 API
  • Used Microsoft Visual C++, Developer Studio, Visual SourceSafe, and SoftICE
Education California Polytechnic State University, San Luis Obispo
Major: Computer Science — B.S. Graduated 12/1998
London Study Program, Spring 1998
Dean's List, Winter 1998
Dean's List, Fall 1994