Frontend development
Part-time maintenance of the iTcl/Tk-based graphical user interface.
Author of a Tk extension (now lost) for creating Tcl-scripted canvas items based on libcairo.
Occasional drive-by fixes in ExtJS.
Selected areas of professional experience.
Part-time maintenance of the iTcl/Tk-based graphical user interface.
Author of a Tk extension (now lost) for creating Tcl-scripted canvas items based on libcairo.
Occasional drive-by fixes in ExtJS.
Implemented and maintained interfaces to various external systems:
Introduced and maintained scripting capabilities with Tcl & Python in the backend. Used nanobind and the Tcl C-API to provide a clean integration of backend features at the scripting level.
Authored various scripted components based on these APIs: modules for free text analysis, decision tree evaluation, and assorted parsers and builders.
Primarily responsible for the OpenSSL infrastructure: SSL/TLS-protected communication channels, custom cryptography processing units, support for hardware security modules, and a Tcl wrapper package that makes cryptographic primitives available to Tcl scripts.
Design and implementation of a Tcl-scriptable FastCGI authorization framework.
Integration of external authentication with the product-native permissioning.
Implementation of an OpenIDConnect authorizer.
Design and implementation of a generic reporting engine that supports multi-tenancy and is tightly integrated with the application’s permissioning model. It is based on a custom virtual table implementation in SQLite that combines SQL data with data from LDAP and other optional sources.
Assisted in the creation of an AWS-hosted, RAG-based chat companion.
Avid user of Claude Code; currently experimenting with MCP server development.
Implemented a Tcl wrapper library for OpenCL and used it to develop GPU kernels that implement exact linear algebra over the field \({\mathbb F}_2\) and routines related to the mod \(2\) Steenrod algebra. Also added a Tcl interface to OpenTelemetry to debug the performance of this solution.