This site contains documentation of my personal software projects: open source projects, research projects, demonstration projects, class libraries, and applications.

Alastair Wyse

Backpropagation Visualization

BackPropagationVisualization is a web application which shows the weights and activation values in a basic neural network, and allows you to observe changes in these values as the network is trained. The neural network learns how to apply basic logic functions AND, OR, and XOR, and hence has just 2 input units and a single output unit, with a single layer of 5 hidden units. The training algorithm uses gradient descent with backpropagation, and the only form of regularization being adjustment of the learning rate... avoiding more advanced techniques like early stopping, momentum, weight decay, etc... to keep the training process and the code simple and easy to follow.

Screen shot Mapping to neural network diagrams Mapping to backpropagation equations


Mathematics Modular Framework


Mathematics Modular Framework (MMF) is a software framework (.NET class library) which allows simple construction and rearrangement of workflows for finance, mathematics, and machine learning applications.

It allows the packaging of a program unit that performs a mathematical function into a 'module', which has strongly defined and typed inputs and outputs. The outputs of modules can then be linked to the inputs of other modules to form a directed graph (known as a 'module graph') which defines the workflow. The hierarchy implicit in the module graph allows the workflow to be executed automatically in order of dependency when processed. Workflows can also be serialized to and from XML documents, and hence written to and read from persistent storage (file, database, network, etc...).

Simple module graph example Linear regression module graph



SimpleML provides implementations of basic machine learning algorithms in C#, and serves as a real-world use case of Mathematics Modular Framework. The implementations follow the examples given in the Coursera Machine Learning course instructed by Andrew Ng. In SimpleML, MMF is used to combine these example algorithms into different permutations of machine learning workflows.

Module graph example Logistic regression data



Algorithms is a C# project containing implementations of some interesting and/or complex algorithms. It currently includes a sample implementation of the A* graph traversal algorithm, and looks at how different heuristic functions can affect the speed of finding a path through a graph.

Word graph Graph traversal results


Method Invocation Remoting

Method Invocation Remoting is a framework which allows methods to be invoked remotely between C# and Java. Method invocations are represented as objects and then serialized and transported from code in the calling language (e.g. Java), before being invoked on the receiving side (e.g. C#). Any return values from invoking the method are then passed back and handled in the calling language. The object model is based around interfaces and an inversion of control / dependency injection design pattern, so users can easily substitute the provided classes which perform serialization and transport with their own classes.

Flow diagram 1 Flow diagram 2 Flow diagram 3


More Complex Data Structures

MoreComplexDataStructures is a class library containing a collection of data structures (plus related utility classes) more complex than those found in the standard .NET framework. Includes a binary search tree, min and max heaps, trie, weighted random number generator, and frequency table.


Application Metrics


ApplicationMetrics is a .NET class library which provides simple interfaces and classes to allow capturing metric and instrumentation information from a client application.

Performance Monitor 1 Performance Monitor 2


Oracle Permission Generator


Oracle Permission Generator is a Windows desktop application which helps Oracle database developers and administrators generate scripts to manage privileges and synonyms within an Oracle database.

Function diagram Screen shot



Oracle Permission Generator Android

Oracle PermissionGenerator Android is an example of a simple Android-based business application, implementing the MVP (Model View Presenter) design pattern, and demonstrating how an Android application can interact with a .NET WCF webservice via SOAP or REST protocols.

Design 1 Design 2 Design 3


Application Logging

ApplicationLogging is a .NET class library which provides simple interfaces and classes to allow logging from a client application. The included interface IApplicationLogger can be injected into client classes, and exposes simple methods for capturing detailed logging information from these client classes. ApplicationLogging includes implementations of IApplicationLogger which allow logging to a file or the console. The ApplicationLogging.Adapters project additionally includes an adapter class to route ApplicationLogging log events to an instance of the log4net ILog interface.


AspectJ Demo

AspectJ Demo provides a simple, real-world example of how AspectJ can be used to separate two common cross cutting concerns: logging and instrumentation, in Java projects.


CXF Demo

CXF Demo provides a simple, working example of consuming a .NET WCF web service in Java, using Apache CXF.