My name is Maxim Kartashev. I am a programmer with background in systems engineering, primarily debuggers, compilers, and various related tools for traditional UNIX-like OS as well as embedded systems in the automotive sector. When I have some spare cycles, I enjoy cooking, photography, and working with my hands.

C.V.

Maxim Kartashev
Here's my C.V. for a potential employer:

Education

1995-2000
St. Petersburg State University, Mathematics and Mechanics Faculty, System Programming Department.

Graduate thesis: "Two-level language debugging" (Developed a debugger of multi-threaded and distributed programs written in a proprietory 4th generation language compiled into Java).

Core Skills

Programming Languages
- C++ (8+ years working on a compiler for the language). C++03, C++11, C++14
- C (used on and off the entire career). Mostly C11
- Java (OpenJDK contributor)
- python, bash, awk, ksh, and other scripting languages (used for small tasks)
- Kotlin, Go (read a book or two)
 
Standards and specifications
- ISO C++03, C++11, C++14 (intimately familiar with selected parts, participated in the committee work, implemented some features in the compiler)
- ISO C99, C11 (familiar with the most of it, implemented minor features in the compiler)
- IEEE 754-2008 (the floating-point standard; familiar with selected parts, implemented minor features in the compiler and run-time support libraries)
- DWARF 2.0 (debugging information)
- ELF 1.2 (implemented parts of)
- Itanium C++ ABI (implemented parts of)
- MISRA C:2012, CERT (some knowledge of)
- ISO 26262 (Road vehicles - Functional safety; participated in the qualification of a C++ compiler for ISO 26262 compliance)
- Automotive SPICE (derivative of ISO 15504; developed software in compliance of)
 
Operating Systems
Setup and basic configuration, patching, every day use as a desktop OS, some knowledge of internals and system programming:
- Linux
- Solaris (8 through 11.3)
- MacOS
- Windows (some limited experience with WinAPI)
 
Architectures
- ARMv8 (A32, Thumb-1 and T32 aka Thumb-2 instruction sets; code generation, debugging)
- Infineon TriCore (code generation, debugging, microarchitecture level, implementation of some low-level features)
- SPARC (v8, v9)(debugging at assembly level, implementation of some low-level features)
- x86 and x64 (debugging at assembly level)
 
Natural Languages
- Russian (native)
- English (fluent)
- German (very basic)
 

Job Experience

2021-2022 - JetBrains

I was working on the JetBrains Runtime (an OpenJDK fork) fixing useability and stability issues on Linux, MacOS, and Windows.

2019-2021 - TASKING

I was working on a toolchain for embedded systems (ARM, Infineon's TriCore, etc). My responsibilities included the C compiler front-end and back-end, assemblers, intruction-level simulators. The development was done in compliance of Automotive SPICE (A-SPICE).

Major projects:

  • C compiler: support for ARM NEON (ACLE), support for multi-core ARM chips, implementation of PIC (position-independent code and data) and VM (Virtual Machines) support for TriCore, fixes and optimization of floating point operations
  • C++ compiler (EDG): small features and fixes
  • Linker and locator: support for multi-CPU boards, improvements and small fixes
  • Instruction set simulator: implementation of ARM NEON
  • Assembler: support for ARM NEON instructions

2004-2019 - Sun Microsystems, then Oracle
 
2017-2019 - Linux toolchain

I was developing fixes and providing support for the users of Oracle Developer Studio on Solaris and Linux. The area of responsibility includes the C++ compiler, debugger, make, IDE.

Also was working on checking the source code for security vulnerabilities using gcc.

2014-2019 - ISO C++ Committee

I was an Oracle's representative in the C++ standardization committee (WG21 of ISO/IEC); I attended one or two in-person meetins a year mostly participating in work of the Core Language working group that consists primarily of compiler implementors (gcc, clang, EDG, Microsoft, and Oracle).

2011-2017 - Studio C++ compiler front-end

Worked on improving the Boost open-source library support, participated in a long term (~2 years) refactoring of the compiler core that made the implementation of C++11 possible in a 20+ year old compiler, strengthened compatibility with the GNU toolchain.

Implemented (alone or in a two-person team) several C++11 and C++14 language features such as variadic templates, inline namespaces, double right angle brackets support, variable templates, etc.

The reason for leaving: to concentrate on large-scale open-source work that benefits the entire community.

2004-2011 - Studio Sustaining

Was responsible for development and on-time delivery of urgent fixes for Sun/Oracle customers for more than 7 distinct products (the TeamWare version control system, the dbx debugger for Solaris and Linux, the C++ and (briefly) Fortran compilers, and several Solaris utilities such as make).

Maintained team's documentation of processes and procedures, as well as technical descriptions of internals of the software the team worked with.

The reason for leaving: wanted more narrow focus and the ability to drive one project forward.

1996-2004 Lanit-Tercom

Was responsible for development of various parts of a proprietary 4GL "H.P.S. rules" language compiler into Java, C, and COBOL on Windows, OS/2, OS/390, HP-UX, including parser, high-level code generation, run-time language support libraries.

Co-developed the debugger for that language for the Java platform, which later had turned into my graduate thesis: "Two-level language debugging". Wrote the User's Manual for that debugger.

The reason for leaving: no more room for professional growth.