December Adventure 2024

December Adventure is an event based on the idea of writing a little code every day of the month and writing about it. It's a fun idea, so I'm getting in on the action! I don't really have a project, per se, but I have been (very slowly) working through the Compudanzas UXN tutorial for the last couple of weeks. I think December Adventure is a good opportunity to pick up the pace on learning UXN.

Day 30

I've been working on making a typing game. I'm motivated because my wpm in Colemak DH has been stuck at around 57 for months. In qwerty I had around 90! It's mainly because I don't feel like grinding monkeytype anymore, so maybe a fun game would help me along.

For now, I'll leave out the details of what the game I have in mind is. It'll be a fun surprise! My first task was to let the player type in words and submit them with enter, but have spaces separate the words so that it's possible to buffer words.

Day 28

It's been a bit since the last update. Obviously, there have been holiday things to attend to, but I have still been tinkering away at some code here and there. My wife kindly gifted me a book called Grokking Algorithms, and I decided to try implementing binary search in UXN.

My attempt didn't quite work out, and even though I had a lot of fun working on it, it made me realize something. I'm not getting closer to being able to make games very fast. So, I decided to change course for like the billionth time since I started out on my coding adventure earlier this year and decided to try out Love2d.

I've gotta say, Love is pretty nice! Today I went from basically no knowledge to pong. I can see myself getting to a state of being able to make games with Love in a reasonable amount of time, and at this point that sounds very nice. I still think UXN is extremely cool and I want to revisit it some day.

Day 20

A little progress on the tutorial, using nested loops. It's all still making sense so far, but tomorrow I'm getting into the auto byte, which looks a teency bit confusing. Excited to check that out.

Day 19

I couldn't resist continuing trying to figure out how to get the highlighting working with uxntal-mode, because it's fun going down rabbit holes I guess. I wasn't able to find the actual problem, or come up with a convenient work-around, but I did find a way to get it working by running M-x font-lock-debug-fontify. Not a permanent solution, but one I'll probably stick to for the time being. After getting that going, I dipped my toe ever so slightly into Day 6 of the Compudanzas UXN tutorial. I'm ready to dive back in!

Day 18

I spent this evening doing more emacs tinkering, and did a minor CSS tweak to the site. I need to get back on the UXN train soon.

Day 17

I made a cool new desktop wallpaper of my wife, which I'm sure you'll see behind my emacs frame in future screenshots. I spent the rest of the evening attempting to get the syntax highlighting working in uxntal-mode, which I failed to accomplish. I hope I can figure that out one day but I think my next move is to just use a different uxntal mode.

Day 16

Today I decided I'd spend some time working on random tasks that have been piling up. I set up a deploy thingy so I can just hit a button to upload changes to my website instead of manually copying them. I worked on a script to launch audioprism from emacs with mixed results. And I tried fruitlessly to fix the bug with gnome. I did some other tinkering with stuff in emacs that isn't really worth mentioning, except to say that it was pretty fun as usual.

Day 14 & 15

My wife and I had an emergency babysitting mission this weekend, which consumed all of my time and left me exhausted! So yeah I didn't do shit. The babies were cute af though.

Day 13

No luck getting my little line program working today. I'm pretty sure I fixed some things and improved the code, but... I got segfaults! I didn't even know I could do that in UXN! I guess it is friday the 13th :o I'll keep working on it, or maybe just continue the tutorial tomorrow. Really I should ask for hints at this point but I didn't feel like it tonight.

One cool thing I did was get this little program called audioprism. I can maximize it behind my emacs frame and enjoy the cool spectrogram to go along with whatever I'm listening to. I'll have to play with the colors and possibly switch my theme to get the most out of it.

Day 12

Today I decided to try to implement a line drawing algorithm because I saw someone talk about it on discord and it sounded fun. I'm too sleepy to go into a lot of detail right now but I will say it was fun. I didn't get it working right, but it still looks neat! it was supposed to draw a line from the center of the screen that follows your cursor around. Hopefully I'll figure it out tomorrow :)

Day 11

