diff --git a/index.gmi b/index.gmi deleted file mode 100644 index a539c61..0000000 --- a/index.gmi +++ /dev/null @@ -1,40 +0,0 @@ -# ~chmod777 - -## Introductions - -Hello! - -Around the web I mostly go by chmod777. Feel free to ask me anything. - -I am a recent computer science graduate with no clue what they are doing in life. - -I just set this up so ther is more to add. - -## Contact info - -* fediverse/mastodon: @chmod777@linuxrocks.online -* irc.tilde.chat: chmodrwx -* gitea: tildegit.org/chmod777 - -## What you will find here - -Blog posts about - -* Software dev -* Hardware dev -* Aluminium casting -* Gardening -* Baking -* Other hobby projects -* Ramblings - -You can find the web version of my blog at - -=> http://tilde.club/~chmod777 ~chmod777 - -I just started working on a .html to .gmi converter for the posts in this gemlog so that my content on my blog will also be available here. Some features of the converter are still missing so if it looks like something is missing from one of these posts it might be but it also might be that I gave up writing halfway through. - -=> https://tildegit.org/chmod777/html2gemini_rs html2gemini_rs - -## Posts - diff --git a/index.html b/index.html deleted file mode 100644 index e1b41c1..0000000 --- a/index.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - chmod777's tilde - - - - - - - - -
-

~chmod777

-

You can also find this blog on gemini at

- gemini://tilde.club/~chmod777 -
- - - -
-
-

Introductions

-

Hello!

-

On the internet I go by chmod777. Feel free to ask me anything.

-

A recent computer science graduate with no clue what they are doing in life.

-

I just set this up so there is more to add.

-
- -
-

Contact info

- -
- -
-

What you will find here

-

Blog posts about

- -
- -
-

Posts

-
-
- - - - diff --git a/posts/Casting_an_Aluminium_Settlers_of_Catan_Board.html b/posts/Casting_an_Aluminium_Settlers_of_Catan_Board.html deleted file mode 100644 index 7cf8697..0000000 --- a/posts/Casting_an_Aluminium_Settlers_of_Catan_Board.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - chmod777's tilde - Casting Aluminium Settlers of Catan Board - - - - - - - - -
-

~chmod777

- -
- -
-

Casting Aluminium Settlers of Catan Board

-

A couple years ago now I started casting Settlers of Catan game tiles in aluminium. I have only gotten as far as casting the mountain(ore) tiles but I plan on eventually casting the rest.

-

To start I model a tile using Blender. Modeling the base is faily straight forward. Create a hexagon, scale it to the size you want, extrude it upwards, and then use a difference modifier to create cutouts for towns and roads. The mountains are created using an image as a height map on a seperate plain and then combined with the base using a union modifier.

-

After modeling the tile in blender I export the file then print it on a 3D printer. The print will be the form for the mold that I will cast into. Using smaller layers in the print is better as the sand tends to cling to the ridges and you get smaller horizontal lines.

-

Befor I could cast the first piece I first had to make a molding box. To do this I used four pieces of 2x4 lumber for each side and screwed them together. Then I added some scrap lumber strips to the sides of each half to act as guides so the 2 sides don't shift. Now that I have the form, the casting box, and sand that I ordered I can place the mold, into the box, and pack sand around it and the sprew(form for the pouring hole).

-

My furnace setup is very low tech. It consists of a pile of rocks stacked to resemble a furnace, a bag of charcole, and a small fan. A small trench is dug under the rocks to allow for airflow while skinny rocks are placed accross the trench to prevent the charcole from falling into it.

-

The furnace is started with wood and the crucible is placed into it to heat it up gradually. Once the furnace is started charcole is added, then small ingots are placed in thecrucible. It usually takes 40 minutes from lighting the "furnace" to pouring with this "setup".

-

And here are the results. They still need to be cleaned up a bit.

- - - -

These where my first casts so I made a lot of mistakes throughout this whole process. You can see on the third piece that instead of pouring directly into the mold I poured to the side and carved a gate in the sand to piece. The sides are so thin the sand broke away and I need to do a lot of filing to remove the excess material. This also meant that there is a large divit on the bottom because aluminium shrinks when it cools and there was no sprew to feed more aluminum into the back.

