Updated July 4 2017
Looking for my security profile? Try here.
As an avid fan of custom GNU/Linux configurations, I experiment with different terminals, window managers, and desktop environments to suit my needs. I was interested in Kitty as it uses the GPU to accelerate its performance. While building it into my current setup at the time, I noticed that there were issues with the way Pywal was setting colors. Pywal is a tool for generating and configuring color schemes, and includes support for configuring and reloading the current Kitty colors. My pull request from May 2019 is the result of my tinkering and fixing of Pywal's Kitty support. This pull request demonstrates my technical writing and problem-solving abilities.
You can demo the project yourself at metronome.patrickhurd.pro.
This project, begun in July 2017, is a chess analysis board. It uses WebRTC to communicate peer-to-peer so spectators can view the instructor's moves and color indications. Spectators may make moves locally on their board, but only the host's actions will be shown to all spectators.
One interesting thing so far is that I have written the front-end such that the forward and back buttons will be able to undo and replay any series of moves. This however is not fully implemented yet. My next addition will be to allow users to select a random URL path to uniquely identify their instruction room - this way multiple lessons may take place at the same time.
You can demo this application here, however, I ask that you keep your stay short, as this is hosted on free Heroku dynos (1000 hours free per month).
This personal project of mine is a CRUD .Xresources palatte generator written in Go using go-gtk. It allows importing and exporting files in the .Xresources format used by Xwindows applications. It is designed specifically to work with terminal color schemes. On Linux as an optional dependency, grabc can be used to pick any color currently visible on the screen, letting you easily choose colors which match your desktop wallpaper.
Open chrome://extensions and play with the visualizer options to explore the various display modes. My favorite is HSL Random Circles with the Fill checkbox enabled.
This is an open source contribution to the Go win32 bindings. My pull request adds the SystemParametersInfo function, as well as the constants used by it. I had a need to use the function myself, and implemented it after seeing nobody else had. I personally use it for getting and setting the desktop wallpaper on Windows. This was by far one of the hardest programming projects I've done, due to the lack of documentation and it being my first open source contribution. You can check out my pull request here and the Wiki entry I wrote documenting the function and its usage here. I always take great care documenting everything I do, because I know I will find it useful in the future when I return to a project.
The final project for the cryptography class I took during my junior year of college was to do a presentation on a security-related topic. I worked with a classmate to present about SQL injection. I wrote this server in Go which is vulnerable to SQL injection attacks in as many surfaces as possible - login form, search bar, and cookies. When it was demonstrated, it worked perfectly, but returning to it a year later, it seems either Go has updated its database/sql package or the sql driver I used now correctly prohibits injection into queries.
During a cryptography course in my junior year of college, our first project was to write a program which encrypted and decrypted using an affine cypher. I wrote my implementation in Perl. You can check out the full source code and tests here.
This program was written as an assigment in my Computer Organization and Architecture class during my sophomore year of college. It outputs the first ten Fibonacci Numbers. You can check out the full source code here.