Craig Maloney

Just another Linux / Ubuntu / Python hacker. Host of and co-host of

  • Open Metalcast Episode #150: One Five Oh

    2017-03-14T03:10:53Z via Spigot To: Public


    Welcome to the 150th episode of Open Metalcast, where we’ve been exploring the world of Creative Commons Metal Music for lo these many episodes. I’m sure there’s a way to check to see how many songs and bands we’ve uncovered together but frankly I’d rather concentrate on bringing you the best in Creative Commons Metal Music. And this episode delivers on that promise with music from Dismalfucker, Dancerobot, Mortals Path, Cuerno, Cerderben, Vukodlak, Constrictor, and netra. There’s something for everyone in this episode. Here’s to many more episodes ahead!

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or walk in to their Skype conversation like you just don’t care. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at

    Open Metalcast #150 (MP3)

    Open Metalcast #150 (OGG)

  • [Blog] Re-reading K&R

    2017-03-01T18:26:17Z via Spigot To: Public


    I think for the month of March I'm going to try an experiment. Something that I've long wanted to do, but something that has gone by the wayside more often than not.

    I'm going to read through Kernighan and Ritchie's classic book "The C Programming Language".

    I liken this to reading books when you're younger vs. when you're older. "The Lord of the Rings" is a great example of this. When I read it as a youngster it was a mystical and fanciful world. When I re-read it (around the time of the movies) it started off mystical and fanciful but with my older eyes I could see things I'd missed before. I'd missed what Tom Bombadil represented (though I still do not care for that character in the slightest). I'd missed that the over-arching theme is that the world of magic is still dying, and that the quest of the ring was whether it ended in fire or in quiet contemplation.

    So what does this have to do with K&R?

    First off it's a classic text of programming. You can't mention the C language without someone piping up "K&R". As I mentioned in the last post there's also a certain comfort in hanging around in the C language. Plus I've never read the book all the way through. Something always happened to keep me from reading the book and I feel that I've done it a disservice by not making my way through all of the pages. Plus I'm not the same programmer that I was back then. I've grown with wisdom and I understand more of how computers work. Granted the version of C they present is not modern C, but I have other books to help me make that transition. And GCC / GDB are much better tools than when I last played with them.

    How far will I get? Who can say? But I feel like I have to try.

    Jason Self, Charles ☕ Stanhope likes this.

  • Open Metalcast Episode #149: Chaotic Neutral

    2017-02-28T03:39:30Z via Spigot To: Public


    Welcome friends to the 149th episode of the podcast we humbly call “Open Metalcast”. In this chapter our hero discovers that the old man in the tavern was indeed a sorcerer who sent him in search of the best in Creative Commons Music. He scoured the internet and discovered eight new tracks, which he stuffed into his knapsack and dragged back into town. Feast your eyes upon such treasures by the likes of Human Ashtray, Maleek, BloodeviL, Tinnitia, Sunvoid, Lacrima, Death of a Poet, and Isyocel. It’s a 42 minute journey that only requires your headphones, your podcatcher of choice, and a place to listen to it. Chips and beverages optional.

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or buy copies for all of your friends. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at
    Open Metalcast #149 (MP3)

    Open Metalcast #149 (OGG)

  • [Blog] Comfort Code

    2017-02-20T04:00:27Z via Spigot To: Public


    Last week I found myself doing something I haven't done in a while.

    For some reason I got it in my head that I needed some comfort. And part of that comfort was re-learning the C language. Now, I have no immediate reason to learn C. None of my job prospects seem to want C (at least not at the dabbler level) but here I was pulling out my C books to give it a whirl again.

    Part of the reason is because there was a sense of comfort to me in sitting with just a compiler and a debugger looking at code flying by. I wasn't doing anything strenuous (just some Fibonacci sequences, or variable passing) but watching gdb change values and looking at the stack frame gave me a sense that I was in control. That I was changing something.

    Too often I think developers sit back and take code for granted. Not that our thoughts become code without effort (Lord knows there's a handful of developers who have ever had something work the first time without wondering what the hell went wrong). No, I mean that we just assume that the building blocks that we piece together will always work and we won't have to think too deeply about what goes on under the abstraction layers. I think pulling back the abstractions and peeking in to see what's happening can be a comforting experience. It's a gentle reminder that no matter how convoluted the outside world gets that we have the ability to pause and see that there are still some rules that apply. That there are places where we can derive joy from seeing an integer variable increment from a 1 to a 2.

    Maybe I'm crazy for finding comfort in this, but I can't deny that it works.

    j1mc, Charles ☕ Stanhope, James Dearing 🐲 likes this.

    I'm doing a similar thing right now with HTML and CSS. Making a web site from scratch just because I want to. No WYSIWYG editors here.

    James Dearing 🐲 at 2017-02-20T04:13:05Z

    Charles ☕ Stanhope likes this.

  • Open Metalcast Episode #148: Dunbar’s Number

    2017-02-13T23:00:18Z via Spigot To: Public


    According to Wikipedia (who is never wrong) Dunbar’s Number is a suggested cognitive limit to the number of people with whom one can maintain stable social relationships. Dunbar put that number at 148, which is usually rounded to 150. Whether that’s true or not is not ours to debate here, for our purpose is to provide you with the finest Creative Commons Metal the Internet has to offer. And we have nine bands we love in this episode, including Skinlepsy, a return of Narada, Mycelia, the latest from AATHMA and Santo Rostro, Talsur, Aethyr, netra, and a dip into the archives with Goat Father. So while you may only be able to have meaningful relationships with 148ish people you can still relate to 58 minutes of the best Creative Commons-licensed metal. Just remember to write every now and again.

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or give them a backrub. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at

    Open Metalcast #148 (MP3)

    Open Metalcast #148 (OGG)

  • [Blog] Writing a Snake Game in Pygame

    2017-02-10T17:00:12Z via Spigot To: Public


    I'm mulling over making a quick series on how to write a "snake" game in Pygame. Part of this is because I've been stalled on writing this down in the book about Pygame and game development / design and I'm thinking this may be an approach to uncork the bottle of inspiration. Because writing in the book? That's hard. But writing a blog post? That's simple, right? (Don't answer that; I don't want smarter me to wake up and say they're the same thing. :) ).

  • [Blog] Cleaning up the blog a bit

    2017-02-10T15:00:13Z via Spigot To: Public


    I realized the blog was getting a bit crusty around here, so I cleaned up a few pages. I've put as many of the MUG presentation videos as I could up in the projects page, and added the slides for the Penguicon Presentations from 2015 / 2016. I'm probably going to update a few more of the pages because they really don't make sense for the current layout. (Breaking links? That's why I'm here. :) )

    Also added some scripts that I use in my daily GTD / todotxt routine into a github repo so if you want to play with them you're welcome to them.

    As always, if something doesn't look right please let me know. I probably missed a few things along the way.

  • Open Metalcast Episode #147: Salt the Earth

    2017-01-30T21:00:11Z via Spigot To: Public


    It’s mid-wintertime here at Open Metalcast Headquarters. Part of the fun of winter is the snow that inevitably shows up during this time. One of the ways to counteract the snow in this climate is to put down prodigious amounts of salt on the roads. The salt is pretty corrosive and gets everywhere. So, what does this have to do with Creative Commons-licensed metal music? Consider this show an assault in the making that will scatter metal music in your ears (See what I did there?)

    We have a great line-up of music from Cirrhose Atak, Technickill, Brokenhead, Vera, Thesauros, Space Unicorn On Fire, and Vihmana. We also have a sneak-preview of a massive 45 minute black metal opus from Obitus, which is available for pre-order from Hypnotic Dirge Records.

    It’s a show you won’t want to take with a grain of salt. Or miss for that matter.

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or shovel out their car during a snow storm. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at

    Open Metalcast #147 (MP3)

    Open Metalcast #147 (OGG)

  • [Blog] Upgraded to Pelican 3.7.1

    2017-01-24T00:50:27Z via Spigot To: Public


    Finally upgraded to Pelican 3.7.1. Had a few issues related to summary fields in the feeds. If something doesn't look right please let me know. Thanks!

  • [Blog] Pepper & Carrot, Rea, and Fate-based Magic

    2017-01-21T19:00:12Z via Spigot To: Public


    The Chaos and Evolotions Impossible Triangle, by David Revoy

    One of the issues I've had with working on the Fate-based version of Pepper & Carrot is how the magic system works. Magic in Pepper & Carrot is manifested in potions and spells (moreso potions than spells, but that's another story). So in the case of episode 20 there is no show of preparing the potions: potions just happen, and the story moves from there. The only time we ever see Pepper preparing potions is in episode 1 and episode 4 (and to a certain extent episode 2 and episode 3). The group makes potions in episode 9. We also see the efforts of making way too many potions in episode 12 and Pepper working on her potions classes in episode 14. In each of these cases there's very little in the way of showing how Pepper and the rest of the cast manifest the magic into making these potions. They just do it and the story continues. Even in the cases where she's cast spells there's very details on how Pepper summons up the strength to cast powerful spells (episode 18 shows this in more detail).

    In an earlier incarnation of the Pepper & Carrot wiki it mentioned Rea hand how Rea worked inside the universe. Rea is short for "reality" and witches could use Rea to bend reality to their will. It defined Rea as something that a magic-user would need to cast spells. Rea could be acquired by putting effort toward working on a task, or could be purchased through potions and other materials. The wiki specifically stated that it was a unit that could be measured, so you could tell how much Rea a person had. It sort of worked for the fiction, but it didn't set well with me. And when it came time to put that into game terms it made even less sense. Was there going to be a box for "Rea" that someone would need to track? Potions to recover Rea? Costs for casting different spells? How many points would one need to create the black hole in episode 12? How much Rea would one need to make any of the spells in episode 11 work?

    The more I thought about it the more I didn't like where I was headed with tracking Rea. What started as an integral part of the characters looked like it could turn into a mess.

    A recent article by Johan Herrmann did some digging to the Rea concept. It tried to make sense of Rea in more scientific terms, and gave David and I some food for thought on what Rea really is.

    One of the thoughts that percolated was the idea of Rea being something that you're just aware of. I compared it with caffeine. Most folks know when they've had enough caffeine (headaches if you haven't had enough, jitters if you've had too much). But few folks really pay attention at the milligram level to see how much they've ingested. (There are some who do, but most folks aren't as mindful of their consumption. I know I'm not as mindful as I should be.) So if we take the caffeine metaphor and extrapolate it to the Witches of Hereva we start to see where we can mold it to the fiction. Witches in Hereva instinctually know when they are running out of Rea and do what is necessary to fix the issue. Much like the gravitational pull of coffee for me in the morning, a Witch of Hereva would know when they need to come up with more Rea.

    How does this work in the game then? Instead of Rea being a number or a box that requires a statistic it then becomes a complication that can be pulled out (either on a bad roll, or when the GM wishes to extract a fate point from the character). It becomes a story beat that characters become aware of when it makes sense to the story. Picture a grand battle where the cast of Pepper & Carrot are up against some big baddie. They're firing off spells, consuming potions, and wreaking havoc. And then the thrilling climax comes along where Pepper is about to deal the fatal blow to the big baddie. Everyone is waiting for the conclusion to this battle.

    Which is more appropriate? Looking at the character sheet and realizing you have a 0 in your Rea stat? That's boring. There's no drama in that. You're just left with "I can't cast any more spells because my Rea is at 0". What's more exciting is casting the spell, rolling the dice, and having to take a complication "Running out of Rea". Because in the fiction when the Chaosah Witches ran out of Rea at the end of The Great War really bad things happened.

    The other problem with defining Rea as a unit is the underlying metaphor of Rea. Rea is akin to shaping our own reality through effort, emotional engagement, and love for one another. Rea is generated every time David completes an episode of Pepper & Carrot. Rea happens when the translators translate the episodes into a myriad of languages. Rea is in the people engaging with the comic; coming up with new games, fan artwork, and theories about how the whole thing works together. It's a disservice to Rea to make it a simple stat on a character sheet.

    After some discussion I re-wrote the page for Rea in the Pepper & Carrot Wiki. I'm sure it'll need some more clarification as the episodes progress but I'm happier with where it is. I also think it makes for more interesting stories to put Rea more into the underlying fabric of the universe rather than something that needs active tracking. And it's also opened up how I can think about Rea in the Pepper & Carrot Fate-based game. Now the only thing keeping players from casting amazing spells and producing potent potions is dice rolls, aspects, and Gm discretion. That's more in-line with the fiction of Pepper & Carrot and the underlying philosophy of the comic and the comic-making process.

    I can't wait to write this up in the game itself, but I wanted to get some of the underlying ideas out so I had a record of them to re-read and understand.

    (Pepper & Carrot and the Hereva universe: created by David Revoy, with contributions by Craig Maloney. Corrections: Willem Sonke, Moini, Hali, Cgand and Alex Gryson. Artwork: David Revoy. Released under a Creative Commons Attribution, CC-By license. This article and the ideas in it are released under the same license as Pepper & Carrot / The Hereva Universe.)

  • [Blog] Learning Challenge: Addendum

    2017-01-21T16:48:05Z via Spigot To: Public


    Last night I was looking for some details on Z80 assembly and I decided to look at my blog. (Surely there was somewhere that I had a screenshot of a safe memory location for ORG). As I wandered through my previous learning challenges I noticed a pattern:

    • I had a tendency to abandon them about mid-month because something came up that I felt was more important to work on.
    • I think I've only finished one of them (Z80 Assembly).
    • The unprocrastination challenge sort of drifted into the miasma of being laid off.

    I was a little surprised by these results. Surely I had to have some success somewhere. Yes, but not quite as much as I'd thought. The blog entries showed my thoughts at the time and most of them said the same thing: something else came up that circumvented what I was doing.

    Part of this is my natural desire to have several large projects running at the same time. Currently I have projects for learning JavaScript better, writing the Fate-based Pepper&Carrot RPG, updating the license extraction script for Open Metalcast, and finishing up the release of the Pygame Photobooth. I'd be happy as hell to count any one of those projects as complete, but right now they all have some equal precedence. And my reasons for finishing each of them are pretty much as equally valid:

    • I want to learn JavaScript and front-end web development better so I can expand my work options.
    • I want to finish up the Fate-based Pepper&Carrot RPG so folks can play around in this magical and wonderful world.
    • I want to finish up the Open Metalcast license extraction script so it pulls out the license information quicker so I don't have to hunt for it as much.
    • I want to add the finishing touches to the Pygame Photobooth so others can use it better.

    There's also other projects that I have that I consciously moved to my Someday / Maybe list because I know that I won't have a chance to work on them in the upcoming weeks.

    Reading through those learning challenge posts reminded me that I've been noodling around with the Pepper&Carrot RPG for a while now. At the time I thought this was something that I could whip out in a few months. I was a tad mistaken in that assessment, but it also got me working on the Pepper&Carrot Wiki and got me involved in some of the world-building of Hereva. So I'm getting there, but a lot slower than I would have liked.

    So what have I learned from this? I've learned a few things:

    • I need to not worry so much about working on one thing at a time for one month. It's rare that I can concentrate an entire month on something without wondering why I'm not working on the other things.
    • I need to do the work with no expectations. I recently re-read "The Effortless Life" by Leo Babauta. In there he talks about living a live without expectations. I can't know what I want to work on later this evening, so rather than try to force the issue I'm trying a tactic of just showing up and seeing what I'm passionate about working on.

    I may do learning challenges in the future, but I'm also not going to get upset with myself if they don't pan out. I'm human, and my inclinations change from moment to moment. Learning is a process, and learning is also about changing behaviors. I'm working on being more mindful of what my mind is telling me and recognize the difference between procrastination and "I'm just not interested in this anymore".

    At the very least I'm going to keep on being a practicing human being. I'm planning on documenting my progress here so others can see. Who knows who might be reading this late one night?

  • [Blog] Unprocrastination challenge: Check-in #2

    2017-01-21T06:00:11Z via Spigot To: Public


    Even though I'm laid off I'm still trying to work on The Unprocrastination Challenge. I'm trying to keep myself on as many routines as I can even though my tasks aren't accountable to anyone but myself. If I don't hold myself accountable then I'll be drifting along, and that's not good for myself and the things that I want to get done.

    Overall I've not been as good blocking off the Internet using Block Focus, but I have been able to pause and give myself the breathers that lead me to want to be on social media. Recognizing that I'm feeling overwhelmed by my thoughts and my desires to keep myself in comfort. Pushing myself outside of my comfort levels is how I'm going to grow.

    I have some more thoughts on this, but I'm keeping this short so I can collect my thoughts on how to break my cycles of procrastination.

  • [Blog] Unprocrastination challenge: Check-in #1

    2017-01-21T05:00:12Z via Spigot To: Public


    So the "unprocrastination challenge" is in full swing. Here's what I've learned so far:

    • The Block Focus extension is quite good at keeping me from dallying on social media. It's a good reminder to put my focus back to what it is that I am doing.

    • I've been using the full Pomodoro 25 minutes rather than 5 minutes, as this is something that I'm used to. Unfortunately here's a little more resistance at certain points of the day to not start up another round. So I need to get myself to not be so worried about blocking things for a spell and just do the work.

    • Once I manage to get myself focused it's tempting for me to lose focus when I have to wait for something to complete. I need to remind myself to stay focused, and at the very least pull something off of my next actions list instead of letting the internet at large satiate my boredom.

    I've not been nearly as diligent as I should be with this whole exercise, but there are clear ways for me to improve. I think I can make it work.

    More later as the month progresses.

  • [Blog] What about plan C?

    2017-01-18T13:00:09Z via Spigot To: Public


    With the closing of The Ringling Bros. and Barnum & Bailey Circus it appears my backup plan of running away to join the circus is less of a viable option.

    One could run a way to *form* a circus.  :-)
    Good hunting to you!

    Sarah Elkins at 2017-01-21T14:35:50Z

  • Open Metalcast Episode #146: Jump In Anytime

    2017-01-17T01:17:59Z via Spigot To: Public


    Ever have one of those moments when you don’t know when to jump into a conversation? Where the time to speak doesn’t happen for a while? That’s what happened with this episode. Normally I jump in after the first few tracks but it didn’t seem right. And really, where would you interrupt such a great line-up of music from Dantalion, Feral, Abriosis, Totem Skin, Anopheli, and Sedulity? I don’t know the answer to that, but I do know this show is ready and waiting for your podcatching software of choice to download. Just make sure to leave yourself plenty of time to listen all the way through. You’d really hate to interrupt this set of amazing Creative Commons Metal Music.

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or just buy up everything they’ve ever made. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at

    Open Metalcast #146 (MP3)

    Open Metalcast #146 (OGG)

  • 2017-01-06T14:59:37Z via p To: Public CC: Followers

    That moment when you change your procmail filters, start checking procmail logs, and receive no mail. likes this.

    LOL... know this with Postfix spam rules... But I feel your pain :)

    Freemor at 2017-01-06T19:35:10Z

    Craig Maloney likes this.

  • [Blog] mismatch_cnt, RAID1, and a clever fix

    2017-01-03T22:00:07Z via Spigot To: Public


    This past weekend my computer showed an ominous error:

    Jan 1 04:06:16 lister mdadm[8317]: RebuildFinished event detected on md device /dev/md/0, component device mismatches found: 9856 (on raid level 1)

    Huh, that doesn't look particularly good. Mismatches between drives tend to lead to bad things.

    Once the original panic subsided I checked online.

    please explain mismatch_cnt so I can sleep better at night seemed promising for an explanation of what was going on. I read through this. "Aha! Swap files cause this problem!" I exclaimed to myself. "That has to be the culprit".

    Except my machine didn't have a swap file on a RAID1 device.

    Shoot. That would have been an easy explanation.

    Much like looking up symptoms online the more I searched the more my heart sank. Data corruption seemed the most obvious cause.

    I checked the SMART data on all of the drives. Nothing looked amiss there.

    I re-ran the checks:

    echo check > /sys/block/md0/md/sync_action

    and ran:

    watch cat /sys/block/md0/md/mismatch_cnt

    My heart sank as I watched the counter tick up and up.

    So I pulled out my copy of Spinrite and ran a read-test on all of my drives. Spinrite said there was nothing wrong with the hardware. So it had to be something up with the software RAID1 itself.

    I kept reading that the problem could one of two issues. Either: 1) there was a memory-mapped file that wasn't in sync between the drives, or 2) the free space between the drives didn't 100% match. I was still holding out that it wasn't 3) corrupted data.

    At this point I could have done:

    echo repair > /sys/block/md0/md/sync_action

    but that thought scared me. I had one of the drives on this machine corrupt a Virtualbox instance before when I mirrored the bitmaps between them (one drive had issues, and suddenly both copies of the file had issues). Add to that the somewhat scary notion that it was anyone's guess which mismatch would become the canonical version. That path seemed a certain way to ensure something got corrupted.

    I'm not currently able to find the exact article but someone mentioned that one way to test to see if it's the free space of the RAID is to do a dd if=/dev/zero of=foo bs=8K and just let it fill up the disk. The reasoning is that the free space will be reclaimed and will be set to a known quantity.

    Note: If you decide to do this make sure that you do this in single-user mode (shutdown now) rather than with a running system. Filling up a filesystem while things are running can make your machine very cranky.

    So I ran dd if=/dev/zero of=foo bs=8K as root and let it fill up the remaining space on the disk. I then ran sync;sync;sync to make sure everything was synchronized before removing the file (and re-running the sync;sync;sync command again.

    I booted the machine into multi-user mode and re-ran the scrubbing check. I kept an eye on the progress and the mismatch_cnt variable.

    When it kept at a steady 0 count I breathed a sigh of relief.

    Moral of the story: The free space on RAID1 can get out of sync (especially if there's a power outage or if you have memory-mapped files like swap files). You can do a "repair" on it, but you might run into corruption if the mismatches are pointing to real data. You may want to instead create a known-good file in the free-space of the drive and see if that clears it out.

    Hope this helps someone else who runs into this. If I re-run into the original article that mentioned this nugget I'll update with a link.

    James Dearing 🐲, Charles ☕ Stanhope, Claes Wallin (韋嘉誠), EVAnaRkISTO likes this.

    Claes Wallin (韋嘉誠), EVAnaRkISTO shared this.

    The generic lesson from this: DON'T PANIC. A less careful response to your observation might have caused more trouble where there was originally none.

    Claes Wallin (韋嘉誠) at 2017-01-03T23:11:50Z

    James Dearing 🐲, Craig Maloney, EVAnaRkISTO, B. Ross Ashley likes this.

  • Open Metalcast Episode #145: Quietly entering 2017

    2017-01-03T04:00:05Z via Spigot To: Public


    First off, congratulations on making it to 2017. 🙂

    We decided for this episode to just shut up and announce the song titles at the end of the show. That way we can let the music speak for itself. So you’ll hear some great music from Wasted Heroes, Digger, Muldjord, Stellarvore, Zombie Destrüktion, Nimrud, Black Autumn, and Pressor. Definitely check this out and kick off 2017 with some of the best Creative Commons metal the net has to offer.

    Please support the bands in this show! Buy a T-Shirt, buy an album, head to the shows, or [FUNNY]. Whatever you can do to help these bands keep making music, please do it!

    If you have any suggestions for Creative Commons licensed metal, send me a link at

    Open Metalcast #145 (MP3)

    Open Metalcast #145 (OGG)

    mray shared this.

  • [Blog] War of Ashes: Fate of Agaptus

    2016-12-29T18:00:10Z via Spigot To: Public


    War of Ashes: Fate of Agaptus cover

    • Title: "War of Ashes: Fate of Agaptus"
    • Game Creators: Sophie Lagacé, Karen Twelves, Mike Olson, Edmund Metheny, and Sean Nittner
    • Publisher: Evil Hat Productions
    • System: Fate Accelerated

    It's taken me way too long to write up a review of War of Ashes: Fate of Agaptus. I've wanted to write the perfect review, detailing just how much I love this game. I wanted to show just how much thought and world-building this book has in it, and how the different factions / characters in this book blend together to make an interesting, "lived-in" world.

    I may still write that review at some point: poring over each and every page, detailing what I found interesting.

    But I'll sum it up as best I can:

    "This is the book I wish I'd wrote."

    Not that I feel the authors did a disservice to the material that only I can fix; I mean that I wish that games that I wrote even approached how wonderful this book is.

    The source material for this book is the miniatures game "War of Ashes" by Zombiesmith games. Generally speaking miniatures games don't put a whole lot of depth into their characters. Sure they may have some backstories and motivations, but the objects of those games is to annihilate the opposing forces.

    What "War of Ashes: Fate of Agaptus" does that is so brilliant is it takes what is ostensibly a hack-and-slash game and transforms it into a living world. And the world they present is a fascinating world.

    Each "race" believes different things about their pantheon of gods. The Elvorix believe in many gods, the Vidaar believe in one god, and the Jaarl ignore their gods. (The Kuld believe in a diffuse, impersonal universal force). While on the surface that feels a bit trite, the interactions between the gods and the races is what really shines in this book. There are certain gods for which the Elvorix do not want to draw attetion. Agaptus, the God of Sky and Stars, is a bit heavy-handed whenever he arrives, so the priests do things like burn smelly incensei, and make the temples and themselves unattractive to keep the god away. The Vidaar have one god: Akka -Maas, which the Elvorix claim is another name for Agaptus and which the Vidaar vehemently deny. It's writing like this that breathes life into the world and makes for interesting interactions between characters.

    Apart from religion each society has their own ways of thinking and behaving. While they share some similarities there is enough differences between them to make for interesting interactions for characters. The world feels lived in, with reasons for each of the factions to live, work, and behave the way they do. And all throughout the book there are seeds and ideas that give direction for what sorts of adventures the characters could have.

    The book is written in the perspective of an in-world historian, along with conversations between her and other in-world participants, gives a unique flavor to each of the races and how they interact and interpret the events in the world.

    I won't go too in depth about the system itself. Suffice to say it's a stand-alone version of Fate Accelerated that I am looking at carefully for my own designs. :)

    And the artwork. I really love the artwork and the style of this book.

    In short I think "War of Ashes: Fate of Agaptus" is an excellent book, and I hold it as a standard for what I want to achieve with my own writing and design. It builds a world, shows how to best participate in it, and creates interesting obstacles for the characters to interact. I would see small skirmishes in this world, and epic campaigns. It has depth and mythology that make sense, and draws out a sense of humor that fits the characters and setting.

    Highly recommended.

    How do you feel the minis battling mechanics hold up? I followed Mike Olson's blog while he was working on that part. Tactical battles are kind of challenging in Fate sometime so I was curious how it would work in actual gameplay.

    Christopher Allan Webber at 2016-12-29T18:12:55Z

    The rules for combat add a little bit for minis but they don't distract much from the overall "Fateness" of the game. I haven't actually done much with them, and I'm pretty sure if you wanted you could completely ignore them if you wanted.

    Craig Maloney at 2016-12-29T21:20:06Z

    Christopher Allan Webber likes this.

  • [Blog] Stupid JavaScript Tricks

    2016-12-29T02:00:09Z via Spigot To: Public


    > bar = ['width', 'height']
    [ 'width', 'height' ]
    > bar
    [ 'width', 'height' ]  // Nothing up my sleeve
    > bar.indexOf['length']
    1  // Presto!

    In case you haven't guessed what's up here: JavaScript automatically surfaces a value called 'length' in all arrays. So you can get the length of bar by typing bar.length and bar['length'].