Jordan Savant # Software Engineer


This is my website. It mostly contains my write ups on algorithms, data structures and programming topics. Feel free to explore. Almost all code is written by myself, but some is for reference only so it is advised that you read and learn and not steal!

Below you will find a list of topics and projects I have found interesting.

Introducing NCMySQL, an ncurses explorer and client for MySQL databases written in C

With the death of many great MySQL GUI clients such as SequelPro and the bloat of others I needed a replacement visual client for MySQL connections. I felt like it would be a great way to harness the experience working with ncurses and C to utilize the MySQL C API Library and create a basic TUI for working with it.

This project is completely open source and I encourage others with interest and experience to lend a hand.

Text user interface for ncmysql

New Video is Up! Bubblesorting in ADA

I have always been interested in the idea of ADA but never put my hands to it. I fell in love with strongly-typed languages after spending years in web development with loosely type langauges. So I wanted to explore ADA to see how extreme typing played out and how cumbersome or powerful it was. My small code was only to reproduce a BubbleSort on an Integer list, and I hope to do more with ADA soon.

Video Thumbnail for New Video is Up! Bubblesorting in ADA
with Ada.Text_IO; use Ada.Text_IO;

procedure Bubble_Sort is
    type Index is range 1 .. 5; -- lower bound can be anything
    type Int_Array is array (Index) of Integer;
    type Int_Array2 is array (Natural range <>) of Integer;
    Arr : Int_Array := (1, 6, 4, 6, 8);
    Arr2 : Int_Array2 := (7, 1, 4, 5, 6, 1, 2, 1);
    Put_Line ("Sort it");

    for I in Index loop
        Put (Integer'Image (Arr (I)));
    end loop;

    for I in Arr2'Range loop
        Put (Integer'Image (Arr2 (I)));
    end loop;
end Bubble_Sort;

Python # Doom Engine

This is a work in progress 3D reimplementation and exploration of the original DOOM engine. I am using Python as the main language. I explore 2D to 3D visualization techniques, raycasting, WAD file formats and 3D rendering engines.

Python DOOM Engine Rendering

Closures in C with GCC and Nested Functions

While doing some game developmeng on a C project I wanted to incorporate lambda functions into algorithm processing. You can see in several of my algorithm examples that I enjoy the use of functional programming to significantly reduce the complexity or performance issues that arrive out of processing the result of data using heap-allocated memory.

Combining GCC's extension support for nested functions and function pointers we can recreate the concept of a closure in C given that we have an environment that supports Executable Stacks!

Video Thumbnail for Closures in C with GCC and Nested Functions

Elevator Simulator in Go

Multi-threaded, as is standard in Go, each elevator, person and floor operate as their own threaded state machines. Elevators, even when brought down to a simulated program have a decently complicated set of states and rules for operating. Namely, tasking an elevator for efficiency is not a simple challenge.

I utilized the RPC protocol to allow for the simulation to run in separated from a client. Clients could add passengers to the simulation and display it as either CLI text or a 2D graphics viewport.

Golang Elevator 2D Client Golang Elevator Terminal Output