Diogo Castro

Software engineer

About Me

Hiya! I hail from Portugal, and I'm a years old software engineer currently living in Northern Ireland.

I'm most experienced with C# and Scala. In my spare time, I hack in Haskell and dabble in PureScript and Idris.

I have a Master's degree in Informatics and Computing Engineering and I currently work at SpotX.

profile for dcastro on Stack Exchange, a network of free, community-driven Q&A sites


2048 AI

2048 AI

An AI for the 2048 game using minimax and alpha-beta pruning, as described by John Hughes in the paper "Why Functional Programming Matters". Written in Haskell and Yesod. Deployed on AWS using Docker.

Haskell, Yesod, Websockets, Docker



Csi-init is a command line tool written in Haskell, which lets you launch Roslyn's C# REPL ("csi") preloaded with all the assemblies found in one or more directories.

Haskell, C#, Roslyn



Sequences is a port of Scala's Stream[+A] to C#. A Sequence<T> is an immutable lazy list whose elements are only evaluated when they are needed. It is composed by a head (the first element) and a lazily-evaluated tail (the remaining elements).

C#, Scala, memoization, immutability, data-structures



A concurrent lock-free deque (double-ended queue) implementation in C# - push/pop/peek operations in constant time O(1) - and a regular deque implemented as a ring buffer.

C#, concurrency, data-structures

JSend WebApi & Client


JSend.WebApi extends ASP.NET Web API 2's ApiController and enables easy generation of JSend-formatted responses. JSend.Client complements the controller, by providing an easy way to send HTTP requests and parse JSend-formatted responses.

C#, Web API


Memento Container

An alternative approach to the Memento design pattern. Through reflection, the container takes a snapshot of your objects' state, so that you can easily rollback when recovering from errors or implementing an "undo" mechanism.

C#, design-patterns



Metro Tasks is a productivity application for Windows 8 / Windows RT that helps you keep track of your to-do's. The app features synchronization with Google Tasks, type to search, tile and lock screen updates.

C#, WinRT

Master's Thesis

Master's Thesis

Entitled "Improving pedestrian navigation for older adults and persons with mild dementia through landmarks" and written at Fraunhofer Portugal. Developed the navigation module for AlzNav, using both turn-by-turn and landmark-based approaches.

Android, navigation, research