ExpoSE: Practical Symbolic Execution Of Standalone JavaScript

JavaScript has evolved into a versatile ecosystem for not just the web, but also a wide range of server-side and client-side applications. With this increased scope, the potential impact of bugs increases. Despite this, testing tools for JavaScript have remained relatively primitive, largely due to the languages complex implementation and confusing specification. ExpoSE is a dynamic symbolic execution (DSE) tool for JavaScript with support for asynchronous events, strings, and complex regular expressions (including capture groups). It also supports concurrent test-case execution and provides detailed coverage statistics. More info
Tags: Papers, Research, Projects Created on: 09-08-2018

Z3JavaScript - Native Z3 Bindings for Node.js

Before we can symbolically execute JavaScript we need a way to invoke an SMT solver directly from JavaScript, however we found that there is almost no existing language support for Node.js. To remedy this we developed Z3JavaScript, an NPM-installable set of bindings to the popular SMT solver Z3. In addition to a set of primitive bindings we provide a set of wrapper classes to simplify usage from JavaScript. We also provide a regular expression rewriter which allows for reasoning about regular expressions, capture groups, and backreferences in programs. More info
Tags: Projects Created on: 09-08-2018

Kiniro - Android Game & Engine

Kiniro is a game (and accompanying game-engine) from developed from scratch. For this work I created a 2.5D platforming game engine compatible with Linux, Mac OS X, and Android. The engine is entirely written in C++ and includes support for physics through a homebrew physics engine, sound through OpenAL, and large 2D animations. More info
Tags: Games, Projects Created on: 09-08-2018

Dawn - x86 Operating System

Dawn is a x86 based operating system (OS) with a process scheduler, virtual memory manager, application loader, a defined set of system calls and a host of other features. This project was undertaken as part of an optional A-level module. The project involved development of a operating system kernel and a set of utility programs, as well as the design of a set of tools designed for the OS which allow the user to interact and perform tasks. The code was primarily written in C (C99), with small amounts of assembly used in the Kernel, as well as some bash or python scripts to automate compilation and deployment of the OS. More info
Tags: Projects Created on: 09-08-2018

LJIT - LISP Language with JIT

As a recent hobby project I have been working to improve my knowledge of ahead-of-time (AOT) and just-in-time (JIT) compilers. To that end I developed a new LISP style language with a AOT compiler. The project was developed in C++ and includes a LL(1) parser, a AST structure and a AST -> Machine code JIT converter. The resulting language is a simple integer only language which supports recursion and function arguments. More info
Tags: Programming Languages, Projects Created on: 09-08-2018

Scribble - Interpreted, Garbage Collected, Programming Language

For my university dissertation I designed and implemented a programming language and virtual machine. The language was designed to make extending existing C++ applications easier and to enable users to extend a programs functionality, increasing the usefulness of a piece of software. The implementation also attempts to reduce the likelihood of security issues by allowing developers to strictly control what functionality the virtual machine exposes to the end user through a simple interface, allowing them to control what access the scripts will have to the host platform. More info
Tags: Projects Created on: 09-08-2018