Portfolio

GitLab  •  GitHub

TotalImage (2020 - 2023)

GitHub - TotalImage/TotalImage: A better disk image editor
A better disk image editor. Contribute to TotalImage/TotalImage development by creating an account on GitHub.

I am a maintainer and regular contributor to the TotalImage project. I have made significant contributions to the following areas of the project:

  • Read support for the ISO-9660 file system (22d083c, a9a1327, 56c1c2d)
  • Read support for Joliet extensions to the ISO-9660 file system (44a28cf)
  • Support for loading images as memory-mapped files (32f8963)
  • Read support for GUID Partition Tables (a2066c8, c545e21)
  • Read support for Master Boot Record partition tables (2695551, 52e7241)
  • Read support for fixed-size VHD files (2695551)
  • Prototype an alternative cross-platform UI using the Avalonia framework (avalonia-prototype)

DecryptESD (2016 - 2017)

GitHub - hounsell/DecryptESD: Remove encryption from the ESD files distributed through the Windows Store infrastructure
Remove encryption from the ESD files distributed through the Windows Store infrastructure - GitHub - hounsell/DecryptESD: Remove encryption from the ESD files distributed through the Windows Store ...

I was the sole developer for this project. This application targeted .NET Framework and was able to decrypt the ESD (Electronic Store Distribution) files provided by the Windows Store infrastructure.

It decrypted encrypted blocks within the file and made the necessary adjustments in the header and metadata to ensure image correctness.

The project was part way through a port to .NET Core before changes within the Microsoft Update system deprecated this way of distributing Windows updates.

Included was an ASP.NET Web Pages (Razor) website and API that tracked known decryption keys and provided them to the application.

BuildFeed (2013 - 2019)

BuildFeed / BuildFeed
A fancy over-engineered glorified Microsoft Windows build list, as a service in the cloud

I was the primary developer of the BuildFeed project throughout its life span. It used .NET Framework 4 and the ASP.NET MVC framework throughout. Initially, it used Redis as its persistent data store before migrating to Mongo.

Additionally, later prototypes for an abandoned new version of the site used MS SQL as the persistent data store, and migrated to .NET Core MVC.

The site was supported in 30 different languages with at least 80% translation coverage provided by community volunteers, with a further three languages with partial coverage.

A WinJS application for the Windows 8 store was available, with prototypes for further mobile applications being trialled using Xamarin.

Appxery (2013)

GitHub - hounsell/Appxery: Appxery is a website that provides a repository for AppX files.
Appxery is a website that provides a repository for AppX files. - GitHub - hounsell/Appxery: Appxery is a website that provides a repository for AppX files.

I was the sole developer for this project. Appxery was an online repository of Windows application packages (AppX and AppX Bundles).

Utilities and smaller projects

EFI Dump Reader (2019, 2021)

This is a small utility I put together to read the data from an NVRAM dump from an EFI shell. I wrote it in C# in 2019, and then rewrote it as an example in Rust in 2021.

Thomas Hounsell / EFI Dump Reader
GitLab.com
C# version (2019)
Thomas Hounsell / EFI Dump Reader - Rust
GitLab.com
Rust version (2021)

Product Policy Viewer (2015 - 2016)

A utility that reads the current Windows activation product policy (which tracks which features are enabled for the currently-installed SKU) from the registry and displays them for inspection.

Initially written as a C# / WPF application for the .NET framework, was then re-written as a C++ / Qt application.

GitHub - TeamGnome/ProductPolicyViewer: View Product Policy data for the currently running Windows system
View Product Policy data for the currently running Windows system - GitHub - TeamGnome/ProductPolicyViewer: View Product Policy data for the currently running Windows system
C# / WPF version (2015)
GitHub - TeamGnome/ProductPolicyNative: A test C++/Qt port of ProductPolicyViewer
A test C++/Qt port of ProductPolicyViewer. Contribute to TeamGnome/ProductPolicyNative development by creating an account on GitHub.
C++ / Qt version (2016)

NoCAPTCHA (2015 - 2016)

An ASP.NET Web Forms validation control that provided integration with the "NoCAPTCHA" (v2) variant of Google's ReCAPTCHA service.

GitHub - hounsell/NoCaptcha
Contribute to hounsell/NoCaptcha development by creating an account on GitHub.

Secure Transfer Module (2015)

A demonstration of hash-based URL authentication for securely sharing files.

SecureTransferModule.cs
GitHub Gist: instantly share code, notes, and snippets.

XBF Decompiler (2015)

A utility to show the internal structure of a XAML Binary File (used in WinRT XAML applications). Supports the first version of the XBF format and outputs the tree structure to a WPF application.

GitHub - TeamGnome/XbfDecompiler: A decompiler for the XAML Binary Format (XBF)
A decompiler for the XAML Binary Format (XBF). Contribute to TeamGnome/XbfDecompiler development by creating an account on GitHub.

Real Version Info (2014)

A class that shows how to load the file version of a PE executable file in C# via the Win32 API.

Get Language Id for File (Part 1)
Get Language Id for File (Part 1). GitHub Gist: instantly share code, notes, and snippets.

Rogue Filter (2013)

An ASP.NET Module for IIS that blocks incoming requests from Tor exit nodes.

GitHub - hounsell/RogueFilter
Contribute to hounsell/RogueFilter development by creating an account on GitHub.