Dhananjay Joshi
**** ******* ****** *** ***. Santa Clara CA 95050. Phone 716-***-****.
Email: *******@*****.***
Summary
. More than 6 years experience in developing interactive and real-time
desktop applications
. Proven track record of getting things done on time. Versatile programming
background.
. Systematic approach to problem solving. Reuse existing solutions.
Innovate if necessary.
. Able to rapidly contribute to a software project already in an advanced
stage
Objective
Seeking a Lead or Senior role in software development where my extensive
experience in desktop application development can be leveraged effectively
Tools and Technologies
Paradigms OOP, Multi-Threading, Multi-Core
Languages C#, .NET, C++, STL, XML
3D Graphics OpenGL, DirectX
UI WPF, MFC
Database SQL, Access, DAO
Scientific FEM, Robotics, CV, Encryption,
Peripherals USB, PCI, Serial
Installers Installshield, MSI
Tools Subversion, Trac, UML
OS Windows, Linux
Scripting VBScript, Python
Experience
Lead SW Engineer Immersion Corp, San Jose, CA 6/2009 - Present
. Successfully led the localization of three applications into three
additional languages each. Each application had multiple gigabytes of
video content. I designed and developed the pipeline for the translation
using a combination of an open source sub-texting program and VBScript
and Batch files for automation
. Spearheaded the development of the UI utilizing WPF and the latest UX
guidelines. The main challenge was tracking features in real-time video
stream and augmenting it with additional information overlay. Following
the principles of separation in WPF, the UI was predominantly Data-
Binding driven. Extended the rendering of certain controls using High
Level DirectX Shading.
Simulation SW Engineer Immersion Medical, 7/2006- 6/2009
Gaithersburg, MD
. Integrated various PCI, USB and Serial peripherals for user inputs in
medical simulator. Utilized a device-abstraction layer to address various
devices in a consistent fashion. Also designed various control system
algorithms like PID and friction compensation for improving the user
experience of the hardware peripherals.
. Implemented various algorithms like FEM and geometric collision detection
for virtual object dynamics. Using a mathematical model to approximate
the physical behavior of various objects, the algorithms were used to
simulate a realistic behavior in the simulator.
. Designed key components of the C#.NET front-end for the core simulation
engine written in native C++.
Virtual Environment Immersion Medical, 9/2003 - 7/2006
Programmer Gaithersburg, MD
. Developed photo-realistic effects for medical simulators. These effects
added a visual realism eliciting a 'wow' response from users. The bubbles
effect, simulating the air bubbles in fluids, was implemented using a
vertex shader and register combiner. The bleeding effect, to simulate
internal bleeding in the body, was developed using a simplified navier-
stokes solver for interactive behavior.
. Reduced the compilation time of application software from twenty minutes
to less than five minutes by using pre-compiled headers effectively. This
substantially saved developer time. Also setup the solution to use static
linking yielding significant more savings in developer idle time.
. Automated the build process for application software and deployment
packages, using a combination of Visual Build, Batch Scripting and VB
Scripting. Essentially the tool-set downloads the code from the source
repository on an integration machine. Builds the software with all the
resources and then creates the deployment packages as well as writes the
packages to media. The tool-set is used with all the software products at
company.
Graduate Research VR Lab, SUNY at Buffalo 9/2000 - 9/2003
Assistant
. Performed fundamental research in the field of Haptics. Created a
framework for communication of tactile sensation for remote re-
experience. The communication packages were tunneled through a TCP-IP
pipe to the client.
. Identified the protocol of a RS232 device using a serial port packet
sniffer. Then re-created the protocol using Win32 library to communicate
with device.
Highlight Projects
Endovascular Simulation
. Wrote the framework to duplicate the state of the simulation solver using
copy-construction. This elegant solution allowed extension of the solver
code with minimal side-effects to existing
. Devised a method to identify the location of the virtual objects in the
simulated world by tagging certain items with relevant metadata. This
method allowed representing the behavior expected in terms of the
metadata.
. Implemented a method to setup break points programmatically. Used a
memory-mapped file to enable IPC between two applications.
Application Database
. Wrote C++ library to allow easy collection of run-time evaluation
information from components distributed throughout the code base. The C++
Library stores the information in a SQL database. The values are then
queried by the C# front-end and presented as HTML.
Desktop Video Capture
. Implemented video capture of simulation run by copying frames from the
OpenGL frame buffer. The frames are compressed to AVI using MPEG4 codec.
Future Simulation Architecture
. Designed and developed a proof of concept C++ architecture ready for
multi-core processors.
. Harnessed thread-pool, CPU affinity and task phase concept for
concurrency of processing
Hardware Emulator
. Using a device abstraction layer, implemented a device emulator using
Windows Dialog Box controls. Buttons were used to simulate analog buttons
and sliders were used to simulate analog hardware channels. The dialog
boxes were completely script driven using Dialog Templates
. Extended the emulation of input devices to use completely virtual devices
using string commands
Interactive USB Peripheral
. Integrated embedded microcontroller DAQ board communicating with the Host
PC. The DAQ board communicates using Isochronous USB. Wrote Command-
Response architecture that abstracts the actual byte-wise communication
with device.
Service-Mediated USB Peripheral
. Integrated embedded microcontroller DAQ board communicating with the Host
PC. The DAQ board communicates using USB-UART. Implemented UART using
generic Bulk USB protocol. Also created a Windows service that performs
device handshaking and communication.
Pseudo-XML Editor Application
. Created an editor application for proprietary pseudo-xml configuration
files. The application uses a .NET Tree control and panel to allow
editing the configuration files.
FullSolutionPath -VS Addin
. Wrote Add-In for visual studio allows the display of the full solution
path of the solution being worked on currently. This is very useful when
you are working on multiple solutions with the same name, as might happen
when working with branches.
Windows-RAWINPUT
. Created a library that intercepts the RAWINPUT messages of desktop mice.
This allows the use of 2 mouse input devices.
Module Deployment Framework
. Developed an internet ready MSI based framework for module deployment.
The dependencies between various modules are specified and processed
using a client application.
Qualification
Master of Science, Courses: Computer Graphics, High
Systems And Design Performance Computing, Finite Element
Engineering Analysis, Digital Control Systems,
University at Buffalo, June Virtual Reality Systems. Numerical
2003 Methods. Kinematics. Mechanics. Machine
GPA: 3.66 Design
Honors and Achievements
. 'Best Technical Paper' award at the 2003 ASME IMECE Conference
. Multiple US and European filed patents