claytonhickey.me Open in urlscan Pro
2606:4700:3030::ac43:9098  Public Scan

Submitted URL: http://claytonhickey.me/
Effective URL: https://claytonhickey.me/
Submission: On November 02 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

Clayton Hickey
Home
Blog
More Nodes
RSS


CLAYTON HICKEY

I'm currently studying Bioengineering and Computer Science at the University of
Pennsylvania. I'm currently developing a language learning app, Tutor Engine.
The app's development is being documented on my blog. Below you can find an
abbreviated history of my over 11 years of programming projects.


EXPERIENCES


PROJECTS

WGPU GAME OF LIFECODEDOWNLOAD

Started: 13. Juli 2022; Completed: 13. Juli 2022

skills: Rust, BUI (my core gui lib), BUI Basic (my gui framework), WGPU, WGSL,
compute shaders, desktop software, Windows software, Linux software, Winit

Conway's Game of Life computed and rendered on the GPU using WGPU. Written with
my own gui framework, BUI Basic.

BUI BASICCODE

Started: 22. Februar 2022

skills: Rust, BUI (my core gui lib), GUI framework design, cross-platform
(mobile, desktop, web)

Simplified wrapper around bui for building guis without sacrificing any
performance.

Won 1st place wth a perfect score at the PJAS state competition.

