Skip to content
View jcwilk's full-sized avatar
  • Available for tutoring and small contracts
  • San Jose
Block or Report

Block or report jcwilk

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
jcwilk/README.md

What I'm currently working on

  • Procedural sound fiddlings
    • Going deep down an Enumerator rabbithole as I try to build a sound system with cyclical delays, filters, and channels using lazy enumerators for everything
    • Currently trying to understand the Enumerator::Lazy code so I can figure out why this doesn't work
  • Crypto research
  • Figuring out how to leverage fractals to make games without it being gimmicky (mandel6 currently)

List of hobby projects

Very incomplete, but these are the most fun to play with. I will likely continuously update this list with fancier gifs and more thrilling descriptions.

Game prototypes (all in pico-8)

❤️ Material Girl ❤️

material_girl p8

My first end-to-end prototype that goes from intro to ending sequence. This is based on an idea I had about representing getting close to people via dating as JRPG-style combat where you have to figure out and manage metrics that are only indirectly measurable through your "opponent"s words and actions. Conquer all the boys and stock up on accessories to land your dream beach hunk 💅🏖️💞 Lots of fun with promise-driven tween chains in this one.

play discuss source

🙈 Anx 🙈

anx p8

A prototype about the terror of other people as we go about the tedium of our day. This was basically an excuse to implement a (sloppy) 3d engine on top of a 2d engine (pico-8). Because it's so horribly inefficient I had to implement some kind of interesting lossy optimizations, it basically skips rendering certain columns of pixels and renders the other ones nearby as wider to fill in the gaps which leads to a somewhat pleasing shimmering effect when things get too busy in a certain part of the screen. Social stress leads to panic attacks, pixel deconstruction, and fisheye effects. Side effects of demons may occur.

play/discuss source

🚙 Traffic World 🚗

traffic_world p8

A quick protoype towards an idea I had about a world that was entirely covered by roads without destinations, just traffic all the time. As we all know though, traffic can be influenced by causing accidents which can be a very effective way of deterring police from interfering with your progress. They tend to respond quickly and firmly to transgression though...

play/discuss source

Fractal experiments

Mandel1 (pico-8)

mandel1 p8

My first foray into mandelbrot generators. This one is pretty straightforward but it has a fun tile-based continuous rendering method you can see below.

mandel1_0

play writeup source

Mandel2 (webgl)

My first webgl project. Turns out graphics cards are really good at calculating mandelbrot sets! This one renders a fixed iteration limit and allows you to wander around and zoom.

play source

Mandel3 (pico-8)

mandel3 p8

Time to get weird. This takes a bastardized version of the 3d-ish renderer from Anx to see the mandelbrot set growing out of the ground in 3d. It's pretty rough around the edges and you have to really work for it to get any particularly thrilling vistas, but still a reasonably pleasant hellscape to exist in for some time.

play source

Mandel4 (webgl)

An expansion of Mandel2, this time with continuous iteration. While moving it stays fixed but while stationary it continues iterating nearly endlessly. Very pleasing to find a deep spiral to let it churn through for a few minutes, and fun source material for making gif loops too. It keeps updating the URL to be your current position so it's easy to share your favorite spots just by copying from the URL bar.

mandel4_zoom_loop

play source

Mandel5 (pico-8)

mandel5 p8

I was curious about how to make multiple mandelbrot sets "collide" with each other, or how one might be able to link together many mandelbrot sets into a fractal field of sorts. This went through a lot of iterations. I started out trying to do a universal-law-of-gravity-inspired approach where each mandelbrot origin would all tug on orbits as they happened and with a lot of fudging I could get interesting results, but it didn't feel right because it was bastardizing how fractals work and the emergent shapes were too directly resultant from the arbitrary limits my code was imposing. Instead, eventually I settled on an interesting approach where it keeps track of a number of orbit possibilities and keeps testing them all as they fork and lead to new possibilities. The longest lasting hypothetical path ends up being the one counted. This leads to satisfyingly nuanced interactions between mandelbrot sets that are a good distance from each other. Below is a gif of moving one of three mandels back and forth, and then zooming in on the nuance of an overlap to see how it changes as the mandel continues to shift.

mandel5_1

Update: the difference between tracking only the orbit closest to its nearest origin vs tracking a pool of orbits for each iteration was pretty negligible, but there's a pretty huge difference in performance so I just set it to only track one orbit for now. Turns out another important thing was raising the max orbit range to be larger, still figuring out what the right size of it should be... Seems like somewhere around large enough to encompass the whole area of objects is ideal but scaling individual mandels up and down throws a bit of a wrench in that. Tried adjusting the max orbit range for each mandel but having too tight a range is just ugly and very unfractal-like. As-is it's coming together nicely, nearby fractals can be seen in the details of their neighbors sort of like a hall of mirrors. There's definitely some potential here for a really mind-bending game universe.

mandel5_6

play source

Mandel6 (webgl)

Basically a realtime/hires upgrade of Mandel5 into webgl, plus extra interactivity bonuses. You can click or tap and hold to create new mandels wherever you want and drag them around as they grow to see how it makes things shift. Once you release the pointer it'll freeze in that spot until you reload the page. Currently zooming in and making very small mandels is a bit buggy, but buggy fractals can be interesting too ;)

Screenshot from 2022-04-02 16-16-14

play source

Popular repositories

  1. stanfordparser stanfordparser Public

    Github upload of Bill McNeal's ruby wrapper for Stanford's NLP library

    Ruby 87 21

  2. chef_solo_deploy chef_solo_deploy Public

    Minimalist repo for installing and deploying to chef solo

    Shell 27 7

  3. auto-starbucks auto-starbucks Public

    A hack for not getting disconnected every 30 minutes from starbucks

    Ruby 5

  4. yapc yapc Public

    Yet Another Push Chat

    JavaScript 3

  5. go_board go_board Public

    javascript implementation of a go game recorder

    JavaScript 2

  6. rubycas-client rubycas-client Public

    Forked from rubycas/rubycas-client

    Ruby client for Yale's Central Authentication Service protocol -- an open source enterprise single sign on system for web applications.

    Ruby 2