fuzzy notepad

Atom feed everything

[dev] Weekly roundup: still writing

July is themeless, though in practice it’s been mostly blogging.

  • irl: Wow! I did a bunch of errands and sifted through a bunch of email I’d been putting off. Exciting. Also I decided to take half an hour of server downtime for some upgrades right in the middle of the day because I’m bad at ops.

  • art: Daily Pokémon, of course. I’ve now done 30 of these speedpaints (only 75% of daily, oh well), and there’s some visible progress in there, which is pretty cool to see. I also drew an Eevee that attempted to take some inspiration from huiro, a Japanese artist with a really simple style that I like.

  • blog: I wrote about naming. I also spent multiple days working on a pair of Python 3 posts. I sure hope they get finished soon, but I guess you’ll have to wait until the next weekly roundup to find out!

Oh boy that doesn’t sound like a lot, but really, I spent so much time writing. And playing Starbound. But mostly, writing. The Python 3 posts total about twenty thousand words!

After the mad dash to publish six things in two and a half weeks, I’m all caught up on blogging. I’ll try to write some shorter and quicker things this month — I’m sure these massive tomes are as exhausting to read as they are to write — and spread them out a bit more evenly.

I have a bunch of stuff I want to make progress on in August, but I guess you’ll have to wait and see what those are! Hopefully I’ll have something to show by next week, but if not, I’ll quietly and shamefully pretend I wasn’t ever going to do any of it anyway and playing Starbound for a week was my original plan all along.

[blog] I wish I enjoyed Pokémon Go

I’ve been trying really hard not to be a sourpuss about this, because everyone seems to enjoy it a lot and I don’t want to be the jerk pissing in their cornflakes.

And yet!

Despite all the potential of the game, despite all the fervor all across the world, it doesn’t tickle my fancy.

It seems like the sort of thing I ought to enjoy. Pokémon is kind of my jam, if you hadn’t noticed. When I don’t enjoy a Pokémon thing, something is wrong with at least one of us.

[blog] Python FAQ: How do I port to Python 3?

Part of my Python FAQ, which is doomed to never be finished.

Maybe you have a Python 2 codebase. Maybe you’d like to make it work with Python 3. Maybe you really wish someone would write a comically long article on how to make that happen.

I have good news! You’re already reading one.

(And if you’re not sure why you’d want to use Python 3 in the first place, perhaps you’d be interested in the companion article which delves into exactly that question?)

[blog] Python FAQ: Why should I use Python 3?

Part of my Python FAQ, which is doomed to never be finished.

The short answer is: because it’s the actively-developed version of the language, and you should use it for the same reason you’d use 2.7 instead of 2.6.

If you’re here, I’m guessing that’s not enough. You need something to sweeten the deal. Well, friend, I have got a whole mess of sugar cubes just for you.

And once you’re convinced, you may enjoy the companion article, how to port to Python 3! It also has some more details on the diffences between Python 2 and 3, whereas this article doesn’t focus too much on the features removed in Python 3.

[dev] Weekly roundup: writing

July is themeless.

  • art: Daily Pokémon remain sporadic. Some other doodling.

  • blog: I wrote a thing about technicalities in communities. I’m also working on three more posts concurrently, which is great because I still have to publish four more by the end of the week, whoops!

  • book: I wrote a teeny bit of actual text, then spent much more time fucking around with Sphinx and comparing it to Pandoc and waffling over whether I want to write in rST or TeX.

Mostly writing last week, and mostly writing this week. I guess July’s theme ended up being, um, writing.

[dev] Weekly roundup: doing better

July is themeless.

I’m doing better!

  • art: Daily Pokémon continue, perhaps a bit too sporadically to be called “daily” but whatever. Also a sunset painting that came out really cool, damn. And this painting of a new Sun/Moon Pokémon. And a lot of other doodling.

    I’ve been trying out a bunch of Krita brushes, and I’m not quite happy with any of them, but I’m getting enough of a feel for what I like to start making my own.

  • twitter: I finally automated @leafeon_brands, my blocklist of advertisers. It now automatically blocks ads shown to my primary account.

  • blog: I wrote some stuff about color, which somehow took way longer than I’d expected — I was hoping for a day or two, and it feels like it took most of the week. That wraps up my June posts, so, er, I really gotta get moving on July.

  • book: I had a book idea that seems to have a lot more staying power than the last one or two, and I did a bunch of research and planning for it. I’ll talk about it later, when I have something to show.

  • flora: I was dragged into fixing shipping for the Floraverse store, which thankfully mostly worked itself out before it became too much of a nightmare.

I’m working on two posts at the moment, so I should be able to catch up soon. As soon as I can, I want to find some blocks of time to experiment with art, work on Runed Awakening and this book idea, and spruce up veekun.

[blog] Some stuff about color

I’ve been trying to paint more lately, which means I have to actually think about color. Like an artist, I mean. I’m okay at thinking about color as a huge nerd, but I’m still figuring out how to adapt that.

