Jan Kratochvíl, Developer in Albrechtice v Jizerských horách, Liberec Region, Czech Republic
Jan is available for hire
Hire Jan

Jan Kratochvíl

Verified Expert  in Engineering

Back-end Developer

Location
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

Red Hat
x64 Assembly, ARM Assembler, C, C++, Tcl, Shell, Linux, Linux Kernel, Perl...
VA Linux Systems Japan
Linux Kernel Programming, Assembler x86, C, Assembler IA64
Sun Microsystems
Shell, Perl

Experience

Availability

Part-time

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

2006 - 2021
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.
Technologies: x64 Assembly, ARM Assembler, C, C++, Tcl, Shell, Linux, Linux Kernel, Perl, Python 3, Python 2, Python, Git, Subversion (SVN), CVS, SSH, GDB, LLDB, LLVM, Clang, Assembler IA64, Assembler PPC, Assembler s390, Algorithms, CMake, Concurrent Programming, Data Structures, Debugging, Debugging Tools, Design Patterns, Profiling

Software Developer

2005 - 2005
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.
Technologies: Linux Kernel Programming, Assembler x86, C, Assembler IA64

Technical Lead

2004 - 2004
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.
Technologies: Shell, Perl

Software Developer

2001 - 2002
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.
Technologies: Perl, SOAP, XML, OpenSSL, CGI, MD5, MySQL

Software Developer

2001 - 2001
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.
Technologies: TACACS+, Cisco, Authentication, Authorization

Software Developer

1999 - 1999
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.
Technologies: Unix, SMS

Software Developer

1998 - 1999
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.
Technologies: Embedded C, AmigaOS, Linker Script, Assembler 68000, Embedded C++

Captive NTFS | The First Free NTFS Read/Write File System for Linux

https://www.jankratochvil.net/project/captive/
Reverse-engineered undocumented parts of a Windows kernel file system API, particularly NT Cache Manager, and implemented a Windows file system compatibility layer for Linux. My implementation was tested with Windows NTFS (the project goal), FastFAT, CDFS (ISO 9660), and Ext2sd (Linux ext2). Only the NTFS file system was useful, as the other file system types were supported natively by Linux kernel. It provided a Linux kernel interface based on LUFS, GnomeVFS, and a custom command-line client.

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/
Developed network management software for automated provisioning of internet access to hotel and restaurant guests. The project provided the ability to print tickets for prepaid, time-limited internet access.

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 my own multimedia messaging service (MMS) center to compete with cell phone operators. The project generated several earned-media articles in popular newspapers, but local cell phone operators soon blocked the service. The project provided better support than the MMS support of local cell phone operators at that time, in that my MMS center also provided the MMS message encapsulation part.

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/
Firmware for a laser shooting game gun along with software for communication with the guns for Amiga computers. I wrote the software in 1996, but I did not design or assemble the hardware for this project.

STEP | Web Database Application

https://www.jankratochvil.net/project/step/
Coded as a preview of a possible future web database solution for a lawyers association. I wrote this in 1998 as my first dynamic web, with the back end in PHP 3.0. I also fixed one bug in PHP-3.0b6 and another in PostgreSQL 6.3.

IRCon | Infrared Remote Control Hardware

https://www.jankratochvil.net/project/ircon/
Infrared remote control for home TV and multimedia appliances. It was written in 1997 and later superseded by LIRC, a more popular project. My project provided a local Linux client and a remote web interface.

GNOME-xBill | xBill Game Rewritten with Network Support and GNOME/GTK+

https://www.jankratochvil.net/project/xbill/
An xBill game rewritten in 2000. The existing X11 codebase of the xBill game was ported to the GNOME UI, and the rewritten game allowed users to play the game over a network. It featured GNU Automake, Autoconf, and other frameworks that were popular at that time.

ResRAM | Reset a Persistent Bootable RAM File System

