Post Job Free
Sign in

Design Engineer

Location:
Bellevue, WA, 98007
Posted:
May 24, 2013

Contact this candidate

Resume:

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.



Contact this candidate