While I work on that, here is some stuff about color from the huge nerd perspective, which may or may not be useful or correct.

[dev] Weekly roundup: short reprieve

I was feeling pretty run down at the end of June. I think I wore myself out a little bit. DUMP 2, then Under Construction, then DUMP 3 (which I missed), and all the while fretting over Under Construction.

I took this past SGDQ week “off” and spent it mostly doodling. I’m a bit better now! I’m a post behind for June, a third of the way into July; don’t worry, I’ll catch up.

July doesn’t have a theme. I’ve got some stuff to do, and I’ll do it.

  • art: The 30-minute daily Pokémon continue, though not quite so “daily” for a bit there. I also made a quick birthday gift for a friend, spent a preposterous amount of time painting a hypothetical evolution, and drew an Extyrannomon for Extyrannomon. Plus a lot of doodling.

    Oh, and I put together an art more good chart for the first half of this year.

  • zdoom: My experiment with embedding Lua is a little cleaner — you can now embed a Lua script in a map and call it from a linedef (switch, etc.), making it slightly more of a real proof-of-concept. I also did some research into how to serialize the entire state of the interpreter, for the sake of quicksaves.

  • gamedev: I did a little more work on rainblob, the tiny PICO-8 platformer I started a month or so ago. It now supports multiple “rooms” and has a couple simple intro puzzles. I also wrote about 20% of a Tetris clone using pentominoes while watching SGDQ’s Tetris runs.

  • veekun: I gathered all of Bulbapedia’s Sugimori art to replace the rather low-res and incomplete collection veekun has at the moment. Not up yet, though. I looked into the current state of extracting skeletal animations, yet again, and did not find any traces of success. Alas.

Back to work this week, then!

[dev] Weekly roundup: video games

June’s theme is clearing my plate.

  • SLADE: I fixed yet another obscure geometry editing bug. I feel a little more cleansed every time I do. Also I found out that GZDoomBuilder based its own geometry code on SLADE’s and almost immediately borrowed my SLADE fix.

  • art: Still doing daily Pokémon. The half hour time limit is surprisingly harsh, but I think I’m making some progress, gradually. Also finished an old art trade.

  • runed awakening: I built out most of a whole puzzle sequence that had languished unfinished for a while, and drew a WIP or two of some of the rooms and objects involved. It doesn’t sound like a lot, and I wish I’d done more, but I made some good progress.

  • zdoom: On a total whim, I did an extremely simple proof of concept of Lua in ZDoom. There’s no approval or planned goals or anything for this; I just felt like trying it out. May or may not continue it. Ideally it would be able to replace ACS and at least massively enhance DECORATE.

  • blog: I wrote about video games again.

I think I ran out of small things on my plate, and now I’m finding all the large things a little daunting. And here I’ve invented another one. Argh. Still, keep moving forward.

[dev] Weekly roundup: sleepover

June’s theme is clearing my plate, a concept that becomes increasingly nebulous as time goes by.

I accidentally went nocturnal over the past week, which always leaves me completely fried for a few days due to losing a day. So not the best week, but not the worst either.

  • art: I drew a very quick happy Minccino to try to cheer everyone up last weekend. Their tail fluffs are upside-down. Sorry.

    I drew and colored two old friends on a whim, trying to apply some things Mel had told me about color harmony. I think it came out as possibly one of the nicest things I’ve ever drawn, so, that’s nice, whoa.

    I started drawing daily Pokémon (in a predetermined random order), where the only rule is a time limit of 30 minutes. Here are Wobbuffet and western Shellos; I’ll be dumping them all in a Tumblr tag too.

    While I was out at lunch, I drew on paper for the first time in a while. I should probably do it more, but the results aren’t too bad.

  • Runed Awakening: Aha! I pixelled an NPC or two, possibly marking the first real character design I’ve ever done, as well as an item and an attempt at a room illustration.

    A couple friends played through the current state of the game, which led to a couple days of chasing down extremely obtuse minor bugs. It’s a little frustrating to have spent a lot of time and have so little to show for it, but one of the bugs was something that’s plauged me for over a year, so I guess it at least fits with the theme of getting rid of looming things. From here I should be able to get back to building things.

  • spline: I finally granted Mel the ability to create a new folder by themselves. So far I’ve always done it manually, which has gotten increasingly painful since the folders use the nested set model. There’s still no UI for rearranging them, but this removes a huge source of… requests for manual intervention.

  • veekun: I started reabsorbing the current state of the new YAML schema and thinking about how to get it where I want. Didn’t make any actual progress, though.

    Working on getting the remaining images veekun is missing, too.

Probably more of the same this next week. I want to make huge inroads on Runed Awakening, fix the other category of things I have to do manually for spline, and get some work done on veekun one way or another.

[dev] Weekly roundup: doodling

