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)
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)
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)
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)
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 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
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