Caitlin Wilks

Programming language and tech skills polyglot

cat@cat.bio
github.com/catchouli

Better Tactics

Better Tactics is a Chess tactics trainer that uses the concept of Spaced Repetition to help you master chess tactics. The idea is to help you gain calculation experience and tactical pattern recognition by repeating puzzles over time. Puzzles you've seen will get queued up for review daily, and puzzles you find hard will be repeated more frequently, while puzzles you find easy will be repeated far less often to make the process more efficient.

Read more...

Dreamfield

An aesthetic ps1-style game inspired by the classic From Software game King's Field. The project is comprised of over 5k lines of rust code, including a custom opengl renderer, and includes shaders that emulate ps1-style rendering, with affine texture mapping, dynamic tesselation, and the typical warping textures that come with it.

Read more...

Tracy

My toy C++ path tracer. Supports fully diffuse, fully specular, and emissive materials, and has a half-baked dialectric material also (that shows as black in the image for some reason, I don't remember the details anymore!).

Read more...

Worldhaus

A 2d building mmo for users of raocow's talkhaus. Made as a birthday-joke-update for that website.

Features:

  • multiple tilesets including pixel art tiles
  • four tiled layers including a collision layer
  • infinite canvas
  • multiple dimensions

Written in Javascript (Node and browser side)

Read more...

Functional ear trainer

Functional ear training is learning to identify notes by their scale degree (i.e, what note they are in the major or minor scale). It's an alternative to typical ear training that's based around identifying relative intervals between notes, and can be used to quickly recognise and transcribe melodies.

It works by playing an initial 'cadence' (or chord progression) to get the scale's key 'in your ear'. It then plays a note from the scale and it's your job to identify the note played by scale degree.

I recently became interested in training my ear but I couldn't find an application that connected to my keyboard through midi, so I quickly threw this one together. It supports any key, notes from a single octave or any octave, playback of multiple notes, and more. It trains you to recognise the scale degrees of notes within a key.

Read more...

Realtime cloud volume rendering

A realtime sky renderer with path-traced clouds.

Based on this fantastic paper: Physically Based Sky, Atmosphere and Cloud Rendering (2016)

Read more...

Hexapod design

I designed this cute hexapod model in Fusion 360 with the intention to one day build it.

Here's a video from the test app I put together to experiment with the kinematics.

I chose a hexapod because the kinematics are simple but quite interesting and it seems like it makes for quite a versatile walker design.

Read more...

Isomorphic keyboard

I designed this neat hexagonal isomorphic midi keyboard in Fusion 360 and 3D printed the parts.

The switches are cherry-like low actuation force 'clear' switches and it's fun to play with.

The underside is wired up as a diode matrix and an arduino pro mini is used to sense the pressed keys and act as a USB midi interface.

Read more...

CNC Machine

A mostly-3d-printed CNC machine.

Based on an open source thingiverse design, I built this mostly-3d-printed CNC machine out of:

  • About *2kg* of 3d printed parts
  • Structural steel tubing
  • Motors, bearings, and a 3d printer control board

It has a roughly 100cm x 100cm work area, with about 30cm of Z movement.

So far I've used it for plotting using a pen, and routing using a dremel. The accuracy is quite good and it's large and solid although it could use some calibration. I've also toyed with the idea of setting up a 3d printing head and doing large prints with it due to the large build area I'd have available.

Read more...

Tyke

My (wip) toy Haskell game project Tyke. The plan is to make an OpenTTD-style simulation game that uses voxel terrain.

Features:

  • fast minecraft-style blocky terrain
  • functional reactive programming
  • seamless perspective/isometric view transition

Read more...