Toby E. Opferman
Skill SummaryWindows Driver Experience (WDM, VXD, WDF)
Windows Services & Applications in WIN32
In depth knowledge of Terminal Services architecture
In depth knowledge of Windows Kernel architecture
Knowledge of Windows Hyper-V internals
Working knowledge and experience with ACPI
Proficient in C
x86 Assembly (16-bit, 32-bit and 64-bit)
Excellent debugging skills - Proficient with Windows Debugger Tools (Windbg/cdb/ntsd) and ETW
Familiar with C++ and other languages
PublicationsDDJ: Sharing Memory with the Virtual Machine - Sharing memory between VMWare and the Host OS to implement multi-monitor.
DDJ: Introduction to Power Debugging - Using debugger commands in new ways to achieve various goals.
Windows Debugging Tutorial Part 1 - Introduction to CDB and NTSD.
Windows Debugging Tutorial Part 2 - The Stack and how to use it.
Windows Debugging Tutorial Part 3 - The Heap and how to use it.
Windows Debugging Tutorial Part 4 - Writing WINDBG extensions.
Windows Debugging Tutorial Part 5 - Handle Leaks.
Windows Debugging Tutorial Part 6 - Navigating The Kernel Debugger.
Windows Debugging Tutorial Part 7 - Locks and Synchronization Objects.
32 Bits on 64-Bit Processors - This was a fun article on a "what-if" scenario comparing DOS-Extenders between 16-Bit and 32-Bit to the possibility of a "Windows-Extender" from 32-Bit to 64-Bit.
Playing .WAV files - Play .WAV files using WIN32's MultiMedia API (waveOut*).
ICS 2009 - Performance Gains on Intel Multi-Core, Multi-Threaded Core i7 - Scheduling optimizations for Intel Hyper-threading technology.
Windows Driver Development Part 1 - Introduction to Drivers.
Windows Driver Development Part 2 - Introduction to Implementing IOCTLs.
Windows Driver Development Part 3 - Introduction to driver contexts.
Windows Driver Development Part 4 - Introduction to device stacks.
Windows Driver Development Part 5 - Introduction to the Transport Device Interface.
Windows Driver Development Part 6 - Introduction to XP display driver architecture.
A method and apparatus for updating a graphical display in a distributed processing environment
A method and apparatus for updating a graphical display in a distributed processing environment using compression
Robust and High Performance Instructions for System Call
Non-volatile ram disk
Systems and methods for preventing unauthorized stack pivoting
Non-volatile random access memory (nvram) as a replacement for traditional mass storage
February 2006 - Present
Senior Staff Software Engineer
Manager/Tech Lead of IOT for Windows; worked closely with Microsoft to release Windows on Galileo.
Lead of sysdebug; coordinated system power-ons for Windows bring up and worked with validation and TMEs on issues from internal and OEMs. Experience using ITP and Windbg. Supported issues which were root caused to firmware, hardware, applications, drivers and Windows OS.
Developed and prototyped scheduling optimizations for Hyper-threading. Also worked on architecture, prototyping and enabling of other various new processor ISA. This includes storage architecture, USB, memory manager, OS scheduler, idle thread/power management, device runtime D3, etc. Worked closely with the processor team to architect new instructions and features.
Developed tools which parse Event Tracing for Windows messages and post process them to provide detailed information on scheduler, interrupts and runtime issues. These tools are configurable via XML and post process ETW, generate CSV files which can be post-processed further and generate more CSV files with more detailed evaluation of the data. Solved many issues with these tools and influenced changes in various components.
Developed a suite of tools which would measure in cycles various system primitives, ISA and other low level processor related tasks. These tools are configurable using XML and post process ETW events into CSV files. Influenced changes in the processor based on evaluation of these latencies.
Wrote documentation on how to debug, taught debugging classes and other technical talks to wide audiences. Developed a rich WINDBG debug extension to facilitate debug of hard issues.
Technical lead on various research projects; work includes everything from small IOT devices, tablets, mobile, desktops and servers.Citrix Systems, Inc. - Redmond
November 2004 - February 2006
Senior Software Engineer 2
R&D of various projects related to Terminal Services. Architect on OpenGL graphics server to enhance remote delivery of 3D design applications for Boeing. This was performed in two phases including optimization of the remote display driver and network interface then moving towards hardware acceleration on the server.I worked with OEMs to implement virtual channel drivers for their devices such as Space Ball. I worked with Microsoft to present new possible architectures for Terminal Services. I pursued with Microsoft additional APIs to the existing architecture to close gaps and open new feature possibilities. Microsoft provided a source tree and I implemented/checked in around seven new APIs.Citrix Systems, Inc. - Fort Lauderdale
June 2000 - November 2004
Senior Software Engineer
Full product lifecycle from prototype, design specifications, implementation and debug. Worked on various components and projects including Client/Server using XML/HTTP for desktop integration, bi-directional audio for Terminal Services, printers, remote display drivers, winstation drivers, winlogon ginas, win32 applications, services, TWAIN scanner, etc. Full enterprise solution development and debug from application layer, network client/server, logon and driver layers.
Spent a number of years debugging user mode traps, blue screens and server farm issues using WINDBG. Limited experience with development of installation packages including MSI and Install Shield. Also worked on porting the server enterprise solution to Windows 2003 (whistler) which included many architectural changes for Terminal Services such as the object manager for sessions becoming LUID based.DiamondWare
January 2000 - April 2000
Developed a Windows WIN32 GUI application in C and a TDI VXD Client Driver for Windows 98. This VXD would communicate with low-latency audio drivers and was used to demonstrate 53ms of round trip latency from microphone to remote computer speakers then back into microphone and to the local host speakers.Private Individual
January 2000 - April 2000
Developed a Windows multi-threaded GUI application for Windows NT 4 which would take GBs of stock market data and compute information to be used in trading based on a proprietary algorithm.USx Engineers & Consultants
May 1998 - May 2000
Developed and maintained Natural 2 and CoBOL applications for pipe mills on IBM mainframe. Also developed a Windows GUI application which would read data from the serial port in a pipe mill as pipes were stamped. These serial numbers were sent to a database to be used by applications on the IBM mainframe real time in the pipe mill.
Also worked on porting I2 Factory Planning server support applications in C to various Unix machines for different steel factories. This included developing user interfaces in Power Builder on Windows as well as development of RPC code generation to generate the service framework.
Bachelor of Science in Mathematics & Computer Science
California University of Pennsylvania
Presidential Honors Award
Associates of Specialized Business & Computer Information Management
Outstanding Student Award
Perfect Attendance Award