https://www.jankratochvil.net/project/ResRAM/
A bootable RAM file system for Amiga computers. I wrote this in 1995 when I had a floppy drive (no hard drive), which was very slow. The RAM-based file system made booting and all system operations much faster.

PortDiag | Amiga Hardware I/O Port Diagnostics Utility

https://www.jankratochvil.net/project/PortDiag/
PortDiag can be used for low-level hardware diagnostics and control of hardware ports on Amiga computers. It supports all the bits of the four CIA ports, digital and analog parts of the game ports, and serial port TxD and RxD signals. I wrote this in 1996.

PerlMail

https://www.jankratochvil.net/project/PerlMail/
A mail filter for mail folders and spam dispatching. The rules are written in Perl for the users' convenience: store "=spam" if ($_=mimehead(body_first())->mime_attr("Content-Type")) && m#text/html#i.

Badblock-guess | Data Recovery from a Damaged Disk

https://www.jankratochvil.net/project/badblock_guess/
Badblock-guess can recover all readable sectors of a damaged disk in minimal time. The functionality is similar to GNU ddrescue, but badblock-guess uses a smart algorithm to recover more data in less time with less additional damage to the disk media.

Line9k | Modem or Nokia 9110 GSM Data Gateway Control and Charger

https://www.jankratochvil.net/project/line9k/
Provisioned my own GPRS data connection gateway for Nokia Communicator. This private gateway provided some security, as Nokia Communicator had only unencrypted telnet (instead of SSH). It also controlled battery charging cycles for the gateway modem. I wrote this in 1998.

Tcpoverudp | Forward TCP Connections Over UDP Without Root

https://www.jankratochvil.net/project/tcpoverudp/
Does your link suffer from a high packet loss (up to 70%)? Do you have a UNIX account on the public internet but no root privileges access there? This tool provides reliable, fast TCP (web proxy and SSH) connectivity while constantly retrying transmissions on a link of any quality.

Pipebuf | UNIX Pipe Real-time Buffering

https://www.jankratochvil.net/project/pipebuf/
A utility written in 1998 when CD burning software did not yet feature in-memory buffering and one could often lose expensive, recordable CD media as a result. This utility reads data as quickly as possible into its cache and, at the same time, writes the data as fast as possible to its output. It can also be used for buffering audio streams and other media.

KIX | Free Protocol-compatible Kali Linux Server Equivalent

https://www.jankratochvil.net/project/kix/
KIX server can be used on Linux as a replacement for the proprietary KaliNix network game server (originally at http://kali.net). KIX is a free software replacement for existing Kali support in various games. I wrote this in 1998.

Int13Sniff | Trace PC Bootloader Disk Operations

https://www.jankratochvil.net/project/int13sniff/
A developer tool for PC bootloader analysis that reports all sectors being read to display, its own boot floppy disk, or a serial port. It was a troubleshooting tool that was part of a larger team project, Partition Surprise. I wrote it in 2001.

Languages

Perl, Assembler x86, C, x64 Assembly, Assembler 68000, C++, Tcl, HTML, C++11, Embedded C++, Embedded C, XML, Assembler PPC, ARM Assembler, Python 3, Python 2, Python, Java, C++17, C++14, PHP

Libraries/APIs

GLib, OpenSSL

Tools

GTK+, Shell, Git, CVS, Makefile, GDB, LLDB, GNU Autoconf, Automake, GNOME, Subversion (SVN), MD5, CMake

Platforms

Linux, Unix, AmigaOS

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, C++20, 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 IA64, Assembler s390, Linux Kernel, GNU Libtool, GNU gettext, ARP, Hardware, Firmware, LLVM, Clang, SOAP, UI Programming

Paradigms

Design Patterns, Concurrent Programming

Storage

MySQL, PostgreSQL

OCTOBER 2008 - PRESENT

Red Hat Certified Engineer (RHCE) 110-518-099

Red Hat

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring