Ganesh A Hegde

Ganesh A Hegde

$15/hr
Software Development, Training and Writing articles
Reply rate:
-
Availability:
Full-time (40 hrs/wk)
Location:
Bangalore, Karnataka, India
Experience:
12 years
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
Get your freelancer profile up and running. View the step by step guide to set up a freelancer profile so you can land your dream job.