💼 Professional Experience

Founding EngineerHoundDog.aiMay 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 DeveloperJuly 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 DeveloperPhosphor.coDec 2021 – July 2022

  • Implemented several features of the domain specific language for financial transaction modelling language using Python and F#.

Compiler Tech LeadOutSystemsMarch 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 EngineerRainCode LabsNov 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 EngineerEpicorAug 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 IIHPMarch 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 LeadNess TechnologiesApr 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 ConsultantTata Consultancy ServicesNov 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 MassesProgramming 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 2019London

Workshop based on the F# for Machine Learning Essentials book.

Creating DSLs using Functional KotlinFunctional 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 LINQFunctional Programming Conference 2014

Watch the talk based on "Thinking in LINQ" book.

🔍 Core Interests

Framework Design Data Structures Algorithms Tools Development Text Processing Machine Learning Domain Specific Languages Unit Testing Usability Refactoring Web Crawlers Data Analysis Technical Writing Sketching Geometry Programming Language Design Meta Programming Software Forensics