fuzzy notepad

Atom feed everything

[blog] Let’s stop copying C

Ah, C. The best lingua franca we have… because we have no other lingua francas. Linguae franca. Surgeons general?

C is fairly old — 44 years, now! — and comes from a time when there were possibly more architectures than programming languages. It works well for what it is, and what it is is a relatively simple layer of indirection atop assembly.

Alas, the popularity of C has led to a number of programming languages’ taking significant cues from its design, and parts of its design are… slightly questionable. I’ve gone through some common features that probably should’ve stayed in C and my justification for saying so. The features are listed in rough order from (I hope) least to most controversial. The idea is that C fans will give up when I call it “weakly typed” and not even get to the part where I rag on braces. Wait, crap, I gave it away.

[dev] Weekly roundup: Arguing on the internet

November is improving.

  • zdoom: On a whim I went back to playing with my experiment of embedding Lua in ZDoom. I tracked down a couple extremely subtle and frustrating bugs with the Lua binding library I was using, and I made it possible to define new actor classes from Lua and delay a script executed from a switch. Those were two huge requirements, so that’s pretty okay progress.

  • blog: Zed Shaw said some appalling nonsense and I felt compelled to correct it. I also wrote about some of the interesting issues with that whole Lua-in-ZDoom thing. I have a final post half-done as well.

  • art: I did a few pixels, which you may or not be seeing in the near future.

Mostly writing and Pokémon, then. But I’m clearing my plate behind the scenes. Stuff’s a-brewin’.

[blog] Embedding Lua in ZDoom

I’ve spent a little time trying to embed a Lua interpreter in ZDoom. I didn’t get too far yet; it’s just an experimental thing I poke at every once and a while. The existing pile of constraints makes it an interesting problem, though.

[blog] A Rebuttal For Python 3

Zed Shaw, of Learn Python the Hard Way fame, has now written The Case Against Python 3.

I’m not involved with core Python development. The only skin I have in this game is that I like Python 3. It’s a good language. And one of the big factors I’ve seen slowing its adoption is that respected people in the Python community keep grouching about it. I’ve had multiple newcomers tell me they have the impression that Python 3 is some kind of unusable disaster, though they don’t know exactly why; it’s just something they hear from people who sound like they know what they’re talking about. Then they actually use the language, and it’s fine.

I’m sad to see the Python community needlessly sabotage itself, but Zed’s contribution is beyond the pale. It’s not just making a big deal about changed details that won’t affect most beginners; it’s complete and utter nonsense, on a platform aimed at people who can’t yet recognize it as nonsense. I am so mad.

[dev] Weekly roundup: Screw it

November is a disaster and I’ve given up on it.

  • runed awakening: I found a decent DAG diagrammer and plotted out most of the puzzles and finally had visual confirmation that a few parts of the game are lacking. Haven’t yet figured out how to address that.

  • blog: I finished an article for SitePoint. Also I wrote a thing about iteration.

  • veekun: Playing Pokémon has made me interested in veekun work again, so I did some good ergonomic work on the YAML thing, which is starting to look like it might end up kind of sensible.

  • zdoom: I had a peek at my zdoom-lua branch again, dug into object lifetime, and discovered a world of pain.

Everything is still distracting, and Pokémon came out, so.

[dev] Weekly roundup: Apocalypse now

November is about writing or whatever.

I’m at 22,798 words written, which is still 17,202 words behind where I should be, so that’s not very good. Apparently 100 kilowords is a lot?

  • book: I made some further progress reconstructing the Under Construction engine from scratch.

  • art: I tried to draw a few times, but most of it hasn’t been turning out right. Had a couple minor successes.

  • blog: Pretty much all I did? Have three different (huge) posts each like 80% done. Should probably, ah, finish a couple of them.

What a week. I was a bit distracted.

[dev] Weekly roundup: National Novelty Writing Month

Inktober is a distant memory.

Now it’s time for NaNoWriMo! Almost. I don’t have any immediate interest in writing a novel, but I do have plenty of other stuff that needs writing — blog posts, my book, Runed Awakening, etc. So I’m going to try to write 100,000 words this month, spread across whatever.

Rules:

  1. I’m only measuring, like, works. I’ll count this page, as short as it is, because it’s still a single self-contained thing that took some writing effort. But no tweets or IRC or the like.

  2. I’m counting with vim’s g C-g or wc -w, whichever is more convenient. The former is easier for single files I edit in vim; the latter is easier for multiple files or stuff I edit outside of vim.

  3. I’m making absolutely zero effort to distinguish between English text, code, comments, etc.; whatever the word count is, that’s what it is. So code snippets in the book will count, as will markup in blog posts. Runed Awakening is a weird case, but I’m choosing to count it because it’s inherently a text-based game, plus it’s written in a prosaic language. On the other hand, dialogue for Isaac HD does not count, because it’s a few bits of text in what is otherwise just a Lua codebase.

  4. Only daily net change counts. This rule punishes me for editing, but that’s the entire point of NaNoWriMo’s focus on word count: to get something written rather than linger on a section forever and edit it to death. I tend to do far too much of the latter.

    This rule already bit me on day one, where I made some significant progress on Runed Awakening but ended up with a net word count of -762 because it involved some serious refactoring. Oops. Turns out word-counting code is an even worse measure of productivity than line-counting code.

