|
Boulder Creek, CA 95006 USA |
(831) 227-9653 |
I am an expert software developer and C programmer with over 20 years of UNIX/Linux experience.
I am a prolific contributor to the Linux community:
I have developed and maintained a business-critical UNIX operating system, a performance-hungry distributed application suite, and firmware for a range of electronic devices.
I have a deep understanding of the C programming language, software quality principles, and debugging techniques.
I am a friendly person and an excellent mentor; I traditionally serve as the resident “C and Linux guru” in my team.
I am an experienced technical writer; An example of my detailed writing style is available at http://ubuntuforums.org/showthread.php?p=3840654
I have a rich knowledge of the UNIX/Linux operating system at the kernel and user levels, including extensive experience with:
many operating system variants (Ubuntu, Red Hat, Solaris, BSD, HP-UX, AIX, SCO)
multi-threaded programming techniques and performance optimization
distributed computing (custom techniques, MPI, OpenMP)
system and application performance analysis (virtual memory, I/O performance issues)
virtual machine systems (kvm, qemu)
software development tools (gcc, gdb, gprof, make, etc.)
scripting languages and standard utilities (sh/ksh/csh, python, awk, perl, sed, regexp, etc.)
change management systems (git, bzr, cvs, svn, Perforce, etc.)
packging systems (Debian packaging, ubuntu-dev-tools, autoconf tools, dpatch, quilt, etc.)
high and low-level network protocols (TCP/IP, UDP, DHCP, NFS, DNS, HTTP, SMTP, etc.)
common library API's (C, socket, threads, GLib/GTK+, Xwindows)
digital audio and DSP libraries (OSS, ALSA, jack, FFTW)
I am very familiar with 64-bit and 32-bit CPU architectures (Intel, AMD, Sparc, ARM, PIC, Motorola) including multi-core issues, and Intel x86/SSE assembly language.
I have ported hundreds of C/C++ programs and libraries to UNIX/Linux for professional and personal use, including web, email and file servers and clients, imaging codecs, ray tracers, a geographic mapping package, an XWindows CAD suite, etc.
I have written dozens of UNIX/Linux drivers, utilities, and applications for digital cameras, printers, sound cards, video capture cards, PDA's, GPS receivers, ham radio transceivers, an atomic clock, etc. -- often by reverse engineering undocumented wire protocols.
I have designed and implemented new UNIX kernel subsystems from scratch, including the SCO UNIX system clock.
I have created numerous network and web-based applications including image viewing systems, source code viewing systems, database applications, and my live "IguanaCam" (one of the first live webcams).
I am well-versed in compiler design, database systems, cryptography, data compression, image processing, and digital signal processing and analysis techniques.
I am a ham radio operator and electronics hobbyist; I design surface-mount PCB's and reflow solder them in my toaster-oven at home.
Synopsys, Inc. (Mountain View, CA), 2005 to 2009
Senior Software Engineer – CATS Development team
Developed and maintained the leading photo-mask data prep EDA application “CATS”, which commonly processes jobs requiring several days of run-time, using hundreds of distributed CPU cores and multiple terabyte-sized files; This distributed, multi-threaded C/C++ application suite evolved over 15 years from a VMS product and now runs on multiple UNIX/Linux variants.
Served as the resident UNIX/Linux/C expert for R&D, QA, and Support teams, both local and overseas.
Designed, implemented, and maintained a new multi-threaded file access library to improve I/O performance and enable access of files much larger than RAM; This library includes automatic heuristic-based self-scaling and self-tuning features.
Created a new application-internal resource monitoring module to record peak memory and CPU usage and other runtime statistics; This module enabled the construction of a nightly performance test suite.
Created a new efficiency-analysis tool for distributed processing; This tool allows customers and Support personnel to better configure jobs for optimal use of a machine cluster, and also helps the R&D staff to better understand the performance implications of a code change.
Researched and resolved problems reported by customers, staff, and automatic quality checker software (Purify, Coverity); I was commonly assigned to work on high-priority issues relating to performance, memory usage, multi-threading problems, and OS-specific concerns.
Created a host of custom software development tools for use by R&D staff (source code search tools, web applets, utility scripts, etc.).
Researched and improved compiler optimization switches and other build parameters.
Researched distributed processing systems and methods (MPI, OpenMP, cloud computing) and maintained custom DP system.
Designed and prototyped an experimental parallel I/O shim library for a high-performance Lustre network file system; This library demonstrated near linear I/O performance gain per file server on an experimental network cluster.
ESS Technology, Inc. (Scotts Valley, CA), 2004
Senior Firmware Engineer – Digital Camera Development team
Developed firmware for digital still and video cameras using custom RISC-based imaging chip.
Designed and implemented RTOS (MQX) task management subsystem for digital cameras.
Ported, debugged, and optimized FAT32 filesystem and SD card interface.
Created memory debugging library to analyze memory leaks and corruption problems.
Used ARC/MetaWare software development and debugging tools; Diagnosed and reported compiler bugs.
Handspring, Inc. / Palm, Inc. (Mountain View, CA) 2002 to 2003
Senior Software Engineer – Smart Phone Development team
Designed and implemented power management software subsystem and GUI applets for ”Treo 600“ PalmOS smart phone.
Assisted hardware team with specification and testing of rechargeable battery and power-related components.
Developed C and ARM assembly firmware to control ARM deep-sleep modes.
Wrote low-level (I2C) drivers for battery protection IC and other peripherals.
Analyzed and resolved power-consumption issues for CDMA/GSM radios, digital camera, SD, etc.
Developed Windows-based emulator for ARM system-on-a-chip peripherals.
Created PalmOS diagnostic applications for internal development and QA.
Used oscilloscope and JTAG in-circuit emulator (Signum/Multi-ICE) for ARM debugging.
Used PalmOS and Microsoft Windows software development and debugging tools.
SCO (Santa Cruz Operation), Inc. (Santa Cruz, CA) 1989 to 2002
Senior Software Engineer – UNIX OS Development team / Escalations team, 1995 to 2002
Designed and implemented new high-precision UNIX kernel clock, NAT subsystem, multi-homed IP network subsystem, security plug-in for Netscape server, and hundreds of additional kernel and OS enhancements.
Ported and integrated numerous open-source and licensed software packages.
Analyzed and fixed high-priority escalated bugs, focusing on UNIX kernel, multiprocessor, network, and security issues.
Served as a mentor to junior colleagues, and as interim manager of my group of senior engineers.
Managed priority queue of escalated issues and produced weekly trend reports.
Presented technical seminars at annual SCO Forum developers conference.
Participated in numerous open-source software projects (NTP, ipfilter, apcupsd, digital camera projects, etc.).
Senior UNIX Support Engineer / Development System Lead – Support team, 1989 to 1995
Resident C/C++ expert for escalated Development System calls.
Taught internal Development System and device driver classes.
Provided customer and internal support for software development and general UNIX issues.
University of California, Santa Cruz, 1986 to 1991
B.A. Computer and Information Sciences
Focus on A.I. and machine learning.
Appointed to graduate-level A.I. project: "Morph", a self-learning chess system.
Studied advanced graphics, compiler design, data compression, and error detection/correction techniques.
Document
version: 2010-02-15 10:30
HTML:
http://www.whence.com/kamal/Kamal-Mostafa-resume.html