Got it! I had a couple of simple issues. One was forgetting that I had to clear all four tiles and not just one, the other was writing ADD instead of AND lol. I'm not sure what the plan for tomorrow is, but this was satisfying. Maybe I'll take the advice from the tutorial of trying a simple paint program with different brushes? Or I'll just continue the tutorial, idk. I'm sleepy and discombobulated because the puppy got mud all over me.

Day 10

I spent most of tonight reading my code from previous days, making sure I still understand how it works. I got started on a little experiment, which isn't really too ambitious, to try to combine the things I've learned so far. Basically, I want to draw an animated sprite consisting of multiple tiles, and have it move around.

I really need to spend some time learning Nasu. I kind of bounced off of it the last time I tried tinkering with it, but I think it would be pretty helpful. To create the animation I'm using, I went line by line, frame by frame, on this page. It's like if a caveman got a hold of a computer.

One thing I think would help me is creating my own reference document with information about all of the devices and opcodes, and various tips & tricks I might forget (like the bit masking stuff). Right now I find myself keeping a lot of tabs open and checking random .tal files constantly. Plus writing it out would help solidify everything. We'll see if I actually get around to it, it's the kind of thing I have to be in the right mood for.

Day 9

Finished up Day 5. It's quite exciting, tomorrow I'll start doing some experimenting outside of the tutorial. I love this tutorial, and UXN so far!

Day 8

I finally finished up Day 4, and I started up on Day 5 of the Compudanzas tutorial. I was confused by the way modulo was described at first, but the method involving bitwise AND masking made more sense. So, I was able to practice animating a sprite and using the mouse. It's a lot of fun! I've been imagining lots of things I'd like to do with UXN, once I have the basics down. My first goal is to make a few simple games, to get comfortable. After that, I can start on my Game Ideas list I have in Obsidian.

I haven't even attempted to troubleshoot the bug with GNOME. It affects the Files app (Nautilus) and GNOME settings, and probably other stuff. I'm just further embracing Dired for copying files around.

Day 7

Today I finally remembered to add a favicon to this site. I did some more work on the tutorial and came onto this fun GNOME bug I have to figure out.

Day 6

Today's adventure was to my wife's company party. It was a good time :) Nothing code related to report, though.

Day 5

It's day 5 and I'm still on Day 4! Today was satisfying, though, because it was left up to me to figure out how to get diagonal movement working and I got it on the first try. I'm kind of surprised, because when I only had to copy the example code I manage to screw that up fairly often :)

Day 4

Continuing with Day 4 of the tutorial. I'm going slowly but surely :) I had fun recording myself dragging various pieces of metal across concrete this morning.

Day 3

Working through Day 4 of the Compudanzas tutorial. Making slow progress because I'm frantically switching through tabs and looking at code I did previously to make sure I'm understanding what's going on. So far I like that, as alien and confusing as it is to me, UXN is designed to be completely understandable.

Day 2

I started the evening off by going through the helpful setup I found on Eli's website to make my UXN experience a little more ergonomic. I'm still a linux noob so I just don't think of things like writing bash scripts and whatnot. Maybe next I'll get my emacs setup working a little better, since I'm not loving the Uxntal Mode I've been using.

I got a little sidetracked, so I didn't get much else done. I'm not going to lie, I was a little confused about where to put the bash scripts. I did get pretty well set up, though, so I should be rocking and rolling tomorrow!

Day 1

I didn't manage to get any coding done today. I figured since this website was part of December Adventure, I should make it presentable at least. That meant finally finishing the one article I started writing for this site. If you think about it, since I use .php files to include the menu and randomized header, I did use a real programming language today :D I also do everything in emacs so even blogging feels like some real hacker shit.

For the rest of the evening, I'm going to keep working on the site. I'm remastering all of the mazes I've been drawing since I was a kid. A lot of them were drawn with pencil, which has faded over the years. I'm converting them to vector format, and then I can colorize them so they'll fit the Catppuccin theme the rest of the site uses. This is all heading towards creating a Maze Zone for the site, which will host all of my mazes and maze-based content.