In my daily job at Strumenta, I design and implement domain-specific languages and tooling, including code editors, parsers, and transpilers—usually one-person projects for a single customer at a time. I also do R&D together with a few colleagues to improve our processes and tools (that we often release as open-source). We use mostly ANTLR and our own AST libraries "*LaSu", where * is one of several target languages (Kotlin/Java, Python, Typescript) and LaSu stands for Language Support. We also work with JetBrains MPS, although I'm not an expert on that. Finally, I write technical articles for the Strumenta blog, from time to time.I'm also the lead developer of the open-source model-driven web service framework, Portofino.From time to time I hack on some hobby open-source projects, mostly in Common Lisp.I have a passion for language design and implementation; in the past, I contributed to ABCL, the Common Lisp implementation on the JVM, for several years, and marginally to the Groovy language and the Hibernate ORM. I love domain-specific languages and very high-level languages. My heart stands more in the dynamic language camp, but I recognize the benefits of static analysis, and I'm fond of very good IDE support – I love IntelliJ IDEA!I used to follow the JVM ecosystem and know it quite deeply. I also used to participate in the local Java User Group and I'm still subscribed to several JVM development mailing lists. But nowadays I work with a mix of technologies, including JVM languages (Java, Kotlin, Groovy) as well as others (mostly TypeScript and Python). So I have a broader focus and I don't follow the Java/JVM world as closely as before.In the past, I have designed and implemented Java enterprise applications using a variety of technologies, including Spring and JEE, Alfresco, Liferay, Apache Camel/ServiceMix, BPMN engines, etc. So, I understand "enterprise" issues quite well, such as concurrency and parallelism, synchronous and asynchronous operations, transaction management, service-oriented architecture, statefulness vs statelessness, etc.I'm also quite good at fixing nasty bugs, and I have a decent grasp of security and performance. I can review code, project structure and architecture, and builds to improve correctness, performance, and security.I work on the client-side sometimes, mostly to build editors with VSCode, Monaco, or ProseMirror. I know Angular and Electron, but I still can't wrap my head around React. However, I'm more comfortable deep in the guts of some language or framework rather than in front of the user's eyes ;)
Listed skills include Java, Hibernate, Java Enterprise Edition, Spring, and 46 others.