-

There are also several ways I could have improved my molds. The first being angling the cutouts in the mountains so that when the form is pulled out it doesn't catch the sand. You can see in the first piece I had to do a lot off grinding to remove the aluminium where the sand collapsed.

-

If anybody can tell my why the third tile has that texture on the flat parts that would be great. I think it's because I cast it too hot?

-

It was a great expierment and I hope to have an update this summer when I cast more of the tiles.

-
- - - - diff --git a/posts/Designing_a_PCB_for_a_Gamepad_rev1.html b/posts/Designing_a_PCB_for_a_Gamepad_rev1.html deleted file mode 100644 index b1d7686..0000000 --- a/posts/Designing_a_PCB_for_a_Gamepad_rev1.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - chmod777's tilde - Gamepad PCB - - - - - - - -
-

~chmod777

- -
- -
-

Designing a PCB for a Gamepad rev1

-

I have a vague plan on making my own Raspberry Pi compute module powered handheld gaming device but I don't know anything about designing PCBs. To learn how to create a PCB I decided to start small. Really small. I decided to make a gamepad with just 11 buttons and some header pins for an Arduino Nano.

-

Mistakes where made but I learned a lot about the process and now I see many ways I can improve and expand on my design.

- An image of the gamepad pcb with an Arduino Nano inserted in the header pins. -

Fixing some of the problems with it

- - -

Expanding on the current design

- -
- - - - diff --git a/posts/Icons.html b/posts/Icons.html deleted file mode 100644 index ee84274..0000000 --- a/posts/Icons.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - chmod777's tilde - - - - - - - - -
-

~chmod777

- -
- -
-

Icons

-

Below is a list of icons I have made for various reasons. These icons are in the public domain.

- -
- - - - diff --git a/posts/Roll_Lang.html b/posts/Roll_Lang.html deleted file mode 100644 index 73c1c5a..0000000 --- a/posts/Roll_Lang.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - chmod777's tilde - Roll Lang - - - - - - -
-

~chmod777

- -
- -
-

Roll Lang

-

Project links

- - -

Roll Lang is a domain specific language for interpreting dice rolls and math operations common in tabletop rpgs. It implements it's own variation of dice notation.

- - Wikipedia Article on Dice Notation - -

Examples

-

/r d20 + 5

-

(12)+5=17

-
-

[[d20 + 5]]

-

(17)

