.NET developer building Revit and BIM automation, web services, and reliable desktop applications.
I work on reusable libraries, developer tooling, and web services. My projects focus on making Revit add-ins easier to build, test, and maintain while applying the same attention to API design, diagnostics, and maintainability across backend systems.
| Project | Purpose |
|---|---|
| Revit Addin Manager | Pre-launch manager for Autodesk Revit .addin manifests: browse installed plugins across versions and scopes, toggle them on/off, and edit manifests before Revit starts. |
| Revit Linter | Extensible diagnostics and linting for Autodesk Revit models. |
| Revit SDK | Shared SDK and build infrastructure for libraries targeting multiple Revit versions. |
| Revit Context | Access to the active Revit application and document context. |
| Revit Events | Strongly typed infrastructure for working with Revit events. |
| Revit Async | Asynchronous execution through Revit external events. |
| Revit Sugar | Convenience APIs and extensions for common Revit development tasks. |
| Revit Transaction Cache | Transaction-aware caching for Revit applications. |
| Revit MediatR | MediatR integration for commands and requests executed in Revit context. |
| Revit Templates | Project templates for creating Revit libraries and add-ins. |
| Project | Purpose |
|---|---|
| XamlConstructor | Roslyn source generator for XAML design-time constructors. |
| ResxAnalyzer | Roslyn analyzer that warns about incomplete or broken .resx resource tables at build time. |
| Localization | Extensions for .NET localization, including inheritance and generic resource lookup. |
| Assembly Resolver | Scoped assembly resolution for desktop applications and plugins. |
| Debouncing | Debounce and throttle dispatchers for .NET applications. |
| Value Store | Lightweight infrastructure for storing and accessing application values. |

