This commit is contained in:
Crispy 2024-11-03 22:45:17 +01:00
parent f82b3e862f
commit 098c944abf
3 changed files with 31 additions and 28 deletions

View file

@ -12,7 +12,8 @@
<body>
<main>
<p>
<u>this page is a work in progress</u>
<em>this page is a work in progress</em><br>
<a href="/">return home</a><br>
</p>
<h1 id="portfolio">Portfolio</h1>
<p>
@ -36,7 +37,7 @@ The dates listed are generally the last time any significant change was made, fo
<p>
<code>2022-08</code><br>
source: <a href="https://git.crispypin.cc/CrispyPin/leko-pona">https://git.crispypin.cc/CrispyPin/leko-pona</a><br>
<img loading="lazy" src="/media/leko_tonsi.png" alt="leko pona, a split keyboard with blank keycaps in the trans flag colours" title="leko pona, a split keyboard with blank keycaps in the trans flag colours"></img>
<img loading="lazy" src="/media/leko_tonsi.png" alt="leko pona, a split keyboard with blank keycaps in the trans flag colours" title="leko pona, a split keyboard with blank keycaps in the trans flag colours">
(The deskmat texture was created with my <a href="#julia-fractal-renderer">julia fractal renderer</a>)<br>
</p>
<h2 id="ch32v003-oled-board">ch32v003 oled board</h2>
@ -47,7 +48,7 @@ project files: <a href="https://git.crispypin.cc/CrispyPin/ch32_oled">git.crispy
<p>
<code>2024-04</code><br>
source: <a href="https://git.crispypin.cc/CrispyPin/bad-apple/">git.crispypin.cc/CrispyPin/bad-apple</a><br>
<a href="https://youtu.be/G0eonL14tCQ">https://youtu.be/G0eonL14tCQ</a>
<a href="https://youtu.be/G0eonL14tCQ">https://youtu.be/G0eonL14tCQ</a><br>
<iframe loading="lazy" src="https://www.youtube-nocookie.com/embed/G0eonL14tCQ" width="600px" height="340px" allowfullscreen></iframe></p>
<h3 id="conways-game-of-life">Conways Game of Life</h3>
<p>
@ -64,7 +65,7 @@ source: <a href="https://git.crispypin.cc/CrispyPin/bad-apple/">git.crispypin.cc
<code>2022-05</code><br>
<a href="https://github.com/CrispyPin/rotary-kb/">github.com/CrispyPin/rotary-kb</a><br>
A silly project making a terrible input device. You select a letter by rotating right and left moving down a tree, and press to type it.<br>
<img loading="lazy" src="/media/rotary_kb.png" alt="a breadboard circuit with a rotary encoder" title="a breadboard circuit with a rotary encoder"></img>
<img loading="lazy" src="/media/rotary_kb.png" alt="a breadboard circuit with a rotary encoder" title="a breadboard circuit with a rotary encoder">
</p>
<h1 id="jam-games">jam games</h1>
<p>
@ -78,14 +79,14 @@ All the below games except for <code>LD45: Mind the Gap</code> I made together w
<code>2022-04</code><br>
<a href="https://crispypin.itch.io/ld-50">crispypin.itch.io/ld-50</a><br>
<a href="https://github.com/CrispyPin/ld-50">github.com/CrispyPin/ld-50</a><br>
<img loading="lazy" src="/media/jam-games/pixel_entropy.png" alt="a 2D pixel physics sandbox" title="a 2D pixel physics sandbox"></img>
<img loading="lazy" src="/media/jam-games/pixel_entropy.png" alt="a 2D pixel physics sandbox" title="a 2D pixel physics sandbox">
</p>
<h3 id="ld49-shork-inc">LD49: Shork Inc</h3>
<p>
<code>2021-09</code><br>
<a href="https://crispypin.itch.io/ld-49">crispypin.itch.io/ld-49</a><br>
<a href="https://github.com/CrispyPin/ld-49">github.com/CrispyPin/ld-49</a><br>
<img loading="lazy" src="/media/jam-games/shork_inc.png" alt="a messy low-poly warehouse scene" title="a messy low-poly warehouse scene"></img>
<img loading="lazy" src="/media/jam-games/shork_inc.png" alt="a messy low-poly warehouse scene" title="a messy low-poly warehouse scene">
</p>
<h3 id="ld48-shork">LD48: Shork</h3>
<p>
@ -113,7 +114,7 @@ All the below games except for <code>LD45: Mind the Gap</code> I made together w
<p>
<code>2019-04</code><br>
<a href="https://crispypin.itch.io/starship-conquer-space">crispypin.itch.io/starship-conquer-space</a><br>
<img loading="lazy" src="/media/jam-games/starship.png" alt="some machines on the surface of a tiny planet, with a cosmonaut in the center" title="some machines on the surface of a tiny planet, with a cosmonaut in the center"></img>
<img loading="lazy" src="/media/jam-games/starship.png" alt="some machines on the surface of a tiny planet, with a cosmonaut in the center" title="some machines on the surface of a tiny planet, with a cosmonaut in the center">
</p>
<h3 id="ld43-the-robots-adventure">LD43: The robot's adventure</h3>
<p>
@ -124,7 +125,7 @@ All the below games except for <code>LD45: Mind the Gap</code> I made together w
<p>
<code>2018-08</code><br>
<a href="https://crispypin.itch.io/ld-42">crispypin.itch.io/ld-42</a><br>
<img loading="lazy" src="/media/jam-games/forklift_simulator.png" alt="top-down view of a forklift surrounded by boxes in different colours" title="top-down view of a forklift surrounded by boxes in different colours"></img>
<img loading="lazy" src="/media/jam-games/forklift_simulator.png" alt="top-down view of a forklift surrounded by boxes in different colours" title="top-down view of a forklift surrounded by boxes in different colours">
</p>
<h1 id="shaders">shaders</h1>
<p>
@ -154,27 +155,27 @@ A shader that can display qr codes of any size, though it requires computing the
<code>2024-08</code><br>
A <a href="https://en.wikipedia.org/wiki/Self-reproducing_program">quine</a> is a program that outputs its own source code. Since shaders don't have text or file outputs, a shader quine must render its own source code instead. This shader contains the font data required to be readable.<br>
<a href="/media/shaders/shader_quine_198x99.png">
<img loading="lazy" src="/media/shaders/shader_quine_198x99.png" alt="(click for full resolution) A large square of shader code, being rendered by itself" title="(click for full resolution) A large square of shader code, being rendered by itself"></img>
<img loading="lazy" src="/media/shaders/shader_quine_198x99.png" alt="(click for full resolution) A large square of shader code, being rendered by itself" title="(click for full resolution) A large square of shader code, being rendered by itself">
</a>
</p>
<h3 id="shader-quine-golf">shader quine golf</h3>
<p>
<code>2024-08</code><br>
Code golf is the art of shortening a program as much as possible while still producing a required behavior. I made a tiny version of the quine, only 2877 bytes large. At the end it does render some random characters, but I still consider it valid. When code golfing, undefined behaviour is part of the fun.<br>
<img loading="lazy" src="/media/shaders/shader_quine_2877.png" alt="a smaller wall of text, with a low-resolution font that is just barely readable" title="a smaller wall of text, with a low-resolution font that is just barely readable"></img>
<img loading="lazy" src="/media/shaders/shader_quine_2877.png" alt="a smaller wall of text, with a low-resolution font that is just barely readable" title="a smaller wall of text, with a low-resolution font that is just barely readable">
</p>
<h3 id="sunset">sunset</h3>
<p>
<code>2023-02</code><br>
This is a single fragment shader, which means you can put it on any mesh and it will look the same.<br>
<img loading="lazy" src="/media/shaders/sunset_shader.png" alt="sunset over a calm ocean, with stars visible in the purple sky" title="sunset over a calm ocean, with stars visible in the purple sky"></img>
<img loading="lazy" src="/media/shaders/sunset_shader.png" alt="sunset over a calm ocean, with stars visible in the purple sky" title="sunset over a calm ocean, with stars visible in the purple sky">
</p>
<h3 id="julia-fractal">julia fractal</h3>
<p>
<code>2023-07</code><br>
They are both animated slowly, but the second one has distortion based on world position.<br>
<img loading="lazy" src="/media/shaders/julia.png" alt="bright purple julia fractal" title="bright purple julia fractal"></img>
<img loading="lazy" src="/media/shaders/julia_distorted.png" alt="bright purple julia fractal, with distortion" title="bright purple julia fractal, with distortion"></img>
<img loading="lazy" src="/media/shaders/julia.png" alt="bright purple julia fractal" title="bright purple julia fractal">
<img loading="lazy" src="/media/shaders/julia_distorted.png" alt="bright purple julia fractal, with distortion" title="bright purple julia fractal, with distortion">
</p>
<h2 id="andriod">andriod</h2>
<p>
@ -186,11 +187,11 @@ Using the app <a href="https://f-droid.org/en/packages/de.markusfisch.android.sh
<p>
<code>2024-05</code><br>
The 4x4 version divides the day into 2^16 sections, each one about 1.3s long, and displays the number of sections passed since midnight as a binary number.<br>
<img loading="lazy" src="/media/shaders/binary_clock_square.png" alt="a 4x4 grid of circles, some of which are filled" title="a 4x4 grid of circles, some of which are filled"></img>
<img loading="lazy" src="/media/shaders/binary_clock_square.png" alt="a 4x4 grid of circles, some of which are filled" title="a 4x4 grid of circles, some of which are filled">
</p>
<p>
This 3-row version uses the traditional division of hours, minutes and seconds, just displaying the three numbers in binary.<br>
<img loading="lazy" src="/media/shaders/binary_clock.png" alt="3 rows of 5, 6 and 6 circles" title="3 rows of 5, 6 and 6 circles"></img>
<img loading="lazy" src="/media/shaders/binary_clock.png" alt="3 rows of 5, 6 and 6 circles" title="3 rows of 5, 6 and 6 circles">
</p>
<h2 id="raymarching">raymarching</h2>
<h3 id="libgarbage">libgarbage</h3>
@ -235,13 +236,13 @@ I am very mature.<br>
<p>
<code>2023-07</code><br>
I also made a web version of this in may 2021, see <a href="https://gol.crispypin.cc/?cellsize=10&time=2">gol.crispypin.cc</a> or <a href="https://github.com/CrispyPin/gol-wallpaper">github.com/CrispyPin/gol-wallpaper</a> for the source<br>
<img loading="lazy" src="/media/shaders/game_of_life.png" alt="Conway's game of life" title="Conway's game of life"></img>
<img loading="lazy" src="/media/shaders/game_of_life.png" alt="Conway's game of life" title="Conway's game of life">
</p>
<h3 id="rule-110">rule 110</h3>
<p>
<code>2023-09</code><br>
See <a href="https://en.wikipedia.org/wiki/Elementary_cellular_automaton">Elementary cellular automaton (Wikipedia)</a>.<br>
<img loading="lazy" src="/media/shaders/rule_110.png" alt="elementary cellular automata 110" title="elementary cellular automata 110"></img>
<img loading="lazy" src="/media/shaders/rule_110.png" alt="elementary cellular automata 110" title="elementary cellular automata 110">
</p>
<h3 id="wireworld">WireWorld</h3>
<h3 id="leniasmoothlife">Lenia/smoothlife</h3>
@ -256,7 +257,7 @@ These programs are less flashy and were made out of necessity. I don't expect an
<code>2023-02</code><br>
source: <a href="https://git.crispypin.cc/CrispyPin/snoud">https://git.crispypin.cc/CrispyPin/snoud</a><br>
A simple terminal app that plays multiple audio files on loop, meant for background ambience. I use it for rain and wind sound and have it auto-start when I log in.<br>
<img loading="lazy" src="/media/snoud.png" alt="" title=""></img>
<img loading="lazy" src="/media/snoud.png" alt="" title="">
</p>
<h3 id="htmd">htmd</h3>
<p>
@ -276,15 +277,15 @@ Made at first to learn, then to run this website. It seves files and supports pa
source: <a href="https://git.crispypin.cc/CrispyPin/julia-fractal-renderer">https://git.crispypin.cc/CrispyPin/julia-fractal-renderer</a><br>
I used this to generate the image printed on my deskmat, seen in <a href="#leko-pona">the picture of my keyboard</a><br>
(see source repo for more examples)<br>
<img loading="lazy" src="/media/julia_brain_coral.png" alt="" title=""></img>
<img loading="lazy" src="/media/julia_renderer_gui.png" alt="" title=""></img>
<img loading="lazy" src="/media/julia_brain_coral.png" alt="" title="">
<img loading="lazy" src="/media/julia_renderer_gui.png" alt="" title="">
</p>
<h3 id="brainfuck-debugger">brainfuck debugger</h3>
<p>
<code>2023-12</code><br>
source: <a href="https://git.crispypin.cc/CrispyPin/bf-debugger">https://git.crispypin.cc/CrispyPin/bf-debugger</a><br>
When I was solving some <a href="https://adventofcode.com/2023">Advent of Code</a> problems in <a href="https://esolangs.org/wiki/Brainfuck">Brainfuck</a>, I found myself missing the ability to set breakpoints and step a number of iterations through the program, so I made an interactive brainfuck debugger.<br>
<img loading="lazy" src="/media/bf_debugger.png" alt="" title=""></img>
<img loading="lazy" src="/media/bf_debugger.png" alt="" title="">
</p>
<p>
I used this to develop solutions for part one of day 1 and 4, in advent of code 2023. These can be found here: <a href="https://git.crispypin.cc/CrispyPin/aoc-2023/src/branch/main/bf">https://git.crispypin.cc/CrispyPin/aoc-2023/src/branch/main/bf</a><br>
@ -294,7 +295,7 @@ I used this to develop solutions for part one of day 1 and 4, in advent of code
<code>2023-03</code><br>
source: <a href="https://git.crispypin.cc/CrispyPin/lili">https://git.crispypin.cc/CrispyPin/lili</a><br>
<code>lili</code> is a terminal text editor that can keep multiple files open. It is far from perfect, it doesn't handle soft linebreaks well and lacks undo/redo. But wider characters at least work (tabs and emoji).<br>
<img loading="lazy" src="/media/lili_file_list.png" alt="" title=""></img>
<img loading="lazy" src="/media/lili_file_list.png" alt="" title="">
</p>
<h3 id="compiler-timer">compiler-timer</h3>
<p>
@ -333,7 +334,7 @@ I made a stupid input-emulating script that ran in a vm and generated textures f
</p>
<p>
The cursed flowers in the picture below are poppies, which for some reason resulted in a blue-haired cryptid in the corner.<br>
<img loading="lazy" src="/media/neuralblender_minecraft.png" alt="minecraft with very weird textures. Poppy flowers are cursed" title="minecraft with very weird textures. Poppy flowers are cursed"></img>
<img loading="lazy" src="/media/neuralblender_minecraft.png" alt="minecraft with very weird textures. Poppy flowers are cursed" title="minecraft with very weird textures. Poppy flowers are cursed">
</p>
<h3 id="minesweeper-rs">minesweeper-rs</h3>
<h3 id="rust-mandelbrot">rust-mandelbrot</h3>

