Vadim Vygonets
Software Engineer

Contact info

Phone: +49 176 6040 3230
Address: Holteistraße 13, 10245 Berlin
E-mail: job-2018@vygo.net

Experience

Areas of Expertise:

Programming: embedded, bootloaders, drivers, concurrency, systems, kernel (Linux), networking. 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, Javascript, 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.

Employment

Since 2017:

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 QA stations based on Raspberry Pi and MatchX LoRa nodes, with software in C and Go, for testing LoRa nodes and gateways. 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

Contributions

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).