I like to code. You can find my projects here and on my GitHub.
You can contact me via:
email: contact@pruijs.net
This is my journey so far. I started coding when I was 11 years old.
My first Cardano DApp. This was my first time working with Mesh, a React framework to build transactions and communicate with CIP-30 compatible wallets, and also my first time working with React.
I wrote a backend in Rust, and others wrote the frontend. Used sqlx for the first time and created a more complex Nix flake.
This is a website where you can get random questions to socialize more in a group. I worked with a team; I wrote the TypeScript and CI/CD, and others wrote the HTML and CSS.
A JSON-to-Nix converter written in Haskell. This was my first time finishing a product with Haskell. I really enjoyed the developer experience.
This is a set of handy, reproducible bash scripts. View on GitHub
I took the Binance Academy course “Blockchain Deep Dive.” Binance Academy taught me about blockchain fundamentals, and I learned a lot from those videos.
I wrote my first book, a guide for rehabilitative coders. You can read it online.
I solved many Advent of Code puzzles in 2023 with Rust.
You can view my solutions in my Advent of Code mono repository.
There was an exercise in Advent of Code to calculate the surface area of a weird shape.
I learned about the Shoelace Formula and wrote a Rust crate for it.
I learned more about NixOS by building my own configuration.
I wanted to extract audio from YouTube. yt-dlp has so many flags and options that I often forgot how to use it, so I wrote a flake for it to make it easier.
I wanted to improve my Nix skills.
Nix is a powerful build system, but its language is challenging. The
syntax is horrible, so I had to learn it.
A CLI for fetching Kanye West quotes. I learned more about using async/await in Rust with the Tokyo crate and used Serde to convert JSON to a Rust struct. This was made with the Kanye.rest API.
A simple CLI for generating SHA-256 hashes.
New Read is a new way of spelling Dutch words so people with dyslexia can avoid common misspellings. This is done by eliminating different ways to write the same sound. The NRC (New Read Converter) is written in Rust, and I created a simple language to define string conversions. I also used Clap (command-line argument parser) to generate help menus for the CLI.
This was my first attempt at using Rust in my own projects. Randaam is an app I made when I was younger, now turned into a command-line interface. I published my first crate on crates.io and wrote documentation for it on docs.rs.
As I learned from ka.pruijs.net and using JavaScript, error messages are critical, especially with a visual impairment. I’ve heard that Rust has amazing error messages, and it’s popular for its speed and safety. I decided to learn it mainly for those error messages and its strict type system. Debugging is slower when you can’t see well, so not having to guess value types is a big plus. I read the book from start to finish, and as my vision improved, I switched to Helix, an editor with Vim key bindings. Rust has become my favorite language.
I’ve made a few small contributions to Element X for iOS, a Matrix client, and filed issues and pull requests here and there. I learned a lot about forking repositories, making changes on a branch, and reading contribution guidelines. Contributing to open source improved my confidence in collaborating and reading others’ code. I will continue contributing to make software more accessible. Explore my GitHub to see my contributions.
PAKS is a website where you can drum simple rhythms with great Braille display integration. I didn’t learn much new except for HTML text fields. I used existing skills to create a tool where both visual and non-visual users can drum together.
This is one of my greatest accomplishments. I learned to program without vision, using a screen reader, and discovered the importance of avoiding JavaScript. After learning TypeScript and working with CI/CD, I set up my first Nix flake for reproducible builds. The project is simple, but it was the first one I developed successfully with my visual impairment, making it very special to me.
This is an introduction to Haskell, a functional programming language. Though I haven’t read it cover-to-cover, Haskell influenced me to write only pure functions and eliminate state in other languages. Pure functions are the way forward for long-term maintainability in most projects.
This is Randaam adapted for the browser. This was much easier than developing an app in UIKit. I learned how to define types in JavaScript and how to implement dark mode with system theme detection.
This was a joke website stating that pizza is healthy (in Dutch). I learned how to set up a custom domain with GitHub Pages and made my first CSS animation.
The Space is a game I made in five days for a game jam. I learned how to use Unity’s tile system and gained experience with pixel art. A friend created the monster sprites. The theme was “Lost in Space,” so I made a game where children are lost in space. It’s a bit buggy, but I’m happy with the result.
Advent of Code 2020 is a competition where you solve puzzles. I chose Python and learned a lot about the language. Although I couldn’t complete it due to my school schedule, I enjoyed the challenges.
Pong made with Python. I always wanted to learn Python and make Pong, so I thought, let’s do it now. I made it with Turtle in one night. Python was a very simple language, and for small projects like these, it’s perfect. I enjoyed the process, although it was short.
Rainbowglow is a game that I made in 30 minutes. It’s hard to make a game in such a short time period, but I was up to the challenge. The game is trash, but for 30 minutes, it is good in my opinion. I think it is a good concept, so I may turn it into a polished mobile game one day. Made with Unity and fast game.
Music Share Hub (I know it’s not the best name) is a little project I made for sharing music. I found myself repeating an action over and over: wondering, “On which platform does person X listen to music?” Was it on Spotify or YouTube? So I made a website where you can type the name of a song in a text field, and the links generate automatically. The input was stored in the URL so you could send that to your friends. And when your friend opens the URL, they can decide for themselves. It was pretty easy to make, but I did learn a few small things: storing information in a URL and styling a text field. I was very happy that I could program because I could solve a problem I had with my programming skills.
An endless runner that I made on my own. I learned a few things that are important for game development. I worked on it alone from start to finish. I did the App Store Connect uploading all on my own, and I made my first Apple TV and Mac application and uploaded them to the App Store. I really enjoyed seeing my app on the Apple TV because the screen is so much bigger than a phone. I didn’t spend too much time on it because it was not a “new” concept, but I did finish it to the end, which felt very rewarding.
I first tried to make a website with HTML and CSS, and it was very easy to do that. The problem was that the scope was too big, so I did it again but with a much smaller scope. I wanted to learn more about JavaScript, so I learned how to load a .json file and create HTML elements with information from the JSON file. I learned a little bit of JavaScript, how JSON works, and I really liked the whole process of making a website because you get fast results.
Later, I replaced the site with pruijs.net because sempruijs.nl looked ugly.
I participate almost every week in the One Hour Game Jam. I really enjoy making a game in one hour because the results are so bad that it’s funny to play the games. I use the Fast Game project every week, and through this game jam, I can improve the Fast Game project. I participate in this jam almost every week, so there is always something to play there :)
Fast Game is not a game but a Unity 2D project where you can make games fast. This is made for prototyping and game jams where you are allowed to use pre-made assets and scripts. The project contains scripts that are easy to use and multifunctional. It also contains art assets that I have made for game jams and for the Fast Game project itself. It also has some music and sound effects that I made for game jams and for the Fast Game project. When a prototype has to be made, I clone the Git repository and make changes to the prototype. I do not make the repository public because I do not want people to use my music and sprites. Because of this project, I do not have to repeat myself constantly when making games.
Sem Service is a candy machine made with an Arduino. I wanted to make something with Arduinos, and I wanted to make a little bit of money, so this was the perfect project. You can order a candy bar on a website if you’re on our internet connection, and then you can grab the candy bar out of the machine. My dad made the API from the website to the Arduino, and I created the machine. I learned a lot with this project: how electricity works, how to control the Arduino, C++, working with servos, and much more. I will add photos of the candy machine in the future.
Parallel Worlds was a game made for the HighPixel Game Jam 1. I had one week to make a game, and it was fun to make. I learned more about game jams and that it is important to keep the scope small. You can play the game on itch.io.
Tankee was my next big project. I wanted to do something with local multiplayer, so I thought: Tank battle! I learned a lot from this project, but I felt like it was not an amazing idea, so I stopped. I worked hard on it, and it was fun to play for some people but not for others. The controls were hard, and you needed two controllers. I wanted a game that was more accessible and less violent. (That game is Flyght, which I am working on right now.)
I just had an iPhone 7, and I was fascinated by the Taptic Engine. I wanted to feel all the feedback options, so I made an app in Xcode to test all the haptic feedback effects you could use as a developer. It was made in under a day, I think, and later published on GitHub.
This is a rage game. I was a bit bored from a big project of mine, so I made this project. You can play it on itch.io, but please do not break things when you are angry. I learned with this project how to use the animator and how to transition from scene to scene. I really enjoyed seeing people playing the game.
Wosta is a game made with Unity and C#. The rules are simple: Eat fish that are smaller than you, avoid fish that are bigger than you. When you eat a small fish, you grow. Become big. I made this game in collaboration with my dad. I learned a lot with this project because of my dad. He showed me how to avoid spaghetti code and write code that is easy to understand. We worked with Unity Collab, and after he stopped paying for that, I put the project on GitHub. I also made some updates to the application: a Christmas update, a sticker pack for iMessages, and an update where you can wear hats. I did those updates on my own. I really enjoyed working on this project.
I wanted to make games, but Xcode was not the best way to do so. So I learned the basics of Unity to make this project. It is a maze game, and it has the clever name aMAZEing. I picked up Unity and C# fast. Making something in Xcode is so much harder than in Unity. I think this was made in about 1 or 2 days.
Tic Tac Pro is Tic Tac Toe, but with the option to play on a 3x3, a 4x4, and a 5x5 board. It was time to apply my knowledge from Learn to Code 1, 2, and 3, and Intro to App Development with Swift to make an app! My brother suggested that a great practice to test your skills is to make Tic Tac Toe. It was a great tip, and I started making Tic Tac Toe. I wanted to release the app, so it had to have a cool feature: a 4x4 and a 5x5 board. I spent too much time on this feature, and when it was done, I came to the conclusion that it was not fun to play on a 4x4 or 5x5 board because the starting player always wins. :( This was painful to see, and I learned something very important: PLAYTEST! I could’ve just grabbed a piece of paper and tested with a friend if this concept was fun to play. I did learn more about programming and writing elegant code.
Now that I knew how to program, it was time to learn how to build an app with Xcode. I followed the Intro to App Development with Swift course from Apple, and I really enjoyed it. I learned how Xcode works and how to make a user interface. I didn’t make an amazing app, but that was not the point of this course. My goal was to learn how to use Xcode, and I did it!
My dream was making an app for the App Store. So I installed Xcode. I followed the first few chapters, thought I knew enough, and started making Randaam. Randaam is a Dutch random person generator, built with Swift and UIKit. The most important skill I learned was how to Google. I understood what I was writing and how to write it, but progress was slow, probably because I had too little knowledge of UIKit and programming in general. My dad published the app on the App Store with his App Store Connect account. It was really fun to make, and I learned a lot from it. I’m also grateful my brother encouraged me to use Git, so now the project is on GitHub. :) Later, I remade Randaam with SwiftUI.
My first experience with programming was with Scratch. I made a bird game where you had to avoid other birds. I learned the basics of coding, and it was really fun to make. I think I was around 11 or 12 years old. Unfortunately, I can’t find the project on my account anymore. :(