View file

@ -24,12 +24,12 @@ The engine randomly finds places where the one of your rules' <em>input (left)</
<h2 id="groups">groups</h2>
<p>
A rule can also have cells containing a <em>group</em>. On the input side, that cell will match anything in the group, and on the output side it will become a random cell from the group. A diagonal line through the group icon means that it can also match on positions outside the world, where there are no cells.<br>
<img loading="lazy" src="/media/snad/group_example.png" alt="" title=""></img>
<img loading="lazy" src="/media/snad/group_example.png" alt="" title="">
</p>
<h2 id="copy-cells">copy cells</h2>
<p>
On the output side, a cell can be set to <em>copy</em> the contents of one cell from the input side, this is useful for applying the same rule to several cell types without randomly swapping between them on the output<br>
<img loading="lazy" src="/media/snad/copy_example.png" alt="" title=""></img>
<img loading="lazy" src="/media/snad/copy_example.png" alt="" title="">
</p>
<h1 id="random-is-easy-right">random is easy, right?</h1>
<p>
@ -86,12 +86,12 @@ I was stuck on this problem for quite a while, and it only happened with the new
</p>
<p>
The movement rule has these variants:<br>
<img loading="lazy" src="/media/snad/bee_rules_rotated.png" alt="" title=""></img>
<img loading="lazy" src="/media/snad/bee_rules_rotated.png" alt="" title="">
</p>
<p>
Each rule has its origin point in the top-left cell.<br>
In the diagram below, the bee would move left when the left (purple) cell is picked by the engine, and up when the top (green) cell is picked.<br>
<img loading="lazy" src="/media/snad/bee_movement_pattern.png" alt="" title=""></img>
<img loading="lazy" src="/media/snad/bee_movement_pattern.png" alt="" title="">
</p>
<p>
But to move right or down, it needs the bees own position to be picked by the engine, since the rules always extend right-down. That means when the engine picks the bee's position, there are <em>two</em> possible rules to execute. Therefore, moving right and down both have half the probability overall compared to moving up or left.<br>

View file

@ -1,4 +1,6 @@
<u>this page is a work in progress</u>
*this page is a work in progress*
[return home](/)
# Portfolio
Hi, this is a non-exhaustive list of my personal projects. It appears I like making things with computers.