| Phone: | +49 176 6040 3230 |
| Address: | Holteistraße 13, 10245 Berlin |
| E-mail: | vadik@vygo.net |
|
Areas of Expertise: |
Programming: embedded (bare metal, FreeRTOS), bootloaders, drivers, concurrency, systems, kernel (Linux), networking. Parsing: context-free (yacc), regular. Security. Scripting, integration, builds (Makefiles, ldscripts). Strong Unix knowledge, familiarity with hardware.
|
Programming Languages: |
C (lex, yacc), Go, Assembly (ARM, MIPS, 8086), ANS Forth, Perl, awk, Bourne shell, SQL.
|
Skills: |
Writing clean code. Solving hard bugs. Working with large codebases. Having both high-level and detailed perspectives on systems. Quickly learning new technologies and concepts.
|
Since 2019: |
Freelancer:
Firmware Developer
Developing embedded software for clients.
|
2022 – 2025: |
Confidential project
|
2021 – 2022: |
weeve GmbH:
Embedded Security Engineer
Developing a suite for automatic rewriting of ARM Cortex-M
ELF binaries to prevent stack overflow and return address
smashing, using TrustZone-M and shadow stacks. Implemented
protection for exception handlers.
|
2020 – 2021: |
MBition GmbH:
Expert Software Engineer
Developing software.
|
2019: |
Concept Reply GmbH: Firmware Developer |
Developed ESP-IDF-based firmware for an ESP32 device for a new Grohe product, as a part of the firmware development team; partially led the development. Wrote an AWS IAM authentication client, a UART message dispatcher, management of other system components over UART, MQTT communication with cloud over TCP/IP, error and log propagation. Rewrote UART message read function.
|
2019: |
An Internet Consultancy: Firmware Developer |
Developed Amazon FreeRTOS-based firmware for an ESP32 device for the company’s client as a part of the firmware development team. Worked in close cooperation with back-end, mobile and security teams. Wrote a BLE provisioning subsystem, drivers for an SPI accelerometer, upgraded FreeRTOS, improved make-based build system. Developed secure boot and FLASH encryption during factory initialisation, including secure encryption key distribution. Designed and implemented an encrypted device configuration protocol. Participated in developing Over-The-Air upgrades, I²C pressure sensor drivers, security analysis. Fixed bugs, reduced memory use.
|
2017 – 2019: |
MatchX: Lead
Software Developer
Developing firmware for LoRa LPWAN IoT devices; leading a
small team. Wrote firmware for LoRa nodes with BLE upgrade
capabilities for Dialog ARM Cortex-M microcontroller from
scratch in C, using Dialog SDK, FreeRTOS and IBM LMiC
library. Maintained OpenWRT-based firmware for LoRa
gateways. Built factory QA/flashing stations based on
Raspberry Pi and MatchX LoRa nodes, with software in C and
Go, for testing LoRa node and gateway hardware, flashing
firmware and distributing cryptographic keys synchronised to
the backend. Lead the development of LoRa back-end software.
Worked in close cooperation with the hardware developer.
|
2016 – 2017: |
Airfy: Senior
Software Developer
Developing OpenWRT-based firmware for consumer WiFi routers.
Ported OpenWRT and LEDE to the new platform. Maintained
firmware components written in C, awk and Bourne shell.
Solved bugs and developed new features in back-end
components. Wrote new back-end daemons in Go.
|
2014 – 2016: |
Mobisol:
Embedded Software Engineer
Developing firmware for solar rural electrification systems
as part of the firmware team, in close cooperation with
hardware, back-end and mobile developers. As the principal
maintainer of AVR platform, developed new FLASH and GSM
modem drivers, improved concurrency of communication
subsystem, developed new features, optimized firmware size
and memory usage, defined and implemented peripheral
communication protocols, improved build automation.
Developed an upgrading bootloader and a robust backwards and
forwards compatible key-value store optimized for FLASH for
a new ARM-based platform. Lead the design of
cryptographically secure payment tokens for offline
systems.
|
2012 – 2014: |
Recurity Labs:
Security Consultant
Security analysis of clients’ software and hardware
systems; programming.
|
2010 – 2011: |
Soundcloud:
Architecture Developer
Automatic server installation and upgrades using Chef and
Ruby.
|
2008 – 2010: |
Jungo: Software
Engineer, Residential Gateway Professional Services
group
Part of the group developing portable residential gateway
software. Worked across the product codebase, including
proprietary userland and kernel code, third party drivers,
Linux kernel, bootloader (Das U-Boot), uClibc, Asterisk,
Samba. Fixed kerel crashes and bugs in third-party wireless
and DOCSIS network interface drivers. Ported U-Boot and
Linux kernel to a new ARM-based platform. Debugged network
related issues in the field.
|
2007 – 2008: |
Radware:
Development, integration
Unix systems programming, scripting, building, integration,
delivery, packaging. Part of the Insite 5 management
business unit. Developed the CLI (C on Unix). Implemented
job control, piping and shell built-ins, improved terminal
handling, rewrote most commands. Integrated between Linux,
Oracle DB and Java-based product on the appliance. Designed
and implemented a build system using make, Ant and
Maven. Implemented upgrade procedure.
|
2006: |
Formula Telecom Solutions: Configuration management, packaging, scripting |
Building, packaging and deploying the software product. Setting up and maintaining build and test environments. Worked with Solaris, HP/UX; Makefiles, Perl, awk, C shell.
|
2004 – 2006: |
iMesh Ltd.:
Unix server administration, scripting
Installing, upgrading and maintaining the company’s
servers. Worked with Linux (Debian, RedHat/Fedora/CentOS),
load ballancing and high availability (LinuxHA, Ultra
Monkey), TUX, Apache, proprietary daemontools-based
services.
|
2004 – 2005: |
T.N. Traffic
Ltd.: Unix system and network administration,
scripting, security
Installing and maintaining the company’s servers.
Re-designing and upgrading office infrastructure. Worked
with Debian Linux, OpenBSD, Apache, Postfix, Cisco Catalyst
switches, Cisco PIX, OpenBSD pf packet filter, Linux
iptables, CARP.
|
2001 – 2003: |
School of Engineering, Hebrew University of Jerusalem: Unix System administration, scripting, programming, user support
|
2000 – 2001: |
Freelancer:
Network design, Unix system administration, programming
Clients included Intel Network Group of Jerusalem, Ness
Technologies, Airport Authority of Israel, XChain Ltd.,
GoldFire Ltd., Saiki-Tech Co. Ltd., Volcani Institute.
|
1997 – 1999: |
Institute of Computer Science, Hebrew University of Jerusalem: System administration, programming
|
• |
Go qr package by Russ Cox: Added industry standard features: Kanji and ECI modes, Structured Append, segmentation (shorter encoding), automatic mask selection; as well as Kanji mode encoding with UTF-8 input, Micro QR code generation. Improved PNG encoding, achieving 30–65× faster and up to 28% more efficient compression compared to the standard encoder. |
|||
|
• |
OpenBSD’s cwm window manager: contributed features and bugfixes. |
|||
|
• |
Heatshrink embedded compression library: simplified encoder and decoder state machines, redefined stream format in backwards compatible manner, improved compression ratio, fixed bugs. |
|||
|
• |
ihex: Wrote a feature-complete fully documented Intel HEX package for Go for use in production. |
|||
|
• |
The Go programming language standard library: added CRAM-MD5 authentication to the net/smtp package, added conversion between Latin-1 and UTF-8 to compress/gzip, minor contributions to other packages. |
|||
|
• |
forego: Wrote a 32-bit virtual machine in Go running a minimal self-hosted standard-compliant Forth system (compiler, assembler, parser and interpreter) supporting full CORE wordset as a learning project. During bootstrap phase, wrote a standalone assembler for the VM. |
|||
|
• |
SSH 1.2.26, OpenSSH 1.2−2.3: Ported to BSD/OS 3.1−4.1, adding BSD authentication. |
|||
|
• |
Debian GNU/Linux 1.0−1.3: Maintained software packages. |
|||
|
• |
Developed a suite allowing BSD/OS users to build custom installation floppies. |
|||
|
• |
Contributed patches to OpenBSD, BSD/OS, Exim and other software. |
|||
|
• |
Contributed to the OpenBSD ports project (porting software to OpenBSD 2.2−2.4). |