Noel Burton-Krahn Code Samples
Here are some of samples of my own code from my favourite past projects.
Please see my full Resume and Github account.
Genetisnake (Genetic Programming, Three.js, Phoenix)
![Battlesnake game board](../static/battlesnakes.png)
Battlesnakes_ is an AI competition where snakes compete to survive on a simple board. My entry did pretty well programmed with genetic programming. I rendered the board with three.js, and the game server was a multi-room chat application written in Phoenix
GKViewer Video Recording and Playback (C++, OpenGL, ActiveX)
![GKViewer video review application](../static/gkviewer-screenshot-2-200.jpg)
This was a multi-camera digital video recording and playback system. The code cross-compiled on Linux and Windows to save and display video on a Linux recoding unit, and to play back on Windows through an ActiveX component written in C++ using OpenGL. Here is the main class for the player: glplayer.h, glplayer.cpp.
The player was implemented in OpenGL, including all video windows and UI controls such as playback buttons, scroll bars, etc. All UI controls were descended from a common GLActor class. Here is the GLActor that displays video: glactorvideo.h, glactorvideo.cpp.
The main OpenGL video playback system was wrapped in an ActiveX control for Windows, and embedded in a VB.Net application. This is the ActiveX wrapper: GLPlayerCtlCtrl.h, GLPlayerCtlCtrl.cpp
One challenge was to save and display video on a Linux platform that had very limited CPU resources. I designed a real-time scheduling system that would guarantee saving video to disk (safe from system crashes) and decompress video and display at a slower rate: task.h, task.cpp.
Hotswap - Transparent Failover for Linux (C++, linux kernel)
![LISA'02 hotswap presentation](../static/lisa02-200.png)
My Master's project was to replicate Linux process trees between servers, so one server could seamlessly take over from another without losing data or breaking network connections.
Page Flipping (Java, OpenGL)
![Java page flipping applet](../static/pageflip-200.png)
This is a Java applet I worked on as a prototype for a photo album application. Click the image to see it in action.
Planed.java computes a transformation matrix for flipping the OpenGL model matrix across a plane. I also use it for planar reflections in other applications.
This applet uses jogl to call OpenGL directly. I have also used the Java Monkey Engine for 3D Java applications.
P2PVPN (C/C++, wxWidgets)
![P2PVPN UI](../static/p2pvpn-screens-connect-200.png)
P2PVPN is a peer-to-peer firewall-tunneling VPN. It connects peer computers through firewall like Skype does, but instead of voice conferencing, P2PVPN creates a virtual ethernet interface and gives peers virtual IP addresses for each other.
There are three main components: A desktop client daemon (p2p_peer.h, p2p_peer.c) authenticates with a central Linux server, and a desktop UI (p2p_ui_frame.h, p2p_ui_frame.cpp) communicates with the desktop daemon. The client and server are pure C. The desktop UI is C++ using wxWidgets. The whole code base cross-compiles to Windows and Linux.
Web Server / Database Applications
![Simple HTML graph](../static/bofgraph-200.png)
Most of my bread and butter work is making web servers and distributed systems with Python (djselect.py, expand.py), C#, Groovy, Java, Erlang, Phoenix, Django.
Cloud computing and devops: AWS, Docker, Kubernetes, consul, etcd.
Databases: MySQL, PostgreSQL, SQL Server, DB2
Version control: Git, Subversion, Mercurial