💼 Professional Experience
Founding Engineer • HoundDog.ai • May 2023 – Present
- Created and maintained a code scanner for detecting vulnerabilities and data leaks written using Spoon, Roslyn and TreeSitter for multiple programming languages like C#, Java, Python, Kotlin and Ruby.
Freelance Software Developer • July 2022 – May 2023
- Worked as a freelance software engineer on projects in source code analysis and process mining domain using C#, F# and Python.
Lead Backend Developer • Phosphor.co • Dec 2021 – July 2022
- Implemented several features of the domain specific language for financial transaction modelling language using Python and F#.
Compiler Tech Lead • OutSystems • March 2021 – Oct 2021
- Helped create a new team for making a massive rewrite of the code generation infrastructure of the transpiler that translates C# and JS code from OutSystems Language.
- Led the team of four people.
- Made the code generation fast, discoverable, and optimal.
Senior Compiler Engineer • RainCode Labs • Nov 2016 – March 2021
- Worked in the code generation and semantic checker parts of the new compiler for legacy programming languages (Mostly 4GLs).
- Created a new compiler for an old language with MSIL as the target platform.
- Responsible for all code generation, semantic checks, and error reporting (compiler backend).
- Automated documentation for the user manual for all the compiler products, ensuring docs automatically updated with code changes.
Senior Engineer • Epicor • Aug 2015 – Aug 2016
- Worked in the tools and performance engineering group to identify bottlenecks in several projects.
- Created a Source Code Analytics system using Roslyn and JavaScript Data Visualization.
System Software Engineer II • HP • March 2010 – Jul 2015
- Designed and implemented a Domain Specific Language (DSL) for defining UI constraints for different type of printers.
- Replaced old XML based system, reducing typing needs drastically with a flat learning curve due to its resemblance to English.
- Invented a programmable and distributable key value pair storage format called "Sponge" for efficiently storing iterative and repetitive data, using 75% less storage space than equivalent XML documents.
Technical Lead • Ness Technologies • Apr 2009 – March 2010
- Built a data structure called "Affinity Map" and used it in a supervised learning algorithm to auto-categorize banking transactions with 85% accuracy.
- Created a static code analysis tool that could find near duplicate code and supported a part of Code Query Language, helping identify code blocks to refactor to reduce technical debt.
- Mentored and managed a team of developers and testers.
Associate Consultant • Tata Consultancy Services • Nov 2004 – March 2009
- Implemented Affiliate Management Platform and Web Application for Citibank, starting as a developer and becoming team lead for a group of 5 people.
- Created a data mining tool for the project support team that could read and classify support ticket emails into different problem domains and forward them to appropriate support engineers.
📕 Published Books
ML.NET Revealed (2020)
A hands-on guide to begin your adventure in Machine Learning using open source, cross platform ML.NET framework.
Source Code Analytics (2017)
A hands-on guide to analyze source code using meta-programming with Microsoft Roslyn.
F# for Machine Learning Essentials (2016)
Solving several Machine Learning problems from ground up using F#.
Foreword by Dr. Ralf Herbrich, then Director of Machine Learning Science, Amazon
Thinking in LINQ (2014)
Several problems from different domains are solved using LINQ and C#, to show how functional programming concepts can lead to cleaner, concise and maintainable code to solve complex problems.
.NET Generics Beginners Guide (2012)
Generics programming for new .NET developers.
Foreword by Dr. Don Syme and Dr. Andrew Kennedy from Microsoft Research, UK
Data Structure using C: 1000 Problems and Solutions (2008)
An undergraduate textbook on Data Structure and related algorithms.
Translated to simplified Chinese
🎤 Conference Talks
Meta Programming for the Masses • Programming 2020
Cancelled due to COVID-19. Will try to deliver it in person at a later date.
Practical Machine Learning using F# (Workshop) • F# Exchange 2019 • London
Workshop based on the F# for Machine Learning Essentials book.
Creating DSLs using Functional Kotlin • Functional Programming Conference 2018
A talk on how to create DSLs using Kotlin.
Practical Machine Learning using F# • Functional Programming Conference 2015
Watch the talk based on "F# for Machine Learning Essentials" book.
Thinking in LINQ • Functional Programming Conference 2014
Watch the talk based on "Thinking in LINQ" book.