Development philosophy
Full resume (DOC)

Contact Me

On this page there is a summary of my resume: objective, selected skills, fields of expertise and technologies, chips and programs that I worked with.


I am an independent software engineer and consultant with about 15 years of field experience. I offer the following professional services:

  • Building complete solutions for customer needs: requirements definitions, development, integration, testing.
  • Outsourcing of software and embedded software-hardware projects.
  • Device drivers development, board and CPU bring-up
  • Performance and resource tuning, concerning real-time constraints.
  • Development of all kinds of system-level software (system call interceptions, exception/interrupt interception, streams modules) and custom OS kernels.
  • Real-time systems and applications design, development and system integration.
  • Specialized work with Linux kernels and embedded Linux systems.
  • Specialized work with Windows kernels, Windows device drivers
  • Networking, protocols analysis and communications tuning.
  • Debugging and testing of customer's hardware. Development of hardware ATP, test suites.
  • Development of embedded software under different OS
  • Development of build and debug tools: compilers, interpreters, debuggers.
  • Development of DSP applications (TI) and integration of algorithms.
  • Development of graphics applications.
  • Development of applications for Windows, GNU/Linux, UNIX and embedded OS.
  • Development of GUI applications for Windows (MFC)
  • Porting of existing code to new target platforms and compilers
  • General programming in C, Assembly and C++.
  • Consulting in systems design, real-time, projects estimations, embedded systems design, different Linux topics etc.

Selected Skills
  • Solution planning, research and design; development of specifications for the project (requirements, design, test) and implementation in strict accordance to the specifications.
  • Linux system-level programming: device drivers, network drivers, syscall drivers, kernel patching, embedded.
  • Windows system-level programming: device drivers, security modules.
  • Writing embedded and bootstrapping software: custom kernels, system-level programming, embedded applications, board support and chip support packages, boot monitors
  • Real-time software design, task scheduling, embedded applications
  • Device drivers and hardware interface programming
  • Writing hardware testing and verification software
  • BSP, CPU and board bring-up, bootstrapping, board configuration
  • Network programming: sockets, protocols, network drivers, streams modules
  • Multi-threaded data processing and optimization for maximum performance and reduced latencies
  • Intimate knowledge of Intel x86 family processors architecture, assembly language and assembly-level optimizations
  • Knowledge of RISC processors architectures (PowerPC, MIPS)
  • Knowledge of TI DSPs
  • Writing application software for UNIX, GNU/Linux, Windows
  • Performance analysis and optimizations
  • Architecture and design of compilers, interpreters and debuggers

Chips, programs, technologies
  • CPUs: x86 (IA32), PowerPC (440EP, MPC7455, MPC8272, MPC8560), ARM (DM6467, ixp425), DSP (C6211, DM642), MIPS (R4650, BSC1250), PA-RISC, Alpha AXP.
  • Chipsets: integrated CPUs, bus controllers, bridges (Tundra Universe/Universe-II VME-PCI bridge).
  • Devices: Video grabbers (SAA7114/SAA7115, SAA7148, BT878), video output controllers, VGA, UART, flash EEPROMs, serial EEPROMs, SDRAM, disks, keyboard, mouse, FTDi USB converters (USB-FIFO, USB-RS232), USB host controllers, IDE controllers, watchdog, custom devices (FPGA/CPLD).
  • Buses: ISA, PCI, VME, I2C, IDE (ATA), USB.
  • Programming Languages: C, Assembly, C++, shell scripts
  • Operating systems: Linux, Embedded Linux, LynxOS, DSP/BIOS, pSOS+, Windows NT/2K/XP, SunOS, AIX, IRIX, HP-UX, Digital UNIX, Unixware, Windows 9x/3.x, DOS, OS/2.
  • Technologies: PCI and bus-master DMA, network protocols, streams modules, embedded, real-time, video streaming, ffmpeg, framebuffer, CCTV, flash memories, MTD, IDE, compact-flash, VME I/O cards, bridges.
  • Protocols: IP, TCP, UDP, BGP, HTTP, MMS.
  • Security: reverse-engineering, anti-debugging, copy protection, intrusion detection, access control.
  • Graphics: BMP, TIFF, color formats, color spaces, OpenGL.
  • Compilers: lexical analysis, parsing, code generation, register allocation, flow analysis. Implemented C-to-assembly compiler, C-to-bytecode compiler, bytecode interpreter, SQL interpreter, x86 disassembler.
  • Real-time: scheduling, synchronization.
  • Standards: POSIX, ISO/ANSI C, C++, T.4/T.6, T.30, XDAIS, PCI.
  • Operating systems concepts:
    • Multi-tasking: scheduling and dispatching algorithms, task management, SMP, semaphores, system calls, kernel threads.
    • IPC: streams, sockets, pipes, shared memory
    • File systems
    • Protection and virtualization: resource virtualization and sharing, access emulation, address space separation, privilege level separation, memory virtualization
  • Memory management: TLB, memory translation, address mapping, scatter-gatter DMA, caching, cache coherency.
  • Optimizations: algorithm revising (high-level language), instruction grouping and reordering, loop unrolling, branch optimization (assembly), memory access minimization, cache and TLB miss minimization, communication tuning.
  • Development methodology: requirements (SRS), implementation, test plan (ATP), design documentation (SDD), portability and testability.
  • GUI: MFC, Windows API
  • Tools/environments:
    • OS/shell: UNIX, Windows, DOS, Windows shell, X-Window System, KDE, xterm, cygwin, bash, csh (tcsh), VmWare.
    • Build tools: make, nmake, GNU tools and cross compilers, binutils, ld-scripts, shell scripts.
    • Source control: RCS, CVS (CVSNT), Clearcase, Perforce, SourceSafe, Harvest.
    • Debugging/analyzing: SoftICE/WinICE, JTag ICE, debug terminal, oscilloscope, logic analyzer, bus analyzer, network sniffer, crash dumps, hexdump, nm, objdump, disassembler.
    • Development environments/editors: vi/vim, MSDEV/MSVC, Code Composer, Prism+, Visual Age.
    • Document editors: Microsoft Office (Word, Excel, Access, PowerPoint), StarOffice.
    • Utilities: Various Windows and UNIX command-line utilities.


(c) Daniel Drubin, 2007-2011