Programming

Ryan Kocourek

Programming

I started programming when I was about 7-8 years old. I began with using Construct 2 which is a block coding system and published my first game to the Amazon Appstore using Construct 2 in September 2015 when I was 9 years old. While the game definitely did not do well, it was pretty cool to have my work published for anyone to see. A year or so after that I started branching out and started modding Minecraft by decompiling it and modifying the Java code. This is what really taught me the Java language as well as making Spigot server plugins for Minecraft. Somewhere in the timeline in between all this I dabbled with Python and I recall copying a Minecraft clone and modifying it by adding new blocks and such. Needless to say, Minecraft played a huge role in me learning to program. I also used Unity for a few years making some other games.

Nowadays, I use primarily Java and C++ for my fun projects and the HTML/JS/CSS suite for making this website work. This website uses NodeJS and Nginx for the server and I used the ThreeJS library for the 3D graphics on the front page. I don't really make video games anymore, mostly just practical programs for my own convenience or little projects to learn a new language or library. One such example is a 3D terrain renderer I wrote in C++ and OpenGL so I could learn how to use OpenGL.

Networking

Around the summer of 2020, computer networking piqued my interest. I made various projects primarily in Java to play with web sockets and making small chatrooms with NodeJS. I learned how to use Debian Linux because I wanted to set up cheap Minecraft servers for my friends and I to play on. Using these servers, I had a lot of fun just experimenting with VPNs and doing reverse connections to route web servers through other servers. Then, I found out I could get a free /24 block of public IPv4 addresses with my amateur radio license using AMPRNet. They provided me with the 44.31.132.0/24 block of IPs for the purpose of learning and using with ham radio.

I currently run a server in New Jersey that hosts these IPs and I have a system to choose any of the 254 usable IPs with a VPN. I can also route any local server on any port to any port on the New Jersey server through the new IPs. For all this to work, I had to learn how to use the Linux iptable command which took some time to learn. To use the IPs on the NJ server, I had to learn how to set up a BGP host so they could be properly routed through the NSP. You can learn more about this project below.

Custom 64-Bit Operating System

I wanted to learn more about computers and how the software interacts with the hardware to make a seamless user experience. I also recognized some holes in my programming experience/skillset that I needed to fill. I decided that writing an OS was the best way to sharpen my C skills and learn how to manage memory as well as how the computer itself manages memory.

Free /24 Block of IPs with AMPRNet

Apparently, obtaining an entire /24 (CIDR notation for 256 ips) block of IPs is not entirely out of our range. AMPRnet is an organization that owns 44.0.0.0/9 and 44.128.0.0/10 and hands out subnets of these ranges to pretty much any licensed amateur radio operator who asks for one.

Computer Specs

- i7-12700K 8+4c/20t 3.6GHz/5.0GHz
- Gigabyte Z690 UD AX DDR4
- RX 6700 XT
- 32GB 3200MT/s CL16 2x16
- Samsung 980 1TB NVMe M.2
- 2TB HDD
- 650W EVGA P2 PSU
- Noctua NH-D15 CPU Cooler
- Noctua A12x25 Fans
- Fractal Meshify C