Exploring practical applications of .NET

Running .NET Code on the GPU

Using Alea GPU to take advantage of GPU computing from .NET.

We all know the GPU is exceptional at graphics processing but did you know the GPU also excels at highly parallel compute workloads? For certain operations, the GPU can offer a 100x speedup against the CPU. This sort of power has traditionally been accessible exclusively from C and C++ but has recently been made available from .NET.

Lord Beaverbrook High School App

A cross platform app built for my high school available on iOS, Android, and Windows Phone, serviced by a cloud backend.

In high school, I was tasked with writing the school's mobile app. Its purpose was to keep students updated on the latest news and school offerings. After multiple iterations, the app was finally released for Android, iOS, and Windows Phone. The app was written natively on each platform leveraging Xamarin to bring the power of .NET to mobile devices. The app was serviced by a backend running in Azure which was responsible for scraping multiple data sources, packaging the content, and making it available through a REST API.

Creating Websites with Wyam

Creating Websites with Wyam, an extensible static content generator for .NET.

When it came time to rewrite my old website I knew I wanted the flexibility and control of writing a website from scratch but was hesitant to write my own content management system. Thankfully, I discovered Wyam which is a modular and highly configurable static content generator for .NET. Static content generators take a collection of input files such as layouts, posts, and images, and generate a static website. There is no need to maintain databases, storage, or servers. One huge advantage of this approach is that pages can load remarkably faster since pages themselves can be cached on a content delivery network.

Marks App

A hybrid app offering students a more streamlined experience viewing their grades.

In grade 11 I wrote a simple hybrid app that allowed students to view their grades and related information from their mobile devices. The student information system used by our school was poorly optimized for mobile. I thought it would be handy to write a tool that scraped the information on behalf of the student and package it into something more appropriate.

Ordering Periodic Tasks With ReactiveX

Invoking tasks periodically with ReactiveX and controlling the order of completion.

ReactiveX has a useful operator, Observable.Timer, which can be used to create an observable that fires on a given interval. This can be used to run a task on a periodic basis such as checking for content updates against a server routinely. This is clearly quite useful and made especially convenient by ReactiveX but there is one ambiguity: how can we control the order in which overlapping operations complete? If a task is repeated on a given interval and a later instance completes before an earlier instance in what order should the results of each be received by the observer?