Thursday, October 10, 2024 | Toby Opferman
 

Toby E. Opferman



codeproject(at)opferman(dot)com
http://www.opferman.com

Summary

26 years working with Windows and knowledge of Windows Internals, lots of experience in various areas of operating systems including drivers, memory management, scheduling, state management, hypervisor, remote/terminal services, boot, services, and other areas. Strong debugging skills in windows debugger, CDB and NTSD with development skills with C and x86 Assembly languages. Experience developing architectural interfaces between software and hardware as well as developing software stacks for various use cases. Experience in other areas such as reverse engineering and application manipulation.

Managed technical teams for 9 years as a direct people manager as well as in a director position. Provide mentoring in soft and technical skills, presented and trained classes in various topics such as Windows Debugging.

Skills Brief

Expert in Windows Debugging Kernel and user mode
Applications, Drivers and OS Development
Knowledge in Windows Kernel Architecture, Terminal Services, Hypervisor
In depth knowledge of Windows Kernel architecture

Publications

DDJ: 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.

Patents Granted


US20210019260A1 - Multiple virtual numa domains within a single numa domain via operating system interface tables [Issued May 21, 2024]
US20210245046A1 - System architecture for cloud gaming [Issued Apr 16, 2024]
US11461098B2 - Apparatuses, methods, and systems for instructions for operating system transparent instruction state management of new instructions for application threads [Issued Oct 4, 2022]
US11409572B2 - Methods of hardware and software coordinated opt-in to advanced features on hetero ISA platforms [Issued Aug 9, 2022]
US11055094B2 - Heterogeneous CPUID spoofing for remote processors [Issued Jul 6, 2021]
US20190042258 - Processor Core Supporting A Heterogeneous System Instruction Set Architecture [Issued Mar 16, 2021]
US20200104128 - Spoofing A Processor Identification Instruction [Issued Dec 29, 2020]
US20190354487 - Physical Page Tracking For Handling Overcommitted Memory [Issued Aug 4, 2020]
US9529708B2 - Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software [Issued Dec 27, 2016]
US9524227B2 - Apparatuses and methods for generating a suppressed address trace [Issued Dec 20, 2016]
US9239801B2 - Systems and methods for preventing unauthorized stack pivoting [Issued Jan 19, 2016]
US9207940B2 - Robust and High Performance Instructions for System Call [Issued Dec 8, 2015]
US8423673B2 - Method and apparatus for updating a graphical display in a distributed processing environment using compression [Issued Apr 16, 2013]
US8171169B2 - Method and apparatus for updating a graphical display in a distributed processing environment [Issued May 1, 2012]
US20140013045A1 - Non-volatile ram disk [Issued Dec 29, 2011]

Patents Pending


20240126599 - Methods And Apparatus To Manage Workloads For An Operating System
20240103869 - Fast Segmentation
US20240143513A1 - Apparatus and method for switching between page table types
US20230091167A1 - Core-based speculative page fault list
US20210342213A1 - Processing Device, Control Unit, Electronic Device, Method and Computer Program
US20220262427A1 - Memory power management method and apparatus

Experience


Intel Corporation
January 2023 - Present
Senior Principal Engineer Core OS/ISA Architect - Client Team

Architect for Core OS/ISA in Windows OS Client team. Responsible for mentoring, debugging and developing / evaluating architecture. Examples include writing SDM and Technical White papers, releasing CPUID Topology Enumeration open source code, evaluating and contributing to X86S specification, among other technologies. Continue to also evaluate and work through server issues such as scheduling and NUMA topologies.

Intel Corporation
March 2020 - January 2023
Senior Principal Engineer - MTC Architecture Team

Core OS and ISA Architect responsible for evaluating, researching and developing new technologies and architecture in the area of Core OS components and ISA.

Intel Corporation
May 2019 - April 2021
Principal Engineer / Senior Principal Engineer

Concurrent role of cofounder for a cloud incubation project which became "Endgame". Developed the initial POC, architected and developed the core components which interacted with the games and hired a senior engineer to work on the project. Developer, architect and manager of one senior developer within this project as a part time endevour, development included application binaries and drivers.