These rules are specifically crafted to nudge me into working a lot more on my book and Runed Awakening, those two things I’d hoped to get a lot further on in the last three months. And unlike Inktober, blog posts contribute towards my preposterous goal rather than being at odds with it.

With one week down, so far I’m at +8077 words. I got off to a pretty slow (negative, in fact) start, and then spent a day out of action from an ear infection, so I’m a bit behind. Hoping I can still catch up as I get used to this whole “don’t rewrite the same paragraph over and over for hours” approach.

  • art: Last couple ink drawings of Pokémon, hallelujah. I made a montage of them all, too.

    I drew Momo (the cat from Google’s Halloween doodle game) alongside Isaac and it came out spectacularly well.

    I finally posted the loophole commission.

    I posted a little “what type am I” meme on Twitter and drew some of the interesting responses. I intended to draw a couple more, but then I got knocked on my ass and my brain stopped working. I still might get back to them later.

  • blog: I posted an extremely thorough teardown of JavaScript. That might be cheating, but it’s okay, because I love cheating.

    Wrote a whole lot about Java.

  • doom: I did another speedmap. I haven’t released the last two yet; I want to do a couple more and release them as a set.

  • blog: I wrote about game accessibility, which touched on those speedmaps.

  • runed awakening: I realized I didn’t need all the complexity of (and fallout caused by) the dialogue extension I was using, so I ditched it in favor of something much simpler. I cleaned up some stuff, fixed some stuff, improved some stuff, and started on some stuff. You know.

  • book: I’m working on the PICO-8 chapter, since I’ve actually finished the games it describes. I’m having to speedily reconstruct the story of how I wrote Under Construction, which is interesting. I hope it still comes out like a story and not a tutorial.

As for the three big things, well, they sort of went down the drain. I thought they might; I don’t tend to be very good at sticking with the same thing for a long and contiguous block of time. I’m still making steady progress on all of them, though, and I did some other interesting stuff in the last three months, so I’m satisfied regardless.

With November devoted almost exclusively to writing, I’m really hoping I can finally have a draft chapter of the book ready for Patreon by the end of the month. That $4 tier has kinda been languishing, sorry.

[dev] Weekly roundup: Inktober 4: A New Hope

Inktober is over! Oh my god.

  • art: Almost the last of the ink drawings of Pokémon, all of them done in fountain pen now. I filled up the sketchbook I’d been using and switched to a 9”×12” one. Much to my surprise, that made the inks take longer.

    I did some final work on that loophole commission from a few weeks ago.

  • irl: I voted, and am quite cross that election news has continued in spite of this fact.

  • doom: I made a few speedmaps — maps based on random themes and made in an hour (or so). It was a fun and enlightening experience, and I’ll definitely do some more of it.

  • blog: I wrote about game accessibility, which touched on those speedmaps.

  • mario maker: One of the level themes I got was “The Wreckage”, and I didn’t know how to speedmap that in Doom in only an hour, but it sounded like an interesting concept for a Mario level.

I managed to catch up on writing by the end of the month (by cheating slightly), so I’m starting fresh in November. The “three big things” obviously went out the window in favor of Inktober, but I’m okay with that. I’ve got something planned for this next month that should make up for it, anyway.

[dev] Mario Maker: The Wreck

33E8-0000-02B2-76DF
Difficulty: very easy
Quality: ★★★★☆
Secrets:

I was rolling a Doom random level theme generator for speedmapping purposes, and one of the prompts it gave was “The Wreckage”. I didn’t really know how to make that in Doom in only an hour, but I did know how to make it in Mario, so I did.

The additional rules were “no monsters” and “no stairs”, so neither of those things appear in this level. It’s quick and entirely atmospheric. I like it. Though it’d be slightly better if I’d correctly named it “The Wreckage”. Oh well.

[blog] Accessible games

I’ve now made a few small games. One of the trickiest and most interesting parts of designing them has been making them accessible.

I mean that in a very general and literal sense. I want as many people as possible to experience as much of my games as possible. Finding and clearing out unnecessary hurdles can be hard, but every one I leave risks losing a bunch of players who can’t or won’t clear it.

I’ve noticed three major categories of hurdle, all of them full of tradeoffs. Difficulty is what makes a game challenging, but if a player can’t get past a certain point, they can never see the rest of the game. Depth is great, but not everyone has 80 hours to pour into a game, and it’s tough to spend weeks of dev time on stuff most people won’t see. Distribution is a question of who can even get your game in the first place.

