I'm an undergraduate at Washington State University interested in computer science, mathematics, and robotics.
github
gpg
email
2024
- sky.cole.ws An interactive sky map created in pure javascript, without any dependencies. I used this as a challenge to deal with the math and to understand the HTML Canvas interface. Browse over 118K objects from the NGC, Messier, and Hipparcos catalogs by panning, zooming, and changing the time. Explore the sky with your mobile device using "AR" capabilities.
- NexStar8 Control is a simple Python script to control an Original Celestron NexStar 8 telescope (or NexStar 5), and interface with Stellarium's telescope control server. It's an old telescope with no modern drivers so I decided to make my own!
- Is FRC Pay-to-Win? is a website and presentation made in collaboration with Neta Keren as a culminating project for my AP Statistics class. The website aims to determine whether or not FRC success is positively correlated with county income by using statistical analysis and open source data.
- FRC Robotics with The Olympia Robotics Federation #4450 took up nearly all of my time senior year, and I'm so happy about it! In the on-season I worked as programming lead developing code for the USS ProtoStar: our robot for the 2024 Crescendo FRC Season. You can learn more about the USS ProtoStar and its code by clicking the bold link at the start of this paragraph. In the offseason (late 2023), I helped write the code for the TheaterBot: a DnD Monster "Beholder" that we made for a local high school's theater production. It was a great intro to the FRC programming ecosystem!
2023
- Desmos 3D is a website that converts .obj files into mathematical lists that are then imported into a custom Desmos graph I made. The graph combines many different aspects of computer graphics and 3D mathematics to render 3D objects in Desmos on a 2-dimensional plane. (Originally started before Desmos made their own 3D engine.) Aside from the converter site, all programming is in Desmos using their math-specific language. I'm pretty proud of how I was able to combine my Calculus work with programming!
- Windows 23™ a small little website I made to simulate various types and sizes of windows in various positions on my family's shop building in preparation for a remodel. It uses HTML5 Canvas and Lil'Gui was pretty helpful!
- Snow Canvas was a JavaScript Canvas experiment I made to learn the APIs. It can be used for a background on a website or video!
- Reaction Timer was something I made for the AP Statistics class at my high school to test reaction/response times to various light and sound stimuli.
- Edit Bookmarklet was a small script I wrote to save local changes to websites using localStorage, as well as restore such changes.
- Siddhartha Analysis was a website that I made for my AP Literature class analyzing Herman Hesse's Siddhartha through the guise of Siddhartha's friend Govinda. Be sure to click "Intro" first!
2022
- Interactive World Cup Bracket is a website to show standings from the 2022 FIFA World Cup. It's the most popular project I had made, netting over 130K views during the course of the tournament and getting to #2 on Hacker News! It is currently reflecting the end of the 2022 Cup, but will update for 2026 Cup also! I was unable to find a data source for the 2023 Women's Cup but will really try and get that working for the 2027 one.
- This Website! This is probably something like the tenth iteration of it, but it's something I've finally settled on. I hope you like it!
- BlueJ Breakout was my culminating AP Computer Science A project, it was a remake of Atari Breakout in Java. The "BlueJ" in the name refers to Oracle BlueJ which was the IDE we used in class. It was pretty fun to make, and my first graphics game! It's fully playable on all operating systems, so go check it out at the GitHub link!
- AppleSauce: an iOS App I created to make jukebox-style playlists for live events or just hanging out. A host creates a session using the app and shares a link with guests to a website where they can add songs to be played. It was heavily inspired by the Zephyr Wave project created by @kognise and @l3gacyb3ta on the Hacker Zephyr hackathon; I just made my own version that worked with Apple Music and iOS. Unfortunately, Apple released its own version of this before I published which was sad for me, although I am still proud of all I learned with iOS development and SwiftUI! I'm not quite ready to publish this as open source, but perhaps one day I will.
- ErgVR [WIP] is a web application I made that connects to a Concept2 rowing machine. It is designed to emulate the style of iFit treadmill workouts, while staying free and customizable. It uses MapBox to provide realistic terrain, measurements, and imaging during workouts. Eventually I hope to support live side-by-side racing against other ergs, as well as many other features. Take a look at the linked video in the repository to learn more.
- Equation Clock is a simple clock website made for my mom's third-grade classroom. It displays the time of day with simple addition, subtraction, and multiplication problems. The colors are customizable by tapping/clicking on the numbers. It is designed to be run full screen on a wall-mounted tablet. It uses the DSEG14-Classic typeface.
- webwombat is a powerful web proxy service. It enables people to write complex rules to reroute and rewrite traffic, and is incredibly configurable. The design of it makes it so it can be used as a web server, a reverse HTTP proxy, MITM listening server, and much much more. It uses custom logic to create SSL certificates on the fly, and its own domain specific config language. You can also extend its functionality by creating custom Python functions that edit HTTP messages. This is a huge project so please take a look at the linked GitHub repo with more info!
- History Timeline was a website I made for World History in 10th grade. With speedy internet, it should look pretty cool! It uses a lot of HTML animations that are resource intensive, but the end result is very impressive.
2021
- The SlabBook Pro™ was how I fixed my family's broken MacBook Pro by removing the screen and reassembling it to work purely with an external monitor. This neat little hack saved my family thousands of dollars!
- The Reactor is another sort of "joke" Slack app I made that reacts to all messages in a channel with emojis. It loops through each word in the message and finds the closest matching emoji. It works best in a large workspace with lots of custom emojis (like Hack Club, which has almost 8K!), because you can get some pretty random outcomes. It gets rather annoying after a while, so I don't recommend adding it to a large channel.
- koral is an ongoing attempt to create a distributed computing system that works on browsers using WebAssembly and Pyodide. It uses the already existing library luispedro/jug multiprocessing library, combined with custom JavaScript I've written to link the two. It isn't working 100% yet, although I hope that one day distributed computing via browsers will revolutionize scientific and mathematical research.
- nosource.cole.ws was a kind of easter egg/treasure hunt that I devised to test people's HTML and JavaScript skills. It got really really popular and people on Hacker News spent hours trying to solve it! I still receive many emails with potential solutions, and it amazes me how much reach it had! I've never publicly revealed the technical details of how it works, although I will sometime.
- API is a small little server-side Python script that I use for a good deal of different services for different projects. It has a nice QR Code generator, a counter service, and even interfaces with a third party URL shortener. It runs on a hosted Caprover instance on an "Always Free" Oracle Cloud VM.
- cole-wilson/dns is a custom OctoDNS workflow that uses TOML files that sync with Cloudflare DNS. It's a thin wrapper around vanilla OctoDNS, but I find it much easier to work with. Not only does it help facilitate DNS updates, but it also helps create a backup if Cloudflare goes down or if a domain expires. It is where I host all my DNS and makes it a lot easier than using the individual registrars.
- oly.hackclub.com is a website for the Olympia High School Hack Club, which is a school club I co-run with another hacker. Friday during Beartime B in room 314 (if you know what that means). It used css.hackclub.com for styling.
- Swapper is yet another Slack app that "swaps" everyone's profiles (but only if they sign up!) on Slack for a set period of time. It causes utter chaos! It makes it so that you "become" another person's account (profile photo/bio/name/etc.). After an hour or so, you are all "swapped" back to the original account. This was a challenge because I had to safely handle user data and make sure everyone's profile was okay (it worked out fine)!
- ASCII Facetime/Zoom is a proof-of-concept project I made to transmit camera images over TCP sockets and display it in color in the terminal. It was my Hacker Zephyr hackathon project and was supposed to be like an "offline" version of the always-present Zoom or Facetime. The end goal was to create a fully functional terminal app with sound and other features.
- Lightning Edit was a Slack app I developed for the Hack Club Slack that automatically edits your typos using a basic syntax. For example, if you sent the message "helo" [sic], you could send "*hello" and LightningEdit will automatically edit your first message, while deleting the correction. It also features sed-style replacement (*/replace_this/with_this/gi), and can go back more than one message (just add *s). Unfortunately, due to hosting issues, this bot is no longer active but it is open source!
- Adicity / Golfity are a set of projects based on my Adicity language engine. This is a Python program I made to create small, specific programming languages. Adicity is the engine, while Golfity is a code golfing language based on Python. I was really interested in code golfing at the time and it was my first foray into language development and text parsing.
- Pixel Art is another Slack bot I made that converts images to tiled emojis using Python. Essentially, you tag it with an image and will download and pixelate it. It then uses a whole bunch of hex code color emojis to paint the pixelated representation in a Slack message.
- ORF-4450 Inventory was a program I made to be run on a Raspberry Pi for my local FRC robotics team (#4450) that would enable team members to scan and inventory parts in a SQL database, as well as print labels for them. During this time I was still attending school remotely, and therefore had to program and test from a distance which was a unique challenge.
- equationpainter generates interactive "paint-by-number" math worksheet spreadsheets. I made it for an elementary school teacher, and it is distributed as a packaged/frozen Python app that makes use of Chrome for an interface. This was really fun to make because I got to learn how to use Excel libraries to automatically "design" spreadsheets.
- OverPop is a website I made for my ninth grade Honors Biology class. It is an interactive view of the dangers and causes of overpopulation on today's world, with an added narration and interactive globe. The background for this website was "space themed" which provided a challenge because I had to learn a lot of CSS! This website is probably the one that really made me learn CSS for good and inspired future websites.
2020
- Sailboat is a quick and easy way to distribute your Python projects! I spent an enormous amount of time on this, and it was the first large project I created. A full description is available at the link above, but it was essentially an all-in-one tool to deploy, package, and ship Python projects. I used it a lot with my other projects as well! I presented about it at PyCon USA when I was a high school freshman. A YouTube demo of the project can be found here. The project is not under active development anymore, but feel free to fork it!
- Nought is a file organizer written in Python. It allows you to sort files by date, by name, by type (even "screenshot"), by date modified, or by user permissions. You can run scripts on them, rename/move them and a whole lot more! I think this was the first Python project I made with the goal of distributing it.
- AssignmentLogger was an incredibly large undertaking that was based off of the earlier work I did on the homework tracker below. AssignmentLogger allowed students (and teachers!) to create accounts with their school emails and post the homework assignments for each class. Of course, there were no answers posted, but it helped students track their workload over time, and even had a Schoology calendar integration! It was eventually discontinued as my school district migrated to online school during the pandemic.
- Teacher Spreadsheet was a spreadsheet I made to practice Google Sheets skills and help out my mom (who is a teacher). It allows teachers to configure a gradebook with students and assignments, track standards and growth, and send home progress reports to parents. It used many advanced Google Sheets features and taught me a lot about spreadsheet design.
- LEGO Boost Dot-Matrix Printer I created a simple dot-matrix printer by using LEGO Boost blocks and a networked Raspberry Pi. I had a lot of fun with this, and it turned out really well!
- colewilson.xyz was my first website! It eventually became too bloated, but there is a ton of stuff I learned from it, like how to write CSS. I also put a little scavenger hunt into it as well....
- "Scrape" Science Fair Project was a big project I undertook as part of my culminating 8th grade science project. It used a web scraper to analyze news websites and compare word frequencies between conservative- and liberal-leaning articles. I then compared these on a chart.
~2019
- Homework Tracker was a simple website (no longer maintained) that provided links to homework and resources for students at my middle school. A good portion of the school used it! It was an important precursor to AssignmentLogger, which I would make later.
~2018
- Webmole was a very simple PHP-based web proxy that fetched sites remotely to bypass my school's web filter. I didn't use it for much, but it was an important predecessor to webwombat (mentioned above).
- "MathBuddies" was a website that had absolutely nothing to do with math, instead it was a hosting space for Flash games like those on coolmathgames.com. It was pretty popular in 7th grade!
- Anaconda was almost the first Python program I ever wrote, and the first time I used GitHub. It was a graphing calculator that used Python's turtle library. It only really works on old Python versions, and I don't have the patience to go back and refactor the code. However, I put it here as an example of my early work.