Services
I'm an independent software engineer that offers consultations related to software development and optimizations, writing new code, and updating an existing code to be faster. In addition, I can be hired to be part of a larger development team when it comes to developing either new or existing project (long-term). I also offer commercial support for AsmJit and Blend2D libraries and consultations in this area, for example reviewing the code that uses AsmJit and Blend2D is possible, in addition to writing new code that uses AsmJit as a JIT compiler to optimize existing software.
I prefer to work on projects where performance matters and where C++ language is used for its efficiency and not for legacy reasons. I can use other programming languages too, like Python, JavaScript/Node.js, and Go, but I'm not actively looking for opportunities that would involve writing code in these languages without a focus on high-performance.
Commercial Support
This section provides commercial support offerings for AsmJit and Blend2D libraries:
AsmJit
AsmJit is a stable library used by many individuals and companies. AsmJit is released under the Zlib license, which means that companies can use it freely in their products. Commercial support for AsmJit is meant to help both companies using AsmJit and AsmJit itself.
- Technical Support - Get quick response times and bug fixes when dealing with issues with AsmJit
- Consultation - Consult the possible use of AsmJit before you start a new project or plans to use it in an existing project
- Code review - Review of your code that uses AsmJit for bugs or improper use of its API; suggestions and improvements are par of the process
- New features development - Development and testing new features that would become part of AsmJit
- New backends or extensions - Development and testing of new ISA extensions or whole backends
Blend2D
Blend2D implements a high-performance software-accelerated 2D rendering engine that is powered by a JIT compiler, which uses AsmJit library. Commercial support for Blend2D is meant to help both companies using (or planning to use) Blend2D in their products and Blend2D to gain more features.
- Technical Support - Get quick response times and bug fixes when dealing with issues with Blend2D
- Consultation - Consult the possible use of Blend2D before you start a project that uses it or during its development
- Code review - Review of your code regarding the correct use of the library and proposal of possible changes that would lead to faster rendering
- New features development - Development of new features that will become part of Blend2D. There is a high-level Roadmap overview on the Blend2D homepage, but in general I'm open to implementing any feature that would make sense to be part of Blend2D
If you don't need a commercial support, but you would still like to support these projects a donation would be appreciated as both projects were written in my spare time.
Contracted Work
I'm also offering a contracted work in the area of software development, architecture design, and consulting. I'm expert in the following areas:
Cross-Platform C++
- Knowledge of the C++ language up to C++20 and a daily user of C++17
- Knowledge of operating system APIs including Windows, Linux, BSD variants, and Apple platforms.
- Build systems and package managers including cmake, conan, and vcpkg
- Writing a production-grade code in C & C++ that is robust and properly handles corner cases and error conditions
- Experienced and a daily user of tools like ASAN, UBSAN, MSAN, TSAN, perf, and valgrind
High-Performance C++
- CPU specific optimizations targeting AVX2, AVX-512 (all possible variations), and AArch64/NEON CPU extensions
- JIT compilation targeting X86, X86_64, and AArch64 CPU architectures using AsmJit
- Using multi-threading and atomic operations to implement possibly lock-free solutions in multi-threaded data processing pipelines
Other C++ Skills
- Designing easy to use and clean interfaces (APIs) of libraries so the API can be easily consumed by users
- Supporting everything I write with tests and benchmarks so the safety and performance of the code is tested
2D Rendering
- Design of 2D rendering engines, mostly CPU renderers that use SIMD and multi-threading
- Experience with 2D rasterization and composition pipelines (advanced implementation in Blend2D)
- Pixel effects (adjustments, color matrix, ...) and convolutions such as blur, erosion, dilation, ...
- Text processing and rendering including advanced use of OpenType technology
- Decoding and encoding raster and vector image formats (PNG, SVG, ...)
Data-Processing Pipelines
- Implementing SQL or custom query engines for processing big data (possibly unstructured)
- Acceleration of binary format decoding & encoding by using SIMD instructions
- Acceleration of date-time processing, geo-hashing, and other common functionality used in databases and query engines
General Skills
- Experienced with common software development methodologies so I can work with others on a single project
- Flexibility - A passion for exploring areas I haven't worked on in the past
Availability
Since I mostly work on a contract basis I need to schedule new contracts in advance. This means that I should be contacted as soon as possible to be able to either create a new contract window or to decline in case that I'm fully allocated for a longer period of time. I would also note that I have many contacts to other smart people that I have worked with, so I can recommend others if I'm not available at the moment (or bring more people if necessary).
Contact
You can reach me over the email (click) or connect via LinkedIn. Business meeting is possible in Prague, Czech Republic (EU).
Business Entity Information
Please wait until the information is displayed.