Provided technical guidance, validated and debugged issues with the project. Worked to plan building the maturity of the core architecture and various components.

Intel Corporation
February 2019 - March 2020
Principal Engineer and Director Windows OS Core

Director and technical lead/architecture for ISA/Core OS Technologies.

Mentored engineer to take management position of ISA/Debug/Core OS team as I changed to Director of Core OS Technologies which included three subteams of ISA/Debug/Core OS, Memory Management and Storage for an organization of 30 people. Worked through various research technologies in the areas of memory, scheduler and ISA. Technical lead on several research projects at this time. Responsible for OS/ISA architecture, planning, managing issues within the team and people management, building moral and team building, being available to provide pass downs and answer any questions on any work items or anything else as well as working with HR. Responsible for hiring and yearly raises, etc.

Intel Corporation
April 2016 - February 2019
Principal Engineer and Manager ISA/Core OS Team

Manager and Lead of ISA and Core OS. Worked on persistent memory and DAX file systems, 2LM as well as investigated several other memory technologies. Worked on ISA and CPUID evaluations for Hybrid architecture and continued on work from previous job with the exception of IOT. Worked on SDM changes and development of CPUID.1FH as well as other various projects including Intel Processor Trace POCs and evaluations.

Intel Corporation
April 2010 - April 2016
Sr. Staff Software Engineer and Manager IOT, Debug & ISA Team

Manager and technical lead of the IOT/Debug and ISA team. Worked closely with Microsoft on development of an IOT version of Windows and our team developed and built the components to create the Windows on Galileo demo download. Lead critical debug issues on hardware/software from internal and external requests. Researched projects including IOT devices, tablets, mobile, desktop and servers. Team also investigated .NET Microframework for IOT product solutions. Worked on the Windows HLK issues for tablets as well as USB OTG and USB device architectures. Worked across various areas such as virtualization, memory management, OS-Scheduler, debug architecture, USB, storage, ISA and audio.

Intel Corporation
April 2007 - April 2010
Staff Software Engineer

Sysdebug lead in which I coordinated new processor power-ons for Windows boot/bring up. Worked with Validation and Technical Marketing Engineers to evaluate and debug internal issues as well as issues from OEMs. Supported issues being root caused to firmware, applications, drivers, hardware and Windows OS. Utilized both the windows kernel and user mode debuggers as well as ITP. Worked with teams to develop EXDI extension on ITP to support Windows OS symbolic usage in the hardware debugger.

Developed and prototyped scheduling optimizations for SMT/Hyper-Threading, evaluated scheduling using a tool I wrote for parsing ETW trace data and showing side by side thread running and context switches across the system. Developed the idea for SMT-Parking optimization and worked on several other scheduling optimizations for OS. Prototyped and enabled new ISA; worked closely with the processor team and validation teams on various errata. Worked in various areas such as USB, Storage, Memory Manager, OS Scheduler, Idle thread/Power Management, Device runtime D3, etc. Also worked on Hypervisor scheduling for SMT and CPUID enabling.

Intel Corporation
February 2006 - April 2007
Senior Software Engineer

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 debug issues, scheduling issue and influenced changes in Windows with these tools.

Developed a suite of tools which would measure in cycles OS primitives such as context switch, ISA and other processor related tasks such as the cost of a page fault and other ring transitions. 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. Evaluated hardware errata and made recommendations on the severity and effects on Windows in relation to platform releases. Also worked closely with Microsoft to implement software fixes for certain errata.

Supported power on of the first atom processor on first Windows boot and worked on issues and provided workarounds.

Citrix Systems, Inc. - Redmond
June 2000 - February 2006
Senior Software Engineer

Various areas and roles from product development with full product life cycle, R&D and customer special development requests.

Worked on Terminal Services Client/Server ICA architecture to add new features such as Bi-Directional Audio through winmm and a driver, application that performed Desktop-Integration displaying remote apps as local, Server-based configuration using XML to tweak client UI display, etc. Developed in user mode, kernel mode and services but also including the shell for desktopless application delivery and interaction with legacy winlogon GINAs.

