Senior Software Engineer concentrating on the .NET framework and C#.
My GitHub: https://github.com/JamesDunne/
- REST0-API
- A declarative approach to creating RESTful web services which are backed by an MS SQL Server.
- Entirely asynchronous execution using .NET 4.5 and new C#5 async/await features.
- Describes a simple set of services and methods which are implemented by SQL SELECT queries with results serialized as JSON.
- Runs on my REST0 framework which is an independent web host using HttpListener API (does not require IIS nor ASP.NET nor any other framework or host application).
- Invented HSON format for storing JSON in a more human-readable way with comments, multi-line string literals, and external import functionality.
- IVO
- Immutable Versionable Objects.
- An implementation of the git object model for .NET 4.5 which can be persisted to a MS SQL Server database or a local filesystem.
- Entirely asynchronous implementation.
- Avoids exception throwing using functional-programming-inspired data structures (Either, Maybe, etc.).
- IVO-CMS
- A very basic web content (HTML) management system implemented on top of IVO.
- Written in C#5 on .NET 4.5.
- q.ashx
- Single file deployment of a web handler (ashx file) which accepts SQL queries to execute via the query-string and asynchronously executes them against the SQL server and serializes results to JSON.
- Written in C# on .NET 3.5SP1 for ASP.NET.
- Entirely asynchronous implementation.
- Clicker
- Simple C# console application to generate a metronome click-track.
- Uses a source MIDI file which describes tempo changes and time signature changes.
- Exports track as a standard RIFF WAVE file.
- Sample-accurate timing.
- I was fed up with broken implementations of metronomes in popular DAW software, especially those that don’t let you export the click as its own track (e.g. Cakewalk Sonar), so I wrote this to solve that problem.
- Solstice 3D Visualizer
- An application which visualizes the 3D room data from the original NES title “Solstice” in true 3D.
- Written in C# with OpenTK framework for OpenGL bindings.
- Requires the original NES ROM file to pull data from.
- Blaster Master retro reimplementation (partial)
- A faithful recreation of the NES title “Blaster Master” on PC.
- Written in C/C++ with OpenGL, intended to be cross-platform.
- Abandoned due to time constraints.
- Comes with a functional map editor to create your own maps in the spirit of the original game.
Contributions to Open-Source Software Projects:
- Dolphin Wii emulator:
- SSE2-optimized texture decoder code.
- All code attributed to or noted by “JSD” is mine.
- Resulted in significant overall speedups for game emulation.
- My AMD CPU at the time was limited to only the SSE2 instruction set so I did not pursue SSE3+ optimizations.
- OpenRA:
- An open-source clone of original 1995 release of Command & Conquer: Red Alert for modern PCs.
- Several branches exist, one per feature/improvement.
- Most branches have been rebased onto the upstream ‘bleed’ branch.
- Main concentration was on improving Harvester unit AI to alleviate the player from having to babysit them. Changes are:
- Harvesters do not search the entire map for the next patch of resources to harvest, but limit their search to a default radius from the last harvested patch.
- Harvesters “communicate” with other friendly harvesters using a claim system to mark which resource cells they intend to harvest to prevent harvester collisions.
- A selected group of harvesters told to harvest a single target location automatically distribute their targets around the selected target cell to prevent collisions.
- Harvesters auto-select the “best” refinery to return to, balanced by number of harvesters already headed there vs. distance to the refinery, capped at 3 harvesters per refinery.
- Empty harvesters wait around for regenerative resources to regenerate in order to collect and return them rather than sitting idle waiting for player intervention.
- Non-empty harvesters return to refineries early if there are no resources nearby to collect rather than sitting idle waiting for player intervention.
- Made several other smaller improvements:
- A* debug overlay mode which shows how often a cell is visited by the A* algorithm.
- A* improvements to allow units to path together as groups headed in generally the same direction.
- Units scatter to avoid projectiles.
- Units path around dangerous zones created by splash-damaging projectiles.
- Units stop certain suicidal behaviors such as finding the point-blank firing range to attack an enemy at.