Willvanelswyk.com

A portfolio website, made from scratch using HTML, CSS, and JS.

I've created this website, willvanelswyk.com, as a challenge to help me learn HTML, CSS, and JS for the first time. Currently, the site is quite simple, and probably ineffecient, consisting of several HTML files, two CSS files, and a single JS file. I host this project with CloudFlare, and redirect the root domain to the www subdomain. In the future I intend to rewrite willvanelswyk.com in something like React or Astro, to add modularity and simplify the code, especially on pages like this one, where the project elements are repeated.

In addition to giving me coding experience, this website has been an opportunity to learn about UI and UX decision-making, which I love just as much as the programming. My favorite feature of willvanelswyk.com is the dark/light mode toggle, located in the navigation bar. Adding the toggle element helped me learn about HTML-JS interaction, how to store and access localStorage, CSS display and coloring strategies, and how browsers like Google Chrome store site data. Plus, I think it looks cool! While willvanelswyk.com is really just a glorified resume, it's a proof of concept that, provides a clean and professional experience to the user.

website-code

Gustie Grub Notifications

A python program built to notify users when desired foods are available in the Gustavus cafeteria.

In my first year of college, I encountered a problem when it came to using the campus dining hall: I never knew when my favorite dishes would be available, and constantly checking the menu was both a nuisance and, mostly, a waste of time. Gustavus had no system for personalized alerts, so I built my own.

Gustie Grub is a modular python program that, in three main steps, sends daily personalized SMS messages describing when and where desired foods can be found in the dining hall. First, the program scrapes the HTML of the Gustavus menu website and stores each listed food item in a dictionary, along with mealtime, location, and pricing information. Second, the set of available foods is compared with locally stored user information, including phone numbers and preferred dishes. If a match is found, Gustie Grub uses an SMTP python library to email (received as a text) a formatted message containing the day's desired foods, along with relevant information.

Currently, I run Gustie Grub on my personal computer, with an automatic startup and a seperate python file which reads and stores date information to ensure that only one notification is sent per day. In the future, I would like to transfer Gustie Grub to a server and transition to using a paid SMS API, such as Twilio, to improve reliability for the user. Furthermore, creating an online portal where users can sign themselves up for notifications and select their desired dishes would be an exciting next step.

gustie-grub-text

Dice Calculator for Risk

A PyQT5 desktop app capable of simulating sequences of battles in the popular boardgame Risk.

Risk is a popular strategy game where players battle armies in pursuit of world domination, and it's one of my favorites. However, anyone who's played the game all the way through knows the struggle of rolling and counting the same five dice ten, twenty, or even fifty times in a row. So, to improve my skills in modular programming, array manipulation, and string formatting, I built a user friendly program that can determine and display the outcome of numerous dice rolls at once, according to the rules of Risk. For the sake of flexibility, the calculator allows for additional dice, for both the attacker and defender, and customizable dice shapes.

risk-dice-calculator

Originally, the Risk Dice Calculator was a Python program that could only be used with text input through a console. While this implementation worked, the user experience was slow, rigid, and boring. To solve this, I learned PyQT5, a Python module for creating desktop apps, and created my first user interface. I enjoyed the design process, and learned CSS along the way, to ensure that the calculator was as polished and intuitive as possible. Now, I use the Risk Dice Calculator to improve my experience whenever I'm playing the boardgame. In the future, I think that this project would be an excellent way to learn mobile app development, to make the calculator even more accessible!

risk-dice-calculator-gui

3D Modeling with Blender

A series of animations and models designed in Blender.

Blender is an open-source 3D modeling software, and over the course of several months I learned the basics from various YouTube tutorials. I've always been interested in digital art because of its flexibility and range of applications, so I wanted to gain a general understanding of how 3D design worked. I learned a lot about rendering, textures, and physics simulations as I modeled everything from a beach house to custom shortcut icons for my desktop.

blender-phone
blender-discord