-
- - - - diff --git a/public/assets/js/main.js b/public/assets/js/main.js deleted file mode 100644 index 7d17667..0000000 --- a/public/assets/js/main.js +++ /dev/null @@ -1,62 +0,0 @@ -const color_theme_id = "color-theme"; -const font_id = "fonts"; - -function save_accessibility_settings(theme, font) { - document.cookie = "theme=" + theme + "; path=/"; - document.cookie = "font=" + font +"; path=/"; -} -function get_saved_accessibility_settings() { - let cookies = document.cookie.split("; "); - let theme = null; - let font = null; - for (let cookie of cookies) { - let [key, value] = cookie.split("="); - console.log("'" + key + "' '" + value + "'"); - if (key == "theme") { - theme = value; - } - if (key == "font") { - font = value; - } - } - if (theme != null) { - let color_theme = document.getElementById(color_theme_id); - for (option of color_theme.options) { - if (option.value == theme) { - option.selected = true; - break; - } - } - } - if (font != null) { - let fonts = document.getElementById(font_id); - for (option of fonts.options) { - if (option.value == font) { - option.selected = true; - break; - } - } - } - return [theme, font]; -} -function load_accessibility_settings(theme, font) { - const body = document.getElementsByTagName("body")[0]; - if (theme.length != 0) { - body.setAttribute("class", theme); - } - if (font.length != 0) { - let class_attribute = body.getAttribute("class"); - body.setAttribute("class", class_attribute+" "+font); - } -} -function apply_accessibility_options() { - const theme = document.getElementById(color_theme_id).value; - const font = document.getElementById(font_id).value; - save_accessibility_settings(theme, font); - load_accessibility_settings(theme, font); -} - -function first_load() { - let [theme, font] = get_saved_accessibility_settings(); - load_accessibility_settings(theme, font); -} \ No newline at end of file diff --git a/public/assets/svg/chat-bubbles-icon.svg b/public/assets/svg/chat-bubbles-icon.svg deleted file mode 100755 index 3eda40a..0000000 --- a/public/assets/svg/chat-bubbles-icon.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - Chat Bubble Icon - Two overlapping chat bubbles. - - - - - - - - - - - - - - diff --git a/public/assets/svg/gears-icon.svg b/public/assets/svg/gears-icon.svg deleted file mode 100755 index d911e44..0000000 --- a/public/assets/svg/gears-icon.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - Gears Icon - Two interlocking gears. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/assets/svg/paper-list-icon.svg b/public/assets/svg/paper-list-icon.svg deleted file mode 100755 index 484b059..0000000 --- a/public/assets/svg/paper-list-icon.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - Paper List Icon - Two stacked pieces of paper with a list on the top piece. - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/assets/svg/pong.svg b/public/assets/svg/pong.svg deleted file mode 100644 index d0bf635..0000000 --- a/public/assets/svg/pong.svg +++ /dev/null @@ -1,72 +0,0 @@ - - Pong - Two paddles, a ball, vertical dashed line in the center, and two numbers for player scores. - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - \ No newline at end of file diff --git a/public/css/project_styles.css b/public/css/project_styles.css new file mode 100644 index 0000000..b2d3a45 --- /dev/null +++ b/public/css/project_styles.css @@ -0,0 +1,26 @@ +#project-list { + list-style-type: none; +} + +.project-card { + display: grid; + grid-template-areas: + 'project-img project-title' + 'project-img project-description'; + grid-template-columns: max-content 1fr; + grid-template-rows: min-content 1fr; +} +.project-img { + grid-area: project-img; + display: inline-block; + height: 128px; +} +.project-title { + grid-area: project-title; + margin: 10px 0px 0px 10px; + padding: 0px 0px 0px 0px; +} +.project-description { + grid-area: project-description; + margin: 5px 0px 0px 15px; +} diff --git a/public/css/styles.css b/public/css/styles.css index 4fea9cd..623507b 100755 --- a/public/css/styles.css +++ b/public/css/styles.css @@ -73,10 +73,10 @@ body { width: 100%; grid-gap: 5px; grid-template-columns: auto 1fr; - grid-template-areas: 'main-aside main-content'; + grid-template-areas: 'main-aside page-content'; } - #main-content { - grid-area: main-content; + main > div { + grid-area: page-content; min-width: min-content; width: 100%; } @@ -85,6 +85,8 @@ body { position: sticky; top: 0; height: min-content; + width: 300px; + min-width: 120px; max-width: 380px; } } @@ -165,10 +167,13 @@ main > aside > nav > ul { } .post-card { - display: grid; padding: 5px 5px 5px 5px; + margin: 5px 5px 5px 5px; background-color: var(--post-card-background); border-radius: 5px; +} +.post-card-grid { + display: grid; grid-template-columns: auto; grid-template-areas: 'post-card-title' diff --git a/public/feed.rss b/public/feed.rss deleted file mode 100644 index f135312..0000000 --- a/public/feed.rss +++ /dev/null @@ -1,30 +0,0 @@ - - - - chmod777's blog - http://tilde.club/~chmod777/blog/blog.html - chmod777's blog where they post about their tech and non tech projects. - - - Casting an Aluminium Settlers of Catan Board - http://tilde.club/~chmod777/blog/posts/casting_an_aluminium_settlers_of_catan_board.html - - - - - - Pi Pico First Impressions - http://tilde.club/~chmod777/blog/posts/pi_pico_first_impressions.html - - - - - - Designing my First PCB - http://tilde.club/~chmod777/blog/posts/designing_my_first_pcb.html - - - - - - \ No newline at end of file diff --git a/public/tech_demos/demos/svg_pong.html b/public/tech_demos/demos/svg_pong.html deleted file mode 100644 index f161a57..0000000 --- a/public/tech_demos/demos/svg_pong.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - chmod777's SVG Pong - - - - - - - - - - - - - - - - - - - - - - - - - -
-

