Resume
Jayawanth Bharadwaj **** NE **th St
Email: ***********@*******.*** Yarrow Point WA 98004
Phone: 425-***-****
Citizenship: USA
Education:
Sept - Dec 2012 - Software as a Service (SaaS) courses, UC Berkeley,
on edX
(Engineering Long Lasting Software: An Agile Approach, by Armando Fox &
David Patterson)
. SaaS I, Score 93%, Topics covered - SOA and Cloud Computing,
Introduction to Ruby, Saas Architecture, Introduction to Rails, Basic
Rails, Behavior Driven Design, Test Driven Design
. SaaS II, Score - 95%, Topics covered - Advanced Rails, Advanced
Associations, Managing Legacy code, Team work, Git version control,
Design Patterns & SOLID, Javascript, Deployment and Monitoring
Performance and Security
. Course Projects - about 6 assignments using Ruby on Rails framework
. Rails 3.1+, Cucumber, RSpec and Git on Linux in a VM on Windows.
1985-87 - M.S. in Computer Science, May '87, GPA 4.0, University of
Arizona, Tucson, AZ.
1980-85 - B. S. in Computer Science and Engineering, April '85, IIT
Bombay, India.
Work Experience:
Community Work:
2002-2012, 10+ years of volunteering, community initiatives in Bangalore,
India.
Areas - Water supply and demand management, Rainwater harvesting, Sewage
treatment, Waste water reuse, Ground water management, Waste management
(wet waste composting, recycling), Indigenous Agriculture, small farmers
co-operative, sustainable agriculture.
Professional Work:
1987-1999, Software Design Engineer and Technical Lead at Microsoft
Corp. Redmond, WA
1985-87, Teaching and Research Assistant at University of Arizona,
Tucson
Jan 2013 - Present
. Community TA for Saas courses on edX in Jan 2013 and March 2013
. Currently writing a Ruby on Rails based community portal for our
community
Background:
I worked at Microsoft from 1987-1999. During the last decade, I have
volunteered in various areas - see Community Work summary above. My
children are moving back to US for college and I would like to get back
into software development.
I recently completed SaaS courses and I enjoy programming in Ruby. I am
fascinated by the power of Ruby language as demonstrated through the
excellent Rails framework. The tools for development, automated testing are
of high quality in this ecosystem which makes the entire process enjoyable
and highly productive, while resulting in beautiful maintainable code.
If a similar environment exists where there is a strong emphasis on
elegant, quality software development in C or C++ I would like to explore
those opporunities too.
References available on request for Community Work or Microsoft managers
Professional background
Summary
Jan 2013 - Present
. Community TA for Saas courses on edX in Jan 2013 and March 2013
. Currently writing a Ruby on Rails based community portal for our
community
Sept 2012-Dec 2012: SaaS Courses I & II, UC Berkeley online course on edX
1987-1999: 12 years Software Design Engineer, Technical Lead at Microsoft
Corporation, Redmond, WA
1985-1987: 2 years Teaching/Research Assistant at University of Arizona,
Tucson
Skills:
Ruby on Rails framework, Git version control, Rspec and Cucumber for
automated testing, BDD & TDD
Strong Software Design, Development, Scheduling and Management skills, User
interface design skills.
14 years of C development, 10 years of Windows development
8 years of C++, Object oriented design and development
4 years of COM, Ole and NT development.
2 year of VC++, MFC, Ole Controls, Win 95.
2 Years of HTML, ISAPI Applications
Strong skills in driving software projects with very little details to firm
specifications, prototyping to ensure solutions to the difficult parts of
the project while laying a strong foundation through sound and thorough
design, incremental updates to the initial version so that there is always
a working version available, to evaluate current progress and estimate
schedules and deliverables.
Projects at Microsoft, Redmond WA
Oct 97 to Mar 99, Microsoft Research, Special Projects Group
Prototypes for paperless office: Triggered Scanning interface, OCR scanned
documents for indexing, multi-threaded background indexing, searching and
retrieving.
Jun 96 to Sept 97, Web based Patent Explorer, Special Projects Group
Technical Lead for web based ISAPI application for searching 10 million
patent documents
Single handedly drove the user interface design, software architecture
design and initial version of the application.
Managed development of the final version with additional resources
(remotely located).
Skills: VC++, ISAPI, MFC and extending MFC's ISAPI, Multi-threaded
programming, Strong UI design skills, Project management and coordination
with remote resources(one in Canada and one in England).
Feb 95 to Jun 96, Special Projects - Patents Search
Technical Lead for Patent search Client/Server application
Designed the architecture and user interface for a Client/Server
application. It searches a large text database of patents using OpenText
servers on NT. It allows Patent browsing, querying and retrieval.
Architecture: The application extends the MFC document/view architecture to
allow multiple views on a Query session. The Query View manages the user
interface for building queries. The Result View manages the result list of
patents. An Abstract/Text/Image/Citations View provides different views on
the current patent. A Layout View manages layout of the above views using
splitters and tab controls.
Query View: The Simple mode allows dynamic addition and deletion of query
fields from a Fields Palette. The list of available fields in the palette
is user configurable. The Advanced mode provides simple intuitive keyboard
interface for typing in complex nested Boolean expressions using OpenText
operators. At each step it prompts with default Query field or operator.
The user can either accept the default or change it easily, using context
menu or by cycling through the available choices using hot keys. At no
point is the user forced to use the mouse.
Results View: It displays query results in a table format using a multi-
line owner draw List control. The columns in the view and the number of
lines in a row are user configurable. The results can be sorted on a
particular column. It can also be exported to Excel.
Patent View: Several views are available on the current patent. The
Abstract View displays the abstract along with a few other fields. The Text
View displays the text of the patent in a format similar to the original
printed paper document. The Image View embeds Wang's Image OCX to display
the image of the patent. The Citations view for a patent, displays patents
it cites and the other patents that cite it. It allows browsing(walking up
and down) the citations hierarchy. The Citations browsing session allows
more detailed browsing of the citations hierarchy.
Layout View: It allows the user to create at most 3 panes using splitters.
Each pane can contain a tab control which presents a group of views. The
user is free to assign any view to any tab control. e.g. The Query and
Result view can have a pane of their own. The third pane can display the
current patent in one of four available views.
The first revision of the prototype product had an incorrect design which
lead to a poor user interface and posed serious problems while trying to
add enhancements. I was not only able to correct the fundamental design but
also take it forward in several respects. It lead to better user interface,
better performance,
smaller size, better quality code which was easier to maintain and enhance.
I had to manage a summer intern, 2 contractors(one remote, in Canada) and
one developer at Microsoft. I had a coding standards document to ensure
uniformity of code, error handling and reporting across the project.
Skills: VC++, MFC and extending MFC doc/view architecture, Strong UI design
skills, Project management.
Jan 93 to Jan 95, Microsoft - Member of Ole based Shell Design team
Participated actively in the Ole based shell design (Win 95 UI prototype)
Designed and developed a multi-threaded Explorer with embedded Ole controls
for Scope pane, Result pane and Query pane. The Explorer was designed to
accommodate browsing and querying any information source. e.g. File system,
Mail store, OFS volumes, systems administration objects hierarchy etc. I
designed the Ole style interfaces for the replaceable/extensible component
controls. It allows menu negotiation, toolbar negotiation, view state
persistence.
The Explorer could be launched in Folder mode or Explore mode. The Explorer
could be launched as an in process Ole server or as an out of process
server. The process and threading model for the Explorer Ole server
underwent several changes. The code was well designed to adapt to the
different requirements - one process per instance (single/multi-threaded
versions), one process per desktop and separate thread for each instance
etc. The Explorer could be docked/undocked to/from the Tray on the desktop
which supports docking of any Ole control. The Explorer object supported
Ole automation properties and methods for customized launch of certain
folders. This helped generation of stress tests for the Explorer on
different folders.
Generated performance numbers for Explorer launch. Implemented lazy
creation of panes, optimal painting of splitter panes to minimize repaints,
single splitter control instead of embedded splitters.
Skills: C++, Windows, COM and Ole, NT process/threading model, Ole style
interface design
Oct 91 to Dec 92, Microsoft
Member of the NT Cairo Shell Design team
This project forked off at some point to become the Win 95 user interface.
This was an object oriented shell for the next version of Windows but the
object model was not Ole. I wrote a Win 4.0 specific Cardfile application
using property sheets, Tab control and List control supporting user
configurable tabs, sorting and drag/drop to folders and other cardfiles.
Added several features and speed enhancements to the Explorer. Initially
the Explorer and the desktop were all running in the same address space.
Since the Explorer can contain replaceable components I created a separate
Explorer server process which could launch different instances on a
separate thread. A common code base was used to open Folders, launch
Explorers on information sources or invoke the system Find dialog. The
desktop could restart the Explorer server even if it crashed executing
some third party code.
Analyzed Shell memory requirements. Wrote AWK scripts for filtering output
of DH (Dump Heap) and VADUMP (Virtual address dump) to produce readable
short summary of shell memory usage and leaks by component.
Skills: C++, Windows, Ole and Cairo Object model, NT process/threading
model.
May 90 to Oct 91, Microsoft
Member of the Windows 3.1 Development team (SDK and Applications)
Developed a Resource management library for examining and editing resources
from .RES file or .EXEs.
Rewrote HeapWalk for Windows 3.1 to use ToolHelp.dll
Rewrote Performance analyzer which locates hot spots in a Windows
application. It matches CS:IP samples with the symbolic information to
produce the timings for different portions of a Windows program. Removed
limitations on the size of the application, the number of symbols contained
in it and the size of the CS:IP sample data.
Maintenance of Windows applications Cardfile, Paintbrush.
Ole 1.0 support in Paintbrush and Cardfile.
Skills: C, Windows programming, Ole 1.0
Sept 87 to May 90, Microsoft
Member of the Win 3.0 and Win 2.1 Development team
DOS display support and virtual display drivers for Win 386.
Windows Setup.
Skills: Intel 32 bit assembly language and C programming
Aug 85 to May 87, University of Arizona, Tucson
Worked as a Teaching and Research Assistant
Research and Academic projects:
Software tools
. Unix string search utility - fgrep
. A stream editor - sed
. A screen editor in C, CED a screen editor for editing and compiling C
programs.
Kernel and Support level for a Multi-user OS for CHIP, a machine emulator
The kernel provides primitives for low level process creation/destruction
and synchronization - Fork, Join, Quit, Semaphore support. It also does the
prioritized CPU scheduling with time slicing, simple deadlock detection,
timer and input/output Interrupt handlers.
The next level in the OS, the support level, has several concurrent
processes to manage Terminal and Disk I/O. It uses the primitives provided
by the kernel to implement Terminal I/O, Disk I/O, better Inter process
communication using Mailboxes with Create, Send/Receive, CondRecv
operations and Sleep facility.
Concurrent programming project
SR is a distributed programming language developed at the University of
Arizona. It supports multiple processes on several machines on an Ethernet.
It also provides a rich set of inter-process communication primitives. An
Automated Teller system was implemented in SR using a separate process for
each teller machine and a separate process for managing accounts database.
Operations include deposits, withdrawals, queries and privileged operations
like adding/deleting and modifying account records.
A Compiler for a subset of C in C
Top down recursive descent compiler for a subset of C written in C. It
included Lexical analysis, syntactic analysis and Semantic analysis, Error
reporting, and VAX-11 assembly code generation.
A transparent forwarding mechanism for relocated servers:
Services on the Internet are implemented using the TCP. The UNIX kernel was
modified to incorporate a forwarding mechanism in the TCP. When servers are
shifted from one machine to another, the clients can continue to send
requests to the old server since the TCP is now capable of forwarding
requests to the new server location. The replies from the new server go
directly to the client and hence the response time is still reasonable.