Here are some thoughts.

[blog] Inktober

Inktober is an ancient and hallowed art tradition, dating all the way back to sometime, when it was started by someone. The idea is simple: draw something in ink every day. Real ink. You know. On paper.

I tried this last year. I quit after four days. Probably because I tried to do it without pencil sketches, and I’m really not very good at drawing things correctly the first time. I’d hoped that forcing myself to do it would spark some improvement, but all it really produced was half a week of frustration and bad artwork.

This year, I was convinced to try again without unnecessarily handicapping myself, so I did that. Three weeks and more than forty ink drawings later, here are some thoughts.

[dev] Weekly roundup: Inktober 3: Tokyo Drift

I see a light at the end of the tunnel… it’s… it’s the end of Inktober! I’m so close…

  • art: More ink drawings of Pokémon. I got a fountain pen and am still getting used to it. I did a little doodling in the lost sketchbooks I found last week.

  • devops: I upgraded koiru (machine that runs my IRC and some other small things) by, uh, two entire Ubuntu LTS releases, then spent hours fixing all the obscure stuff that broke. Later I also fixed Munin, despite not really ever looking at the graphs, because I like graphs.

  • blog: More note-taking and… pivoting? for a special post. Wrote and published a post about word-wrapping dialogue boxes in games. Wrote about half of a post about Inktober, which I should be publishing tonight, I hope?

  • doom: I spent a couple hours dinking around with a secret MAP31 idea I had.

I am so behind on writing that I might die.

[blog] Word-wrapping dialogue

I have a teeny tiny pet peeve with dialogue boxes. Er, not dialog boxes — dialogue boxes, the ones in video games with scrolling lines of dialogue.

A fake dialogue box, with scrolling text that jumps when it wraps

I recently wrote a dialogue box, and I saw a game that made this mistake, so here’s a post about it.

[dev] Weekly roundup: Inktober 2: Electric Boogaloo

The death march of Inktober continued.

  • art: Another batch of ink drawings of Pokémon. I earned myself a third grey Copic. I also ran the light grey one dry, somehow, so I ordered a refill… and while I was at it, ordered a fountain pen at Mel’s behest.

    I painted a couple things, which came out surprisingly less bad than I thought; one to cheer up some pals and one emulating some old art of Mel’s.

    I also drew some ridiculous nonsense.

    I went through my collection of sketchbooks, many of which were impulse purchases from before I was even trying to draw (just because I like fresh paper) and are completely blank. I found a couple with very old art in them, which was interesting and embarrassing. I found out I can doodle on paper much better than I thought, so I’ll probably be doing that more.

  • blog: I finished and published a post about Doom’s weird sense of scale. Halfway through the month and I’m caught up, so now I only have to do the normal amount of work in half the time, while also drawing a lot. Er, whoops.

  • veekun: I got about halfway through matching up ORAS’s encounters, which is an incredibly tedious manual process. I nudged magical into updating Global Link art and I finally fixed up the new code for grabbing box icons, so veekun finally has icons for every single Pokémon and not a bunch of embarrassing 404s everywhere.

    I also made veekun entirely HTTPS. The upside of Let’s Encrypt’s short expiration time (and my laziness in writing a cronjob to renew all my certs) is that every three months I’m suddenly inclined to go comb through a bunch of nginx configuration and spruce it up a bit.

  • isaac hd: I’d already hacked in some temporary dialogue code, but I spent half a day cleaning it up and turning it into something resembling a real feature. I fixed a lot of limitations that weren’t obvious just from looking at my previous example, such as “it can’t show more than one line of dialogue”. The results are encouraging!

  • irl: Some personal stuff consumed a bit of time.

I’ve apparently gotten faster at the ink drawings! I’m still a bit behind on writing, but I have some ideas for shorter posts relevant to stuff I’ve been doing lately. I have so much to do, but actively trying to do it all is gradually making me faster at doing it, which is nice.

Since November is NaNoWriMo, I’m thinking I might use it as a real writing catch-up month, like this has been an art practice month. I’m not working on a novel, of course, but I do have several prosaic things in progress: a book, Runed Awakening, some other fiction ideas, and of course this blog. The usual goal is 50,000 words in 30 days, so maybe I’ll try to write 2000 words every day? “Do a bunch of things simultaneously” is certainly more my style than “do a single thing for an entire month”.

[blog] Doom scale

I’ve been dipping my toes into Doom mapping again recently. Obviously I’ve done it successfully once before, but I’m having trouble doing it a second time.

I have three major problems: drawing everything too small, drawing everything too rectangular, and completely blanking on what to do next. Those last two are a bit tricky, but struggling with scale? That sounds like a problem I can easily solve with charts and diagrams and math.