Projects
On this page are a few of my personal projects which I am both particularly proud of as well as think other people may find of interest. With that said, other projects of mine in addition to this found here can be located on my Github.
Owlscript
Owlscript is a dynamically typed and lexically scoped, garbage collected scripting language designed with support for procedural and functional paradigms in mind. Noteable features include dynamic object creation with structs, an integrated list type with a plethora of supporting operations including map/sort/filter, first class functions with lambda expressions, and closures. Think perl without sigils, or python with curly braces. Owlscript is in continuous evolving alongside my purpose of my personal exploration of compiler and interpreter implementation and programming language design. I am currently in the process of extending the tree walking interpreter to include a pcode compiler, though this is still in the early phases of development.
mgcLisp
What language geek hasnt implemented a lisp interpreter? After a long weekend spent at a friends lake house reading through The Structure And Interpretation of Computer Programs I decided it was time to give it another whack, with this being the result of that effort. Anyone interested in implementing a lisp interpreter in C/C++ or similar language may find it of interest.
CodeBlahger
CodeBlahger is my personal blogging platform and replacement for wordpress. It is being used to serve the site you are currently visiting! I wanted to use a similar tech stack to what I use in my day job as backend software engineer and so chose to develop this project in Java using the Springboot framework and MySQL to develop the backend. The front end is rendered by thymeleaf in conjunction with HTML5, CSS, and some light javascript. CodeBlahger features a WYSIWYG editor for creating and editing blogposts, syntax highlighting on code examples, and comment moderation. Posts can be categorized as well as featuring full text search on posts. Utilizing containerization via docker, CodeBlahger requires remarkably few resources and is able to run comfortably on a relatively low-spec VPS.
VizSort
Visualize the way different sorting algorithms move data during sorting to gain a deeper understanding of how they work! Developed in C++, VizSort depends on the SFML library for graphics rendering.
-
Simple DB Migration with JDBC
-
Welcome to CodeBlahger, A Blahging Platform for Programmers.
-
Design Patterns: The Façade Pattern
-
The Interpreter Pattern: Implementing Interpreters the OOP way
-
Parsing Right-Associative Operators with Recursive Descent
-
BST Iterators Revisited: No Parent Pointer, No Stack, No Problem
-
Deleting Arbitrary Values from Binary Search Trees
-
Solving the N Queens Problem with Breadth First Search
-
Performing the Knights Tour in Linear Time
-
Knuth's Algorithm X For the Exact Cover Problem