I'm a little bit disenchanted with this. I think there will need to be
innovations (that I'm working on) in programming languges to actually achieve
the ideal this project seeks.

Note: Latest update is not pushed

BUICODE

Started: 13. August 2021

skills: Rust, WGPU, WGSL, render shaders, cross-platform (mobile, desktop, web)

A performant WGPU (currently - plan to support multiple backends) GUI rendering
library.

Note: Latest update is not pushed.

MICRO VSRGCODESHOWCASE

Started: 12. November 2021; Completed: 28. November 2021

skills: Rust, microcontrollers, Raspberry Pi, dynamic parsing

A rhythm game for Raspberry Pi - specifically the Raspberry Pi 3B+. Imports 4k
osu!mania maps (no hold notes). Single player (2 player may be added). I
completed this project for a Raspberry Pi 3. This game is meant to be played
with wheeled robots hitting the notes and sacrifices were made for that.
However, it can be easily modified to fit one's requirements. The game
dynamically reads and parses osu!mania (a popular and now open source rhythm
game for desktop operating systems) set/map files that the user can choose from
to play on startup.

CLAYTONHICKEY.MELIVE見るCODE

Started: 15. November 2023; Completed: 16. November 2023

skills: websites, JavaScript, HTML, CSS, web hosting, Linode, Nginx, DNS,
Cloudflare, Nix, static sites, Web Components

A portfolio website (this website) created in raw HTML, CSS, and JS using web
components

CLAYTONHICKEY.ME (OLD)CODE

Started: 5. Juli 2021; Completed: 5. Juli 2021

skills: websites, Rust, Maud, static sites, HTML, CSS, web hosting, Linode,
Nginx, DNS, Cloudflare, Nix

The old version of this site was generated statically with Rust and the Maud
templating engine. Deployed with Nix.

WORD SEARCH SOLVER OCRLIVE

Completed: 1. Februar 2019

skills: websites, web apps, algorithms, OCR, JavaScript, p5.js, HTML, CSS

A tool to solve word searching using OCR which allows users to upload pictures
of word searches so they can solve them quickly. Developed because I am very bad
at word searches.

CLAYTONDOESTHINGS.XYZLIVECODE

skills: Rust, Rocket.rs, fullstack web, DNS, Cloudflare, web hosting, Linode,
Linux, Ubuntu, Nginx, server-side rendering, web templating, Maud, Google SEO,
Bing SEO, dynamic sitemap, HTML, CSS, websites

My personal website to show off projects. Has gone through many rewrites. The
current version is made with Rust using the backend framework, Rocket, and the
compile-time templating engine, Maud. The website is hosted on Linode and put
behind a Cloudflare proxy to protect from the surprisingly common DDOS attacks.
It's also behind a reverse proxy, nginx, to allow for other sites to be hosted
on the same Ubuntu Linode server Gets 100% on Google Lighthouse. Previous
version used NodeJS, expressJS, and a custom web framework/templator.

CARAILIVECODEDOWNLOADSHOWCASE

Started: 7. April 2019; Completed: 7. April 2019

skills: Unity Engine, C#, AI, ML, custom ML, desktop software, Windows software,
Linux software, Mac software, web apps

I created a custom neural net/machine learning procedure to train a neural net
to drive through a track. It's inefficient but it works. I made a video
describing how I developed it and how it works.

SOUND GALAXYDOWNLOADCODESHOWCASE

Started: 28. November 2021; Completed: 28. November 2021

skills: Rust, WGPU, WGSL, render shaders, Winit, BUI (my core gui lib),
Constrainer (now "archived indefinitely" tool for creating CAD-like GUI),
desktop software, Windows software, Linux software, audio visualization, async
software, async in Rust

I adapted a JavaScript/p5.js tutorial by ExecuteBig which itself was an
adaptation from a HackClub tutorial to use Rust and my own GUI libraries/tools
which are fully GPU accelerated.

Usage: place a sound file named "input.mp3" next to the downloaded
executable/binary file and run the executable or specifify the location of the
file as the first argument when executing from a terminal

MEET WITH PONGLIVECODE

Completed: 21. Januar 2020

skills: JavaScript, HTML, CSS, p5.js, p5.sound, web apps, software audio
playback, Node.js, Websockets, socket.io, real-time multiplayer, multiplayer on
the web, multiplayer client prediction and rollback, multiplayer matchmaking

A real-time multiplayer pong clone made for a Repl.it competition. Instead of
just playing to a score, winning a point reveals information about the other
player (that they submit) so that they can get to know each other a bit. Physics
calculations are done server-side to prevent cheating. Optional singleplayer is
available.

OSU!KEYPADCODE

Completed: 22. Juli 2020

skills: OpenSCAD, Arduino, C++, microcontrollers, peripheral dev, CAD, FreeCAD,
FDM 3D Printing, Debouncing, Soldering

An extremely cheap ($10) 2 key keyboard for playing Osu!, a rhythm game, with an
Arduino Pro Micro base. Case designed by me in FreeCAD, keycaps designed by
rsheldiii and customized with OpenSCAD, all 3D printed on my MP Select Mini V2
in PLA. Code was developed by me using Arduino's pre-built tools and C++.

SYMBOL TRANSLATORLIVECODE

Completed: 4. Juni 2019

skills: web apps, JavaScript, HTML, p5.js

Created a web app with p5.js to make visually translating between cryptic
"fonts" easier. Made for the Game Theory ARG.

PEBBLEXCTIMERREBBLESTORECODEDOWNLOAD

Completed: 20. August 2018

skills: C, low-level/embedded software, Pebble UI

A timer for keeping track of cross country or track running intervals and other
repeating timer needs. Also functions as a stopwatch. Uses the native Pebble
SDK.

IMAGES FROM IMAGES 2CODE

Started: 22. Juli 2022

skills: WGPU, Rust, CLI

Makes images from images using the GPU so it's much faster. Will update so that
it also works in the web and desktop without CLI.

LEGITIMATE IMAGES FROM IMAGESLIVECODE

Completed: 26. Mai 2018

skills: JavaScript, p5.js, HTML, CSS, web apps

I made a program that takes a bunch of images and forms them into another image
by color matching.

MULTIKAHOOTCODELIVE

Completed: 9. Oktober 2019

skills: JavaScript, Node.js, ExpressJS, HTML, CSS, API, web apps

Allows a single player to control multiple Kahoot "users" from an entirely
separate website. Also allows keyboard controls without the use of external
hotkey software so that one can answer faster on a Chromebook.

Does not work for now due to changes in Kahoot's API

GIVINGDUOCODECHROMEWEBSTOREFIREFOXADDONSDOWNLOAD

Started: 12. August 2020; Completed: 30. August 2020

skills: reverse engineering APIs, JavaScript, HTML, REST API, browser
extensions, browser extension publishing

A browser extension to allow users of Duolingo to give multiple lingots at the
same time to users for their contributions to the forums or helping them
understand a new topic.

Note: Lingots no longer exist so the extension no longer works..

LIVE STREAM MUSIC PLAYERCODE

Started: 30. März 2018; Completed: 3. April 2018

skills: Python, FFmpeg, desktop software, Windows software, Linux software, Mac
software, API, YouTube API

Gets royalty free music from creators and automatically gives them credit to
play during live streams through integration with OBS


OPEN SOURCE CONTRIBUTIONS

ADDED REPEAT OPTION TO TIMER FOR INFINITIME (OPEN SOURCE WATCH FIRMWARE)PR

Started: 9. Januar 2022; Completed: 9. Januar 2022

skills: C++, firmware development, FreeRTOS software, LittleVGL

I purchased a new PineTime watch which uses the Infinitime firmware. I had
previously used my own app (PebbleXCTimer) on my old Pebble Time for this
function but it's not portable and the Infinitime firmware does not have the
function built in or sideloading. So, I added the functionality to the timer app
already built in.

Note: PR is unmerged but code is functional. They said they want it to be put
into a separate app but I haven't gotten to it yet.

ADDED ABILITY TO VIEW COMMENTS TO LBRY ANDROID APPPR

Started: 28. Mai 2020; Completed: 29. Mai 2020

skills: Android Native, Android layouts/views, Java, REST API, mobile apps

Comments on the LBRY website were already present but they were not available on
the Android app. I like to read comments so I decided I should add them to the
Android app so I analyzed how their website (ReactJS) was able to get comments
from the LBRY REST backend server and adapted a similar technique to make
comments available on the Android app.

Note: I only included the first page of comments in my PR because I didn't see a
way with their API to ensure that the comments were kept in sync (if a comment
was added or removed before a user would scroll, comments may be missing or
duplicated on the user's screen) without fetching all the pages at once
(defeating the purpose of pagination of saving memory and bandwidth). I thought
they were going to add something to their API or something but after my PR, they
just went with the latter solution and fetched all the pages at once.

MADE IT SO THAT ONE CAN UNPUBLISH AND/OR DELETE THEIR OWN VIDEOS FROM LBRY
ANDROID APPPR

Started: 2. Oktober 2020; Completed: 2. Oktober 2020

skills: Android Native, Android layouts/views, Java, REST API, mobile apps

Unpublishing and deleting videos are separate actions on the LBRY platform.
However, the LBRY Android app did not make this distinction and performed both
actions. So, I added another button and fixed some UI logic around it.


ABANDONED PROJECTS

FROM ANARCHYCODE

Started: 20. Juli 2021

skills: VR app development, OpenXR, Godot, FFI, Desktop Games, Windows Games,
TCP Sockets, real-time multiplayer, async software, desktop software, Windows
software, Linux software

A micro voxel-world VR game. Never finished but it was a good exercise in making
VR games and using Rust/FFI in game engines for optimal performance. Likely
applicable to other engines like Unity and Unreal. This game would probably
require a custom rendering pipeline to make performant at all so if this were to
be fully developed, a custom engine would be used.


TIDBITS


DESKTOP: CUSTOM

OS: Windows 10
CPU: i7-6700
GPU: RTX 2060
RAM: 32GB
Monitors: 1 to 1.5 (average 1.25)


LAPTOP: FRAMEWORK 13

OS: NixOS
WM: Sway
CPU: 12 Gen Intel i5-1240P0
RAM: 64GB


PROGRAMMING ENVIRONMENT

IDE: NeoVim
Terminal: Alacritty
Shell: Bash
Release channel preference: LTS


PERSONAL SERVER

Host: Linode
RAM: 2GB
CPU: 1 core Xeon E5-2697
OS: NixOS
Proxy: Nginx
Server: Nextcloud


<3 SOFTWARE STACK

Rust


<3 WEB STACK

Backend: Rust w/ Actix
Client: static HTML/CSS/JS generated from OCaml
Database: Postgres


SPORTS

Ex-Cross Country/Track
Tennis
Cycling

--------------------------------------------------------------------------------

Switch Language: English日本語
Check out the code on GitHub.com