chmod777's SVG Pong

- skip to page content -

There is a version of this site available as a gemini capsule. It may or may not be up to date.

- -
- -
-
- Accessibility Options -

accessibility options requires javascript

- - - - - - - - - -
-
- - -
- -
-

The Game of Pong

-
- -
-
- -
-
-
- -
-
-
-

About This Project

-

About three years ago(2018) I created this little project. I have - recently brushed away most of the bugs so here is my Pong clone which uses - Scalable Vector Graphics(SVG).

- -

Some resources related to SVGs.

- -
- -

Just Why

-

The main reason for this project was to learn about SVG and SVG - animations. Before starting this I had never used an SVG in my own - websites. My only interactions with them is seeing them used on other - websites and the one time I opened up InkScape. Back in the days when I - cared about fancy websites I was envious of the cool animations some - folks had and wanted them for myself.

-

The other thing that motivated me to create a game was seeing the 13k game - jam. A jam that only accepts games whos entire contents fit in 13kb - including all their assets. I had only heard about it after it was already - over that year but that wasn't going to stop me from creating a tiny - game.

-

Why Pong?

-

Pong is second only to Tetris and I had never really played it. Plus I thought I - could actually finnish the project if it was a clone of a simple game.

-

Was it a Success?

-

Partially. I did create a game that used an SVG image instead of an - HTMLCanvas. I learned how to manipulate the elements with the transform - attribute from JavaScript, as well as us an animateMotion tag to move the - ball along a path.

-

As a bonus the game was 9kb when compressed when I had "finnished it". - That included the svg, html, and transpiled typescript.

-

However the game wasn't finnished when I stopped working on it three years - ago but I feel I achieved my goal. Or rather the pong game took me as far - as it could on my SVG adventure. Or at least that's what I thought back - then...

-

The Revitalized SVG Pong

-

What you see below is the new and improved SVG Pong, with far fewer bugs, - a cleaner(TM) codebase, and better preformace.

-

I revisted this project because I thought it would be fun. That really is - the main reason. And guess what. It was fun. I got to track down weird - bugs related to collisions and missing state. The project truely was just - slapped together over a weekend and it showed.

-

Try to have fun against the restless AI.

- -

If you like SVGs checkout some of my SVG icons I made for a now defunct project.

- -
-
-
- -

fps:

- - - Pong - Two paddles, a ball, vertical dashed line in the center, and two numbers for player scores. - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - -
-
- Controlls - Each button has a keyboard shortcut. -
- -
- - - - - - - - - - - - - - -
-
-
- -
-
- Game Settings - - -
- - - - - - - - -
- - -
-
- - - Game Summary - - - - - - - - - - - - - - - - - -
DifficultyWonLostTiedIncompleteLongest Volley
Easy
Normal
Hard
- - Latest Games - - - - - - - -
DifficultyWon/Lost/Tied/IncompletePlayer ScoreAI ScoreLongest Volley
-
-
- - - - - diff --git a/public/tech_demos/tech_demos.html b/public/tech_demos/tech_demos.html deleted file mode 100644 index 9314914..0000000 --- a/public/tech_demos/tech_demos.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - chmod777's tech demos - - - - - - - - - - - - - - - - - - - - - - - - - -
-

chmod777's tech demos

- skip to page content -

There is a version of this site available as a gemini capsule. It may or may not be up to date.

- -
- -
-
- Accessibility Options -

accessibility options requires javascript

- - - - - - - - - -
-
- - - - - - - - - diff --git a/templates/accessibility_options.html b/templates/accessibility_options.html deleted file mode 100644 index 6844b8b..0000000 --- a/templates/accessibility_options.html +++ /dev/null @@ -1,31 +0,0 @@ -
-
- Accessibility Options -

accessibility options requires javascript

