
Jan Kratochvíl
Verified Expert in Engineering
Back-end Developer
Albrechtice v Jizerských horách, Liberec Region, Czech Republic
Toptal member since September 9, 2021
Jan is a back-end developer with 20+ years of experience, specializing in server-side code in C++11 (and higher) and previously in building C++ debuggers and Linux dev tools. He is an expert in DWARF debugging format and has been fixing large codebases such as LLDB and GDB debuggers. Jan's experience spans Interactive Brokers C++ API; disassembling and reverse engineering; and troubleshooting, programming, and configuring networks, embedded devices, Linux servers, RHEL, CentOS, and Fedora.
Portfolio
Experience
- Linux - 20 years
- TCP/IP - 20 years
- Perl - 20 years
- C - 20 years
- C++ - 10 years
- LLVM - 8 years
- Clang - 8 years
- C++20 - 1 year
Availability
Preferred Environment
Linux, C++20, C++17, C++14, C++11, C++, Firmware, Debugger Engineering, Perl
The most amazing...
...challenge was developing my Windows kernel emulation layer for Linux, enabling Linux to access Windows drives using original ntfs.sys.
Work Experience
Software Developer
Red Hat
- Contributed to upstream (FSF) GDB with 1231 commits. Implemented larger features, including PIE support, Fortran modules, and DWARF-5, including entry values, tail calls, and a names index for producers and consumers.
- Maintained GDB Fedora and RHEL (CentOS). Implemented in Fedora but never upstreamed: C and Fortran variable-length arrays (VLA), locating files by build-id.
- Restored compatibility of GDB with a Fedora Linux operating system featuring various ELF and DWARF extensions that were unsupported by GDB at that time.
- Contributed to upstream (LLVM) LLDB with 159 commits. Implemented compatibility with various Fedora Linux operating system extensions, including DWARF-5 parts as produced by GCC compiler.
- Developed a Linux kernel ptrace test suite (most of its test cases).
- Contributed clarifications, extensions, and a fix to the DWARF standard (debugging info format).
- Bug reported and often bug fixed main components of the Fedora Linux operating system unrelated to debugging.
Software Developer
VA Linux Systems Japan
- Reimplemented mkdump in two days based on my innovative approach. Mkdump was a Linux kernel core dumping project that was previously developed in-house.
- Implemented the first relocatability for Linux kernel, later inherited by the kdump project. This solved previous in-house MMU remapping, which required exceptions for DMA vs. kdump, which needed recompilation to a different fixed address each time.
- Increased NAS server performance by implementing Linux kernel internal NFSv3 server write-back caching.
Technical Lead
Sun Microsystems
- Developed interactive installer automation while serving as a QA technical lead for Java Enterprise System (Java ES).
- Implemented an adaptable automation framework to address the challenges coming from multiple architectures and rapid internal releases.
- Enabled the team to test more functionality and bug report more issues to the internal development teams.
Software Developer
ATS Praha (Freelance Contractor)
- Implemented a multimedia messaging service (MMS) for a client using XML protocol to communicate with the MMS center of the phone operator. This included remote debugging of the phone operator's MMS center and two fixes of MMS Ethereal for decoding.
- Provided multimedia EMS support by extending a free Perl module GSM::SMS.
- Implemented support for a protocol BIP (similar to Nokia CIMD2) by extending the free Gnokii software project.
Software Developer
GTS (Freelance Contractor)
- Extended the capabilities of the permissions configuration for my ISP client, using the Cisco TACACS+ protocol that handles authentication, authorization, and accounting.
- Reduced the cost and enabled quick deployment by basing the work on the existing free software extension of the original Cisco Daemon Manager.
- Made the configuration for my client's customers more flexible and error-proof.
Software Developer
TENcom (Freelance Contractor)
- Developed software for SMS communication using a connected GSM modem or phone.
- Solved cross-UNIX compatibility of Digital UNIX versus a development host running Linux.
- Provided compatibility with Siemens A1, MobilDock, and Nokia Communicator devices.
Software Developer
Geoinvest (Freelance Contractor)
- Ported the Amiga computer kernel to an embedded machine. I ported the Amiga kernel in assembly language to the new hardware but did not disassemble the Amiga kernel.
- Developed a custom GCC 2.95.2 build script and target configuration patch for a cross-compiler to my target m68k-geoinvest-elf.
- Wrote a custom flashrom build script and associated linker script.
- Prepared for easy deployment of C modules written by the client.
Experience
Captive NTFS | The First Free NTFS Read/Write File System for Linux
https://www.jankratochvil.net/project/captive/The project delivered full security protection from possible malicious Windows drivers via chroot and setuid wrapping and the narrow communication channel using CORBA (ORBit2). The project also provided an XML-based file format for operations recording and replay for subsequent easy debugging of problem reports from users or customers. Its Windows kernel API emulation used original ntoskrnl.exe, ReactOS free software implementation, or my own implementation, specifically chosen for each supported Windows kernel API call. I wrote this in 2002-2003.
HotelGate | Internet Public Access Gateway
https://www.jankratochvil.net/product/hotelgate/The project used VLANs to isolate hotel rooms and provide fully transparent connectivity and data access protection for hotel guests. It also featured ARP and DNS spoofing utilities to make the internet work, even on computers with statically configured IPv4 addresses, such as those from company networks at that time. I wrote this in 2004.
MMS2 | Alternative Center for Cheaper Mobile Phone Multimedia Messages (MMS)
https://www.jankratochvil.net/product/mms2/Developed IVR scripts based on the Asterisk Gateway Interface (AGI) to charge for MMSs on a phone number with high billing per minute. I used Asterisk and AGI on a 2x BRI PSTN voice card. The project also featured a Linux and Windows client to run on a user's computer as protection against firewalling by cell phone operators.
I wrote these in 2005.
LaserGame | Firmware and Config Tool for Shooting Gun
https://www.jankratochvil.net/project/LaserGame/STEP | Web Database Application
https://www.jankratochvil.net/project/step/IRCon | Infrared Remote Control Hardware
https://www.jankratochvil.net/project/ircon/GNOME-xBill | xBill Game Rewritten with Network Support and GNOME/GTK+
https://www.jankratochvil.net/project/xbill/ResRAM | Reset a Persistent Bootable RAM File System
https://www.jankratochvil.net/project/ResRAM/PortDiag | Amiga Hardware I/O Port Diagnostics Utility
https://www.jankratochvil.net/project/PortDiag/PerlMail
https://www.jankratochvil.net/project/PerlMail/Badblock-guess | Data Recovery from a Damaged Disk
https://www.jankratochvil.net/project/badblock_guess/Line9k | Modem or Nokia 9110 GSM Data Gateway Control and Charger
https://www.jankratochvil.net/project/line9k/Tcpoverudp | Forward TCP Connections Over UDP Without Root
https://www.jankratochvil.net/project/tcpoverudp/Pipebuf | UNIX Pipe Real-time Buffering
https://www.jankratochvil.net/project/pipebuf/KIX | Free Protocol-compatible Kali Linux Server Equivalent
https://www.jankratochvil.net/project/kix/Int13Sniff | Trace PC Bootloader Disk Operations
https://www.jankratochvil.net/project/int13sniff/Certifications
Red Hat Certified Engineer (RHCE) 110-518-099
Red Hat
Skills
Libraries/APIs
GLib, OpenSSL
Tools
GTK+, Shell, Git, CVS, Makefile, GNU Debugger (GDB), LLDB, GNU Autoconf, Automake, GNOME, Subversion (SVN), MD5, CMake
Languages
Perl, Assembler x86, C, x64 Assembly, Assembler 68000, C++, Tcl, HTML, C++11, Embedded C++, C++20, Embedded C, XML, Assembler IA64, Assembler PPC, ARM Assembler, Python 3, Python 2, Python, Java, C++17, C++14, PHP
Platforms
Linux, Unix, AmigaOS
Paradigms
Design Patterns, Concurrent Programming
Storage
MySQL, PostgreSQL
Other
RHEL, IT Administration, SMS, Multimedia Messaging Service (MMS), HTTP, Proxy Servers, SMTP, SSH, CGI, RPM Packaging, Debugger Engineering, Algorithms, Data Structures, Debugging, Debugging Tools, MIME, Dynamic Host Configuration Protocol (DHCP), DNS, TCP/IP, Intel MCS-51 (8051), Bootloaders, Profiling, Networking, Linker Script, TACACS+, Cisco, Authentication, Authorization, Asterisk Gateway Interface (AGI), Wireless Application Protocol (WAP), Power Distribution Unit (PDU), VLAN 802.1q, Network Time Protocol (NTP), SOCKS5, CORBA, Windows Kernel Drivers, Linux Kernel Programming, Assembler s390, Linux Kernel, GNU Libtool, GNU gettext, ARP, Hardware, Firmware, LLVM, Clang, SOAP, UI Programming
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring