this page there is a summary of my resume:
objective, selected skills, fields of expertise and technologies, chips
and programs that I worked with.
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,
- Outsourcing of software and embedded
- Device drivers development, board and CPU
- Performance and resource tuning, concerning
- 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
- Networking, protocols analysis and
- Debugging and testing of customer's hardware.
Development of hardware ATP, test suites.
- Development of embedded software under
- 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
- 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
- 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,
- Device drivers and hardware interface
- Writing hardware testing and verification
- BSP, CPU and board bring-up, bootstrapping,
- 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
- Knowledge of RISC processors architectures
- Knowledge of TI DSPs
- Writing application software for UNIX,
- Performance analysis and optimizations
- Architecture and design of compilers,
interpreters and debuggers
- 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
- Buses: ISA, PCI, VME, I2C, IDE (ATA), USB.
- Programming Languages: C, Assembly, C++, shell
- 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,
- 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
- 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
- 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