The Stochastic Game

Ramblings of General Geekery

Iron Maiden singer: “CAN I PLAY WITH MADNESS”

My kid: “Yes you can play with magnets. It’s pretty fun.”


Gutentags Gets A Job

So event though I spent most of my long Easter week-end doing random cool stuff, I still got to do some nerdy stuff – namely catching up with bugs and feature requests for Gutentags, which is my most popular open-source project to date.

The main new thing is that Gutentags is now using Vim 8’s job API (job_start() and the like), with a compatibility layer for Neovim’s own, sadly different (but older), job API. This doesn’t make Gutentags any more asynchronous than it was before, since I jumped through hoops to make it work correctly even before, but it does clean up the code in a few places:

  1. No more need for a .lock file that indicates if the background job is running. This means less chance of Gutentags getting “stuck” because the lock file was somehow left behind incorrectly by a previous crash.
  2. No more need for polling the aforementioned lock file… we can just wait for a job to finish.
  3. As a corollary of the previous point, it’s now easy to force-refresh Vim’s status line and get real-time, correct indication of whether Gutentags is running in the background or not. See :help gutentags-status-line for more information on this.

Because I don’t want to support 2 code paths in the same file, the requirements for Gutentags have been bumped to versions of Vim/Neovim that have the job/*jobwait features… if you need to use Gutentags with Vim 7 for some reason, you can stay on the vim7 branch, which may or may not receive some bug
fixes in the future.

You can pull the latest changes from BitBucket or Github depending on which DVCS you prefer. Have fun!


GDC 2018 Recap

So that happened – I went to my second GDC and this time I presented something. Look at how shiny my forehead is!

Big thanks to the Toolsmiths guys (Geoff and David) for organizing a full day summit dedicated to tools programming – a topic that I always thought was lacking a proper worldwide community the same way, say, graphics rendering or animation have. Not only did I have the chance to present my talk as part of that “Tools Tutorial Day”, but I had the honours of being the inaugural talk!

The room was packed the whole day, so you can bet there will be more tools programming shenanigans next year.

Oh, and my talk is now available on the GDC Vault if you have access.

Here are some notable things that happened this year:

  1. These conferences are always a good opportunity to catch up with friends and acquaintances, but this year I got to meet a bunch of really cool new people through all the tools programming talks and roundtables. I’m hoping to run into them again in the future, which means I’m looking forward to next year!
  2. Speaking of roundtables, I went to more of them this year, instead of going to talks. I was just lurking for most of them, however, being somewhat paralyzed by social anxiety and the difficulty of talking about stuff that I didn’t directly work on myself. I’ll have to speak up more next year.
  3. Stephanie Hurlburt inspired a bunch of older devs like me to allocate some time to meet with newbies who might have questions or just want to get to know people in the games industry. I met with 5 people through that Twitter thread and I hope I had some interesting or useful things to say to them. I still have some follow-up to do with a few of them next week.
  4. When you’re a presenter, you’re invited to a lot more parties. I went to more parties in a week than I did in my entire high-school years. I’ll probably go to less parties next time, since I didn’t care for half of them… just like back in high-school, I guess.
  5. There’s always one last edit you can do to your presentation before the big day. I think I got off lucky to have mine on the very first day, on the very first time slot!
  6. I went to a couple events and talks about “black people in gaming”, but I kinda felt out of place – first, I’m only half-black, and second a lot of those things are really about being black in the United States, which is a whole different level from being black in Canada or in France (where the racism and xenophobia is primarily aimed at other groups). Still, I got a hug from Tanya so that was cool.
  7. I got to see Lord British and Blackthorne for real. Their Ultima Online post-mortem was brilliant.
  8. I also got to see a talk about interactive music in games which ended with the presenter picking up a guitar and harmonica to perform one of the songs from his game. I guess I’ll have to find some really awesome gimmick for my next talk.
  9. I went to a talk about the “depiction of war in games” which was pretty interesting. Rolling Stone later picked up one of the presenter’s quotes to make a clickbaity title that got some backlash on Twitter. You should still watch the talk if you can, though, since it made a couple good points about the role of media and entertainment in society.
  10. Speaking of depressing subjects, the amount of human misery you see around San Francisco is staggering. I live in Vancouver, though, where we have the Downtown Eastside which also has a pretty shocking amount of homeless people.
  11. Some people are calling for GDC to be hosted outside of the US, which I would really welcome.
  12. When walking around the conference, the social etiquette is to not make eye contact with someone that might be trying to read your name tag – they will catch you catching them, and then quickly run away, probably scarred for life.
  13. The dress code, however, is pretty convoluted – one thing is certain, however: if you want to spend some time near the indie gaming booths, you need some cool outfit and blue hair.

And that’s it! I took a few days around the long Easter week-end to rest from the trip…

I hope you’re all doing fine too!


A Tale of Three Data Schemas

Next week I’ll be at the Game Developers’ Conference, along with a lot of people from the video game industry, and I’ll be giving my first presentation there, “A Tale of Three Data Schemas”.

I’m starting small for my first GDC contribution by presenting during the “pre-conference” days that half of the attendees skip. This year should be super interesting however since it will be a full day dedicated to the fine art of making game creation tools, courtesy of the fine folks at The Toolsmiths.

The good thing for my nerves is that my presentation ended up being the very first presentation of the very first day – surely when half the audience is low on caffeine and completely jet-lagged, nobody will notice whether I know what I’m talking about or not… and then I’m done for the rest of the week! Yay!


PieCrust 3.0

Last year I announced PieCrust 2.0 without much fanfare and, guess what, here comes PieCrust 3.0 now!

The funny thing is that I didn’t post much about PieCrust during that whole time… the joke about blog engines is that the more you work on them, the less you actually use them.

So as is tradition, I released the new version of PieCrust on the Python package server and immediately found a bunch of new bugs, which I proceeded to fix (we’re now at PieCrust 3.1.1)… I’m not very good at this whole thing, even after several years.

But either way, it’s out! You can run pip install piecrust -U and read the rest of this post if you want to know what’s new.

This release has breaking changes so make sure you read the upgrade notes this time around.

The highlights in this release include:

  • Simplified content model: there are now just content sources and URL routes. The previous “page generator” concept (which was used for taxonomies and blog archives) is now just a content source that happens to not return pages on disk, and instead comes up with pages on the fly. This makes things a bit simpler for the site configuration.

    There is a new concept however, which is the concept of a “content pipeline”, which is the thing that knows how to render a source’s contents. It’s a lot less user facing though – in most cases users don’t need to bother with it.

  • Better administration panel: the administration panel now supports talking to client apps (via the Micropub standard) to create new posts. This means you can post to your static website from your phone with apps like Micro.blog! This requires some server-side setup however, so you have some work to do.

    In the PieCrust 3.0 cycle I’ll actually be mostly looking at adding more IndieWeb technologies like MicropubWebmention is next, which will let your site display comments.

  • Watchdog-enabled chef server: when you run chef serve, you can have PieCrust monitor your assets (like CSS/JS files) and re-process them when you edit them (unless you’re using another more sophisticated asset pipeline like Gulp or Webpack or whatever). In PieCrust 2.0 it was using a very basic polling system, but now it’s using Watchdog, which means it works with your OS to get notified of file changes. The main upside is a more efficient file monitoring that’s a lot more battery friendly for laptop users.

As always, if you see any bug, report it on the GitHub issue tracker.