Debugged using CDB/NTSD/WINDBG in kernel and user mode. During 3-month close downs fxied close to 200 application traps/bsods. Worked on various debugs over the years, including Terminal Service shadowing issues where a named pipe was dropped and caused data corruption or a shadow stack would send data before a packet INIT. Provided solutions to these various problems in the display and winstation driver architecture for Citrix.

Architect on OpenGL graphics server to enhance remote deliver of 3D design applications for Boeing. This included working on network delivery, reverse engineering CATIA, display and input. Software rendering the bottle neck was initially network which we optimized (tracking regions in display driver, sending different quality images, tracked movement and determined bandwidth for when to send and when to wait) then later as designs were more complex the issue was software rendering in which we architected a solution to render on the server and send the images to the client.

Worked with Microsoft for Vista Terminal services and added 7 new APIs to the MSFT TSSDK for TS protocol service to use. Reviewed other projects such as remote USB.

Worked with masters students for a Citrix funded project on driver-discoverable bi-directional audio prototype.

DiamondWare
Independent Contractor
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.

Diamondware developed low latency audio drivers for gamming and they were looking to demonstrate this over the network. I wrote a TDI Client driver (Windows 9x VxD, network driver) that would communicate with their low audio driver and using UDP I would send the packets across the network to another system also running my network driver. I wrote a WIN32 UI application that would allow you to connect and start recording to talk back and forth. Their original implementation was a single API to send/receive data but I suggested we instead use 2 APIs with a receive callback, which we later moved to after the first did not work that well. The round trip latency from microphone to remote system speakers, back into microphone and back to local computer out the speakers was measured at 53ms. Netmeeting measured over 500ms.

Private Individual
Independent Contractor
January 2000 - April 2000

Developed WIN32 multi-threaded application that used memory mapped view of files to look at GB's of stock data with "Indicator" and "Target" stocks and using a proprietary algorithm to create stock predictions. Also started to develop the second solution to this which was to automatically buy/sell stocks by interfacing with stock accounts online. Investigated also using APIs from a popular stock trading application for real-time stock data.

USx Engineers & Consultants
Internship
May 1998 - May 2000

Maintained and developed applications in Natural 2, CoBOL and C for various pipe mills.

1. Fixed Y2K issues

2. Developed various applications in Natural 2 for operators working in the pipe mill.

3. Project to get stamped serial number data from a pipe-stamping machine and send to the database so it could be on the screen for the operator via an application in the IBM Mainframe (Natural 2, written by a 2nd engineer) when it comes down the line. I developed the WIN32-UI application and the serial port code to read these and then send to a DLL written in powerbuilder (by a 3rd engineer) to the database. If the database write failed, I would log the data to the screen so a manual operator could come and type them in. We also ordered a special serial cross over cable with a special end fitting so it could fit into the machine's box and the box could then be closed. The cable would run to a windows machine that ran my application to read the serial numbers as the pipes were stamped.


Due to my proficiency with C and helping out other teams, I moved to I2-Factory planning where we worked with engineers on applications and data that were used to plan the types of metals and optimize the times in the steel factories.

I2 Factory planner is an existing application, however we needed to supplement this application with other data processing. I rewrote the entire C-factory planning code on the Unix server and brought up a new factory. I wrote code generation tools for the RPC code to create specific port-mappings we could rely on rather than auto-assignment through portmap. There were processes that would kick off overnight and download the data, then start processing it, all which we have written. This code would then interface with C-DLLs on a Windows machine that were loaded within Power-Builder. Wrote code and UI in Power Builder to display and allow editing of the data. The data would also later be used with the I2-Factory planning software.


Education


Bachelor of Science in Mathematics & Computer Science
May 2000
California University of Pennsylvania
California, Pennsylvania
Presidential Honors Award

Associates of Specialized Business & Computer Information Management
January 1996
Computer Tech
Pittsburgh, Pennsylvania
Outstanding Student Award
Perfect Attendance Award

 
About Toby Opferman

Professional software engineer with over 15 years...

Learn more »
Codeproject Articles

Programming related articles...

Articles »
Resume

Resume »
Contact

Email: codeproject(at)opferman(dot)com