- - - - - - - - - -
-
\ No newline at end of file diff --git a/update_all.sh b/update_all.sh deleted file mode 100755 index e7a1898..0000000 --- a/update_all.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -SOURCE_DIR=~/blog_source - -$SOURCE_DIR/update_html_posts.sh -$SOURCE_DIR/update_gemlog.sh - diff --git a/update_gemlog.sh b/update_gemlog.sh deleted file mode 100755 index dab81a1..0000000 --- a/update_gemlog.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -SOURCE_DIR=~/blog_source -ASSETS_DIR=$SOURCE_DIR/assets - -GEM_DIR=~/public_gemini - -rm -r $GEM_DIR/* - -mkdir -p $GEM_DIR/assets/jpeg -mkdir -p $GEM_DIR/assets/svg - -cp $ASSETS_DIR/jpeg/* $GEM_DIR/assets/jpeg/ -cp $ASSETS_DIR/svg/* $GEM_DIR/assets/svg/ - -cp $SOURCE_DIR/index.gmi $SOURCE_DIR/index.gmi.temp - -LINE=`grep -Fn 'Posts' $SOURCE_DIR/index.gmi | cut -d : -f 1` -LINE=$(($LINE+1)) - -for FILE in `ls -tr $SOURCE_DIR/posts | grep -v /` -do - NAME=${FILE%.html} - OUT="$GEM_DIR/$NAME.gmi" - ~/bin/html2gemini_rs "${SOURCE_DIR}/posts/${FILE}" > "${OUT}" - - SPACES=`tr -s '_' ' ' <<< "$NAME"` - ENTRY="posts/${FILE}" - TIME_MODIFIED=`stat -c %y ${ENTRY} | grep -oE "\w{4}-\w{2}-\w{2} \w{2}:\w{2}:\w{2}"` - - sed -i "$LINE i => ${NAME}.gmi ${SPACES} ${TIME_MODIFIED} UTC" $SOURCE_DIR/index.gmi.temp -done - -cp $SOURCE_DIR/index.gmi.temp $GEM_DIR/index.gmi -rm $SOURCE_DIR/index.gmi.temp - - diff --git a/update_html_posts.sh b/update_html_posts.sh deleted file mode 100755 index 6e0457d..0000000 --- a/update_html_posts.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -SOURCE_DIR=~/blog_source -ASSETS_DIR=$SOURCE_DIR/assets - -WEB_DIR=~/public_html - -rm -r $WEB_DIR/* -cp $SOURCE_DIR/posts/*.html $WEB_DIR/ - -mkdir -p $WEB_DIR/assets/jpeg -mkdir -p $WEB_DIR/assets/png -mkdir -p $WEB_DIR/assets/svg -mkdir -p $WEB_DIR/assets/css - -cp $ASSETS_DIR/jpeg/* $WEB_DIR/assets/jpeg/ -# cp $ASSETS_DIR/assets/png/* $WEB_DIR/assets/png/ -cp $ASSETS_DIR/svg/* $WEB_DIR/assets/svg/ -cp $ASSETS_DIR/css/* $WEB_DIR/assets/css/ - -cp $SOURCE_DIR/index.html $SOURCE_DIR/index.html.temp - -LINE=`grep -Fn '

Posts

' $SOURCE_DIR/index.html | cut -d : -f 1` -LINE=$(($LINE+1)) - -for FILE in `ls -tr $SOURCE_DIR/posts | grep -v /` -do - NAME=${FILE%.html} - SPACES=`tr -s '_' ' ' <<< "$NAME"` - ENTRY="posts/${FILE}" - TIME_MODIFIED=`stat -c %y ${ENTRY} | grep -oE "\w{4}-\w{2}-\w{2} \w{2}:\w{2}:\w{2}"` - - sed -i "$LINE i \\\t\t${SPACES}

Last modified on:

" $SOURCE_DIR/index.html.temp -done - -$($SOURCE_DIR/botany_builder/target/release/botany_html) - -cp $SOURCE_DIR/index.html.temp $WEB_DIR/index.html -rm index.html.temp -