June’s theme is clearing my plate! I will finally stop spreading these vegetables around to make it look like I ate some of them, and just sneak them to the dog under the table.

  • art: I drew a beautiful manga, which is based on true events. I drew a new header image for here, replacing the old poor cutout of a JPEG exported from Pokémon Art Academy, and adjusted the colorscheme of the whole site to match it. And I did a lot of doodling. A loooot of doodling.

  • doom: I did a lot of work on my factory map for DUMP 3, but I don’t think I’m going to make the deadline. I’m okay with that. I did a mad scramble for DUMP 2 in April, then a longer mad scramble for Under Construction in May; I’m alright with not doing a mad scramble for a third month in a row. I can still make maps outside of a particular challenge.

  • twitter: I made @perlin_noise, a Twitter bot that tweets Perlin noise in various forms.

  • pyscss: I’d had a ton of GitHub mail marked unread for ages, so I finally spent a day fixing a lot of easy bugs and released 1.3.5. I don’t plan to spend significant time on this in the future — especially when there’s now a libsass in C and Python bindings to it — but it’s nice to see some obvious problems fixed.

  • blog: It’s been a year since I quit now!

It doesn’t sound like a lot, but honestly most of the time went into the Doom map and artwork, both of which are things I wanted to do this month. I’m not sure how I’ll schedule the mapping if I’m giving up on DUMP 3; maybe I’ll hop on Runed Awakening for a bit and look at the map again later with fresh eyes.

[dev] Weekly roundup: spring cleaning

June’s theme is, ah, clearing my plate! Yes, we’ll try that again; I have a lot of minor (and not-so-minor) todos that have been hanging over my head for a long time, and I’d like to clear some of them out. I also want to do DUMP 3 and make a significant dent in Runed Awakening, so, busy busy.

  • blog: I published a very fancy explanation of Perlin noise, using a lot of diagrams and interactive things I’d spent half the previous week making, but it came out pretty cool! I also wrote about how I extracted our game’s soundtrack from the PICO-8. And I edited and published a two-year-old post about how I switched Yelp from tabs to spaces! I am on a roll and maybe won’t have to write three posts in the same week at the end of the month this time.

    I did a bit of work on the site itself, too. I linked my Mario Maker levels on the projects page. I fixed a PARTYMODE incompatibility with Edge, because I want my DHTML confetti to annoy as many people as possible. I fixed a silly slowdown with my build process. And at long last, I fixed the   cruft in the titles of all my Disqus threads.

  • gamedev: I wrote a hecka bunch of notes for Mel for a… thing… that… we may or may not end up doing… but that would be pretty cool if we did.

  • patreon: I finally got my Pokémon Showdown adapter working well enough to write a very bad proof of concept battle bot for Sketch, which you can peruse if you really want to. I had some fun asking people to fight the bot, which just chooses moves at complete random and doesn’t understand anything about the actual game. It hasn’t won a single time. Except against me, when I was first writing it, and also choosing moves at complete random.

    I rewrote my Patreon bio, too; now it’s a bit more concrete and (ahem) better typeset.

  • doom: I started on three separate ideas for DUMP 3 maps, though I’m now leaning heavily in favor of just one of them. (I’d like to continue the other two some other time, though.) I did a few hours of work each day on it, and while I’m still in the creative quagmire of “what the heck do I do with all this space”, it’s coming along. I streamed some of the mapping, which I’ve never done before, and which the three people still awake at 3am seemed to enjoy.

  • SLADE: I can’t do any Doom mapping without itching to add things to SLADE. I laid some groundwork for supporting multiple tags per sector, but that got kinda boring, so I rebased my old 3D floors branch and spruced that up a lot. Fixed a heckton of bugs in it and added support for some more features. Still a ways off, but it’s definitely getting there.

  • art: I drew a June avatar! “Drew” might be a strong word, since I clearly modified it from my April/May avatar, but this time I put a lot of effort (and a lot of bugging Mel for advice) into redoing the colors from scratch, and I think it looks considerably better.

  • spring cleaning: Sorted through some photos (i.e. tagged which cats were in them), closed a few hundred browser tabs, and the like.

Wow, that’s a lot of things! I’m pretty happy about that; here’s to more things!

[blog] Converting a Git repo from tabs to spaces

This post is about the thing in the title.

I used to work for Yelp. For historical reasons — probably “the initial developers preferred it” — their mostly-Python codebase had always been indented with tabs. That’s in stark contrast to the vast majority of the Python ecosystem, which generally uses the standard library’s style guide recommendation of four spaces. The presence of tabs caused occasional minor headaches and grumbles among the Python developers, who now numbered in the dozens and were generally used to spaces.

At the end of 2013, I bestowed Yelp with a Christmas gift: I converted their entire primary codebase from tabs to four spaces. On the off chance anyone else ever wants to do the same, here’s how I did it. Probably. I mean, it’s been two and a half years, but I wrote most of this at the time, so it should be correct.

Please note: I do not care what you think about tabs versus spaces. That’s for a different post! I no longer work for Yelp, anyway — so as compelling as your argument may be, I can no longer undo what I have done.