
John Do contributed to the Azure/iot-operations-sdks repository by architecting and implementing cross-language protocol compilers and SDKs for IoT systems. He developed robust code generation pipelines supporting C#, Rust, and Go, enabling automated model parsing, schema validation, and error modeling for DTDL and WoT Thing Descriptions. His work introduced modular library designs, recursive schema handling, and advanced error reporting, improving maintainability and runtime reliability. Leveraging technologies such as MQTT, Avro, and JSON Schema, John standardized code outputs and integrated ADR-driven architectural decisions. His engineering delivered scalable, production-ready SDKs that accelerated feature delivery and reduced integration risk for multi-language deployments.

February 2026 monthly summary for Azure/iot-operations-sdks: Delivered a Protocol Compiler to generate code from WoT Thing Model files and JSON Schema, merged the codegen2 branch into main, and hardened the code-generation workflow. Fixed cross-code generation issues between codegen and codegen2, improved serialization for embedded resources and multiple data types, and introduced a common namespace token to standardize generation. These changes expand SDK capabilities, improve reliability, and reduce maintenance, enabling faster delivery of IoT solutions.
February 2026 monthly summary for Azure/iot-operations-sdks: Delivered a Protocol Compiler to generate code from WoT Thing Model files and JSON Schema, merged the codegen2 branch into main, and hardened the code-generation workflow. Fixed cross-code generation issues between codegen and codegen2, improved serialization for embedded resources and multiple data types, and introduced a common namespace token to standardize generation. These changes expand SDK capabilities, improve reliability, and reduce maintenance, enabling faster delivery of IoT solutions.
In September 2025, contributions focused on advancing code generation and protocol alignment for the Azure/iot-operations-sdks project. Key efforts included ADR-driven enhancements: (1) Code generation improvements delivering C# property support and Rust codegen enhancements, with ADR 23 applied to .NET and Rust (#639960b774..., #88081d095c...), including new Rust T4 templates and CodeName suffixes and generation of Rust code for aggregate errors and property handling; (2) WoT Protocol Binding ADR26 adoption and ProtocolCompiler refactor to align with WoT Thing Description, introducing new fields for error handling, caching, and topic definitions and updating T4 templates (#520635c82e..., #470c8fce0f..., ADR26); (3) Codegen samples documentation README documenting C#, Go, and Rust code-generation samples, outlining directory structure and build/generate steps (#d9db1edd9007...).
In September 2025, contributions focused on advancing code generation and protocol alignment for the Azure/iot-operations-sdks project. Key efforts included ADR-driven enhancements: (1) Code generation improvements delivering C# property support and Rust codegen enhancements, with ADR 23 applied to .NET and Rust (#639960b774..., #88081d095c...), including new Rust T4 templates and CodeName suffixes and generation of Rust code for aggregate errors and property handling; (2) WoT Protocol Binding ADR26 adoption and ProtocolCompiler refactor to align with WoT Thing Description, introducing new fields for error handling, caching, and topic definitions and updating T4 templates (#520635c82e..., #470c8fce0f..., ADR26); (3) Codegen samples documentation README documenting C#, Go, and Rust code-generation samples, outlining directory structure and build/generate steps (#d9db1edd9007...).
In August 2025, Azure/iot-operations-sdks delivered substantial architectural and capability updates to ProtocolCompiler, enabling reuse across services while preserving existing behavior. The team expanded DTDL schema support with indirect/recursive schemas, introduced ADR-driven design, and extended code generation to JSON, Avro, Protobuf, and Rust. Property management capabilities were enhanced via DTDL Property content type support and expanded MQTT topic tokens for reads/writes, improving maintainability and runtime observability for IoT deployments. These changes collectively improve cross-service reuse, schema robustness, and dynamic property management, delivering measurable business value in scalability and developer productivity.
In August 2025, Azure/iot-operations-sdks delivered substantial architectural and capability updates to ProtocolCompiler, enabling reuse across services while preserving existing behavior. The team expanded DTDL schema support with indirect/recursive schemas, introduced ADR-driven design, and extended code generation to JSON, Avro, Protobuf, and Rust. Property management capabilities were enhanced via DTDL Property content type support and expanded MQTT topic tokens for reads/writes, improving maintainability and runtime observability for IoT deployments. These changes collectively improve cross-service reuse, schema robustness, and dynamic property management, delivering measurable business value in scalability and developer productivity.
July 2025 focused on delivering ADR 22-compliant error modeling within the Azure IoT Operations SDKs, specifically updating the ProtocolCompiler for .NET and Rust. This work enables precise error headers and payloads, improving error reporting, robustness, and debugging efficiency across languages. Coordinated client/server changes in .NET and Rust align with ADR 22 requirements and are captured in the main commit implementing the feature.
July 2025 focused on delivering ADR 22-compliant error modeling within the Azure IoT Operations SDKs, specifically updating the ProtocolCompiler for .NET and Rust. This work enables precise error headers and payloads, improving error reporting, robustness, and debugging efficiency across languages. Coordinated client/server changes in .NET and Rust align with ADR 22 requirements and are captured in the main commit implementing the feature.
June 2025: Delivered DTMI resolution for ProtocolCompiler in the Azure IoT operations SDKs, enabling automated DTMI (Digital Twin Model Identifier) resolution of external identifiers within hierarchical DTDL models across conversions (e.g., OPC UA companion specs). Introduced a dedicated Resolver class and a new resolver option, integrated resolution into parsing, and prepared the system for scalable model interoperability.
June 2025: Delivered DTMI resolution for ProtocolCompiler in the Azure IoT operations SDKs, enabling automated DTMI (Digital Twin Model Identifier) resolution of external identifiers within hierarchical DTDL models across conversions (e.g., OPC UA companion specs). Introduced a dedicated Resolver class and a new resolver option, integrated resolution into parsing, and prepared the system for scalable model interoperability.
May 2025: Azure/iot-operations-sdks delivered targeted codegen corrections, feature enablement for production builds, and better error modeling. Focused efforts improved correctness of schema generation across languages, resolved enum name collisions, and enhanced maintainability through lint/docs cleanup, while enabling retail-grade protocol compiler options for production deployments. Business impact includes more reliable artifacts, faster release readiness, and clearer codegen behavior for multi-language clients.
May 2025: Azure/iot-operations-sdks delivered targeted codegen corrections, feature enablement for production builds, and better error modeling. Focused efforts improved correctness of schema generation across languages, resolved enum name collisions, and enhanced maintainability through lint/docs cleanup, while enabling retail-grade protocol compiler options for production deployments. Business impact includes more reliable artifacts, faster release readiness, and clearer codegen behavior for multi-language clients.
April 2025: Enhanced protocol compilation and code generation, delivering safety, compatibility, and modularity improvements across the Azure iot-operations-sdks. Key outcomes include reserved keyword escaping, JSON Schema compatibility for ProtocolCompiler, modular Rust options, removal of deprecated DMR support, and a new ThingGenerator stage to produce WoT TDs from DTDL, with CLI controls and validation.
April 2025: Enhanced protocol compilation and code generation, delivering safety, compatibility, and modularity improvements across the Azure iot-operations-sdks. Key outcomes include reserved keyword escaping, JSON Schema compatibility for ProtocolCompiler, modular Rust options, removal of deprecated DMR support, and a new ThingGenerator stage to produce WoT TDs from DTDL, with CLI controls and validation.
March 2025 highlights for Azure/iot-operations-sdks: delivered cross-language error modeling and robust code-generation support, improved Go codegen parity with other languages, enhanced JSON Schema generation with internal references, fixed project-generation toggle to prevent unintended builds, and ongoing code-quality improvements to CI and generated artifacts.
March 2025 highlights for Azure/iot-operations-sdks: delivered cross-language error modeling and robust code-generation support, improved Go codegen parity with other languages, enhanced JSON Schema generation with internal references, fixed project-generation toggle to prevent unintended builds, and ongoing code-quality improvements to CI and generated artifacts.
February 2025 (Azure/iot-operations-sdks) monthly summary: Delivered substantial METL enhancements with cross-language CloudEvent DataSchema binding, expanded test coverage (ADR14) and revisions to JSON serialization; advanced ProtocolCompiler with custom/0 format, DTDLParser upgrade, and schema-file-based code generation; implemented AVRO/Bytes codegen and Rust cleanup; stabilized Rust components (async CountdownEventMap) and improved AVRO serialization path; completed quality and productivity enhancements including project naming legalization, line-ending normalization, codegen support for custom tokens in Send/Invoke, METL transient topic tokens, and ADR16 documentation updates; updated Go demos and bumped Go version for demos. Overall impact: faster cross-language data integration, stronger code generation reliability, and improved cloud-edge deployment readiness, delivering measurable business value through reduced integration risk and faster feature delivery.
February 2025 (Azure/iot-operations-sdks) monthly summary: Delivered substantial METL enhancements with cross-language CloudEvent DataSchema binding, expanded test coverage (ADR14) and revisions to JSON serialization; advanced ProtocolCompiler with custom/0 format, DTDLParser upgrade, and schema-file-based code generation; implemented AVRO/Bytes codegen and Rust cleanup; stabilized Rust components (async CountdownEventMap) and improved AVRO serialization path; completed quality and productivity enhancements including project naming legalization, line-ending normalization, codegen support for custom tokens in Send/Invoke, METL transient topic tokens, and ADR16 documentation updates; updated Go demos and bumped Go version for demos. Overall impact: faster cross-language data integration, stronger code generation reliability, and improved cloud-edge deployment readiness, delivering measurable business value through reduced integration risk and faster feature delivery.
Month: 2025-01 Summary: In January 2025, the Azure/iot-operations-sdks project advanced cross-language code generation, architectural standardization, and test/maintenance efforts, delivering tangible business value through standardized outputs, improved reliability, and broader cross-language demos. The work enhances developer productivity, reduces integration risk for customers adopting multi-language SDKs, and strengthens the release readiness of the Rust, Go, and .NET ecosystems. Key features delivered: - Code generation templates and cross-language naming improvements: consolidated code generation improvements across languages, including Rust documentation templates updated to triple-slash comments, AVRO serialization handling fixes in Rust codegen, support for Rust project mode (--noProj), and alignment of generated code naming conventions and version stamping; ADR 13 implemented for language-appropriate generated names; re-ran code-generation scripts; switched C# AVRO codegen to TypeGenerator where appropriate. - Architectural decisions: CloudEvents standardization and ProtocolCompiler naming: introduced ADR-based standardization for CloudEvent fields across SDKs and canonical naming conventions for generated code across languages (ProtocolCompiler outputs). - Go: Interface-based service and client for commands and telemetry: refactored Go service wrappers to use interfaces for command and telemetry handlers to improve flexibility and testability. - Go: Correlation ID handling bug fix in METL awaitPublish: fixed caching bug where responses could carry incorrect correlation IDs; refactored tests and added separate await functions for requests and responses. - Rust METL testing framework enhancements and coverage: introduced a comprehensive test execution system for CommandInvoker, refactoring error handling, improving documentation, and expanding test coverage; enhanced topic pattern validation and error reporting; added METL TelemetrySender and TelemetryReceiver test-execution systems; extended support to generalized topic tokens. - Maintenance and build stability: addressed Windows build issues in Rust, enforced consistent line endings, and removed outdated ProtocolCompiler integration tests to simplify refactoring. - Cross-language demonstration projects: added demonstration projects for cross-language communication using generated code, including .NET, Go, and Rust examples for JSON and Avro formats. Major bugs fixed: - Go METL: Correlation ID handling bug fix in awaitPublish; improved test coverage with separate request/response await flows. - Maintenance: Windows Rust build issues resolved; consistent line endings enforced; deprecated ProtocolCompiler.IntegrationTests removed to streamline refactor efforts. Overall impact and accomplishments: - Standardization across languages reduces integration risk and accelerates customer onboarding by providing consistent, canonical generated code and CloudEvent field mappings. - Increased reliability and test coverage for METL workflows in Rust and Go, enhancing stability of telemetry and command execution across SDKs. - Clear, ADR-driven decisions improved maintainability and consistency of generated artifacts and naming conventions across .NET, Go, and Rust. - Demonstrated value through practical cross-language demos, lowering barriers for multi-language adoption. Technologies/skills demonstrated: - Rust code generation, AVRO handling, ADR design patterns, CloudEvents standardization, ProtocolCompiler naming conventions. - Go interfaces, service/telemetry architecture, and robust testing practices. - Rust METL testing framework, CommandInvoker and Telemetry systems, topic tokenization and error reporting. - Cross-language demonstration projects and Windows build stabilization.
Month: 2025-01 Summary: In January 2025, the Azure/iot-operations-sdks project advanced cross-language code generation, architectural standardization, and test/maintenance efforts, delivering tangible business value through standardized outputs, improved reliability, and broader cross-language demos. The work enhances developer productivity, reduces integration risk for customers adopting multi-language SDKs, and strengthens the release readiness of the Rust, Go, and .NET ecosystems. Key features delivered: - Code generation templates and cross-language naming improvements: consolidated code generation improvements across languages, including Rust documentation templates updated to triple-slash comments, AVRO serialization handling fixes in Rust codegen, support for Rust project mode (--noProj), and alignment of generated code naming conventions and version stamping; ADR 13 implemented for language-appropriate generated names; re-ran code-generation scripts; switched C# AVRO codegen to TypeGenerator where appropriate. - Architectural decisions: CloudEvents standardization and ProtocolCompiler naming: introduced ADR-based standardization for CloudEvent fields across SDKs and canonical naming conventions for generated code across languages (ProtocolCompiler outputs). - Go: Interface-based service and client for commands and telemetry: refactored Go service wrappers to use interfaces for command and telemetry handlers to improve flexibility and testability. - Go: Correlation ID handling bug fix in METL awaitPublish: fixed caching bug where responses could carry incorrect correlation IDs; refactored tests and added separate await functions for requests and responses. - Rust METL testing framework enhancements and coverage: introduced a comprehensive test execution system for CommandInvoker, refactoring error handling, improving documentation, and expanding test coverage; enhanced topic pattern validation and error reporting; added METL TelemetrySender and TelemetryReceiver test-execution systems; extended support to generalized topic tokens. - Maintenance and build stability: addressed Windows build issues in Rust, enforced consistent line endings, and removed outdated ProtocolCompiler integration tests to simplify refactoring. - Cross-language demonstration projects: added demonstration projects for cross-language communication using generated code, including .NET, Go, and Rust examples for JSON and Avro formats. Major bugs fixed: - Go METL: Correlation ID handling bug fix in awaitPublish; improved test coverage with separate request/response await flows. - Maintenance: Windows Rust build issues resolved; consistent line endings enforced; deprecated ProtocolCompiler.IntegrationTests removed to streamline refactor efforts. Overall impact and accomplishments: - Standardization across languages reduces integration risk and accelerates customer onboarding by providing consistent, canonical generated code and CloudEvent field mappings. - Increased reliability and test coverage for METL workflows in Rust and Go, enhancing stability of telemetry and command execution across SDKs. - Clear, ADR-driven decisions improved maintainability and consistency of generated artifacts and naming conventions across .NET, Go, and Rust. - Demonstrated value through practical cross-language demos, lowering barriers for multi-language adoption. Technologies/skills demonstrated: - Rust code generation, AVRO handling, ADR design patterns, CloudEvents standardization, ProtocolCompiler naming conventions. - Go interfaces, service/telemetry architecture, and robust testing practices. - Rust METL testing framework, CommandInvoker and Telemetry systems, topic tokenization and error reporting. - Cross-language demonstration projects and Windows build stabilization.
In December 2024, the Azure/iot-operations-sdks team delivered substantial platform enhancements spanning protocol modeling, code generation, testing tooling, and cross-language capability. These efforts expand device compatibility, improve production readiness, and establish a foundation for Rust-based METL interpretation and expanded telemetry support. The work drives faster integration, reduced maintenance, and stronger traceability for customer deployments.
In December 2024, the Azure/iot-operations-sdks team delivered substantial platform enhancements spanning protocol modeling, code generation, testing tooling, and cross-language capability. These efforts expand device compatibility, improve production readiness, and establish a foundation for Rust-based METL interpretation and expanded telemetry support. The work drives faster integration, reduced maintenance, and stronger traceability for customer deployments.
November 2024 performance summary for Azure/iot-operations-sdks focused on delivering robust, cross-language codegen improvements, protocol standardization, and expanded testing coverage to drive reliability and developer velocity. The month emphasized business value through safer code generation, consistent telemetry behavior, and end-to-end test readiness, while maintaining quality with targeted maintenance fixes across the Rust, .NET, and Go ecosystems.
November 2024 performance summary for Azure/iot-operations-sdks focused on delivering robust, cross-language codegen improvements, protocol standardization, and expanded testing coverage to drive reliability and developer velocity. The month emphasized business value through safer code generation, consistent telemetry behavior, and end-to-end test readiness, while maintaining quality with targeted maintenance fixes across the Rust, .NET, and Go ecosystems.
October 2024 monthly wrap-up for Azure/iot-operations-sdks focused on strengthening cross-language topic handling, telemetry robustness, and developer experience. Delivered generalized topic token support across C# SDK, METL, and codegen; enhanced topic validation and standardized error handling across C#, Go, and METL; refined CI triggers to cover codegen changes only; completed Rust telemetry refactor with new message types and improved service filtering; enabled Rust codegen samples and updated documentation; extended Rust build with a generalized --sdkPath for local and remote sources; fixed C# generated code nullability for required enum fields; renamed CacheableDuration to CacheTtl across SDK/codegen/METL; separated telemetry and command serviceGroupId properties for clearer semantics and code generation. These changes improve reliability, reduce runtime errors, accelerate feature delivery, and improve cross-language consistency.
October 2024 monthly wrap-up for Azure/iot-operations-sdks focused on strengthening cross-language topic handling, telemetry robustness, and developer experience. Delivered generalized topic token support across C# SDK, METL, and codegen; enhanced topic validation and standardized error handling across C#, Go, and METL; refined CI triggers to cover codegen changes only; completed Rust telemetry refactor with new message types and improved service filtering; enabled Rust codegen samples and updated documentation; extended Rust build with a generalized --sdkPath for local and remote sources; fixed C# generated code nullability for required enum fields; renamed CacheableDuration to CacheTtl across SDK/codegen/METL; separated telemetry and command serviceGroupId properties for clearer semantics and code generation. These changes improve reliability, reduce runtime errors, accelerate feature delivery, and improve cross-language consistency.
Overview of all repositories you've contributed to across your timeline