Ganesh A Hegde
-
-
8th Main, 20th Cross, CHBS Layout,
Vijayanagar, Bangalore - 560040
Professional
Profile
www.linkedin.com/in/ganesh-a-hegde-5b66231a
I am a seasoned software engineer with 10+ years of experience
building easy to use multi-threaded / concurrent and distributed
(networked) frameworks and layered systems implemented in Golang,
C++ and C#.NET with clean separation of concerns, well defined
interacting components and other desirable (SOLID) software
engineering characteristics.
These are my key software development skills
• Innovation: Designing and developing innovative frameworks
with layered architecture that create strong layers of
abstraction.
• Concurrent: Concurrent programming (with multiple threads
and processes).
• Distributed: distributed frameworks implemented using
standard networking protocols.
• Coding for Readability: Reducing maintenance cost by working
hard to bring out the best in code readability.
• Best Practices: Fastidious adherence to best software
engineering practices and design patterns, thus ensuring highly
reliable software.
Professional
Accomplishments
Aggregator shards: In Nference Labs, I implemented and maintained
twin servers that serve requests for software clients wanting to know
the relevance score of different words appearing in scientific literature.
The servers have been implemented in Golang and communicate with
another group of servers written in C++. The communication is
implemented using Google’s Protobuf technology over TCP/IP. The
Golang code used to implement the aggregator shards make use of
complex multi-threaded code (thread synchronization primitives, goroutines and channels).
OS: Linux 4.x (Ubuntu 18)
Debug Tool: Delve
Source Versioning Tool: SVN and Git
1
ICP (Intelligent Command Processor) Framework: a distributed software
system that works seamlessly across processes and hosts on a network.
In Spectral Insights, I designed and implemented this framework to run
their image processing algorithms on multiple nodes (hosts) and
custom image acquisition networked hardware. The framework consists
of more than 20,000 lines of code and 200 C++ classes. It consists of
multiple layers of cleanly defined software components built from the
scratch.
The following are some of the important features of the framework.
• A scripting interface to enable combining different algorithms
into process pipelines for quick prototyping. The script
interpreter is written in C++ and has a script parser, expression
evaluator, script variable scope stack, script engine and plugin
loader to name a few important modules.
• An efficient and fast asynchronous IO similar to Boost asio,
albeit a lot easier to use and meant only for TCP/IP and Unix
Domain sockets. The server has a very simple API for retrieving
messages sent from clients and replying back.
• A couple of efficient thread pool classes for managing
concurrent tasks. One of them parallelizes groups of tasks with
tasks in a group running serially. The other one parallelizes
individual tasks. Both types of thread pools support sequencing
individual tasks based on certain conditions of other tasks
having been completed thus providing an inbuilt form of thread
synchronization.
• An XML parser that's extremely easy to use and efficient.
• A simple and easy to use JSON parser for creating tree
structures from JSON and an efficient API for manipulating tree
structures and merging them.
• It’s extensible using plugins. Algorithms can be added / replaced
using dynamic libraries (shared objects).
• It has a RESTful Web API written in Node.js for communicating
with other clients
• It provides a PostgreSQL database for persisting image
acquisition data.
C++ standard: C++17 (for std::optional, std::variant,
std::atomic, etc.)
2
Compiler: clang++
C++ runtime: libstdc++ and libc++
OS: Linux 4.x (Ubuntu 18)
Build Tool: CMake 3.15
Source Versioning Tool: SVN and Git
My experience in Scientific Games involved me in writing C# scripts for
Unity 3D framework. The business (application) layer consisted of a
200+ C# classes for implementing Unity based slot machine games that
interacted with a central game server using the HTTP networking
protocol.
OS: Windows NT family
.NET Framework version: 4.6
C# Language Version: 5
IDE and Build Tool: Visual Studio
Source Versioning Tool: SVN and Git
In McAfee Software, I worked on software security products designed
for Microsoft Exchange Server, SharePoint Server and IBM’s Domino
(Lotus) Notes. The work involved complex multi-threaded C# code base
with hundreds of developed classes and classes provided by Microsoft
as well interacting in a networked framework using TCP/IP and UDP/IP
protocols.
OS: Windows NT family
.NET Framework version: 4.5
C# Language Version: 5
IDE and Build Tool: Visual Studio
Source Versioning Tool: SVN
A fast and error free LRU Cache in C++: In McAfee Software, I designed
and implemented a distributed software add-on that caches threat
scores for files accessed on endpoints. The caching was implemented as
a thread-safe LRU cache. Most of my work involved C++ and C#.NET in
software security products designed for Microsoft Exchange Server,
SharePoint Server and IBM’s Domino (Lotus) Notes.
3
C++ standard: C++14
Compiler: Visual C++
C++ runtime: msvcrt
OS: Windows NT family
IDE and Build Tool: Visual Studio
Source Versioning Tool: SVN
A Windows DLL shimming framework: In Motorola Solutions, I
developed a Windows DLL shimming framework in C++ that made us
capable of running legacy applications to on newer Windows CE handheld devices without modifying any of the source code.
C++ standard: C++03
Compiler: Visual C++
C++ runtime: msvcrt
OS: Windows CE
IDE and Build Tool: Visual Studio
Source Versioning Tool: SVN
Another example of framework design and implementation was in
Samartha InfoSolutions where I developed a robust plugin based tool
for testing electrical energy meters communicating using TCP/IP
protocol implemented in a complex multi-threaded and networked C#
code, again built from the scratch.
OS: Windows NT family
.NET Framework version: 4.5
C# Language Version: 5
IDE and Build Tool: Visual Studio
Source Versioning Tool: SVN
In Hewlett Packard, I developed SMI-S storage providers for their NAS
products implemented with C# and C++ based distributed framework
implemented using standard networking protocols like TCP/IP and UDP/
IP.
4
C++ standard: C++03
.NET Framework version: 4.5
C# Language Version: 5
Compiler: Visual C++ and GCC (g++)
C++ runtime: msvcrt and libstdc++
OS: Windows NT and Linux
IDE and Build Tool: Visual Studio and GNU Make
Source Versioning Tool: SVN
A fast UDP/IP communication framework: In Axis Aerospace
Technologies, my very first company, I developed a framework for peerto-peer networking in C++ for establishing robust communication in the
prevailing distributed software stack.
Some of the salient features of the framework are given below.
• Multicasting UDP/IP “health” packets to peers for keeping track
of hosts going down or coming up.
• Detecting loss of UDP/IP packets and providing a duplicate
stream of UDP/IP packets on a twin interface for fault
tolerance.
C++ standard: C++03
Compiler: GNU C++
C++ runtime: libstdc++
OS: Linux 2.x (Fedora 6)
Build Tool: GNU Make
Source Versioning Tool: CVS
Experience
Nov 2020 – Present
Project Lead on contract with Government Of Karnataka.
Feb 2020 - May 2020
Senior Staff Engineer, Nference Labs, Bangalore
5
Feb 2018 - Feb 2020
Senior Staff Engineer, Spectral Insights, Bangalore
Sept 2017 - Feb 2018
Lead Engineer - I, Scientific Games, Bangalore
Aug 2015 - Sept 2017
Senior Software Engineer, McAfee Software, Bangalore
Jun 2014 – Aug 2015
Senior Software Engineer, Klaus IT Solutions (deputed to McAfee),
Bangalore
Jun 2013 – Jan 2014
Senior Software Engineer, Kanhatech Solutions, Bangalore
Feb 2013 – Jun 2013
Senior Software Engineer, Artech Information Systems (deputed to
Motorola), Bangalore
Mar 2011 – Jan 2012
Senior Software Engineer, Samartha InfoSolutions, Bangalore
Nov 2010 – Feb 2011
Software Engineer, Hewlett-Packard, Bangalore
Mar 2010 – Oct 2010
Software Engineer, Samartha InfoSolutions (deputed to HewlettPackard), Bangalore
Sep 2008 – Feb 2010
Software Engineer, Axis Aerospace & Technologies, Bangalore
Education
Bachelor Of Engineering Computer Science
University Visvesvariah College Of Engineering
Bangalore
6
1998
Certifications
Java 1.5 Programmer from Sun Microsystems
Technical
Publications
On Code Project:
https://www.codeproject.com/Articles/844687/Emulating-the-SafeNavigation-Operator-in-Csharp
Open Source
XML parser with a SAX API. https://github.com/sgurukrupa/React-xml
Programming
Forums
https://stackoverflow.com/users/175344
Personal Blog
https://sgurukrupa.wordpress.com/
References
Suhash Gerald
Senior Manager, Nference Labs-
Aparna K Mohan
Principal Scientist, Perfect Day-
7