Curriculum Vitae

(*) The timeline is not complete and is more of an experiment.

This page contains an overview of software-related work in a CV format. For a more traditional resume with the focus on work experience, click here.

Here at the top I pulled in few more interesting projects:

GitForce - A visual front end to git

vmSim - VMWare-like simulation platform

Linice - Linux kernel level debugger (Open Source) - www.linice.com

Yaos - Yet Another Operating System

Video BIOS debugger

 

NVIDIA

Mobile Tegra Organization, Android Camera Tools Development Manager, August 2010 to Present

    Managing a team of engineers and projects to develop various tools for the Android camera, critical to SoC Tegra's success, including:
    Camera tuning tools, lens shading calibration, stereo camera calibration, conformance tests etc.

MCP Tools Development, Manager, 2007/11 to Summer 2010

    Lead a team to design and implement a cross-platform tools framework - NFTools 6
    Individual owner of the nForce System BIOS flash tool and HDCP tools

Video BIOS team, Senior Software Engineer

Wrote the Video BIOS debugger
    2001/07/12 through 2002 then supported, updated until 2007
    Designed and developed from scratch; source-level, client-server x86 debugger

Developed configuration tools for Video BIOS, Core Tools, CoreBrowser + BcfEdit
    2007/06/14 through 2007/10/26
    We had to deal with dozens of chips and configurations for various SKUs and customers totaling in 1000s of images
    Wrote a GUI tool to manage and edit configurations
    Another tool to visually manage and build images

First tool to manage Video BIOS build scripts, ScriptBrowser
    2006/10/16 through 2006/12/12
    This one satisfied immediate need to view hierarchical build scripts

Wrote a debugger for the VP (Video Processing) engine, VP Debugger

Jump-started a debugger for the VP2 engine (project canceled)

Developed HDCP tools and consolidated various other tools into a toolset, HDCP Toolkit
    2006/09/21 through 2007/07/26
    Took the ownership of the toolkit and support through the rest of 2007
    Wrote utility that generates secure upstream keys
    We had key people from various functional teams and we worked together on a process to generate and distribute keys to customers
    The process included upstream keys and manipulation of keys; creating a master key set for the Company and disaster recovery for various stages
    Consolidated all HDCP tools (BPMicro sw, checker, programmer, wrapper, splitter, upstream gen) documenting them, building etc.

Part of the initial team that developed MXM standard
    2005/01/20 through 2005/03/14 development
    Worked on the early MXM specifications
    Wrote the MXM GUI editor
    Support (updates, new features, fixes) through 2007 when another team took over the tool

Engine to index Video BIOS sources
    2003/02/04 through 2003/05/28
    We needed something like Doxygen to help people follow and understand the source
    This indexer run on the server servicing this and some other needs of the VBIOS team
    Generated cross-indexed, pretty-printed top of tree, web-browser accessible source

Compressed fonts for Video BIOS
    2002/02/14
    Developed font compression algorithm and wrote code that decompress on the fly or through POST

Video BIOS display switch utility
    2001/03/28 through 2001/05/23
    Switches displays on a multi-header devices

Stack usage for the Video BIOS
    2001/05/10 through 2001/05/23
    Worked on minimizing stack requirement of the Video BIOS code and wrote a tool to test the stack usage for each INT10 function

Protected mode interfaces for the Video BIOS
    2001/01/31 through 2001/02/27
    Cleaned up interface in BIOS and developed application that tests them

Supported various mobile OEM designs from the Video BIOS side
    2001 through 2002 - Dell
    2001 through 2006 - Toshiba
    2007 - Sony

Joined right after the bring up of the first NVIDIA mobile part (NV11M) but worked on OEM designs with it during 2001
Participated in the bringup of a second mobile part (NV17M) and then bring ups of most GPUs after that as a member of the Video BIOS team

3DFX

vmSim - VMWare-like simulation platform
    1999 - 2001
    We needed a simulation platform to run the fmodel of a future GPU. We talked to VmWare (at that time only few dozen people strong) but we could not arrange a suitable deal.

    I started a project to replicate VmWare to the extent that we needed, all from scratch. By the time 3dfx dissolved (December 2000), the vmSim was nearly complete: it could load DOS and go far through the Linux boot; it had a number of basic virtual devices. It implemented scan-before-execute to detect and translate instructions which can't be virtualized. A task bridge code clearly separated virtual machine address space from the host while maintaining virtual copies of important structures such are page tables and descriptor tables. The code was being trapped when needed and translated or implemented by the monitor code. There was a quick scanner and built-in disassembler.

    It implemented hooks to connect functional model of any device, in our case a graphics device.

    Worked on a GPU chip "Napalm" emulator

Cirrus Logic

    1995 - 1999
    Wrote 3D library for "Laguna 3D" graphics accelerator chip; this was one of the first chips having texture mapping and perspective-corrected textures.
    Wrote demo programs for Comdex and customers demonstrating the chip abilities.

    As Cirrus Logic started shutting down their graphics division, I briefly worked at their subsidiary, Crystal Semiconductors, on AC-3 audio drivers and MediaMax set-top box.

Software projects done on my own


Yaos - Yet Another Operating System
    Completely written from scratch, it features:
        Implementation of the POSIX compliant C library
        x86 kernel with pre-emptive multitasking, shared memory with copy-on-write, multitasking, scheduling, tty devices, built-in debugger, v86 mode of execution (could execute DOS in separate virtual machines) swapped by a hot-key, system calls
        It can run few flat compiled gnu utilities such are banner and calendar.

Picture Frame - This is really a software + hardware project: Picture frame made by stripping a notebook and writing custom software.

Graphics demos and libraries

Games and utility programs:

Very long time ago, on machines popular in Europe: