Vladimir COTFAS
Embedded Linux Sw Developer
SegfaultsAreCool.info
|
647-478-7457
E-mail: |  |
|
Professional Summary
- Contractor (W2) with Corning, Inc [Corning, NY], Affirmed Networks [Mass], Magic Leap [FL], VT iDirect [VA], Smith & Nephew [Mass]
- Contractor with Smart Energy Instruments [Oakville, ON], Certicom/RIM [Mississauga, ON],
Mānta Test Systems [Mississauga, ON], IDT [Kanata, ON], ComQi [Burlington, ON], Kalray [Fr]
- Contractor (1099) with Motorola On Demand Systems, Home & Networks Mobility Division [Mass]
- Senior Embedded Software Developer at Chantry Networks/Siemens [Mississauga, ON]
- Contractor with Chantry Networks/Siemens, eBox.com Inc,
University of Toronto (CHASS Department),
Admiral Secure Products, Belcarra MC
Education
- Attended Microchip MASTERS in 2005 and 2007
- Took Montavista Course Device Drivers EMB530 in 2007
- Graduated from the Faculty of Mathematics, Department of Applied Mathematics (in English),
Bucharest University, România, GPA: 9.54 (95.4%)
(B.Sc. in Math/Statistics)
- Graduated from the Computer Science High-School in Brasov, România
Programming Languages
- C, C++ [Stroustrup 2nd ed.] with some STL
- Perl, Javā
(Swing, SWT)
, PĤP [since 2001]
- Assêmbler: Intel x86 (TASM, GNU as) [since 1991], ARMv5/Xscale, PowerPC, m68k, Microchip 16F
- Pascāl (Standard, TURBO, Object Oriented)
- xBase Languages: dBASE, FoxPro
- LISP
- SQL/ÐB2 for ÄS/400, T-SQL
- Base de Génie Logiciel/400 (a French CASE for ÄS/400)
Operating Systems
- Linux [since 1993], FreeBSD, RTAI, FreeRTOS
, SunOS/Solaris, EP/IX, SCO, HP-UX, AT&T SVR4/i386
- UNIX-like: QÑX, Minix
- IBM OS/2 Warp 4.0 and OS/400 for ÄS/400
- CP/M, RSX-11, Novell, BeOS R4.0
- Bare metal/superloop
Professional Experience and Achievements
Contract - Software Engineer
// Smith & Nephew in Andover, MA
[100% remote due to Covid]
|
Oct 2020 - May 2022
|
Sr Staff Software Engineer IV
// Smith & Nephew in Andover, MA
|
Jun 2022 2020 - Now
|
- Project: BSP for (unreleased) AI product (an FDA Class II device)
- Xilinx RTL block design for Microbaze and peripherials: SPI, QSPI, UART.
- Xilinx Microbaze code development. Ported u8glib to Microblaze.
- Video over PCIe in/out using Xilinx XDMA IP. Wrote 2x Linux User Mode Drivers to control Xilinx VDMA IP over PCIe.
- Video extraction from OpenGL apps via glReadPixels()
- Video export to apps via V4L2 Loopback.
- Project: BSP support
for INTELLIO 4K (an FDA Class II device):
- Xilinx Microbaze code development and bug hunting re FPGA/RTL firmware.
- Enabled crypto signing/verification of firmware upgrades.
- Backported Samba 4.14.8 to a TI arm BSP from 2012 for SMBv3 compliance.
- Added CUPS 1.7 to same TI BSP and support for Sony UP-DR80MD colour medical printer.
- Automated Microblaze builds from CLI.
- Project: Bugfixed and enhanched INTELLIO 4K product (Class II), prepared documentation for FDA 510(k) submission.
- Project BSP support for Laird SOM60 (custom hw), included in INTELLIO product:
- Extended Laird's weblcm-pyton RESTful system configurator.
- Wrote a C library to drive weblcm-pythôn.
- Enabled RNDIS via NetworkManager for Android Reverse Tethering.
- Automated board flashing via C code driving weblcm-pytôn.
- Project: BSP support for LENS4K (an FDA Class II device):
- Enabled RNDIS via udevd for Android Reverse Tethering.
- Enabled crypto signing/verification of firmware upgrades.
- Troubleshooted & fixed a malloc/free deadlock.
- Memory usage profiling & Linux OOM Kⅈller tuning for a restricted memory environment.
- Operating Systems: Linux on arm, C on bare metal (Superloop)
- Programming Languages: C, C++, Perl, Pythôn
- Misc technologies: Buildroot, Vitis (Xilinx SDK), Microblaze, Vivado, Matlab
- Source Control: git, git-lfs
Contract -
Software Engineer
// AES Security, Inc in Peabody, MA
(USA)
[5% on site due to Covid]
|
Mar 2020 - Jun 2020
|
- Project BSP upgrade for at91sam9x5ek:
- Upgraded at91bootstrap to 3.9.1, ONFI PMECC autodetect.
- Upgraded u-Boot to 2019.04, integrated the local customisations, ONFI PMECC autodetect.
- Upgraded kernel to 5.4.35, integrated custom CMX-867 SPI modem driver.
- Automated board flashing via SAM-BA with TCL scripts.
- Operating Systems: Linux on arm
- Programming Languages: C, C++, u-Boot scripting
- Source Control: SVN, git
Contract -
Software Engineer
// VT iDirect in Herndon, VA
(USA)
[100% on site]
|
Jan 2019 - Apr 2019
|
- Projects:
- User mode/C++ I2C driver for Atmel ATECC508A
- User mode/C++ driver for fpga GPIO pins
- Kernel driver for fpga flash/EEPROM
- Automated nightly provisioning/smoke testing of nightly builds via a custom Pythôn framework.
- Operating Systems: Linux on mips-octeon
- Programming Languages: C, C++
- Source Control: git
Contract - Software Engineer
// Kalray
(France)
[90% on site]
|
Sep 2018 - Oct 2018
|
- Project: Perf optimisations for bare metal NVMEoF target controller.
- Operating Systems: Linux on kalray-mppa
- Programming Languages: C
- Source Control: git
Contract - Software Engineer
// Mānta Test Systems
(Canada)
[90% on site]
|
Oct 2009 - Jul 2010; Jul 2011; Nov 2011; Feb-Apr 2012
Oct 2012 - Jun 2013; Aug 2016 - Oct 2016; Dec 2016 - Jan 2017
Jun 2018 - Aug 2018
|
- Projects:
- Kernel work (4.9.80 with RTAI-5.1 & RTNet-0.9.13)
- Ported RTNet [abandoned 8 years ago by its maintainer] to RTAI and Linux 4.9.80 + drivers for pcnet32 and e1000e-pch.
- Verified BSP suitability for the two Manta TMG 5100 flavours.
- Kernel work (2.6.29 with RTAI-3.7.2 & RTNet)
- Linux BSP adaptation for 2 EBX boards (VersaLogic, Advantech).
- Debugged own bug (using ACPI nmi_watchdog): «RTAI semaphore locked in Linux makes RTAI spin forever in rt_mutex_unlock/rt_sem_signal every 40 reboots».
- Disabled SMI interrupt by hacking an ISA bridge PCI device.
- Hacked Linux 16-bit code (arch/x86/boot) to do custom initialisation based on board type.
- Linux BSP adaptation for PICO 880 & porting 2.6.32-RedHat Intel e1000e driver to 2.6.29 and RTNet.
- Re-ported an FPGA device driver from RTAI to PREEMPT_RT;
- Used floating point native FPU instructions in kernel;
- Tracked down hard RT latency problems in the Linux scheduler [PREEMPT_RT] and minimal drivers using a logic analyser;
- Fixed the problems in RTNET/rtnetproxy that made it run out of rtskbs;
- Ported the Intel e100 driver from Linux 2.6.29 to RTNET;
- App work
- Hacked OpenJDK 1.6 to add custom classes to class cache (classes.jsa) and characterised it on a slow x86 embedded target.
- Profiled Mānta's Javā application under OpenJDK 1.6 to see how execution speed differed from GCJ-compiled code.
- Ported a FPGA configuration tool from Pascāl/Win32 to C++/Andrōid-NDK/arm.
- Reworked Mānta's GOOSE (IEC61850) application and extended it for new use cases.
- Fixed bugs in GCJ C++ runtime.
- Added udev to Arcom Linux and wrote udev scripts for keyboard, mouse and USB storage;
- Ported the Triangle GOOSE (IEC61850) library from vanilla Linux to RTNET and adapted it to the Mānta RT application;
- Operating Systems: Linux 4.9.80/2.6.31/PREEMPT_RT on x86, RTAI & RTNET on x86, Andrōid/x86, Andrōid/arm
- Programming Languages: C, C++, x86 assêmbly language
- Source Control: Subversion, ProjectLocker
- Misc technologies: VMware Workstation integrated with GDB for kernel debugging, MSO-19 8-channel Logic Analyser, ADB
Contract -
SW Përformānce & Reliābility Engineer
// Magic Leap
|
Jan 2018 - Jul 2018,
Jun 2019 - Feb 2020
|
- Projects (2018)
(USA)
[100% on site]
- Enhanced Andrōid bionic (libc) malloc_debug to filter mem leak backtraces of a certain size for perf reasons.
- Triāging incoming bugs. Përformānce/memory usage investigations.
- Designed/implemented a T-SQL db system for tracking KPIs with a Pythôn front-end.
- Projects (2019)
(Canada)
[20% on site]
- Wrote test cases for LuminOS apps integrated in a customised Câtapult framework.
- Developed automated tools to flush out kernel log (dmesg) and logcat log spammers.
- Operating Systems: Linux/x86_64, Linux/aarch64
- Programming Languages: C, C++, Bash, Pythôn
- Misc technologies: git, gerrit, malloc_debug, Andrōid NDK, MS-SQL, Câpult
Contract - Distro Maintainer for an Embedded Ubüntu
// ComQi [fmr Enqii]
(Canada)
[100% on site]
|
Mar 2017 - Nov 2017
|
- Projects:
- Maintained a stripped-down distro (based on Ubuntu 16) for an embedded media player product paying attention to the quirks in the Intel Xorg/OpenGL stack.
- Enhanced the Java crash handler to collect info about state of kernel, Xorg, Intel driver.
- Operating Systems: Linux/x86_64
- Programming Languages: Bash, Anaconda kickstart, Ubuntu preseed, Java 8
- Misc technologies: Subversion, Valgrind, Intel Graphics stack for Linux
Contract - Software Engineer
// Phybridge Inc
(Canada)
[100% on site]
|
Apr 2012 - Jun 2012;
Nov 2016 - Jan 2017;
Aug 2017
|
- Project: customisation of a Broadcom StrataXGS L2/L3 switch (reference design)
- Designed an upgrade mechanism for the Control Plane Linux OS; wrote the required build scrips and on-target upgrade framework (upgrades applied via a WWW interface).
- LLDP: customised lldpd to work with the Linux pseudo-interface mechanism and the BCM L2 table.
- Spanning Tree: customised mstpd to work with the BCM Content Aware Engine (fp qual) -- wrote the appropriate fp filters to except STP packets to the CP and route them thru the appropriate Linux pseudo-interface (knet).
- [Nov 2016] IGMP: Route IGMP to CPU but not mcast traffic using FP rules.
- [Dec 2016] Enabled per-VLAN in-band management interfaces.
- [Jan 2017] 802.1x authentication - adaptation of hostapd to BCM commands.
- [Aug 2017] IGMP: Snooping -- send v2/v3 Membership Reports as required by upstream devices.
- Operating Systems: Linux on mips/eb
- Programming Languages: C, BCM commands
- Source Control: git, Subversion
Contract - Software Engineer // IDT [fmr Tundra]
(Canada)
[10% on site]
|
Jul 2015 - Aug 2016
|
- Projects:
- Tsi721 User-Mode PCIe Device Driver
- Adapted/rewrote Tsi721 RapidIO kernel driver for DMA and MBOX to work in polled mode in user-mode Linux
- Re-implemented some aspects of the Linux DMA engine framework for UM
- UM Layer 3 Network Driver over RapidIO MBOX: Used Tsi721 UM MBOX and kernel Tun/Tap to interface with Linux TCP/IP (v4) stack
- UM Layer 3 Network Driver over RapidIO RDMA: Combined Tsi721 UM MBOX + DMA driver and kernel Tun/Tap to interface with Linux TCP/IP (v4) stack [C++ source code: https://db.tt/2YpKzwuxWT]:
- Zero copy of packets: use CMA/DMA memory for Tun read & write;
- Peer to peer, autodiscovery protocol: used periodic RapidIO MBOX unicasts to advertise Inbound memory mapping+allocations to peer nodes -- akin LLDP;
- Peer to peer, fault tolerant protocol: used periodic RapidIO MBOX unicasts to probe up/dead peer nodes;
- Tun to RapidIO is using Tsi721's DMA engine;
- Tsi721 has no signalling of inbound RapidIO DMA operations (but they are very fast);
- RapidIO RX is done by hard polling known Inbound memory locations for changed data;
- A helper thread collects L3 frames from Inbound memory and delivers them to Tun.
One-way HTTP transfer (from ramfs): 1.53 GBytes/sec [MTU=17,000] (cf. RapidIO 1.6 GBytes/sec line rate).
Standard flood ping(8) latency: 44 µS.
- Operating Systems: Linux/x86_64, ppc64
- Programming Languages: C, C++
- Misc technologies: git, IDT Tsi721, Tun/Tap, Valgrind
Contract -
Software Engineer
// Affirmed Networks in Acton, MA
(USA)
[100% on site]
|
Jan 2014 - Jul 2015
|
- Projects:
- Subscriber Firewall
- Wrote an RTSP firewall protocol helper (ALG) in C++
- Wrote a SIP firewall protocol helper (ALG) in C++. This included a SIP parser/regenerator.
- Ported mpd5/l2tp from FreeBSD (including kernel Netgraph modules for l2tp and ppp) to Linux user-mode. Integrated mpd into Affirmed TOS and extended it for High Availability/Redundancy.
- Operating Systems: Linux/x86
- Programming Languages: C++, C
- Misc technologies: git, Intel dpdk, vmware, Valgrind, Coverity
Contract - Software Engineer
// Smart Energy Instruments
(Canada)
[100% on site]
|
Jun 2012 - Sep 2012
|
- Project: Early board bringup/uClinux BSP of a custom SH-2 processor (in FPGA -- Spartan 3/6)
- Wrote a "secure" bootloader with SHA-1 signature (ROM BL) and SHA-1 sig+RSA encryption (FAT BL).
- Extended the bootloader for FAT-12 support (via FatFs), wrote a low-level FAT driver for a M25P32 SPI flash chip, 2x16 LCD driver, SH1101A OLED driver [test image https://db.tt/ySCI8Zv9E9], wrote a command processor, implemented autoboot, stateful environment.
- Wrote Linux device drivers for: LCD (irq-based block transfers), GPIO keyboard, 1PPS, hw watchdog;
- Tracked/debugged board stability issues;
- Project: PTPv2/IEEE 1588 Kernel driver+User-land Utilities
- Extended the EMAC ethernet driver for IEEE 1588 (PTP) hardware-accelerated time stamping. Optimised EMAC for slow CPU: 4xRX ping-pong buffers [pseudo-DMA chain]; wrote in-driver packet dissectors for PTPv1/2 over 802.3, UDPv4 and UDPv6 for aiding the FPGA RTL;
- Added HW acceleration to ptpd-2.2.2 (BSD license);
- Wrote a GPS NMEA sentence parser for SkyTraq GPS chip;
- Operating Systems: bare metal on SH-2, uClinux 3.4.3 on SH-2
- Programming Languages: C, vhdl
Contract - Software Engineer
// Certicom/RIM
(Canada)
[100% on site]
|
May 2011 - Feb 2012
|
- Projects:
- Wrote an embedded SNMP agent with net-snmp using PostgreSQL as backend for tables/data points; wrote a MIB and C code generator.
- Provisioned a CentOS crypto appliance:
- customisation of the install proces via an anaconda kickstart script;
- autōmation of certificate generation/signing/installation into a SSL hardware accelerator;
- Studied the feasibily of transporting NTP via OpenVPN, OpenSSH/tun, a custom SSL/XML messaging+tun.
- Operating Systems: CentOS 5.4 on x86, Cygwin
- Programming Languages: C, Bash, awk, SQL
- Debugging tools: gdb, Valgrind
- Source Control: Subversion
Contract - BPSS
// Moneris Inc.
(Canada)
[100% on site]
|
Feb 2011 - May 2011
|
Projects:
- Wrote a webapp (Javā/Perl/MySQL on RHEL5) for time (SLA) tracking.
- Integrated MIR3 notifications (web services / SOAP) into process monitoring applications via a Perl/Wīn32 script.
Contract -
Software Engineer
// Corning, Inc
(USA)
[80% on site Dec 2008 - Nov 2009; 10% on site Nov 2009 - Dec 2010]
|
Dec 2008 - Dec 2010
|
- Projects:
- System Architecture / Embedded Programming: User-space control application for Radio-over-Fiber
- (The IDAS system was composed of a Linux PPC SBC which runs the control application and communicates with many RF boards via I2C.)
- Designed (top-down) the Linux control application of the RF system (used UML);
- Implemented the build system: wrote Makefiles from scratch for the code (with x86 and ppc builds)
- Wrote the C++ application framework (classes for Threads, Queues);
- Wrote a C++ Thread class/pthread wrapper that implements functionality similar to the Javā Thread class, in addition it keeps track of CPU ticks (user, system) used per-thread and provides code checkpointing facilities;
- Wrote the C++ code for a TCP/IP inter-application messaging bus based on TLVs;
- Wrote the C++ code for I2C access [custom L2/L7 proto which I co-designed];
- Wrote the C++ code for application storage -- all done thru SQLite;
- Implemented/redesigned the RF auto-calibration algorithm (which spanned multiple RF boards);
- Wrote the C++ code for a UDP/IP logger with SQL backend;
- Debugged/traced GCC oddities on ppc32: mutexes must be memset to 0, no mutexes as auto vars (or part of C++ auto objects) on stack;
- Documented all code with Doxygen tags and hooked it up into the autōmated build;
- Wrote the framework for C++ CGI scripts (login/logout, permissions and session tracking);
- Integrated all software/hardware to the point where auto-calibration functioned correctly.
- Wrote Shell scripts that autōmate certain operations by talking to CGI C++ scripts;
- Wrote a Cisco-like CLI based on libcli that ties into the product for configuration purposes.
- Integrated the Linux build with TFŠ/MSBuild via a nmake project, plink and some glue batch files (CMD and Linux).
- Kernel work (2.6.24 & 2.6.30)
- Device Driver: Changed the IBM Yosemite I2C driver to do varying-length I2C reads (using a custom L2 proto).
- Board Bring-Up: Customised the 2.6.30 kernel for a Corning variant or PPC440EPx/Sequoia board: enabled NOR flash,
hacked the dts supplied by the board vendor and the ST RTC driver to be compatible;
- Operating Systems: Linux 2.6 (denx 4.2) on PPC 440EP/Yosemite, 440EX/Sequoia, Linux 2.6 on x86
- Programming Languages: C, C++, PowerPC assêmbly language
- Misc technologies: SQLite3, MS TFŠ, UML, Doxygen, Enterprise Architect, VMware Workstation
Contract -
Software Engineer
// Morotola/Broadbus in Boxboro, MA
(USA)
[100% on site]
|
Jan 2008 - Jul 2008
|
- Projects (User-space applications for Video on Demand Server):
- I changed the algorithm for writing to the content storage memory ("triple-write" in paged memory);
- I re-organised the Hardware Abstraction layer (HAL) for UPM1 [1st gen hardware]; I wrote the HAL for UPM2 [2nd gen hardware];
- I changed the apps that access the content storage memory to use the new API and debugged
various C++ application and kernel/driver crashes;
- I ported the kernel code for a custom UDP socket from 2.4.21 to 2.6.21 (the patch allowed one to collect multiple incoming UDP frames in one system call);
- I migrated C++/C0RBA applictions from Linux 2.4/GLIBC 2.2.5/C0RBA 1.4.1 to Linux 2.6/GLIBC 2.5/C0RBA 1.5a_p4
and fixed crashes and weird race conditions in the process.
- Operating Systems: Linux 2.4 and 2.6 on PPC 440GP, Freescale 8548
- Programming Languages: C, C++, PowerPC assêmbly language
- Source Control: Perforce/Linux
F/t - Senior Embedded Software Engineer - Data Plane
// ChantryNetworks, a Siemens Company
(Canada)
|
Jun 2005 - Jan 2008
|
-
Projects:
- Embedded Programming
- I implemented an in-kernel Code Profiler (Linux) for profiling the execution of
Intel IXA framework Core Components;
- I re-implemented the Redirector component for Teja/IXP1200 (a HTTP stream hijacker): I offloaded
the TCP packet re-assembly to the Linux kernel via a TUN/TAP interface and a
'transparent proxy' firewall rule. I wrote a Perl/multithreaded high performance
transparent HTTP proxy that implements the Captive Portal semantics; extended the
Redirector to process HTTP/8080 requests in proxy mode and SSL/CONNECT mode;
- Re-used the Redirector code for the IXP2800 platform by adding a Core Component
[= a custom Linux kernel module]
to the Intel IXA SDK. The component forwards raw packes to the Redirector by means of a UDP
socket;
- I implemented (using FUSE) a means of remoting the IXA SDK ARP table as a /proc/net/arp-like
mechanism - this method juggles two Linux kernels yet it keeps most of the processing in
user mode thus not burdening the kernels with lengthy run-to-completion processing;
- Modified the IXA IXP2800 framework to run on Linux 2.6.10 with PREEMPT RT (C20);
- Ported the C20 software to VMware and Xen by customising the vmxnet and 8139too drivers.
- Simulation techniques: ACTT, the Chantry Networks Access Point Simulator [also see the previous job]
- I wrote WASSP PUMP as a Linux kernel module - it is an L3 tunnel driver for Chantry's
AP tunneling protocol so voice stream simulations can be conducted in association
with ACTT;
- I embedded Perl/multithreaded in ACTT for easy scripting (also embedded Tcl). ACTT is
Chantry's internal Access Controller test Tool (ACTT) - a WiFi Access Point simulator;
- I wrote test scenarios (in ACTT's own language and Perl) that simulate crash/overloading
situations as seen in the field. These scenarios are used by the QA Department for regression
testing;
- I embedded an XML-RPC server in ACTT making it an RPC endpoint for autōmation;
- I wrote (in Perl) a Web GUI for ACTT for monitoring its progress - it talks to ACTT via XML-RPC;
- I kept ACTT up to date with the changes in Chantry's hardware WiFi Access Point;
- Code Profiling, Low-Level Debugging, Troubleshooting Field Problems
- C1xxx: I fixed crashes & severe bugs in the Teja/IXP1200 code: random memory corruptions,
leaks of hardware packet descriptors,
memory leaks, smashed mutexes, bogus divisions by zero - I wrote instrumentation
code that addresses the bugs [GDB was not available on the platform, nor was
Valgrind].
Note: none of the code that I fixed was written by me - I was one level of escalation
above Sustaining;
- Wrote a wrapper library for POSIX mutexes in order to detect as early as possible a
mutex corruption in a multithreaded environment;
- Added instrumentation code to Teja/IXP1200 that helps to track the oldest bug in the
company ("IXP Poll Lost");
- Added instrumentation code to the IXA SDK/IXP2800 that tracks occurences of the IXP Poll
Lost and wrote a checkpointing framework for Core Components;
- I wrote tools that preserve debug info in enterprise builds for
Teja/IXP1200 and IXA SDK/2800;
- Wrote an autōmated crash analysis program that decoded raw stack dumps into C files/line numbers for Teja/IXP1200 [XScale] ("kaboom") (C1xxx);
- Wrote an autōmated crash analysis program for IXA SDK/2800 [XScale] ("kaboom2k") (C2000);
- C1xxx: Worked-around Linux Xscale FPU emulator bug (double-fault): moved SoftFloat from kernel mode
to user mode and compiled Control Plane (Teja) code with -msoft-float; fixed endianess problem
in libfloat;
- Fixed a bug in ISC's dhcpd: was not responding properly on requests coming from tunnel devices;
- Misc Programming
- Wrote a GÏS (2D) format converter from Ekahau to AirTight Planner; wrote a Javā/SWT Drag&Drop GUI for the
converter and shipped it compiled as .EXE with gcj/Wīn32;
- Wrote an adapter/sniffer for the SIAPP multicast protocol used for inter-AP communication for the SoloAP product;
- Leadership
- Mentored junior engineers on safe programming practices;
- Supervised junior/intermediate engineers on various projects (Ethereal dissector, OmniPeek decoder,
ClearCase trigger);
- I lead the effort of adding instrumentation code to the IXP2800 prior to the release
(using GCC's -finstrument-functions);
- Harddisk Forensics
- I lead a hard-drive forensics project and implemented measures against data loss;
- Tracked Harddisk and Flash Disk (ATA) defects in the field and did root cause analysis for bad
sectors; wrote autōmated Linux tools that diagnose HDD problems using S.M.A.R.T and brute-force
reads;
- Tracked Linux Ext3 file system bugs (e.g. vanished journal on a sane media);
- Wrote a subsystem for Database Rotation & Autōmated Backup;
- Configurantion Management/Builds
- Moved legacy C1xxx build machine into VMware by taking a snapshot of the physical Linux machine;
- Set up build machines as VMware VMs for new platforms (C2000, C20, NGAP);
- Designed a ClearCase trigger that intergrates with the BugZero bug tracking system for detailed
tracking of check-ins per PR;
- Autōmated builds under Klocwork for autōmated defect detection; integrated with ClearCase
for tracking who introduced the defects;
- Improved ClearCase server performance by investigating hardware subsystems and network problems;
- Transitioned build process/scripts to BuildForge;
- Operating Systems: Linux on ARM/IXP1200, ARM/IXP2800, ARM/IXP2805, NetWinder (ARM)
- Programming Languages: C, Perl (threaded, XS, embedded), SNMP, Javā+SWT, gcj
- Network Processor frameworks: Teja/IXP1200, Intel IXA SDK 4.1 for IXP2800 and IXP2805
- Network Protocols: low-level implementation of UDP/IP and DHCP
- Debugging tools: kgdb, custom memory profiling tools that I wrote
- Misc technologies: XML-RPC, MySQL, FUSE (Linux Filesystem in User Space), BuildForge,
VMware Server,
VMware ESX,
Xen,
S.M.A.R.T,
manual crash analysis by decoding stack dumps on Xscale,
ActiveState PDK
- Source Control: CVS, ClearCase/Linux
Contract - Software Developer - Sustaining
// ChantryNetworks, a Siemens Company
(Canada)
|
Nov 2004 - Jun 2005
|
-
Projects:
- I extended ACTT to implement the draft-CAPWAP (CTP) open tunneling protocol for WiFi access points;
- I extended ACTT to fully simulate a WiFi Access Point [any
number of them simultaneously thru virtualisation] by modelling each
simulated mobile user (MU) into a Linux pseudo-Ethernet (TAP) interface thus making possible
testing the AC with real-world applications (e.g ftp, Mozilla) → this was
a cost and time saving for the company as purchasing 200 hardware APs and deploying them
on a sigle floor of a building was unfeasible;
- I wrote an SNMP agent (embedded in ACTT) that performs tasks on behalf of
each of the virtual APs simulated by ACTT: obtaining configuration info,
statistics, alarms, etc;
- I wrote a Perl script to autōmate the authentication of MUs based
on a web page (Captive Portal) thus allowing to simulate
tens of simultaneous MUs trying to authenticate at the same time
[script stacked on top of a TAP interface and ACTT] [also ported on Wīn32]
→ this was a huge improvement as previously they were able to do only
up to four at the same time using laptops and manpower;
- I wrote a Perl script that autōmates the dis-association of MUs
[also ported on Wīn32] → this proved to be a time saver for the QA guys as
previously they had do this by hand;
- I extended the scripting language embedded in ACTT to acomodate the new
functionality I added to ACTT;
- I repaired a host of complex/subtle bugs in ACTT and fixed all memory leaks;
- I wrote (in Perl) tools that autōmate the work of the testers/QA by driving the
GUI of the Access Controller; the tools were ported to Wīn32 → this was a great
help and time-saver for repetitive tasks that had to be done by hand and saved them
money by not having Chantry spend increments of $6,000 a pop for a dedicated tool;
- I created a migration scenario for Chantry's flagship product from
Linux distribution A (old, unsupported) to Linux distribution B (current, vendor-supported)
(A differs from B) [actual names withheld due to confidentiality issues].
- Operating Systems: Linux
- Programming Languages: C, Posix threads, Perl (+PDK), SNMP
- Debugging tools: gdb, Valgrind, ElectricFence
- Source Control: CVS
SpamWall
My own proprietary project
A sophisticated system for squashing spam and virus-bearing e-mail.
This is a 3-tier distributed system integrating components written in
C, Perl, Javā (servlets) and PĤP; it uses PostgreSQL SQL and ODBC/PostgreSQL as backends
for data storage. It is available for Linux and MS-Wīndows.
It has a demo Client with a GUI written in Javā+SWT.
|
Aug 2001 - present
|
Contract - Embedded Software Engineer
[40% on site, 60% remote work]
// eBox Inc.
of Cambridge, ON
Embedded Linux and Javā Programming
|
Jan 2003 - Feb 2004
|
-
Projects:
- I put together a Javā Machine: I took a single-board computer (Gene-4310)
and I created a Linux flash image (size = 29M) that had everything necessary
for the Sun Javā Virtual Machine 1.4: kernel, X11, shared libraries and the
JRE files;
- I wrote an error-tolerant, self-healing boot loader for the Javā Machine;
- I wrote a map viewer that displayed a map stored in the ESRÏ Shapefile format
(based on material provided by the GeoTools project);
- I created maps and sub-maps of the GTA using PostGÏS+PostgreSQL,
I wrote Pl/PgSQL stored procedures for handling of GÏS data;
- I wrote a GPS-driven realtime GÏS map viewer (Javā)
- Operating Systems: Linux
- Database System: PostgreSQL 7.3 + PostGÏS extensions
- Programming Languages: C, Javā 1.4 + JDBC, Perl, Perl+DBI
Contract - Anti-Spam Engineer
//
University of Toronto
(CHASS Department)
Unsolicited (Commercial) E-mail prevention & control
|
Jan 2003 - Apr 2003
|
-
Tasks:
- I re-organised their mail delivery architecture;
- I extracted useful information from the pre-existing spam collection and
I organised it in databases (e.g. IP addresses, domain names, etc);
- I wrote a Sendmail 8.12 plug-in (for the Milter extension) that
handled the incoming stream of e-mail at connection level making real-time
decisions (reject/accept) based on the knowledge stored in the above
databases;
- The plugin was controlled by preferences stored in a SQL database;
- Operating Systems: Sun Solaris 8
- Database System: MySQL
- Programming Languagen: Perl (multithreaded), Perl::DBI, C
Contract - Embedded Software Engineer
// Admiral Secure Products
(Mississauga, ON)
NNOS device-driver programming
|
May 2002 (1 month)
|
-
Projects - NNOS (8x8 Inc's real-time embedded OS) Kernel Programming:
- I re-wrote the subsystem that handles the GPIO-generated IRQ's.
- I wrote an IRQ-driven serial device driver (UART).
- I wrote a modem device driver for Multi-Tech Systems' MT5634SMI (memory-mapped).
- Operating Systems: NNOS (target), Linux (development)
- Programming Language: C (gcc)
- CPU Architectures: mips (Netergy Microelectronics' Audacity_T2U)
Contract - Software Developer
// Belcarra Messaging Corp.
(Vancouver, BC)
[100% remote work]
Maintenance of BMC's Cyrus mail package
|
Jun-July 2001 (1.5 months)
|
Project - I created a suite of tools for mailbox index repair and regeneration
for the Cyrus-IMAP server. I provided full technical support for the above tools for
Belcarra's clients on Linux/i386 and Solaris/sun4u.
Embedded Software Engineer
// Lineo
Canada
Inc (fmr. Fireplug Computers)
Embedded OS device-driver programming
|
Jan 2001 - May 2001
|
-
Projects - Linux Kernel Programming:
- Wrote an HDLC device-driver for the
Motorola 68360 (QICC) 32-bit microcontroller.
- Participated in a 68360-based board bringup
(designed early memory tests).
- tested & supported two ARM-based handhelds
the company's own version of Linux.
- Operating Systems:
uClinux [Linux for 32-bit microcontrollers],
EmbedixTM,
- Programming Languages: C, m68k assêmbly language
- CPU Architectures: AMD-520, Motorola 68360 QICC, Intel ARM
- Networking Technologies: DHCP, RARP, BOOTP, BIND9
Linux Engineer
// VTech Electronics
Canada
LTD
(Richmond, BC)
|
Jul 2000 - Jan 2001
|
- Project - Linux Kernel Programming:
Refined the port to vtech-mipsel-linux and
improved the frame-buffer code.
- Projects - User-land Programming:
- Contributed to the
Microwindows
Open Source Project by integrating it with the Helio architecture;
Did various bugfixes, created two utilities.
- Implemented a cross-platform (Linux and Wīn32) flashing
tool (application) with a FLTK GUI
(dt-FLTK) for
VTech's PDA (English and German versions) application.
This has increased the exposure of the company's product to
people running Wīndows and Linux.
- Set up an internal Samba Server (PDC).
This has improved the work environment of the team of testers in my
department by providing them with a reliable storage solution
at no cost.
- Operating Systems: Linux, FreeBSD, VT-OS (a PalmOS clone)
- Programming Languages: C++, C, Perl, Shell
- CPU Architectures: mips (Toshiba 8912), i386
- Networking Technologies: firewall (FreeBSD), BIND8
Research Assistant
//
Centre of Mathematical Statistics of the Romanıan Academy
(part-time since university)
|
May 1998 - May 2000
|
-
Administered a Linux/Wīn95 network:
- Implemented and maintained an integrated (Samba)
Linux/Wīn95 solution: network printing, file sharing,
security.
- Created a firewall (Linux) with NAT, VPN (pptp).
- Implemented a PPP server (with traffic accounting).
- Maintained Internet servers: BIND8 - in a "sandbox", DHCP,
Apache.
- Implemented a UNIX/DOS connectivity solution (DOS telnet client
for UNIX)
thus reusing old equipment and saving money by providing new
access points to the UNIX server at no extra cost.
- Operating Systems: Linux, Windows 95, cisco IOS
- Programming Languages: C, Perl, HTML+JavāScript, Pascāl
Course Instructor
//
"Centrul Logistic Marina-Marco" SRL
|
Sep 1999 - Oct 1999,
Dec 1999,
Mar 2000 - Apr 2000
|
Courses taught included:
Linux/UNIX System Administration
and
Advanced Course in Linux Hacking/Administration
- Operating Systems: Linux, DOS, Windows NT 4.0
- Programming Languages: Perl, C
- Networking Technologies: DHCP, VPN (pptp), Samba, SSH
Senior FreeBSD (UNIX) Programmer
NetĀpp International SRL
(a subsidiary of JP Infotech Holding, Boca Raton, Florida, USA)
|
Apr 1999 - Oct 1999
|
- Projects - FreeBSD kernel programming:
- Researched the market for competing products and participated
in the design of the firm's router solution
- Re-wrote a ROM-able bootloader (for FreeBSD) compliant with the
PXE specification
- Did bug hunting, bugfixes and custom improvements of the FreeBSD
kernel
- Implemented (under FreeBSD) a firewall with Network Address
Translation for the internal use of the company
- Mentored Junior programmers
- Operating Systems: FreeBSD, Windows NT 4.0, Linux
- Programming Languages: Assêmbly language-x86, C, Perl
UNIX Programmer & Systems Administrator
//
Canad Systems SRL (a fmr. Romanıan ISP)
|
Dec 1998 - Apr 1999
|
- Project - Linux Kernel Programming: modified the 2.2.x kernel
to allow every system daemon (service) to run only with user
privileges (e.g. sendmail, BIND (named), lpd). Modified
sendmail to comply with this.
- Projects - User-land Programming:
- Developed an application
(Linux version 2.0.xx + ipfwadm + Perl) for accounting on
leased-lines.
- Co-developped a UNIX/microcontroller solution - a software that talked to a
microcontroller in order to perform specific tasks
- Created Intelligent WEB pages using Apache/SSI: an HTML request
was displayed in surfer's language (guess based on the browser's language
and the reverse resolution of surfer's IP address)
- Created a complete Internet/dialup package for DOS
(PPP, e-mail reading/writing, WWW browsing).
This increased the number of clients with people low on budget or owners
of old 286 computers.
- Operating Systems: Linux, FreeBSD, DOS, Windows 95
- Programming Languages: C, Perl, awk, HTML+JavāScript, Shell
- Database System: mSQL
ÄS/400 Programmer (BGL/400)
//
Kepler S.A.R.L (société Franco-Roumaine)
(Maintenance évolutive d'un progiciel)
|
Jul 1998 - Sep 1998
|
-
Project: Updated & maintained a legacy mainframe application as
part of a team of 11 programmers
- Operating Systems: OS/400, Windows 95, Linux
- Programming Languages: BGL/400, SQL, COBOL
- Database System: IBM DB/2
Freelance (România)
- UNIX Consultant:
- Secured (against Internet attacks) machines running
(R)Linux, SunOS/SolarisTM,
HP-UXTM
- Recovered/fixed crashed machines running Solaris 2.5
- 2000: Implemented a strong Internet firewall
(Linux 2.2.x + ipchains) combined with a DHCP server (for the
intranet) at Procter & Gamble. The firewall was designed to
accomodate the Novell Extranet VPN
- 1999-2000: Modified/updated a FoxPro 2.6 database to comply with Y2K
and changing legislation.
- 1997-1998: UNIX SysAdmin/Webmaster at the
Department of Mechanics
(http://mecanica.math.unibuc.ro) of the Faculty of Mathematics,
Bucharest University.
- Implemented features of the C2 security class in Linux
- Installed/maintained SunOS/Solaris (SunOS 4.1.1, Solaris 2.x)
servers (sun3/sun4/i386 architectures); Did
troubleshooting of hardware-related problems (Sun3/60, Sun3/110)
- Created CGI scripts for querying system status, on-line databases,
user management (made with Perl).
- Implemented a relational database with web interface using the
Bourne shell and awk (no SQL backend)
- 1995: Maintained Novell 3.11 network for a government agency
Other Skills
- sendmail (Internet Mail Agent) configuration
- BIND (4, 8, 9) (Internet DNS) configuration (including chroot()'ed environments)
- Samba (Windows-style file sharing) (including domain logons & PDC)
- CVS (Concurrent Versions System)
Fields of Interest
- UNIX kernel security semantics
- Linux device-driver programming & embedded devices
- Networking: VPN's, VoIP, IPSec, IPv6
Languages:
English: fluently spoken and written,
French: average,
Romanıan: native speaker.
Personal Interests
- Sailing, Swimming, Snorkelling, Scuba-Diving (PADI-certified)
- Keeping an aquarium (for 35 years) and growing corals
- Electronics, IoT, MQTT on: Linux/Raspberry Pi, ESP32, ESP8266, ATmega328P, ATmega2560, MSP430
Keywords:
programmer, sysadmin, developer, C, C++, Perl, Javā
linux, uclinux, freebsd, unix, solaris
kernel, device driver, embedded, real time
i386, ia32, mips, pic, z80
NNOS, GPIO, Audacity
microwindows, fltk, handheld, samba, cifs, nfs
SPAM, UCE