Software Design, Development and Architecture.
10 years of professional experience designing, developing and debugging high quality robust and scalable software using C/C++/C#/STL on Windows PC/Mobile platforms.
1+ years of experience in design and development of embedded applications on Linux platform using C/C++/QT.
1+ year of experience in design and development high performance multi-threaded applications using Java.
Proficient in application design using Design Patterns and other best software engineering principles.
Specialties: Debugging/Crash Analysis, C/C++/C#/Java, Windows and Linux Platform, Implementing high performance multi threaded applications.
iOS Senior Software Engineer - iTunes Media Apps @ From July 2015 to Present (6 months) Sr. Software Engineer - iOS Data Access @ I was a senior member of the iCloud Client Engineering team and owned the design and implementation of a high performance multi-threaded application that syncs the photos and videos on iCloud with the client machine. I also implemented a fully functional native slideshow application for shared streams albums. I also co-own a widows shell extension that serves as a photo viewer and enables users to interact with their shared albums.
Responsibilities:
1) Designed and implemented a high performance multi-threaded COM server that is used to push
client action creating, adding, deleting a shared stream to iCloud and sync/reconcile changes from
iCloud onto the client machine.
2) Normalized database tables on the client to reduce redundant storage and improve performance.
3) Profiled the application and implemented fixes for memory and handle leaks leading to improved
performance and lower footprint.
4) Designed and implemented comment management for shared streams assets/albums.
5) Architected, designed and implemented a native slideshow application that also enables users to
post/add/delete comments on their shared streams albums.
Technologies/Programming Languages:
C++, COM, ATL, Windows platform, Cocoa Foundation Framework, CoreMedia, SQLite, JSON From November 2011 to July 2015 (3 years 9 months) Senior Software Development Engineer @ I was a member of the System UI [Sys UI] team on the WebOS powered phone(s) and tablet and own the design and implementation of some core components within the team.
Responsibilities:
1) Designed and architected a mechanism for third party apps to be able to create a modal version of the cards that plays well within the WebOS eco-system.
-Implemented support for resize/rotation operations and response to user gestures.
-Used QT signals and slots to design a way to set up a communication channel to notify interested parties of user operations on the modal card.
2) Designed and implemented a mechanism to implement the notification system on the tablet. Provided scrolling mechanics and building blocks to support dynamic
addition/deletion of notifications.
3) Designed and implemented a mechanism to deliver compass events from the underlying hardware layer to different top level applications.
4) Implement bug fixes, maintain and improve code around the areas mentioned above.
Technologies/Programming Languages:
Linux, C++, Nokia QT library From July 2010 to November 2011 (1 year 5 months) Software Development Engineer @ Messaging App for Windows Kin [Windows Mobile] that enables users to send and receive messages with photos and videos on a mobile device.
Responsibilities:
1) Designed, implemented and maintained a robust and scalable messaging application to send messages [MMS] with photos and videos from mobile devices.
2) Profiled MMS application to analyze and improve performance of the application.
3) Implemented unit tests for each of the components detailed above to ensure that basic functionality is never broken.
4) Actively participated in design and code reviews and provided feedback on the same.
Technologies/Programming Languages:
C#, C++, Windows CE, CEMAPI, Win32 API. From May 2005 to July 2010 (5 years 3 months) Software Development Engineer @ Windows Media Center is a component that ships with Windows Operating System that provides users a way to watch television, listen, share and view music, videos and photos on a computer or on an extender device.
Responsibilities:
1) Designed, implemented and maintained an extensibility application to listen to music within Windows Media Center.
2) Designed, implemented and maintained an extensibility layer API set to expose certain Windows Media Center APIs for external app developers.
3) Designed and implemented a Windows NT service to provide data to Windows Media Center.
4) Implemented unit tests for each of the components detailed above to ensure that basic functionality is never broken.
5) Actively participated in code reviews and provided feedback on dev design and implementation.
Technologies/Programming Languages:
C++, COM, Win 32 API, Windows Services, C# From December 2007 to August 2009 (1 year 9 months) Software Design Engineer in Test @ Client Security is an enterprise management and reporting tool to monitor the health of computers in a corporate network. Windows NT services run on the host computers and assess the state of the machines by scanning them at periodic intervals.
Responsibilities:
1) Authored, designed and implemented a test automation framework in C++ using Standard Template Library, Win32 APIs in conjunction with Model Design Tools to run BVT, functional, integration and stress tests.
2) Authored, designed and implemented tools using C++ and Windows Performance Counters to verify working set of product binaries to ensure that product code has low memory footprints.
3) Authored, designed and maintained a multithreaded library in C++ to detect a record being added to the System event log and to obtain the specifics of the event record added. This library also implemented code to deploy a policy on the client machines using IGroupPolicy interface.
Technologies/Programming Languages:
C#, C++, Win 32 API, Windows Services From May 2005 to December 2007 (2 years 8 months) Software Design Engineer @ Designed and implemented a multi-threaded software simulator for flight cockpit systems. Multiple inputs from different sources had to be processed and combined into a desired output form and sent over to the display unit which was responsible for rendering the data.
Responsibilities:
1) Designed and implemented a multi-threaded high performance module to process data from multiple sources, process it to the desired form and send it over the display unit.
2) Profiled the application and implemented performance enhancements (speed) by making design and implementation changes.
3) Implemented unit tests for each of the components detailed above to ensure that basic functionality is never broken.
4) Actively participated in code reviews and provided feedback on design and implementation.
Technologies/Programming Languages:
Java, Windows NT. From August 2004 to March 2005 (8 months)
MS, Computer Science and Engg @ Arizona State University From 2001 to 2004 BE, Bachelor of Engineering @ Bharathidasan University From 1996 to 2000 Karthik Thiagarajan is skilled in: OOP, Performance Analysis, Debugging, COM, Embedded Systems, C, C++, Java, Multithreading, Win32, Windows Services, Windows Networking, SQLite, MySQL, Cocoa