Amit Singh http://kernelthread.com/contact/ http://osxbook.com/contact/ [Online version: http://osxbook.com/resume/] Profile I believe in creativity, innovation, and the art of computer programming. Areas that I usually work in include operating systems (both server and desktop specializations), networking, embedded systems, and software frameworks. I am interested in both creation and marketing of technology. Experience * Manager of Macintosh Engineering 5/2006 - current Google Mountain View, CA - Doing things that Google does - MacFUSE (http://code.google.com/p/macfuse/) * Researcher 7/2003 - 5/2006 IBM Almaden Research Center San Jose, CA - Software "DRM" - "Unspoofable" secure communication in insecure environments - Autonomic security of managed network systems - Simulation of "interesting" hypothetical disk drives - Database + Data Mining + File System + Linux Kernel - Trusted Computing - Linux on the Desktop - Linux Desktop Challenge Contest - One-click migration between operating systems - Linux off (not on) the Apple iPod * Architect, Manager, Technical Leader 10/1999 - 7/2003 Ensim Corporation Sunnyvale, CA - Played roles of an Architect, a Manager, and a Technical Leader - Initiated and led large software engineering projects - Designed and implemented Operating System (Solaris, Linux) kernel extensions and components for breakthrough virtualization technology - Designed and implemented scalable and distributed web service delivery platforms and web service offerings - Designed and implemented various software licensing and security schemes - Extended Perl and Python to seamlessly support signed/encrypted scripts and modules * Member of Technical Staff 10/1998 - 10/1999 Bell Laboratories Murray Hill, NJ - Designed and implemented new techniques for Quality of Service in Operating Systems and Data Networking - Designed and implemented QoS versions of protocols like NFS, FTP, and HTTP to provide QoS through hierarchical fair share schedulers for CPU, network bandwidth, and disk I/O - Extended network protocol stacks for Quality of Service * Software Consultant 6/1998 - 10/1998 IIT Delhi New Delhi - Designed the architecture and inter-networking of various computer science laboratories in the Department of Computer Science and Engineering - Integrated computer systems from Microsoft, Sun Microsystems, Intel Corporation, Cisco Systems, and Hewlett-Packard * Systems Manager 8/1996 - 6/1998 IIT Delhi New Delhi - Managed and maintained a state of the art computing laboratory - Ensured smooth working of over 40 heterogeneous software and hardware systems * Columnist 9/1997 - 9/1998 PC World Magazine New Delhi - Wrote articles on computing technologies for PC World - Technical consultant for the magazine * Columnist 5/1997 - 9/1997 PC Quest Magazine New Delhi - Wrote articles on computing technologies for PC Quest - Technical consultant for the magazine Notable Projects Listed below are some of the projects I have worked on. Please realize that I may not be able to talk about some of these in greater detail due to the IP rights of my present and past employer(s). The list is quite out-of-date as of 2003. * A Linux/Unix Platform for Implementing and Deploying Arbitrary Web Services * A Virtualized Solaris Operating System with Quality of Service * Resource Management for Quality of Service in the Eclipse OS * Quality of Service Support for Legacy Applications * Signaled Receiver Processing * An Audit Mechanism for the Linux Kernel * Licensing and Security of Commercial Software * Automation of OS Installation * Embedded Environment Projects * Advanced Programming in the Mac OS X Environment * HanoiMania - Myriad Implementations of the Towers of Hanoi * [old] Selected School Projects Details * A Linux/Unix Platform for Implementing and Deploying Arbitrary Web Services This is a highly extensible, sophisticated system for implementing, deploying and managing web services and their APIs. I envisioned, designed and implemented this system from scratch (and led its further development later), its key components and features being the following: + Object-oriented Plug-in Architecture: The system is modular where new services can be plugged-in. The plug-ins themselves are dynamically loaded in a fine grained manner. + Enterprise Database Support: A database abstraction layer makes the system capable to use most of the major databases. The database to use is selected through a single (global) setting. Configurations for IBM DB2, Oracle and Postgres were bundled. + Platform Independence: The system is implemented entirely in Perl, and capable of functioning fully with no use of platform dependent features of the language. + XML API: The system's API is exported in XML. The system allows easy definition of web service APIs through powerful XML libraries built on top of a DOM parser. The various APIs are exported through one or more of the following mechanisms: raw XML over SSH connections, XML-RPC over HTTP/HTTPS and SOAP. + Error Subsystem: The exception based error subsystem collects all errors encountered along with extensive context information and is capable of reporting the information in a detailed debugger-style stack-trace, presented as one or more of the following: pre-formatted text, XML (for parsing by a GUI, say) and pre-formatted HTML (for inclusion by a GUI, say). + The Registry: This is a module consisting of a configuration and settings manager, and an extensible validation library. This provides a flexible way to store, retrieve and validate arbitrary complicated data. The validation library can perform various kinds of checks on arbitrary typed data (like, "email address list", "list of FQDNs", etc.). The module employs shared memory for better performance and scalability on systems that support System V IPC. + The Auth Module: This module provides various (centralized) methods of authorizing and authenticating requests. + Internationalization Support: All messages in the system are internationalized. + Black Box Clients: The system provides black box clients on various platforms (Linux, Solaris, Windows 2000 etc.) for the APIs it exports. These clients are self-contained, and stream XML over stdio. * A Virtualized Solaris Operating System with Quality of Service I created (researched, designed and implemented) a "virtualized" version of Sun's Solaris operating system. The idea is to divide the OS into multiple virtual environments where each virtual OS is capable of running arbitrarily complicated existing applications (the Oracle database server, for example, as it exercises most components of the operating system) unmodified, with Quality of Service and in complete isolation from applications on other virtual OS instances on the same "real" machine. Note that this was achieved without ever having seen the source code for Solaris, which is proprietary to Sun. Specific virtualization components include: + Virtualized system calls + Virtualized uid 0 + Fair share network scheduler + Per-virtual OS resource limits on memory, CPU and link + Virtual sockets and TLI + Virtual IP address space + Virtual disk driver and enhanced VFS + Virtual System V IPC layer + Virtual /dev/kmem + Virtual /proc filesystem + Virtual syslog facility + Virtual device filesystem + Overall system management layer * Resource Management for Quality of Service in a Custom Operating System Resource Management for Quality of Service in a custom Operating System derived from FreeBSD. This included work on CPU, network and disk schedulers, a file system based resource management API, and a resource management layer to provide seamless quality of service to legacy applications. * Quality of Service Support for Legacy Applications While working on a FreeBSD derived Operating System with Quality of Service, I extended various protocols like NFS, WWW and FTP to incorporate QoS. This was done in such a way that legacy user applications could benefit from QoS without having to be modified in any way. * Signaled Receiver Processing Protocol processing of received packets in BSD Unix is interrupt driven and may cause scheduling anomalies that are unacceptable in systems that provide quality of service (QoS) guarantees. I worked on an alternate mechanism, Signaled Receiver Processing (SRP), that generates a signal to the receiving process when a packet arrives. The default action of this signal is to perform protocol processing asynchronously. However, a receiving process may catch, block or ignore the signal and defer protocol processing until a subsequent receive call. In any case, protocol processing occurs in the context of the receiving process and is correctly charged. Therefore, SRP allows the system to enforce and honor QoS guarantees. * An Audit Mechanism for the Linux Kernel I designed and implemented a dynamically loadable system call audit mechanism for the Linux kernel using which it is possible to define arbitrary context sensitive operations upon a system call execution. For example, a set of system calls can be denied to certain users. Arbitrary system time can be returned to specific applications (for testing time related bugs, say, like the erstwhile Y2K). It is also possible to associate the execution of certain user level programs (in a secure way) when certain actions occur. For example, users can associate passwords with files, etc. * Licensing and Security of Commercial Software I researched and designed ways to secure commercial software and their licensing schemes. * Automation of OS installation I extended the "kick-start" installation procedure of Red Hat Linux to support more installation methods, and to further simplify it. I designed a hands-off installation scheme for x86 systems wherein certain boot code can be placed in the PROM of the network card, and upon booting, the user is given the option of either installing an OS on the computer, run a minimal OS in RAM, or boot entirely off the network and use an NFS file system. * Embedded Software I created software for various embedded environments, particularly as part of the Towers of Hanoi project. The environments include the Sega Dreamcast Game Console, the Nintendo Gameboy Advance Handheld System and the RioCar MP3 Player. My other related experiments include running TCP/IP over Infra-red and populating a Debian Linux distribution on an ARM based embedded system. * HanoiMania I created myriad implementations of the Towers of Hanoi. Consider the Hanoi OS: a bootable operating system for the x86 that solves the Hanoi puzzle as its primary task. There are implementations that run on embedded systems, such as an animated Hanoi for the Sega Dreamcast game console, one for the Nintendo Gameboy Advance handheld and one for a car MP3 player. One sends you Hanoi moves as ICMP echo sequence numbers when you ping it, and there are many different programming language implementations. Please go to the following URL for details: http://kernelthread.com/hanoi/ Book * Mac OS X Internals (http://www.oxbook.com/) Publications Papers * Signaled Receiver Processing Jose Brustoloni, Eran Gabber, Abraham Silberschatz and Amit Singh USENIX Annual Technical Conference San Diego, California, June 2000 * Resource Management for QoS in Eclipse/BSD Blanquer, Bruno, Gabber, McShea, Özden, Silberschatz and Singh Proceedings of the FreeBSD Conference Berkeley, California, October 1999 * Quality of Service Support for Legacy Applications Jose Brustoloni, Eran Gabber, Abraham Silberschatz and Amit Singh NOSSDAV '99, NJ, 1999 * *nix Mischiefs: The New Frontiers Amit Singh Aberration in behavior is inescapable for almost any entity capable of behaving. Computers are particularly prone to misbehaving. It has been discussed aplenty that software misbehavior is an inherent aspect of the stored-program concept. A widely held belief is that while Microsoft systems are excessively prone to malicious programs (especially viruses) wreaking havoc, UNIX and derived systems are not. People have tried to refute this claim, and several Un*x viruses have been "created". This paper evaluates some of these claims and their counter claims. Furthermore, it attempts a broad look at the kind of "mischiefs" (methodologies of making software misbehave) more than a quarter century of UNIX has led to. No attempt is made to classify malicious code into categories like viruses, worms, trojans etc., for which extensive documentation exists. Slashdotted Publications * Understanding Apple's Binary Protection in Mac OS X Slashdot, October 30, 2006 http://osxbook.com/book/bonus/chapter7/binaryprotection/ * A New Screen of Death for Mac OS X Slashdot, September 12, 2006 http://osxbook.com/book/bonus/chapter5/panic/ * A Technical History of Apple's Operating Systems Slashdot, July 25, 2006 http://osxbook.com/book/bonus/chapter1/ * Experimenting with Light on Apple Notebook Computers Slashdot, June 19, 2006 http://osxbook.com/book/bonus/chapter10/light/ * A Tour of the Mac OS X Kernel Slashdot, July 6, 2005 http://kernelthread.com/publications/osxkernel/osxkernel.swf * The Construction Of Panpipes Slashdot, April 13, 2005 http://kernelthread.com/mac/challenge/construction.html * The Apple Motion Sensor As A Human Interface Device Slashdot, March 21, 2005 http://kernelthread.com/software/ams2hid/ * The PowerBook Sudden Motion Sensor Slashdot, March 3, 2005 http://kernelthread.com/software/ams/ * UNIX(R) on the Game Boy Advance Slashdot, September 8, 2004 http://kernelthread.com/publications/gbaunix/ * A Taste of Computer Security Slashdot, July 29, 2004 http://kernelthread.com/publications/security/ * More Power to Firmware Slashdot, June 17, 2004 http://kernelthread.com/publications/firmware/ * Making an Operating System Faster Slashdot, June 3, 2004 http://kernelthread.com/mac/apme/optimizations/ * Fragmentation in HFS Plus Volumes Slashdot, May 19, 2004 http://kernelthread.com/mac/apme/fragmentation/ * A History of Apple's Operating Systems Slashdot, March 5, 2004 http://kernelthread.com/mac/oshistory/ * An Introduction to Virtualization Slashdot, Februrary 5, 2004 http://kernelthread.com/publications/virtualization/ * What is Mac OS X? Slashdot, January 7, 2004 http://kernelthread.com/mac/osx/ * Many Systems on a PowerBook Slashdot, December 14, 2003 http://kernelthread.com/mac/vpc/ * 108 Implementations of Towers of Hanoi Slashdot, December 8, 2003 http://kernelthread.com/hanoi/ Articles * Mac OS X Enigma, Issue 7, Yorkshire MUG, United Kingdom, January 2004. * Towering Inferno PC World, pp. 104-114, February 1999 An introduction to Lucent Technologies' Inferno Operating System. * Emulating Console Games and Game Consoles PC World, pp. 96-99, September 1998 A digression on software emulation of game consoles. * The Ever Changing Face of Computing PC World, pp. 52-77, December 1997 Cover story: A brief history of computing, and an attempt to approximate software and hardware trends in certain areas of computing in the near future. * Untangling the Web: Pushing, Pulling and More ... PC World, pp. 104-111, November 1997 A discussion of some WWW technologies, with focus on popular mechanisms for supporting dynamic web objects on the Internet. * The Ultimate Guide to Setting Up a Multi-Boot PC PC World, pp. 88-97, October 1997 Effective use of boot managers and other such software for convenient simultaneous residence of several UNIX-like operating systems on a PC, along with systems like Windows NT, Windows 95 and MS-DOS. * Computer Industry Scenario In India: Comments Weekly ASCII, Japan, pp. 24, September 22, 1997 * Operating Systems: Then, Now and Tomorrow PC World, pp. 44-50, September 1997 Reflections on design and implementation issues of Operating Systems in various contexts, switching in time. * A Guide to Tweaking Your Linux System PC Quest, pp. 91-94, September 1997 Guidelines for effective system configuration and other hints for getting more out of a Unix-like system on real-life hardware. * Knowing Too Many Programming Languages, and the 5 Language Programming Trick PC Quest, pp. 167-169, August 1997 A light-hearted digression on the need for, and the repercussions of knowing too many programming languages. The trick refers to a piece of code representing the ubiquitous "Hello World" program whose syntactic structure is such that it is valid code for C, DOS Assembly, FORTRAN, Unix shell and Perl. The program outputs the same string ("Hello, World!") upon execution in all cases. * GUI Development Under Linux PC Quest, pp. 30-32, July 1997 An exploration of some key toolkits and systems for developing graphical user interfaces on a Unix or Unix-like platform. * Emulating Microsoft Windows in Linux: WINE PC Quest, pp. 120-123, June 1997 A critique of WINE, an open source Windows API emulator with programming support. * Emulating Microsoft DOS in Linux: DOSEMU PC Quest, pp. 98-101, May 1997 A critique of DOSEMU, an open source DOS emulator that runs on Linux and NetBSD. Please refer to the following URL for further details: http://kernelthread.com/publications/ Software Environments/Programming Languages Please refer to the following URLs for a list of operating systems and programming languages I have various levels of experience with: http://kernelthread.com/os/ http://kernelthread.com/hanoi/ Patents filed/received * Assured Execution Environment * Signaled Receiver Processing * Methods And Apparatus For Providing Quality Of Service For Legacy Applications * Virtualizing Port Addresses For Non-Conflicting Use By Multiple Virtual Processes Awards/Rewards * Received the Grand Prize at the Hewlett-Packard National (United States and Canada) Information Systems Professionals Appreciation Day, New York City, 1999 * Recived a reward check from Professor Donald Knuth Selected Lectures and Talks * MacFUSE May 2007, Open Source @ Google Speaker Series, Mountain View * Taming Mac OS X File Systems January 2007, Macworld, San Francisco * Software Protection and the TPM--The Mac OS X Story December 2006, Berlin, Germany * A Journey to the Center of Mac OS X August 2006, Apple Store, San Francisco * Mac OS X Internals July 2006, Apple Campus, Cupertino * Operating System Design Techniques May 2006, Indian Institute of Technology, New Delhi * Mac OS X Internals: The Book February 2006, Google * The Mac OS X Kernel May 2005, National Security Agency, Fort Meade, Maryland * Mac OS X April 2004, Indian Institute of Technology, New Delhi * Innovation for Fun and Profit April 2004, Indian Institute of Technology, New Delhi * Virtualized Operating Systems November 2002, Indian Institute of Technology, New Delhi * Un*x Mischiefs: The New Frontiers January 2000, Indian Institute of Technology, New Delhi * LaudIt: Playing With System Calls on Linux O'Reilly Open Source Conference, 1999, Monterey, California Education Bachelors Degree (Computer Science) Indian Institute of Technology (IIT), New Delhi