rjbs forgot what he was saying

not logged in (root) | by date | tagcloud | help | login

RSS feed entries

collapse entry bodies

Parental controls don't help (body)

by rjbs, created 2014-12-11 22:26
tagged with: @markup:md journal macosx

My parents recently got new computers, and my mother's old (but still pretty modern) Mac Mini has more or less become my daughter's. It's what she's been using to play Minecraft, as I mentioned recently. OS X has a "Parental Controls" system, and I figured it would be useful. I'd tell it to use its default anti-porn web blacklist, to have a list of (say) ten allowed applications, and to limit her instant messaging to a few approved people. It was a big mess.

First off, I enabled "Simple Finder." I remember this well, as we used it in the college labs on OS 8 when I worked at (while attending) Boston University. Then, it was pretty simple. You defined a list of applications which would show up in a simple launcher, and that was that. It's not that simple anymore. Minecraft wouldn't work because it would want to spawn Java, which wasn't approved. Other apps couldn't run, seemingly because they weren't properly signed. I turned it off and opted, instead, to lock the dock. That was a mess, too, and I couldn't even figure out what the point was, as far as "parental" control went. I gave up.

My daughter likes to search the web for stuff. Who doesn't?

I don't want to impose draconian limits on her web usage ("you can only go to cute-puppy-games.biz!"), and I don't want to have to limit her to only strictly supervised time, because I know that she really just wants to go read about Daria in every free minute, including when I'm not available. I just want to limit the chances that she will accidentally end up on some horrible, horrible page.

So, I turned on the Parental Controls option to "try to limit adult websitse automatically." I figured there'd be some Apple-curated block list, and that was probably some help. Well, it turned out that this block list included things like Akami and other content-delivery networks. Apple uses Akami, so the App Store stopped working properly, as did apple.com. I turned that right off, again. I'll stick to enabling safe search on Google and YouTube.

Parental Controls let you limit with whom your kid can correspond in Mail and Messages. I really didn't want to set her up to use iMessage, because it stinks. I'd end up getting messages on my phone all the time. Anyway, the few people I figured she'd want to talk to are instead on GTalk or AIM. I set up an AIM account for her to use (although I had to put it in my name as there are no children under 13 allowed). This was actually just fine. I had to put contacts in her address book for the people with whom she should be allowed to chat, and then mark them as approved contacts. Great!

I haven't yet set up a GTalk user for her because, once again, you can't get an account if you're under 13. I'll probably make one myself for her to use, although I'm really unclear on whether this is permitted. Still, she wants to be able to chat with her aunt and uncle. So there you go.

So, there's one winning feature. I really wish I could have let her use Adium instead, as its UI is much, much better. Unfortunately, there are two big problems. First, even though they were briefly considered a blocker for a major release, parental controls never got implemented and are now marked as "would be nice to have." Parental controls in IM are probably the ones I wanted most. I still get unknown and presumably malicious people sending me random instant messages. I can ignore them. I think my daughter would just like chatting, and I don't want to have to worry about it. Secondly, Adium can't use TLS to talk to AIM. It used to use SSL, but AOL disabled SSL after the Poodle vulnerability. If you use Adium, you have to authenticate in the clear.

Finally, there's Mail. To let her use some of my App Store purchases, I made her an iCloud child account attached to our family. That got her an iCloud mailbox, which I figured would be fine to just get started. The idea behind how Mac Mail parental controls work is good: you (the parent) limit correspondence to known contacts. If your kid tries to mail someone else, or if someone else tries to mail your kid, the mail goes to you. You can then mark the sender approved, or not. There are a few problems, though.

The biggest one is that it doesn't work. I was sent one of those approval messages, and it had a big "click here to approve" button displayed inside Mail's own UI. I clicked and clicked, but nothing happened. Gloria reported the same. So, now the only way to deal with updating the permitted senders is to edit the contacts on the machine. It's doable, but a much bigger hassle.

The other problem, of course, is that email isn't authenticated. If you know a kid's parent's email address, you can send them mail "from" the parent. This means that your kid might be protected from getting random mail, but they're still wide open to targeted nasty mail.

In the end, I'm not crazy worried about most of these things. I would like my daughter to enjoy her time using the computer, and I'd like her to be able to use lots of the cool things on the Internet, and that's my priority. I just don't want the many, many gross things on and about the Internet to show up and ruin her day. I don't think that's too much to ask.

Oh… one more thing.

She's been asking repeatedly for "some kind of music player." I really wanted her to have one, because she likes music, but I didn't want something that would be totally uncontrolled. I like Spotify, but its UI is really confusing. Our music library is available on the NAS on our home network, but I couldn't find any DLNA music players for OS X. I ended up installing the Synology iTunes Media Server on the NAS and pointing her iTunes at that. It's not a great solution. I also had to say, "You should ask about albums before listening to them." She's not thrilled about that, and I wouldn't be, either, but I have way too much stuff on there that isn't for her ears (yet).

I may set up Spotify, just because I know that mostly she wants to listen to Selena Gomez, and won't go looking for trouble. Searching around in my music, she'd be adrift, and there's plenty of trouble lurking. This is another place that I'd love a quick across-the-internet system that could say, "Your kid wants to listen to Li'l Kim. Allow or deny?"

In Soviet Minecraft, server op you! (body)

by rjbs, created 2014-11-29 09:50
last modified 2014-11-29 09:54

Prelude

A couple weeks ago, my daughter became interested in Minecraft. She'd tried it before and thought it was interesting enough, but this time she seemed to have a more abiding interest. She did a bit more flipping through the Minecraft Essential Handbook and made a few things from it, and had fun, but was finding it just a bit tedious to have to gather all the resources she needed. Still, she built a simple house in the trees, explored some nearby caves and villages, and kept looking through the book… and then she found reference to creative mode. I showed her how to play in creative mode, and she was elated. She was even more excited when she found out she could fly.

We played some LAN games, which was fun, but I knew I'd want a server. I wanted to be able to muck about when she was not playing, and I knew she'd want to play when I wasn't home. To do both those things in one shared world, we'd need a server. I asked some friends, who said it was easy, but all of the instructions I found online had a bunch of steps, wanted me to add apt repositories, create system users, and so on. It just looked like a big drag, and I started to consider just using Minecraft Realms, Mojang's "we host your Minecraft world for you" service, but at $13 per month, it was enough to make me want to put a real effort into getting the service running on my Linode.

I read through the instructions carefully, and realized that the whole thing was a big complicated way of saying:

  • make sure you have Java 1.7
  • download the Minecraft server jar file
  • run java -Xms1024M -Xmx1024M -jar minecraft_server.1.8.jar nogui and keep it running

Well, I could do that! Once I realized that, I had a running server in a minute or two. Wow! I spent just a little time updating the server configuration, then rsynced the kid's Minecraft world files to my Linode, and it all worked!

The Teleport Network

I knew that sharing a Minecraft server with a seven year old might lead to angry times later, when one of us wrecked the other one's work product. I declared that we'd each have a big hunk of land where we'd be in charge. We could visit, but not build or destroy stuff without permission.

This led to an obvious logistical problem: how would we get from one place to another? Minecraft has a teleport command, and I could've left it available, but teleporting works by map coordinates rather than named locations. If I wanted Martha to be able to teleport home, she'd need to know the coordinates for her home. I could put them on a sticky note, but that would surely get lost immediately.

I decided to solve the problem by building a point-to-point teleport network!

You can build loads of amazing stuff in Minecraft by using "redstone" devices. This is sort of code for "electrical stuff," but it has its own physics, and you don't want to think of it too much like electricity or you'll end up deeply confused. You can't build a teleportation booth out of things you can mine in Minecraft, but there's something you can use as a bit of a cheat: the command block. It's a block that, when powered, executes a console command… like /teleport.

I build a pair of booths, each with a button. Push the button in booth A, and you'd end up in booth B. It worked the other way, too.

This was a good start. We had our own places, we stuck to the rules, and we had a good time. Martha started to ask about inviting some friends to our server, which led me to realize that booth-to-booth teleporters would not scale. I could build a targeting system, but that would become very complicated quickly. Instead, I built a hub.

Minecraft Teleport Network v2.0

I left the two booths in place, but now instead of linking to each other, they'd drop you at a floating platform at (0,0) on the map. This place, "the hub," was meant to have eight sub-platforms, each with a teleporter leading to a new place. I scouted out some locations and set up a few machines ahead of time, but not all of them, just enough to show how it would work. It worked great! Mostly!

Martha kept having weird problems. Parts of the network would work for me, but not for her. Then, it would all work. Meanwhile, I was struggling with spawn protection. This feature prevents users from editing the world near the spawn point. Without this, some jerk could fill the spawn point with lava, or solid stone, and when a new player joined, they'd be stuffed. I wanted to set the hub as the spawn point, and then keep it from being edited. It just didn't work.

Eventually, I realized that the problems were related. Spawn protection disables redstone inside the protected area, which meant that the teleport machine buttons didn't work. So, why did it only affect Martha? Because I was an operator, and could still use the button inside of protection. Why only sometimes? I really didn't want to have ops on myself, so I kept disabling it. When there are no operators configured for a server, spawn protection is disabled. Yow!

I didn't really want to make everyone operators, and I did want a protected hub area. I'd have to figure something else out.

The Stupidest Thing That Could Possibly Work

I did a lot of searching for solutions, and I found them. They were almost always in the form of "mods." Those are plugins to change how the Minecraft server behaves. As far as I could tell, they always worked by having you first run a modded server. That's a replacement Minecraft server which is, itself, a Java subclass of the base server. The most popular of these, Bukkit, was recently removed from distribution because of alleged GPL violations. Its whole situation is, to me, an unclear mess.

The new thing people seem to be using is CanaryMod. It's entirely unencumbered by any sort of GPL issues, but it (like Bukkit, actually) only supports Minecraft Server 1.7. We've been running 1.8, which is a big difference. Of course, there are some bleading edge nightly builds that are 1.8, but… I felt like this was going to lead to me spending time writing Java or hanging out on a phpBB, and this thought killed all my motivation. Surely, I thought, there is some stupider, easier way.

Well, here's what I did:

When you run that java command up above, the Minecraft server starts on your console. It prints out some status messages, then as the game goes on prints out logins, logouts, the results of various messages, and all of the global chat. Importantly, it's also an operator console. You can key in commands that get run with superuser privileges. Obviously, if I wrote a program that owned pipes into and out of the server, I could monitor what was going on and execute operator commands. It would be a grody hack, but it would work!

I thought about using Expect, but decided that I'd be miserable. I tried to remember how to write this kind of thing in Perl, but couldn't remember a few key bits about non-blocking I/O. I asked Dominus for a reminder and he said "Expect!" I didn't take the bait.

By the evening, I had a crude prototype working in pure core Perl, but getting there involved some annoying things. For example, I had to keep calling waitpid inside my read/write loop, and I knew that if I wanted to add more non-blocking behavior, it would just get worse. I needed an event loop. I had a look at using IO::Async, which I keep meaning to use in anger, but it wasn't immediately obvious how to proceed, and my goal was to deliver something (to my seven year-old) rather than to do something elegant and modern. I was already using Perl, right? Anyway, when I want to get something really cool done and I don't care what people think of me, I use POE. I use it badly. It worked, as usually, really well.

Basically, the setup is this: my POE program runs the Minecraft server with non-blocking a linewise event machine. When it gets lines from the server, it decides whether it cares about them. Mostly, it cares about chat. Occasionally, it cares about other status updates, but it mostly ignores those. As for chat, it looks for players saying commands, just like an IRC bot. Players can say !home to be teleported to their home, or !set home to decide where that is. They also have a "porch," and can !set porch to set that location. The porch is where another player goes if they try to !visit player. They can switch between creative and survival modes.

Setting home was a tiny bit interesting to implement. There's no command to get a player's location, so how could I save it? Well, if a player is teleported, their location is logged. Teleportation can be to a location relative to a player's current location. So, to set home, you register a callback for "do this when the player next teleports" and then immediately teleport them to their current location, plus a 3-D delta of (0,0,0). Ha!

Something I knew was important to Martha was the ability to skip night time. I could have disabled the day/night cycle, but I knew that it would also be nice to have it enabled sometimes, for adventuring. I added !sunrise and !sunset commands. This wasn't going to be good enough, though. When she invites friends, they will surely argue about whether to change the time, so I made it a voting system. As soon as one player casts a vote for a time change, the other players have thirty seconds to also vote. Whatever change is requested wins. In the event of a tie, nothing happens. Critically, once everybody online votes, the change happens immediately. This is most critical because if you're playing alone, waiting thirty seconds for opposition stinks.

Actually, I lied a bit. The voting doesn't end when everyone online votes. It ends when there are at least as many votes cast as there are players online. This can be a bit weird. Imagine:

  • currently online: players A, B, C, D
  • players A, B vote
  • player B logs off
  • player C votes

Now there are three votes (A, B, C), and three players (A, C, D), so the election is complete. Oops.

Getting the list of currently online players is easy, but not trivial. The list command prints out the current count of logged-in players, then their names. To gather that properly, I need to get the first line, then intercept the next n lines, then fire off a "updated roster" event. I haven't bothered yet, because I'm guessing it's just a bit more pain than it's worth.

A simpler solution, which I may implement if the server becomes popular with her friends, would be to notice logout events and immediately cancel the votes of disconnected users. I could also add some facility for speaking to the server over RCON, but… again, I'm guessing it's not worth the bother.

If I had any next steps actually planned, they'd probably be:

  • add an SMS interface to allow remote whitelisting ("Oh, your kid wants on? What's their user name?" // send SMS to whitelist)
  • an "alone time" mode where a player disables the ability of others to teleport to their location
  • refusal to let a player set their home/porch within some distance of another player's home
  • a way to say "if you want to join me or come to my realm, you have to enter the mode I'm in"

For now, though, I think it's good enough. I'll wait for its overwhelming success with the kids before putting more time into it.

Meanwhile, I have published the code. As I said, it's a hot mess. I barely know how to use POE, and I did not aim at all for maintainability. I just wanted it to work. I also have a bunch of code that's copied from POE documentation, and could really be rewritten to be better. The whole thing should be turned into a MooseX::POE class for my own sanity.

Whatever, it works, right?

Soviet Minecraft is on GitHub.

Email::MIME::Kit v3 will fix-and-or-break your code (body)

by rjbs, created 2014-11-20 21:47
last modified 2014-11-20 22:21

Ever since its early releases, Email::MIME::Kit had a big problem. It screwed up encodings. Specifically, imagine this manifest (I'm kinda skipping some required junk):

# manifest.yaml
renderer: TemplateToolkit
headers:
  - Subject: "Message for [% name %]"
alternatives:
  - type: text/plain
    path: body.txt
  - type: text/html
    path: body.html

The manifest turns into a data structure before it's used, and the subject header is a text string that, later, will get encoded into MIME encoded-words on the assumption that it's all Unicode text.

The files on disk are read with :raw, then filled in as-is, and trusted to already be UTF-8.

If your customer's name is Распутин, strangely enough, you're okay. The header handling encodes it properly, and the wide characters (because Cyrillic codepoints are all above U+00FF) turn into UTF-8 with a warning. On the other hand, for some trouble, consider Ævar Arnfjörð Bjarmason. All those codepoints are below U+0100, so the non-ASCII ones are encoded directly, and you end up with =C6 (Æ) in your quoted-printable body instead of =C3=86 (Æ UTF-8 encoded).

Now, you're probably actually okay. Your email is not correct, but email clients are good at dealing with your (read: my) stupid mistakes. If your email part says it's UTF-8 but it's actually Latin-1, mail clients will usually do the right thing.

The big problem is when you've got both Ævar Arnfjörð Bjarmason and Распутин both in your email. Your body is a mish mash of Latin-1 and UTF-8 data.

In Email::MIME::Kit v3, templates (or non-template bodies) loaded from disk are — if and only if they're for text/* parts — decoded into text and then, when the email is assembled, it's encoded by Email::MIME's usual header_str handling.

There's a case where this can start making things worse, rather than better. If you know that templates in files are treated as bytes, you might be passing in strings pre-encoded into UTF-8. If that was the case, it will now become mojibake.

Finally, plugins that read kit contents for uses as text will need upgrading. The only one I know of like this is my own Email::MIME::Kit::Assembler::Markdown. I will fix it. The trick is: look at what content-type is being built and consider using get_decoded_kit_entry instead of get_kit_entry.

I think this is an important change, and worth the breakage. Please look at your use of EMK and test with v3.

RPG Recap: Beyond the Temple of the Abyss, 2014-11-08 (body)

by rjbs, created 2014-11-18 23:06

Thursday, 2nd day of the Frost Moon, 937

After spending the night off the road, the party headed into the elven woods. They moved slowly, for a few hours, through the narrow road as it faded into a path and branched in several directions. In the canopy, giant spiders and other things leapt from tree to tree, ignoring the party.

Another small party, made up of wary insectoid creatures carrying lavender lanterns, passed them slowly by, pausing only to attempt to negotiate the purchase of Oresta. The party declined as best it could, lacking any common tongue.

After some time, they came to a clearing and, investigating, found a number of flat surfaces along the treeline. In one, they found a door, which Knash carefully prised open. The door led to a small room, in which was a small collection of overgrown rotten furniture, including a chair with an overgrown corpse. As the gang raided the room (finding a few weird coins, a pistol, and some bullets), the corpse tore itself from its chair and rushed outside, where it keened loudly, calling to the rest of its kind, similarly sealed up in the trees.

The party fought against the plant men, slowly losing ground. Perrin was badly injured and a vine dragged him toward the cabin. Hoyte was fatally injured, but fought on, making a desperate last stand. Finally, Knash uncased and read one of his scrolls: Imperial War Horror! Instantly transformed into monstrous form, he tore through the remaining plant men, rending them limb from limb and scattering their leaves to the wind. In the end, everyone — save for Hoyte — seemed sure to make it.

"Once he's dead," someone said, "let's check his pockets and get his wages back."

Horror Movie Month 2014 (body)

by rjbs, created 2014-11-11 11:19
tagged with: @markup:md journal movies

Last year, I forgot to write up our horror movie watching until about eleven months later. This year, I'm going to write things down while they're still fresh!

A Slow Start

October 1 - The Bay
October 2 - Truth or Die
October 3 - Outpost

First up, we watched a few random things from our list. The Bay was a found footage movie, which lost it a lot of points with us, I think. Found footage has its place, but its place is not "every single movie." I will also never forgive it for starting with the narrator's deep reluctance to review the horrible events of that day… to be followed almost immediately with "gosh, look at those awful pants I was wearing." Still, I liked parts of it. There's something to be said for the creepiness of being eaten from the inside out by bugs, I guess.

Truth or Die was fair. It reminded me, quite a bit, of My Little Eye, one of the other English horror movies I've seen. A bunch of young people are invited to a party at an isolated cabin where someone will extract revenge on them for their poor treatment of some guy at a party. It had its moments.

Outpost was just crap. It was Dead Snow all over again, but worse.

The Big Re-Watch

Before horror movie month began, Gloria and I watched Never Sleep Again, a four hour (!) documentary on the making of the entire Nightmare on Elm Street series, and Crystal Lake Memories, a seven hour (!!) documentary on the making of the entire Friday the 13th series. Gloria said, "Maybe we should rewatch those," so we did! We watched every one of the movies (and skipped the TV series) in the order of their release:

October 4 - Friday the 13th (1980)
October 5 - Friday the 13th Part 2
October 6 - Friday the 13th Part Ⅲ
October 7 - Friday the 13th: The Final Chapter

The first one is still probably the best, and worth watching if you like thrillers with some gore. It's not a great movie, but it's a good one, and sets up a lot of things to come, but will also surprise a lot of viewers, I think. The rest of the quartet ranges from mediocre to bad.

Did you know that Friday the 13th ends before A Nightmare on Elm Street even begins? Yup. You also might not know that it ends when Corey Feldman slides his head nearly in two with a machete. Jason's face slides down the blade, and the long cures on Camp Crystal Lake is over. Four movies and done!

October 8 - A Nightmare on Elm Street (1984)

...and then we get into the first Nightmare on Elm Street, which still holds up pretty well. It's not perfect, but it's good. The body bag scene remains excellently weird, Johnny Depp's bed still eats him, and John Saxon is still great as Nancy's father.

October 9 - Friday the 13th: A New Beginning

Wait? A new beginning? How does that work?

Well, somebody decides to dress up like Jason and kill people. It's not very good at all, but it might actually be better than some of the previous ones.

October 10 - A Nightmare on Elm Street 2: Freddy's Revenge

Never Sleep Again had a lot of talk about how Freddy's Revenge is often cited as "the gayest horror movie ever made." I told Gloria that I didn't remember any kind of homoerotic subtext in it from our previous watching and she looked at me like I was crazy. On re-watching, I can see why. In my defense, while the actors and screenwriter say that it was intentional, the director and producer say they had no idea at the time. Bizarre!

Either way, it's a lousy sequel that really compromises the mythology. In fact, Gloria and I would go on to discuss how this was a big problem with the rest of the Nightmare movies. While it's easy to say that "Jason is a scary monster who just keeps coming back," Freddy is more complicated. He's some kind of ghost, and we see him soundly defeated in the first movie. Then in the second movie, he's defeated by another means. In the third, another. The series never quite settles on rules, and it becomes a big problem, because without rules, you don't know what to expect. The whole thing becomes a mess.

On the other hand, Freddy's Revenge has Clu Gulager, so that's cool.

October 11 - Friday the 13th Part Ⅵ: Jason Lives and A Nightmare on Elm Street 3: Dream Warriors

This was a Saturday, and we watched two movies: one during the afternoon while my parents watched the kid, and once after she was in bed. I was please by how it worked out, because these are two of the best movies in either series. I really like part six of Friday the 13th. I think it has a great balance of scary to funny, it establishes "Jason can't die" much more firmly, and it looks great on screen. I will watch this one again and again, over the rest of my life, I bet. It really hits the sweet spot on my funny vs. gory plot.

Dream Warriors, on the other hand, mostly gets its "best of" ranking by virtue of being one of the least lousy. I don't think it's as good as the first one by half, but it does establish a fair bit of canon. It introduces hypnocil, the experimental drug that prevents dreaming, which I always liked. It also, unfortunately, introduces the idea that the dreamers can use their "dream powers" to fight Freddy. For example, if you often dream about being a ninja, you can fight Freddy in your dreams using ninjitsu. This leads to really childish scenes that just get worse as the series goes on.

October 12 - Friday the 13th Part Ⅶ: The New Blood
October 13 - A Nightmare on Elm Street 4: The Dream Master
October 14 - Friday the 13th Part Ⅷ: Jason Takes Manhattan
October 15 - A Nightmare on Elm Street 5: The Dream Child
October 16 - A Nightmare on Elm Street: The Final Nightmare
October 17 - Jason Goes to Hell

This is just a procession of crappier and crappier crap. Jason fights a psychic teenager. A kid who plays a lot of D&D goes to sleep and puts on his wizard robe and hat. Jason kills a bunch of teenagers on a dingy yacht before punching the head of a guy down by the river. Several movies add rape scenes, showing us that horror movies have begun to go from goofy to gritty. Finally, Jason is reduced to a slug-like parasite that's vomited from body to body, and Freddy is turned into a child by a stream of projectile vomit.

Skip these movies.

There is at least one tiny scene that I really liked, though. In Jason Takes Manhattan, a few teenagers have fled Jason and headed into the Manhattan sewer system. They run into some pipefitter who is horrified to see them. "We've gotta get out of here!" he cries. "Every night at midnight, the New York City sewer system is flooded with toxic waste, and that's in just a few minutes!"

Love it.

October 18 - Wes Craven's New Nightmare and Jason X
October 19 - Freddy vs. Jason

These movies rock. They are the light at the end of the tunnel. New Nightmare is brilliant, working in an extradiegetic framework where the previous Nightmare films were acting as an escape valve for some well of evil, which now begins to haunt the cast and crew of the first, and now next, film. It's creepy and intelligent, and that scene at Wes Craven's house, at his word processor? Good stuff.

Jason X is great, too. It's not cerebral by any means, but it's fun. It gives you all the things that made the horror movies of the 80's fun, but puts them in a space ship in the year 2450 because… why not? I have no serious complaints about this movie, and while I don't begrudge anybody their opinion, I think it's baffling that there are people who prefer the previous few movies to this one. Jason! In! Spaaaaaaaaaaace! Right?

Freddy vs. Jason was also a lot of fun. It did a good job of putting the feel of the previous movies — both series — into a modern setting. I was happy with the fight scenes, the characterization of the villains, and the tone. This movie could've been a complete wreck, and it wans't. I'm not in a rush to watch it for a third time, but it was good. Main complaint: one character is utterly and without question a total clone of Jason Mewes' "Jay" character. It's dumb, and a distraction.

October 20 - Friday the 13th (2009)
October 21 - A Nightmare on Elm Street (2010)

I was bummed to get to these. I knew it would happen, but it was still a downer. If the previous three movies were the light at the end of the tunnel, these two began a new tunnel. They rebooted the franchises, and in doing so took them out of the 1980's slasher tradition and brought them closer to the 2000's torture porn. There are already some gritty, unflinching movies worth watching. Freddy and Jason didn't need to join them.

A Nightmare on Elm Street keeps rubbing your face in the fact that Freddy was a child molester. That is not fun. That is awful.

Friday the 13th is shot to look like Texas Chainsaw Massacre. No surprise, given that its director, Marcus Nispel, also directed the 2003 remake of TCM. I think it's much closer to the originals than the 2010 Nightmare was, but its naturalism makes everything seem dirty and awful. I would've preferred a bit more Tom Savini, I think.

That concluded our big rewatch, which I doubt we will attempt again, at least until Martha is old enough to watch with us. I was happier with the rewatch than I thought I would be, though, if only because we got to re-watch some of the good ones.

The whole thing left me thinking that I could produce a better set of plots for both series. I spent some time on this and concluded that it would be much easier to do for Friday than Nightmare. Jason can come back repeatedly at various inconvenient times and places, and the story of how the public responds could be an interesting one. The Nightmare movies have to deal with the fact that "beating Freddy" is really hard to explain, and if it's some magic trick, seeing it over and over will be boring. On the other hand, the one good thing to come from the later Nightmare movies is the idea that Freddy wins, and finds himself with no more children to torment. The town is a ghost town and Freddy is powerless and bored. There's a good movie to be made out of that.

Back to the Queue!

October 22 - Bad Kids Go to Hell
October 23 - Grabbers
October 24 - (out of town visitor)
October 25 - Stage Fright and Resolution

Bad Kids was clearly intended as something like "Breakfast Club, but horror." It failed. It stank. It made me angry, because I really liked the idea. I think a movie like that would need to have a slow build of creepy events, maybe something like The Innkeepers. Instead, this was all over the place, and kept flashing back to events in the crowded school, totally contrary to how Breakfast Club works. As a big fan of Breakfast Club, I was predisposed to dislike this movie, and I disliked this movie.

Grabbers was a fun creature feature about weird tentacle monsters attaching an Irish town where everybody defends themselves by converging on the pub and getting wasted. I approve.

On Friday the 24th, I stayed late in Philly to have dinner with a friend. On Saturday, we watched two movies again, with Stage Fright as our "date night" movie. Woah. Stage Fright is a musical horror movie in which Meat Loaf murders Minnie Driver. It was pretty lousy, but I'm glad we watched it. As a proof of concept, it worked. You could, in fact, make a good musical horror movie. This just wasn't one.

Resolution was really good. A truthy summary would be "a young man tries to detox his friend at a cabin in the woods built atop an ancient Indian burial ground." It was creepy, subtle, and smart. The ending was maybe not entirely satisfying, but it was a solid ending for the story they told. Resolution would be on my list for best new movie we watched in Horror Movie Month.

The Final Week

October 26 - Cockneys vs. Zombies
October 27 - The Hole
October 28 - Castle Freak
October 29 - Oculus
October 30 - Grave Encounters

Cockneys vs. Zombies does what it says on the tin. I enjoyed it.

The Hole was made by Joe Dante, of Gremlins fame, as well as many other fine films. I enjoyed it. It was, in some ways, nothing special, but it was well made and enjoyable. I'm almost tempted to put it on the upcoming playlist for scary movies for Martha, but I think it's just a little too creepy here and there.

Castle Freak was really lousy, but had Jeffrey Combs, who is always a real joy to watch. I think there was an idea for a good movie in there, they just didn't make one.

Oculus was a good one. A brother and sister whose parents are killed in a haunted house return to the scene of the crime, ten years later, to destroy the evil entity. (I'm simplifying a bit, bit it's close enough.) They take precautions to avoid letting the haunting get to them, too much, but their precautions slowly fail. The ending of this one bugged me, too, but the rest of the film was pretty darn good. There were a few scenes that really impressed me with their clever creepiness.

Grave Encounters was another found footage film, but I forgive it. The crew of a "Ghost Hunters"-like show spend the night in an abandoned, haunted asylum. They all go in seeming pretty sure that it's not haunted, and probably that hauntings are bunk. They pay off the gardener to make up a story about seeing ghosts. Then, of course, the place really is haunted. None of this is interesting, but the way that the place torments them was really well done. It wasn't just bloody walls and jump scares. The place ground them down and panicked them over time. I was happy to see some new, or at least rarely used, ideas being put to use so effectively.

Leslie Vernon

October 31 - Behind the Mask: The Rise of Leslie Vernon

This was another re-watch. We saw this one years ago, very early on in the month, and it was so good that the rest of the month was jinxed. Nothing could live up to it. Behind the Mask is a clever deconstruction of the slasher movie, which ends with an extremely economical reconstruction. The title character, Leslie Vernon, is the killer, and he is great fun to watch. The film is a documentary, or rather, it's a a film about the making of a documentary. The subject, Vernon, spends a lot of the movie discussing how one prepares for a slasher spree, and while doing so he's energetic, funny, and charming. Later, he is not. The film is set in a world where Freddy, Jason, and others like them are real, but it's not a fantasy world. Why, the documentarian wonders, do people go on these killing sprees? "I can't explain," Leslie says, "I have to show you."

We'll almost certainly watch this one again in a few years.

Bonus Movies

Since October we watched two more horror movies, and I might as well make a note of them.

Detention was amazing. Just go watch it. Don't even read about it. Its structure is unusual, its tone is all over the place, and it doesn't worry too much about making a lot of sense. I put this on thinking it would be background viewing, but I could not tear my eyes away from the TV. Probably this is my pick for best new horror movie we watched this year. I hesitate to even call it a horror movie, but I think that if I have to classify it, that's where it goes.

Germ Z was lousy. It was a formulaic zombie movie with no new ideas of its own. It was poorly written, acted, and filmed. The only character who interested me, the doctor slash medical examiner slash party time deputy, was given only about five minutes of screen time. Ugh.

We already have at least 31 movies we could watch for next year. Probably they'll make a couple more between now and then. Here's hoping we pick winners.

RPG Recap: Beyond the Temple of the Abyss, 2014-10 (body)

by rjbs, created 2014-10-28 23:01

Wednesday, 1st day of the Frost Moon, 937

The party had told "the dwarf" that they'd do a favor for him and deploy some equipment below Gladwell's place, in exchange for some extra time before Epstien got the full report. Their attempt to follow through ended in disaster, though, and they headed back to town much the worse for wear.

With a growing sense that they'd be doomed in town, our heroes decided to take their money and go on the run from the law. To go on the run, though, they needed to be able to run. They decided to go look for healing. They asked Pastor Vieu about the theurge who had healed Perrin's leg, and were told that he'd headed out of town to investigate some travelers' stories of miracles. The party (or most of it) headed along that road, following it all the way to Bridgend, where the saloonkeeper disavowed any knowledge of the guy. He did, though, suggested that Billy Buford in Brideford could "fix" anything. They paid a heft toll of five sovereigns (each way!), and paid Buford twenty five more to run Perrin through his machine, which left him as good as new. They didn't have enough money on them to pay for the rest of the party's healing, and Buford wouldn't take a check.

Back in town, they decided to get a good night's sleep before putting their plan into effect.

Well, except for Knash. He'd been invited to the secret meeting of the mysterious organization he'd accidentally joined while completed drunk one night.

When he made it to the designated meeting point — just far enough out of town to worry the locals but not far enough to actually be particularly dangerous — he found a strange assortment of townspeople, all wearing animal costumes. Fortunately, Knash had thought to wear his fine goat-head cloak. The revelers drank, chatted, read bad poetry, played music, and discussed their fervent hope that one day, somehow, they could actually achieve the form their hearts desired. One of the brotherhood implored Knash to let him know if he ever found any relevant-seeming magic during his exciting adventures. Knash waited for the meeting's big reveal and, finding none, he snuck back to the village.

Thursday morning, the party went to the treasury to clean house ont heir savings. The bursar was made quite nervous by this, and kept back a small amount to cover any outstanding checks. "Don't worry," they promised, "we just want to have cash on hand for this utterly fantastic party we're throwing. We'll deposit whatever's left tomorrow."

Knash, Brenda, and Perrin staked out the town's three taverns and let the gold flow. They spent hundreds of soverigns shutting down the town's businesses and getting everyone drunk. When the gendarmes came to collect them for an interview with Epstein, they inveigled the guard with drinks and had the crowd on their side. When the moment was right, they fled out their respective back doors and went to grab their stuff... which was all already missing.

Rather than hunt down their gold, horses (and camel), and henchmen, they stole new horses and got on their way. The gang was delighted to find their crew already waiting for them several miles down the road, with their mounts and belongings. "We heard them talking about you," said Tucky the page boy, "so we got on the road ahead of you." Gratuities were showered on all the hirelings.

Lacking any particular plan, the gang spent a night in the woods and in the morning set off for the elves' forest on Friday morning.

I rewrote uni (body)

by rjbs, created 2014-10-21 10:49
last modified 2014-10-25 08:36

For years, I've used Audrey Tang's uni program for stupid things. It helps you find Unicode characters:

$ uni ☺
263A ☺ WHITE SMILING FACE

# Only on Perl 5.14+
$ uni wry
1F63C 😼 CAT FACE WITH WRY SMILE

I've never been super happy with searching. All of the args to the program are joined on space and searched for. That means that uni roman five won't find ROMAN NUMERAL FIVE. I also used to like using Carl Masak's little HTML+JavaScript unicode deconstructor. This thing would let you type in a string, and it would display each codepoint. I've long since lost it… and anyway, I didn't want to use a web browser. I thought that maybe Tom Christiansen's Unicode-Tussle tools would have the answer, but nothing quite did what I wanted.

After fidgeting unhappily for about ten minutes, I realized that I could've used those ten minutes to write my own solution. I'm sure it's awful in some way, but I'm very pleased with it, and maybe someone else will be, too.

It has four modes:

Single Character Mode

$ uni SINGLE-CHAR

This will print out the name and codepoint of the character.

$ uni ¿
¿ - U+000BF - INVERTED QUESTION MARK

Name Search Mode

$ uni SOME /SEARCH/ TERMS

This one will look for codepoints where each term appears as a (\b-bounded) word in the name. If the term is bounded by slashes, it's treated as a regular expression and is used to filter candidate codepoints by name.

$ uni roman five
Ⅴ - U+02164 - ROMAN NUMERAL FIVE
Ⅾ - U+0216E - ROMAN NUMERAL FIVE HUNDRED
ⅴ - U+02174 - SMALL ROMAN NUMERAL FIVE
ⅾ - U+0217E - SMALL ROMAN NUMERAL FIVE HUNDRED
ↁ - U+02181 - ROMAN NUMERAL FIVE THOUSAND

String Decomposition

$ uni -c SOME STRINGS

This prints out the codepoints in each string, with a blank line between each argument's codepoints.

$ uni -c Hey リコ
H - U+00048 - LATIN CAPITAL LETTER H
e - U+00065 - LATIN SMALL LETTER E
y - U+00079 - LATIN SMALL LETTER Y

リ- U+030EA - KATAKANA LETTER RI
コ- U+030B3 - KATAKANA LETTER KO

Lookup By Codepoint

$ uni -u NUMBERS IN HEX

This prints out the codepoint for each given hex value.

$ uni -u FF 1FF 10FF
ÿ - U+000FF - LATIN SMALL LETTER Y WITH DIAERESIS
ǿ - U+001FF - LATIN SMALL LETTER O WITH STROKE AND ACUTE
ჿ - U+010FF - GEORGIAN LETTER LABIAL SIGN

My uni program is now on GitHub (update: and now on the CPAN) or, for those who are curious, but not curious enough to click a link, it's right here:

#!perl
use 5.12.0;
use warnings;

use charnames ();
use Encode qw(decode);
use Unicode::GCString;

binmode STDOUT, ':encoding(utf-8)';

my $todo;
$todo = \&split_string if @ARGV && $ARGV[0] eq '-c';
$todo = \&codepoints   if @ARGV && $ARGV[0] eq '-u';

shift @ARGV if $todo;

die "only one swich allowed!\n" if grep /\A-/, @ARGV;

@ARGV = map {; decode('UTF-8', $_) } @ARGV;

$todo //= @ARGV == 1 && length $ARGV[0] == 1
        ? \&one_char
        : \&search_chars;

$todo->(@ARGV);

sub one_char {
  print_chars(@_);
}

sub split_string {
  my (@args) = @_;

  while (my $str = shift @args) {
    my @chars = split '', $str;
    print_chars(@chars);

    say '' if @args;
  }
}

sub print_chars {
  my (@chars) = @_;
  for my $c (@chars) {
    my $c2 = Unicode::GCString->new($c);
    my $l  = $c2->columns;

    # I'm not 100% sure why I need this in all cases.  It would make sense in
    # some, since for example COMBINING GRAVE beginning a line becomes its
    # own extended grapheme cluster (right?), but why does INVISIBLE TIMES at
    # the beginning of a line take up a column despite being printing width
    # zero?  The world may never know.  Until Tom tells me.
    # -- rjbs, 2014-10-04
    $l = 1 if $l == 0; # ???

    # Yeah, probably there's some insane %*0s$ invocation of printf to use
    # here, but... just no. -- rjbs, 2014-10-04
    my $p = $c . (' ' x (2 - $l));

    my $chr  = ord($c);
    my $name = charnames::viacode($chr);
    printf "%s- U+%05X - %s\n", $p, $chr, $name;
  }
}

sub codepoints {
  my (@points) = @_;

  my @chars = map {; chr hex s/\Au\+//r } @points;
  print_chars(@chars);
}

sub search_chars {
  my @terms = map {; s{\A/(.+)/\z}{$1} ? qr/$_/i : qr/\b$_\b/i } @_;

  my $corpus = require 'unicore/Name.pl';
  die "somebody beat us here" if $corpus eq '1';

  my @lines = split /\cJ/, $corpus;
  my @chars;
  LINE: for my $line (@lines) {
    my $i = index($line, "\t");
    next if rindex($line, " ", $i) >= 0; # no sequences

    $line =~ $_ || next LINE for @terms;

    push @chars, chr hex substr $line, 0, $i;
  }

  print_chars(@chars);
}

RPG Recap: Beyond the Temple of the Abyss, 2014-09 (body)

by rjbs, created 2014-09-30 21:44
last modified 2014-09-30 21:44

Monday, 29th day of the Leafy Moon, 937

Monday morning, the party arrived at the temple to take watch and they didn't like what they found. The usually boring and unremarkable ruin was overrun with cats. The guards awaiting relief were all on edge and eager to get gone. They argued amongst themselves about whether they'd actually seen or heard anything "down there," but clearly they'd had a worse time of things than usual.

Once they were gone, the party was agreed: there was no way that they were going down into the dungeons. They'd just lie about having done so.

This wasn't quite a solution, though! Captain Epstien had said he'd be sending an inspector to look into the problem of the missing mystical seals (which the party had stolen and tried to fence just earlier in the week). They decided to solve things more permanently by collapsing the dungeon entrance down into the dungeon. ("What about Drip [the guy who lives in the dungeon]?" asked one party member. "Yeah? What about him?" replied another. That ended that conversation.)

There was agreement on the best way to demolish the entrance: call in the goblins. After first scheduling their raid on the vampire's lair (for Saturday), they explained what they needed, and the goblins sent out a bomber. He sent the party away from the building and with good old goblin know-how, brought much of the foundation crumbling down into a heap atop the old stairway down.

The party returned to town to report the mysterious and unexpected collapse of the ruins. "It's just a good thing we weren't any deeper down when the rumbling started!"

Epstien was not entirely convinced. "Tell you what," he said, "you go back there and tomorrow I'll send over … The Dwarf."

Tuesday, 30th day of the Leafy Moon, 937

Tuesday morning, the dwarf showed up in a dune buggy, none to pleased to be dealing with this situation or the riff raff on the scene. He got the party's story and headed to the site to scope things out. As he did so, the cats grew more anxious, circling and hissing, until one grew bolder and attacked him. He tore the cat from his face, threw it into the weeds, and shot it with a small pistol produced from inside his jumpsuit. This marked the end of his inspection, and he asked the party whether they'd like to revise their story.

They declined, and he explained that he was going to have to tell Epstien what happened, and that the party should probably get in front of the story, if they wanted to save their credibility.

"Well," they waffled, "okay. We weren't actually inside. We were nearby. And we didn't want to get in trouble. But we definitely had no idea what might have happened."

The dwarf shrugged and was on his way.

"Huh." Dera was surprised. "I was all but sure we were just gonna kill that guy." Somebody wondered whether Knash's absence was related to the dwarf's unmolested exit.

After some further discussion, the gang decided to hunt the dwarf down … and talk to him. They mounted up and sped off toward Teak's Bottom, where some grizzled ex-adventurer in town said they might find him. In fact, they found him at Bridgend, halfway to Teak's Bottom, and got him to pull over and chat.

"Okay," they lied, "we decided we should tell you the new, revised version of our story."

The dwarf was tired of it. "You're in league with goblins and had one of them blow the place up while you stood out in the field." This put the party's situation in a new light.

The dwarf made an offer: if they'd agree to head into the caverns under the Gladwell place and do a little reconnaissance, he'd delay his report to Epstien a few days, giving the party some time to prepare their flight from punishment. They agreed to the plan and took the dwarf's equipment back to Edgwold.

Wednesday, 1st day of the Frost Moon, 937

In the morning, Perrin, Brenda, Rago, Dera, and Hoyte headed to the blasted magic tree in the woods south of the Astodan, planning to use the portal in the tree's upper trunk to enter the dungeon without alerting Gladwell or his men. They arrived in the dungeon, southeast of the complex junction, and made their way toward the mine tunnels. Only halfway there, though, they encountered two ghasts and immediately turned tail and ran. They reached the portal exit and leapt through, scrambling or falling from the tree. Several were badly hurt, but no one died, and the ghasts declined to follow them down.

Horror Movie Month 2013 (body)

by rjbs, created 2014-09-09 23:24
last modified 2014-09-09 23:26
tagged with: @markup:md journal movies

"Wait!" you cry, "you must mean Horror Movie Month 2014!"

Well, I never wrote up our month of horror movies last year, and now that this year is approaching, I better get it done, or we won't do it at all. What I should really do it harvest all my tweets about these movies from when we watched them, but I'm not sure I can do that easily enough right now.

Week 1

In the first week, we missed two days because I had other plans. We'd make those up at the end.

October 1 - (TPF symposium)
October 2 - Paranormal Activity 4
October 3 - Love Me Deadly
October 4 - Dead End
October 5 - (D&D game)
October 6 - Mulberry Street
October 7 - Martin

Paranormal Activity 4 was junk. Just let it die, people. Love Me Deadly was a pretty weird movie about a secret society of necrophiliacs. I'm not sure it was good, but it was strange and worth watching, I think. At least for a horror movie fan.

Dead End was pretty predictable, and generally not that good. I liked it in a strange way, though. I think it could be re-made without a ton of changes and be much, much better, and I think that's a sign that there's something good going on in it. Mulberry Street was something kind of like a zombie apocalypse viewed from a small scale, just a block or two in Manhattan. It was fine. I neither regret nor recommend it, although it had its moments.

Martin might have been the best movie we watched that month. It's George Romero, of Living Dead fame, and it was just really strange and interesting. It's about a young man who believes he is a vampire. I'm not sure we can say whether he actually is. It was good. It wasn't quite a horror movie, but that's okay. I definitely recommend it. Heck, I might watch it again sometime.

Week 2

8 - Terror Train
9 - World War Z
10 - Let's Scare Jessica to Death
11 - State of Emergency / Sea of Dust (ABORT!!)
12 - Come Out and Play
13 - The Ward
14 - American Horror Story: Coven

Terror Train was not very good, but was almost worth watching because it was such a directionless mish-mash. It had David Copperfield in it! World War Z was just terrible. Not only was it a lousy movie on its own right, but it was miserable as an adaptation of Max Brooks' much more interesting book.

Let's Scare Jessica to Death was interesting, too, but I'm not sure I remember there being much of a point. It definitely had a vibe that one doesn't see in a lot of other movies, if any.

State of Emergency, like Mulberry Street, was about zombies on a small scale. I liked it. It reminded me of the original Night of the Living Dead, which was obviously an inspiration. It had a lot of little touches that I liked. If you like these kinds of movies, this is one to like.

We watched State of Emergency after aborting our attempt to watch Sea of Dust. It was so awful that we just stopped. It seemed like it was filmed by some high school students who managed to get Tom Savini to hang out with them for the weekend. It was really bad. We don't give up on movies very often, but giving up on this was a no-brainer.

Come Out and Play was good, something like a Mexican Children of the Corn. On the other hand, it was seriously beset by "protagonist makes awful decisions" syndrome. Still, I liked it.

The Ward, as I recall, stank, despite a few good shots.

On October 14th, we took a break from horror movies to watch horror TV. It was the first episode of the third season of American Horror Story, and it was okay. I thought season three was better than season two and worse than season one. And I wasn't a huge fan of season one to begin with.

Week 3

15 - Kill Theory
16 - Bitter Feast
17 - Macbeth, Rise of the Reeker
18 - (DZ hacking)
19 - (DZ hacking)
20 - The Hitcher
21 - Dark Shadows

Kill Theory had an interesting premise, but the execution (so to speak) was lousy.

Bitter Feast, on the other hand, was sort of a goofy idea, but I enjoyed the movie. It was flawed in a bunch of ways, but the central conceit is "dude snaps, goes nuts, captures and torments someone." The dude who snapped was a lot of fun to watch.

On the 17th, we went to Allentown Symphony Hall and watched a filmed performance of Macbeth, with Kenneth Branagh and Alex Kingston. We enjoyed it, but it was just Macbeth. Macbeth is Shakespeare, but it's not one of our favorites. We thought that would be all we watched, but it turned out that we felt up to watching a movie afterward, so we watched Rise of the Reeker. Ugh.

Then came the weekend when David Golden and I fixed Dist::Zilla's handling of encodings. We declined to force David to sit through horror movies with us, because we're good hosts.

The Hitcher was really formulaic and shouldn't have been very good, but for some reason, it was. Actually, I'm pretty sure I know the reason: Rutger Hauer. For a bit more of a break, we watched Tim Burton's Dark Shadows. Eh.

Week 4

22 - Critters 2
23 - Hunter
24 - See No Evil
25 - The Amityville Horror
26 - Children of the Corn
27 - Zombie
28 - Laid to Rest

As far as I can tell, the Critters series is more like sci-fi than horror, despite often being shelved with horror at Blockbuster when I was a kid. It's not a good series, but at least it's got a sense of humor.

I have absolutely no memory of what "Hunter" is or was, but it's on my list of things we watched.

See No Evil was really interesting, and maybe one of our favorites. It stars Mia Farrow as a young woman, recently blinded, who comes home and finds that her whole family has been killed... but she doesn't find this out immediately, and first spends quite a bit of time walking around the corpse-ridden house wondering where everybody is. It set up a good atmosphere.

The Amityville Horror… well, I'm glad that to have finally seen it, but it wasn't good. Children of the Corn, I'd seen, but Gloria hadn't. This came up when we watched Come Out and Play. It was interesting to see it again, as I'd forgotten quite a lot of it. It's not a good movie, though.

I wasn't sure whether we'd ever watched Zombi 2, aka Zombie, but we hadn't. Now we have. That's all I have to say about that.

Laid to Rest, I'd heard, was bizarre enough to be worth watching. I think I agree. It was sort of in the "creepy car following us" tradition, but not quite. It wasn't great, but I enjoyed it. I'm generally in favor of movies with unexplained weirdness (but not always: see David Lynch), and Laid to Rest delivered that.

Week 5-6

29 - ChromeSkull: Laid to Rest 2
30 - The Innkeepers
31 - Abraham Lincoln, Vampire Hunter
1 - 100 Bloody Acres
2 - (D&D game)
3 - Maniac (1980)
4 - Maniac (2012)
5 - One Missed Call

If Laid to Rest didn't have enough unexplained weirdness for you, the sequel will. I can only believe that the backstory added to it was done entirely after the fact, because it has nearly nothing to do with the first movie, apart from framing it… but I was entertained by it.

The Innkeepers wasn't great, but it had a really good quirky tone to it. If the ending had held together with the rest of it, I think it could've been one of the best things we saw. Still, it was worth watching for the first half or so, at least.

I tried reading Abraham Lincoln, Vampire Hunter and found it too stupid to finish. The film was no better, although we did finish it. Fortunately, this isn't how Horror Movie Month ended, even though it was October 31. See, we didn't get our full 31 days in, so we had to go into overtime.

Next up, 100 Bloody Acres was a lot of fun. A pair of hayseed brothers in rural Australia discover that blood and bone fertilizer is even better when made from humans, and begin a tidy little business. It was fun and silly, but still horrific and gruesome, which is a combination that we see much less than we used to.

I don't remember Maniac very well. I seem to recall thinking that it was better than I expected it would be. Also, weird. The 2012 remake, starring Elijah Wood and filmed in the first person, was, as I recall, also strange.

One Missed Call wasn't very good, but it was somewhat more coherent than many Japanese horror movies or their American remakes. What I really would like to see is a sequel — and there is one, in Japanese. I doubt I'll be getting it onto the 2014 schedule, though. More on that, another time.

I bought a 3DS (XL). (body)

by rjbs, created 2014-09-02 18:36

Earlier this year, I started going through my old game collection and selling what I could on Amazon. This was remarkably easy (especially because of Gloria's endless help; she stood in line at USPS for me and send me snapshots of my tracking numbers; she deserves massive high fives) and surprisingly lucrative. My plan was to put the proceeds toward a next-gen system, but I found that nothing really was compelling enough to get me to buy one this year. It looks like 2015 will be the year for me. Instead, I started to think about getting a 3DS.

My first portable Nintendo was a GBA, which I really enjoyed. I played a ton of Wario Ware and Metroid while doing cardio at the gym, ten years ago, and the only complaint I had was that I could never beat Nightmare in Metroid Fusion. I've got it on OpenEmu now, and I hope I can do it, this time. Shortly after I started at my current job, I received a DS Lite (thanks again, Gloria!) which was great. It's still a great system, and I was playing it off and on up until recently.

There were a bunch of games I wanted to play on the 3DS, though, and I finally decided I should just take the plunge. I suggested to Martha that she could save her allowance toward buying a 3DS (or 2DS) too, and she was all over this idea, because it meant she could have her own Animal Crossing down and maybe get Tomodachi Life. She started saving and once she was pretty close, I ordered mine, in part to keep her excited. I got a black, refurb 3DS XL for $135, direct from Nintendo. This is an excellent price, about a third off, and still includes a full warranty. She'll be getting an original size 3DS, in pink, for under a hundred bucks. Nice! One annoying thing: you don't get Club Nintendo points for registering a system that you purchased refurbished, which means I'm down 320 points that I thought I'd be earning this year. I'm a bit miffed about that.

Before buying, I made a list of games I would be likely to play. Here it is:

"Probably" Games

  • Animal Crossing: New Leaf
  • Zelda: A Link Between Worlds
  • Pokémon X/Y
  • Luigi's Mansion: Dark Moon
  • Fire Emblem
  • Pushmo, Crashmo
  • Mario Kart 7
  • Super Mario 3D Land
  • Resident Evil: Revelations
  • NSMB 2
  • Mario & Luigi: Dream Team

Less Likely Games

  • Paper Mario: Sticker Star
  • Tetris Axis

Animal Crossing ("ACNL") wasn't really a "possibly." It was a "definitely." If any one game was going to drive the 3DS purchase, it was Animal Crossing. I don't know why I like it so much, but it's just delightful. I especially like playing with Martha, now that she's such a good reader and writer. I've already bought two copies, which brings me to my first little complaint.

I bought ACNL before I even got my 3DS. My 3DS shipped as slowly as UPS was able to move it, so I sat there staring at that box, just wondering what it would be like to be mayor of my own little town. Finally, the system arrived, along with Luigi's Mansion, and I played both games. It was great! The not so great thing was carrying the game system in one pocket and the other game cartridge in another pocket. Then to change games I'd have to fiddle around with these little stamp-sized slips of plastic. Ugh!

Most, if not all, 3DS games are also available digitally. I bought the 3DS with money I made by selling my physical copies of old games, so I knew the value of getting the physical media… but now other portable systems (namely iPad and iPhone) have spoiled me on game carts. It seemed absurd to have to fiddle around with game carts, now. I considered switching to digital copies, even though I'd never be able to resell them, and even though they'd probably not be available to me for free on Virtual Console in the future. The real kick in the pants, though, was that I paid $24 for an ACNL cart on Amazon, but the digital download was going to cost 25% more! The physical media sometimes goes on sale, but as far as I can tell the digital downloads don't. You always pay MSRP. Maybe there are sales, but they're not easy to find. There isn't enough competition for the digital download. In fact, it gets weirder: Nintendo sells ACNL on its eShop for $29.99, but you can buy a "download code" from Best Buy to get the same download… for $34.99.

I just don't get it.

Finally, though, my discomfort with carts won out. I bought the ACNL download, and I'll give the cartridge to Martha.

The GBA had no visible operating system. You'd turn it on and be in your game. Game systems have had a lot more "user experience" added since then, starting, I think, with the original PlayStation. These days, they're pretty darn slick. Except for 3DS. It feels a little bit like webOS: lots of good ideas that have been weirdly executed. Lots of its UI reminds me of iOS or webOS, but without the affordances I'd expect. It's never clear when I can use which input methods. The mechanism for sharing screenshots is abysmal. It feels now, like it felt when the original Wii launched, like Nintendo is a company unmatched in making games, but they just can't be bothered to spend much time on the rest of the system.

On the other hand, that's not quite fair. What they don't do well at is the stuff that everybody else does well. They do other stuff that nobody does, and while it isn't always incredibly polished, the ideas are a ton of fun. The one that's really got my interest right now is StreetPass. It's a system by which two 3DS systems can, when near one another, exchange data without being part of the same 802.11 network. This data could be your Mii, or parts of your town in Animal Crossing, or your armies in Fire Emblem. StreetPass is function of the 3DS itself, and a number of games take advantage of it. There's a dedicated LED on the 3DS that tells you when you've been "tagged" on StreetPass.

I'm not sure whether I'm likely to get a lot of tags just walking around town. I briefly found myself wondering, "Where can I go hang out, where there will be a bunch of ten year olds playing video games?" Then I thought better of that. Still, I'm carrying the 3DS XL around, even though it's big and heavy, because StreetPass is such a fun idea. Even if I don't get tagged, the 3DS has a pedometer, and I get "game coins" for my steps. They can be traded for in-game content, later.

I'm probably going to get a number of tags every week anyway, though, because Nintendo has also set up "StreetPass relay" systems that pick up tags and pass them on later, so you can tag someone who has passed through the same area as you, even if they did it days or hours ago. The Philadelphia Greyhound station, which I pass through about six times a week, is a relay zone. So far, that's netted me seven tags in two days.

I mentioned that I'd bought Luigi's Mansion. It's great. I really enjoyed the first one, and the new one is at least as good. It's really funny, and it's fun, and it's not really like anything else. I'm so tired of variants on the first-person shooter and console role-playing game. I realize that's entirely personal preference, and that I'm then playing a bunch of even older game styles, like platformers and tactical combat games, but so be it.

I also picked up Tetris Axis and Pushmo. Every portable Nintendo system needs Tetris. Tetris Axis is adequate. I think Tetris DS was better, and I might just try playing it on the 3DS. I feel certain, though, that it wasn't so much better that it would justify carrying around the darn cartridge. Pushmo is another puzzle game, and I'm enjoying it quite a bit. I'm making my way through it slowly, with a bit of struggle. I'm not great at puzzle games, and often I get sick of them quickly. So far, Pushmo is keeping my interest. I'm glad I didn't start with Crashmo, the sequel, which I've heard is all around harder.

I'm not sure what game I'll move on to after Luigi's Mansion. Fire Emblem and Zelda are both very likely, but Pokémon is up there two, if only because Martha might enjoy playing it at the same time. I think I'll wait and see on that fornt.

My gut tells me that a dedicated portable device for video games is not something that will be popular for a whole lot longer, but I'm going to enjoy it while it lasts. The games on 3DS are, so far, very good, and do things that iOS games just don't. I hope that if the dedicated portable gaming console goes away, Nintendo forgets their promise to quit making games, and starts making them for whatever new hardware we use. A pocket without the Mario Bros. in it would be a sad pocket.

Books to strand your kids in (body)

by rjbs, created 2014-07-29 18:33
tagged with: @markup:md journal rpg

I made a vague offer to run an RPG for some of the kids in my family's younger generation, and have yet to follow through. I have no doubt that I could just wing a simple D&D adventure and we'd have fun. I will do that sometime. I should set a date.

I have another idea, though.

My plan is to run a game of Fate. The player characters will be winners of the lottery (think "draft," not "numbers racket"), conscripted into service troubleshooting for the Great Library. The Great Library's troubleshooters are in many ways ripped off of the Jurisfiction group in the Thursday Next books. If that doesn't help: they are fictional characters, living in a world populated by other fictional characters. The Great Library is an imaginary place where every revision of a book is shelved, and all of its characters are free to intermingle. The specifics of how all this works can be hand-waved. I may obsess over it at length, but I know the group of grade schoolers at the table will not get too nit-picky about everything… at least not at first, anyway.

Every character in the game will be a fictional character. The player characters, for example, will have a boss who is in charge of their assignments. This will probably be Albus Dumbledore. One early assignment may be to find out who has stolen the treasure from Long John Silver's chest and reburied it, thus threatening the integrity of the story. The thief may end up being Sir Harry Flashman. And so on.

The player characters will also be fictional characters, but the kids don't get off that easy. They don't get to pick Percy Jackson, Laura Ingalls, Jem, and Green Lantern (and yes, those are my predictions for the choices if they could). Instead, their character sheet will have a slot for the name of the book from which they spring, and maybe the name of the antagonist (or protagonist, if one cleverly asks to play the bad guy).

Apart from seeming just generally fun, this should be a way I can introduce some worthwhile stories or characters to the kids. They can help Sherlock solve a case, rescue a marooned Huck Finn, or deal with a reprogrammed Chip Carson. It should also be fun to play with genre-mixing, for both me and the kids.

What I need to do next is compile a list of adventure plots, or even just characters and books that would be fun to use — both ones that the kids know and don't know. Suggestions welcome!

I went to Portland (for OSCON)! (body)

by rjbs, created 2014-07-28 11:07
last modified 2014-07-28 15:33
tagged with: @markup:md journal

Last week, I was in Portland, Oregon for OSCON. I had a good time, as I generally do. Portland's a nice place, and when I'm there, so are a lot of friends that I see only once or twice a year. I got some tasty pizza with Piers at Sizzle Pie, had a really nice long dinner at Farm with Robert, got a milkshake with Andy, went to Le Piegon with Piers and John, Shirley, and Sonia, got Indian and ice cream with David, Julie, Ovid, and Vicky, and went to Base Camp with a whole ton of people. I've probably missed something in there. Sorry!

The conference talks and sessions that I went to were pretty good. I'll write more about that another time or place. Now that OSCON is following YAPC's lead and putting everything online, I'm going to be a bit less eager to get to as many talks. I think I want to sort of radically re-invent my OSCON.

When I get to OSCON, my slides are done. I don't need to hole up and finish them. I spent a bunch of time holed up anyway, though, basically sitting in the speaker's lounge and poking at this or that. I got very little of note done during this time.

I think that, instead of this, next time I will find a table to set up more or less permanent shop. I will make it very publicly known that I am available to hack on absolutely anything, to pair with anybody, or to do code review of anything where I might be able to help. I will also consider the occasional board game.

If nobody shows up, I will have a set of projects to work on, and I'll work on those. OSCON will be a hackathon for me. I'll take breaks now and then to be social, too, because half the point of going to OSCON is to talk to people, but when I'm not talking, I could be getting stuff done instead of wandering around like a drone. That's the new plan. I just need to remember it when next July rolls around.

learning some new languages (maybe) (body)

by rjbs, created 2014-07-16 22:44
tagged with: @markup:md journal programming

I wanted to make an effort to learn some more languages, old and new, more or less continually as time went on. I started with Forth and Go, and did a tolerable job at getting the basics of each down. I didn't do so well at writing anything of consequence, which isn't too surprising for Forth, but I'm pretty sure I could be writing a lot more Go to get things done. I really do mean to get back to that.

Although I feel like I'm only about 85% done with what I wanted to do with Forth, I'm thinking about what I'll look at next.

On one hand, Pragmatic Press is putting out Seven More Languages in Seven Weeks. The previous book covered Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. I thought it was just okay, but in part it was because I knew the languages well enough to see how the chapters could've been better. The new book is languages that I know, at best, by reputation: Lua, Factor, Elixir, Elm, Julia, MiniKanren, and Idris. Even if the book's only so-so, it's enough to get me going on a few weird-o languages. Also, from Forth to Factor? Woo!

On the subject of useless-but-influential languages, I just ended up with a pile of books on the matter. Stevan Little, Moose author and devotee of all programming languages past and present, is moving to the Netherlands, and couldn't take all his stuff. "You know who'd like a book on Algol-60?" he asked him self. "Rik!"

books from stevan

I'm not sure where I'll start. The Forth book isn't likely, as I've already got some. PostScript might be out for a while, since it's a bit Forthy on its own. Algol is a good possibility, or maybe Eiffel. (I just finished reading Smalltalk Best Practice Patterns, so I may be in the mood for more "here's how you do OO, kid" books.) I'm very interested in SNOBOL4 patterns, although I'll have to see if I can find an implementation I can run.

Probably all of this will have to wait, though. This weekend, OSCON begins, and I'll be taking in whatever I can there, rather than reading any dusty old books.

I went to YAPC::NA in Orlando! (body)

by rjbs, created 2014-07-09 22:26
last modified 2014-07-10 13:20
tagged with: @markup:md journal perl yapc

A few weeks ago was YAPC in Orland, Florida, and I attended! I already wrote about the amazingly great video recording of the conference. It was great, and I was amazed. I watched some of the videos just today!

I thought I'd write down a couple more things that I remember.

I ate good food.

I like good food, and lucked out finding places to eat at YAPC.

Monday, I found a little banh mi place, Banh Mi Nha Trang. It was great. One sandwich was about three bucks. I ate too much. Walt took a nibble of a pepper and declared it way too hot, so I ate the whole thing. Shortly thereafter, I was seriously considering whether I needed to request medical attention. I toughed it out, though.

On Tuesday, we got Cuban food at Latin Square Cuisine. I really miss having great Cuban food in Bethlehem at the long-gone Cafe Havana. Walt and I split halves of our sandwiches: one Cubano and one Pepito. The Pepito had potato sticks on it, which was a big deal when eating at Cafe Havana. I had a pineapple soda. It was great. (I was strong and avoided getting empanadas or tres leches, because I had to go right from lunch to giving a talk. It was hard, but I was strong.)

Wednesday, we got Asian/Mexican fusion tacos at Tako Cheena. It was the least awesome place, but I had no real problems with it. The water was a bit too cucumberry for me. I'd definitely go again, though. It seemed like a place worth going to try the specials every week.

Wendesday night was the big pay-off, though. Frew and Jerry Gay and I went to Cask & Larder, and it was great. The food was very good and the cocktails were great, and I would've loved to have stayed for another few rounds, except for the whole "alcohol is a poison" thing. I was especially pleased to have a drink that combined green Chartreuse and celery bitters, which I'd known in my heart would be a winning combination. It was!

I didn't get a shirt.

Oops. Frankly, that's fine. I rarely wear YAPC shirts, although the "Chicago flag with sigils" is an exception. That's a great design. I brough home very little swag from YAPC, and that's fine. As time goes on, swag becomes less interesting to me unless it's really useful. Best conference swag ever? Notepads. (OSCON's bookbag for speakers has also been a huge success.) Grant Street gave us USB batteries for charging phones (etc.) on the fly. I haven't tried mine yet, so the jury's still out. It could be a big winner.

I played Ogre!

Once again, there was a YAPC game night. I was taken aback (and flattered) by the number of people who approached me to try to get a seat at my presumed-certain-to-occur D&D game. I hadn't planned one! Whoops. Next year I better get back on the ball!

Instead, I planned to play and teach Steve Jackson's Ogre, a tank battle board game of some fame.

YAPC Game Night

It was a success! I think I lost every game, but I'm not sure. Anyway, I had a great time, and at least 2-3 games of Ogre occurred without me after I showed the table how to play. I realized that one problem with running a game at game night was that I couldn't try all the other cool games people brought, but that was okay. It was good to think that I may have created at least one or two new Ogre players.

I talked to other perl5 porters!

We had a little sit-down in the hotel bar and talked about what's been going on. I previewed the yet-unreleased-at-the-time civility policy and did not get any panicked abort instructions.

I'm not sure what else was discussed, anymore.

I saw some talks!

I did. I also skipped a bunch, knowing that I could watch them later. I finally started doing the "watch stuff later" part today, and look forward to doing some more of it tomorrow. Among other things, I want to see Jesse Luehr's talk on Rust and Scott Walters' talk on programming the Atari 2600, but I'm pretty sure that reviewing the YAPC playlist will remind me of other stuff I really wanted to see.

I did not attend an auction!

So, so grateful.

I stubbed my toe.

I'm really tempted to post a photo of my toe, which still looks just awful, but I will refrain. Nobody needs to see my nasty toe.

I got zero programming done.

Every YAPC, I head out thinking that I'll get a bunch of programming done. It basically never happens. Maybe next year, when I'm confident in the idea that there will be video, I'll just sit in one place and chat and code. This year… I don't think I wrote a single line.

I didn't meet enough new people.

When I wrote about going to !!Con, I said that it was hard to meet people when I didn't know anybody to start with, and that I wanted to try to meet more new people at YAPC. I didn't do a great job of following through with that, although I did better than I might have. It's very hard, I am reminded, to say, "I'm sorry good friend whom I see only once a year, I need to spurn your company to go meet new people!"

I'm not sure I know the middle route, here.

Maybe I can form a marauding band of friends who go befriend new people and continue the pillage until the entire conference is one mass of friendly mayhem.

Sounds good.

YAPC::NA is on YouTube (body)

by rjbs, created 2014-07-02 19:43
last modified 2014-07-02 19:47
tagged with: @markup:md journal perl yapc

I went to YAPC::NA! It was in Orlando, Florida, and I had a lovely time. I'll write more about it later. I wanted to say one thing as soon as possible, though, and I thought I'd say it in isolation from anything else, because I think it's a much more important thing than some may realize.

The immediate availability of YAPC::NA's content as streamable video is an incredibly good thing.

Many conferences have promised that talks would be available online, but in almost every case, I assume that this is not going to happen. It's been too often that I find out that only a few talks will actually go up, or that the only person with the video files has suddenly found a higher calling or… whatever. At YAPC::Asia, they established a great track record, but YAPC::NA didn't have one, so I had no hope.

Then, as each talk started, they were immediately available, live. Because they were streaming live to YouTube, it meant that there was no question about whether it would be uploaded later. It was being uploaded now!

First of all, this meant that people who could not attend the conference could view the material. I view this as a good thing, but I don't even care about selling that. You can think about how amazingly great that is later, on your own time.

What I found amazingly great is that the availability of recordings granted me immense freedom at the conference. There were two talks opposite one another, both of which I wanted to see. I could pick the one where I thought the speaker might want a friendly face, or where I knew I'd be more likely to have questions. Another time, I got into a conversation with Karen Pauley about Perl Foundation business just as a talk that I really wanted to see was beginning. I didn't even have to think about it: I stayed in the hall and finished my conversation, because I could watch the talk later.

The availability of the talks online later meant that I could spend much more time engaged in face-to-face conversations that simply could not happen any other time of the year. It is my great hope that the stellar performance of streaming this year sets a standard to which future conferences must adhere.

I feel like I must anticipate the objection that if all talks are streamed, some talks will get no attendance. I don't think it will really happen, and further, I think that if this is the case, I would suggest that the free market has spoken.

So, to recap: publishing the videos from the conference, and establishing up front the reliable expectation that it will really happen, is amazingly great. Thanks, YAPC::NA 2014!

just how much data did I lose? (body)

by rjbs, created 2014-06-14 22:33
last modified 2014-06-14 23:08
tagged with: @markup:md hardware journal

For a few years, I've kept most of my "stuff" on a two terabyte hard drive in a little tiny desktop computer running Ubuntu. It's got another 2T drive connected via USB, and once in a while I'd run an rsync job. This was basically my whole "storage solution" for my media files: ripped movies, ripped music, and books. Recently, I've been getting close to filling the drive, and I thought I should improve the whole setup with something less ad hoc.

I settled on getting a Synology DS214play NAS. The price seemed pretty good, and it could serve as a DLNA server so I could stop syncing files to an external drive plugged into my Roku. I had two 1T drives sitting around from my last upgrade, and I figured I'd start with those, migrate some files, and then move up to 3T drives if everything went well. This would probably have been a good plan, but it turns out that I just couldn't leave well enough alone.

I started by moving my music collection, which was very roughly around 175 GB. (I bought a lot of CDs in college.) I started by rsyncing the music to an external drive and then moving it from that drive onto the NAS. I encountered one pretty obnoxious problem which would continue to crop up over the rest of the experience. The NAS has a really neat web-based GUI that acts like a standard WIMP interface. To migrate the files in, I'd select the directory I wanted to move over and take "Move to ... [target]". Hours later, it would report completion, but less than 100% of the files would be moved. For example, an album might have been moved with only 8 of its 10 tracks. I'd run several "move" operations in a row, until all files were moved. Unfortunately, sometimes empty directories were left behind, which made it a bit harder to verify what was going on.

This really did not fill me with confidence.

To determine whether I'd gotten everything copied over, I'd run find on both volumes, then compare the output. This would sometimes be a bit less than perfect because I'd get different encodings back for non-ASCII filenames. Worse, I found that some badly-encoded filenames would simply be unavailable via the NAS. I think the problem is that some filenames were double-encoded, but I'm not positive. What I do know is that I'd see "Hasta Ma�ana" in the GUI, but I'd be totally unable to access the directory in any way.

This problem had already been haunting me on my old drive. I think it started because of a Samba upgrade years ago, but it affected relatively few files. Once in a while, iTunes would try to play one and I'd go sort out that directory. This migration gave me a reason to fix them all. I scanned for broken directories. When I found one, I'd delete it on the NAS, fix the filenames (with mv) on my Linux box, and then re-copy it individually.

This is where my first major problem probably crept in.

I had some problems with tracks by Cuban son artist "Compay Segundo," and deleted his artist directory. I believe that I accidentally cmd-clicked the directory below his while working. That directory was "Compilations," where iTunes was storing albums made up of many artists working together. This included things like musicals, soundtracks, and tribute albums. It was about one tenth of my music. I didn't notice that I'd deleted it, and I deleted it while fixing discrepancies. When I finished fixing problems, I didn't do a second comparison, which would've detected this huge loss.

I took my old 2T drive, which had been the rsync backup of the master drive, and slotted it into the NAS. That way, I'd be able to grow the RAID faster, later. Now the master drive was the only copy of "all my stuff."

I fixed some similar encoding problems in my books, but far fewer. At this point, I had a 1T and a 2T drive in the two-bay NAS, acting as a RAID1. I copied my video collection onto an external drive, along with some other random stuff. At this point, I could destroy the master 2T drive by slotting it into the NAS and letting the RAID repair itself, which would get me another terabyte of storage. Then I'd dump the video archive onto it and I'd be done. "Later", I thought, "I can do the upgrade to 3TB drives."

This was stupid. There was no reason to rush other than impatience and a little bit of miserliness. I could have ordered two 3T drives, had them on Tuesday, and rebuilt the RAID in two steps then, never destroying the master data. Instead, I decided that I'd been careful enough and stuck the old master drive into the NAS, utterly destroying the only remaining copy of 10% of my music. Oops.

I realized my error soon enough. While the RAID rebuilt, I decided to play a little music, but whatever it was I picked — I don't remember — it wouldn't play. I went to check what had happened, and I found that not only was the album missing, so was the entire Compilations directory. It didn't take long to realize that I'd lost a whole lot of music.

Fortunately, thanks to iTunes' database, it was easy to print out a listing of lost albums. It filled seven pages, and I went through it, highlighting the things I was interested in re-ripping. This probably totals about half of the lost music. I imagine it will take me weeks to get it all done. I'll also lose all the work I did getting album art and ratings onto things. (I've saved the rating data, but getting it restored later will be a huge pain.)

One of the things I noticed missing didn't make any sense. One track from Bad Religion's "The Gray Race" was missing. Why? It, and no other track, had been flagged as being part of a compilation. Bizarre. While investigating, I noticed some tracks from their "New America" were also missing. Now I began to panic! Had the "not all files copied" bug caused problems? Was I going to find that I was actually missing a huge random selection of all my data?

Kinda.

That is, plenty of stuff seems missing, but when I went back to the big find that I had done on the source data, I find stuff like this:

./Radiohead/Pablo Honey/01 You.mp3
./Radiohead/Pablo Honey/02 Creep.mp3
./Radiohead/Pablo Honey/03 How Do You Do_.mp3
./Radiohead/Pablo Honey/04 Stop Whispering.mp3
./Radiohead/Pablo Honey/06 Anyone Can Play Guitar.mp3
./Radiohead/Pablo Honey/08 Vegetable.mp3
./Radiohead/Pablo Honey/09 Prove Yourself.mp3
./Radiohead/Pablo Honey/11 Lurgee.mp3
./Radiohead/Pablo Honey/12 Blow Out.mp3
./Radiohead/Pablo Honey/13 Creep (Acoustic Version).mp3
./Radiohead/The Bends/02 The Bends.mp3
./Radiohead/The Bends/03 High And Dry.mp3
./Radiohead/The Bends/04 Fake Plastic Trees.mp3
./Radiohead/The Bends/05 Bones.mp3
./Radiohead/The Bends/07 Just.mp3
./Radiohead/The Bends/08 My Iron Lung.mp3
./Radiohead/The Bends/09 Bullet Proof...I Wish I Was.mp3
./Radiohead/The Bends/10 Black Star.mp3
./Radiohead/The Bends/11 Sulk.mp3
./Radiohead/The Bends/12 Street Spirit (Fade Out).mp3
./Radiohead/OK Computer/01 Airbag.mp3
./Radiohead/OK Computer/02 Paranoid Android.mp3
./Radiohead/OK Computer/03 Subterranean Homesick Alien.mp3
./Radiohead/OK Computer/04 Exit Music (For A Film).mp3
./Radiohead/OK Computer/05 Let Down.mp3
./Radiohead/OK Computer/06 Karma Police.mp3
./Radiohead/OK Computer/08 Electioneering.mp3
./Radiohead/OK Computer/09 Climbing Up The Walls.mp3
./Radiohead/OK Computer/10 No Surprises.mp3
./Radiohead/OK Computer/11 Lucky.mp3
./Radiohead/OK Computer/12 The Tourist.mp3

Notice that: Pablo Honey is missing tracks 5, 7, and 10; The Bends is missing tracks 1 and 6; OK Computer is missing track 7. How long have these been missing? I have no idea! It can't be that long, since Ripcord (track 7 of Pablo Honey) is on my iPhone, which was synchronized from this share.

I have no idea how much data has been lost, nor when, but I am just gutted. At least if I'd kept the original drive, I'd be able to go look at something more concrete than a dump of find output to see what was up. I am definitely paying for my stupid, pointless impatience.

I don't think the NAS is actually to blame. If it was, I'm not sure what that would get me, anyway. I burned my own bridge, here. What I need to do next is finish gettin my data onto the NAS, and then build a complete backup just in case.

Finally: in the unlikely event that you recently broke into my home, duplicated my media drive, and now have a backup I don't know about, please let me know. I won't press charges.

UPDATE: Immediately upon lying down in bed, I realized what happened with the randomly missing files.

While migrating, I saw that the rsync from the master drive was syncing not just (for example) ./music/Bad Religion but also ./music/Music/Bad Religion. Surely, I thought, I had at some point partially duplicated the entire music store within itself. A quick look showed that the artists and albums under music were also under music/Music. I deleted the "duplicate" without a thought and promptly forgot about it until just now.

Today, I noticed a song vanish when I played it. Later, it turned out that it had not vanished. iTunes decided to move it. It moved it from my music library in /Volumes/music to the new-style location of /Volumes/music/Music. It has presumably been doing that silently since the most recent upgrade to iTunes. So, when I deleted the nested Music directory, I deleted, from the master, all files that I'd played since upgrading iTunes most recently.

The Great Infocom Replay: The Witness (body)

by rjbs, created 2014-06-07 15:30

It's been over a month since I last tried to do anything on my still-crawling-along (re)playthrough of all of Infocom's games. The next up, for me, was The Witness. I'm going to be straight with you: I didn't play it.

I made a map, and I got to the game's introduction, and I read all of the manual and feelies. I played a few turns of what could fairly be called "the game." The fact of the matter is that I just could not work up any enthusiasm for it at all. I like murder mysteries, but I like to watch them. I never try to solve them ahead of time. It doesn't interest me in the least.

From Suspect, I knew that's what would be expected of me, and I knew it wouldn't be fun.

So I'm skipping it. I played enough to know I wouldn't have any fun at all, and if I ever write more IF, I won't be writing a mystery, so nevermind, okay?

Next up is Planetfall, which I've played before, but I hope to enjoy it a bit more this time. I had very mixed feelings about it, last time.

I played Ogre! (body)

by rjbs, created 2014-05-31 22:22
last modified 2014-05-31 22:22
tagged with: @markup:md games journal

Steve Jackson is a famous game designer and his company produced big hits like GURPS, Munchkin, and Car Wars. Lesser known, to me, was his first game, Ogre. It's a fairly simple tabletop war game, and it had a long and successful life beginning with its launch as a super cheap pocket game in 1977.

In 2012, Steve Jackson Games launched a Kickstarter campaign for a massive "designer's edition" and I somehow ended up backing it. I don't know what got into my head, but I somehow decided that I really wanted to play this game and that I'd rather buy a 28 pound steamer trunk of a game than a cheap edition off of eBay. My copy arrived about six months ago, and has been waiting to be played ever since then.

Ogre!

Actually, it did get played just once, but the game was me against my then six year old daughter. Although she's got some strategic thinking in her, at the time she was just having fun moving the pieces around in random legal moves. It was hard to judge the game from that.

When my long-running D&D 4E campaign petered out, I suggested that maybe we'd start playing board games instead. I picked a date and declared we'd play Ogre. People seemed interested… but then didn't deliver. No surprise, that's why the D&D game fell apart. Fortunately, I'd intentionally overbooked the evening. My brother-in-law was the sole arrival, and that was just fine. Ogre, after all, is a two-player game.

The idea behind Ogre is that in the grim darkness of the future, there is only war. Or, at least, there's a lot of it, and it's being fought, in part, by gigantic artificially-intelligent cybertanks. What could go wrong??

In the basic scenarios, one player has an army composed of about three dozen infantry and armor unit. The other player has a single massive tank — the titular "Ogre." The ogre's job is to reach and destroy the defender's command post, then escape. The defender's job is to prevent one or both of those things from happening. It is tough!

The basic rules are simple and similar to many other war games. Every unit has an attack strength and a defense strength. The ratio of attack to defense strength determines the odds of victory. All combat is resolved with a single roll of a six-sided die. Attackers can combine their attack strength by making joint attacks. For example, two infantry units (1 ATK each) and a hovercraft (2 ATK) can make a single joint attack at strength 4. They attack the ogre's railgun, which has a defense of 6. The ratio is 4:6, which is rounded down (always in the favor of the defender) to 1:2. The attackers will need a 6 to destroy the gun.

Figuring out what to attack, and with what, is tough. You can swarm the ogre with infantry and do some significant damage, but the ogre's antipersonnel weapons will decimate your troops. You can focus on destroying the ogre's mobility, but you'll take a beating from its weapons while you do so. If you focus on destroying its weapons, it can still move, and that means it can still ram you.

Over the years, many more unit types were added to the game. New maps were created with different kinds of terrain that confer different bonuses or penalties. Different scenarios were devised to changed the goals of the game and the resources available to either side. The big box contains everything, and then some. Just finding a raised surface on which one could play with the entirely assembled set of geomorphic maps is no small challenge.

Ogre map!

I'm not sure when I'll get a chance to play more ogre, but the huge game in its huge box is interesting enough to folks that I'm pretty sure I can get more play out of it on that angle alone. Fortunately, too, it came with a pocket edition very much like the 1977 original. That one, I can drop in my messenger bag and take everywhere. I probably will do that for a while, too — at least until I lose too many pieces.

I went to !!con!! (body)

by rjbs, created 2014-05-23 11:15
tagged with: @markup:md journal

Months ago, Mark Jason Dominus said to me, "Hey, I heard about a conference in New York that's going to just be two days of lightning talks!" I thought it sounded cool and promptly forgot about it. As it grew closer, though, I realized that I'd be able to go, and it sounded pretty fun. Tickets were free, but only about 30 were open to the public. I was very lucky to get one in the first pass. Almost everyone I met at the conference had gotten theirs through the wait list.

(Actually, it wasn't just luck. I felt like a bit of a jerk by interrupting a movie night with Gloria to try and buy the ticket right at 20:00, but it only took about a minute, thankfully. I later learned that all the tickets sold in about that one minute. Yow!)

The conference was !!Con, aka Bangbangcon, and talks were meant to address "what excites us about programming." I thought this was a good topic, and the speakers did a good job sticking to the stuff that excited them, which meant we had a lot of excited speakers, and that's a good thing. The topics ranged broadly, from the history of computing to interesting instructions on Intel CPUs to computer-identified accidental poetry.

The best part of the conference, generally speaking, was the speakers' excitement about their topics. In many cases, the topics were not particularly new to me, but it was fun to see how different speakers' excitement would manifest in their talks. I did make a to-do list of things to try or investigate after the conference, and I hope I follow through with the items on it. First up is probably a nice simple one: implement my own LZ77. From there, maybe I'll go on to the next few algorithms in that family.

The talks were all transcribed. At first, like many other attendees, I thought that there was some very good speech-to-text software being used. Later, I learned that Marabai Knight was serving as our stenographer. I've often wondered about stenography, and Mirabai was happy to answer all my questions and to let me peck at the keys on her stenotype. "How much does this machine cost?" I asked, and she told me that while her stenotype ran several grand, she had a project for open source stenography using commodity hardware. That went on the to-do list, too.

The most difficult part of the conference, for me, was socializing. Out of the hundred-odd attendees, I knew one — Mark — who was only there on the second day. I found it difficult to strike up conversations with a bunch of complete strangers, although I did try. In fact, I had a number of nice conversations, but it was difficult and uncomfortable to get started. I'm not sure whether there's anything to be done about that, but it didn't help that it seemed like half of the conference attendees knew each other already.

This experience really made me think again about YAPC and other conferences that I attend where I already know half the attendees and, even if I don't, am in a privileged position by virtue of my position within the community. Remember, fellow conference veterans: go talk to the new people and make them feel welcome. It's important.

It also reminded me of something of which I'm already quite aware: despite futzing about in other languages and with other tools, almost all the "rep" that I have is within the Perl community. This seems silly. I feel like I could make a lot more friends and contacts by just spending a little more effort interacting with the other projects that I am already touching.

The best meal of the conference was at S'Mac: their Parisienne macaroni and cheese, made with brie, roasted figs, roasted shiitakes, and rosemary. I ate too much of it, but only because it was great. Momofuku milk bar, where I went later, was a big disappointment. Both of these were a "group dinner," which was very nice. I think it's easier to start talking to a bunch of new people when the parameters of interaction are pretty well defined. There were six of us. I think I was the only person in the group who didn't already know everyone else, but it was just fine.

If there's a !!Con in the next year or two, I'll try to go again. I'll probably submit a talk, next time, too.

my life as a pile of stuff (body)

by rjbs, created 2014-05-15 22:17
last modified 2014-05-15 22:19
tagged with: @markup:md journal
I took this photo of my desk the other day:

my desk

I was pretty happy with how well it summed up all my hobby activities. I could probably write a blog post on each of these things and feel okay about it. Here's a breakdown of the junk on my desk.

Role-playing game stuff

Other games

Computer stuff

Random stuff to read

I went to DCBPW! (body)

by rjbs, created 2014-05-06 22:15
last modified 2014-05-06 22:16
tagged with: @markup:md dcbpw journal perl

This past weekend was the DC-Baltimore Perl Workshop in Silver Spring, Maryland, and I was in attendance! The venue was good, and the location was awesome, in downtown Silver Spring. Highlights, for me, included:

  • getting to see my family between conference events
  • Nick Patch's talk on CLDR::Number
  • Philip Hood reintroducing me to pentominoes
  • catching up with Mo Chaudhry, whom I last saw in some southern airport
  • lamb tartare for lunch
  • really excellent roast chicken with fingerlings and kale

I gave the closing talk, and was happy with how it went, which was just a bit of a surprise, give how significantly I rewrote it, repeatedly, from my original plans. I was also pleased to finally get a shirt with the way-cool DCBPW logo on it:

Unfortunately, I vainly requested a large, which I've grown a bit out of again. Getting into my cool eaglecrab shirt is just one more thing to motivate me to get back down to 180.

I look forward to the next DC conference!

The Great Infocom Replay: Suspended (body)

by rjbs, created 2014-04-27 22:13

I sat on the idea of writing this replay entry for a long time, because my replay of Suspended was almost necessarily perfunctory. I have played the game many, many times. Before writing this entry, I sat down to do a run after months of not playing it, and beat the game in ten minutes. (I got a lousy score, but I'm pretty sure that with a picture of the map in front of me, I could probably get a perfect score with a few more tries, from memory.)

Actually, I do have one help: I have a text file with these notes in it:

1 - 4/12
2 - 9/14
FOO MUM BLE BAR KLA CON BOZ TRA

Those notes save me about six turns, but they're really boring turns.

I've played Suspended many times. I'd guess at least a hundred times. I've done all the "AMUSING" stuff suggested in the clues. I've read a disassembly of the machine code to see how it was all put together and what I might have missed. (It's impressive!) I've built crude replicas of the game grid and the custom bits of the game, and I still hope to improve on them. Suspended is almost certainly my favorite computer game ever.

I don't know why.

I like the setting and the conceit of the game. The actor is in suspended animation, with only their consciousness active. They direct robots around an underground complex to solve problems (read: puzzles), but each robot is worthless in one way or another. I always think of them this way: not that each one is good at something, but each one stinks at something else. Poet can't carry the wedge and the cutter at the same time. Iris can't leave her home rooms. Despite that, I like them. Their tiny amount of text gives them enough personality to make them endearing.

I like the challenge of not just solving the game, but solving it over and over to figure out the right path of actions.

What else is there to Suspended, though. I don't know. There are plenty of other games with fun problems and good ideas. Maybe it's that I first played Suspended just before I was ready, so it sat around in the back of my brain as an impossibly hard game for a few years before I tried it again. Maybe some part of my subconscious still views beating Suspended as a rite of passage. My conscious brain doesn't think so, though.

Maybe it's that I've never seen another game that was quite the same. Suspended stands alone. I hope that someday I can get myself in gear and build something like it myself, but I feel like it will be a lot harder than I think. I already think it will be pretty hard.

The next game in the replay for me is The Witness. I was pretty disappointed by Deadline, but I'm hoping that they learned a lot about making a better mystery game in the year between the games. We'll see.

changing the rules to change the gameplay (body)

by rjbs, created 2014-04-26 23:09

I still use The Daily Practice to track the things I'm trying to do reliably. I like it. It helps.

It's got a very simple implied philosophy, which is something like "you should always have every streak active." This is good, because it's simple, and it's not some weird method that you have to accept and internalize. It's a bunch of lines, and you should probably keep them solid.

It's worked well for me for nine months or so, but I'm starting to feel like I'm hitting problems I knew I'd hit from the beginning.

The way the scoring works is that every time you "do" a goal, you get a point. Points add up as long as the streak is alive. If you have to do something once a week, and you do it once a week for a year, you end up with 52 points. If you did it twice a week (even though you didn't have to) you end up with 104. Then, if after you score that 104th point, you miss a week, your'e back to zero points. All gone!

Once you're at zero points, it doesn't get any worse. This means that once you've got a streak going, you're really motivated to keep it going, but once it's broken, it's not worth that much to start it again, unless you can keep it going. Another instance of a long-lived unimportant goal is worth a lot more than a streak-starting instance of something you care about.

You don't have to buy into the idea that points are really important to get value of of TDP, but I've tried to, because I thought it would make me feel more motivated. Unfortunately, I think it's motivated me in some of the wrong ways. To fix it, I wanted to make it more important to restart dead goals, and I've made a first pass at a system to do that.

For a long time, I've been bugging the author of TDP, the excellent and inimitable Jay Shirley, to add a way to see a simpler view of a given task's current status. He added it recently, and I got to work. The idea is this:

  • a live goal is worth its length in days, plus the number of times it got done
  • for every day a goal is dead, it's worth one more negative point than the day before

In other words, on the first day it's dead, you lose 1 point. On the second, you lose 2. On the third, 3. The first ten days of missing a goal look like this:

day  1 -  -1
day  2 -  -3
day  3 -  -6
day  4 - -10
day  5 - -15
day  6 - -21
day  7 - -28
day  8 - -36
day  9 - -45
day 10 - -55

This gets pretty brutal pretty fast. For example, here's my scoreboard as of earlier today:

                 review p5p commits:  562
                  catch up with p5p:  547
   get to RSS reader to 10 or lower:  451
                      drink no soda:  348
                  step on the scale:  332
           close some github issues:  191
                     spin my wheels:  160
           review p5p smoke reports:  111
         review and update perlball:   89
               post a journal entry:   48
  have no overdue todo items in RTM:   24
              no unhealthy snacking:   22
                  read things later:   22
                    read literature:   20
                   read unread mail:   17
            respond to flagged mail:   15
            work on my upload queue:   14
        do a session of code-review:    4
              do a writing exercise: - 28
                    play a new game: - 45
           close an old task in RTM: - 45
                    read humanities: - 66
          work on Code Wars program: - 78
          plan the next RPG session: -120
           email the Code Wars list: -253
            read science/technology: -465
make progress on the Infocom Replay: -820
                              TOTAL: 1057

What does this tell me? My score would go up 78% instantly if I'd just make some progress on my "Great Infocom Replay", which I've ignored horribly since declaring I'd do it. (It's been over a year and I've only played six of the thirty-ish games.) In other words: if I make something a goal, I should do it, even if I'm not doing it as frequently as I wanted. If I fall off the wagon, I need to get back on, even if I can't stay on for long.

I'd also wanted to change the result of missing a day. As I said, missing day 1000 of a 999-day streak drops you back to zero. Right now, I get sorely tempted to use "vacation days" as mulligans if I can remotely justify it. That is: the scoring model is driving me to game the system rather than live within its rules. This is my problem and not TDP's, but I'd like to address it. My idea was that each day a goal was dead, I'd lose a fraction of its point. Maybe half, maybe a quarter. This would add up quickly. For example, given that 1000 point streak, it would look like this:

day  1 - 500
day  2 - 250
day  3 - 125
day  4 -  62
day  5 -  31
day  6 -  15
day  7 -   7
day  8 -   3
day  9 -   1
day 10 -   0

Unfortunately, this isn't quite possible using only TDP's available-to-me data. I could implement it if I stored more of my own data locally, but I think I'll put that off for now.

The problem is that I can only see the length of the current streak. To implement the "I'm bleading points" system, I'd need to look before the current streak to see how many points were left over from that. I think I'll be fine without it for now.

I've published the code to compute a list like the one above, in case you use TDP and want to be graded harshly, too.

I still hate email (body)

by rjbs, created 2014-04-18 23:15
tagged with: @markup:md email journal

Last week, Yahoo! changed their DMARC policy. Since that event, I have grown to loathe email even more.

You can find a domain's DMARC policy, if any, by checking DNS:

~$ dig -t txt _dmarc.yahoo.com | grep TXT
;_dmarc.yahoo.com.    IN  TXT
_dmarc.yahoo.com. 1793  IN  TXT "v=DMARC1\; p=reject\; sp=none\; pct=100\;
rua=mailto:dmarc-yahoo-rua@yahoo-inc.com, mailto:dmarc_y_rua@yahoo.com\;"

DMARC gives instructions on how to check whether a message is really from a domain, and how to deal with messages that aren't. First you check a message's DKIM signature and SPF results, then you use the DMARC policy to decide what to do.

DKIM is a kind of digital signature. For example, here's one from a message I sent myself recently:

DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=subject:from
  :to:date:mime-version:content-type:content-transfer-encoding
  :message-id;
  s=sasl; bh=Thy1S1zI40m42mTl74YTuMseXt4=; b=W/XF275Z
  Es+/l8eC+TeiRiBerAmSbYV7zFTTQfxP4dPtws7xVo3bPxb+E1mZ4dQXbzv6b92N
  QREJ9lOSeET42toRjh37uDN8OhPZRqK37TfSSy2yplDC/1cpswW1Girg3FoUZ03q
  FVRtfzsJNABmAhg8tP5ajrCVaAFvUpHuig8=

The h=... stuff says which headers are part of the message. To verify the signature, look look up the public key (found with dig -t txt sasl._domainkey.pobox.com) and verify the signature against the content of the body and selected headers.

Without DMARC, DKIM can tell you that there's a valid signature, but not why or what to do about it. DMARC lets you say "if there's no valid signature, consider the message suspect, and please tell me about such messages." DMARC is designed to be used on "transactional email," like receipts and order status updates, on newsletters, or on other kinds of mail from an organization to a recipient. It's a reasonable way to attack phishing, because phishers won't be able to produce a valid DKIM signature without your private key. Even if they had it, it will be much more expensive to send out mail that requires a digital signature.

DMARC also lets you give the instruction to reject mail that doesn't authenticate. This is useful if you're a bank and you're really sure that you're getting DKIM right.

Last week, Yahoo! changed their DMARC policy to "reject when DKIM doesn't match." This is a big problem, because they made this change on yahoo.com addresses. DMARC is applied only and always to whatever address is in the From header of an email message. Addresses at yahoo.com are used not just by Yahoo!'s internal services, but also by end users, who can get such addresses by signing up for Yahoo! Mail. Then they can do things like join discussion mailing lists.

Mailing lists will almost always change the headers of the message, and changing the body is quite common, too. Either of these will break the DKIM signature. That means that if someone with a Yahoo! Mail account sends a message to your mailing list, quite a lot of the subscribers will immediately bounce the message. (Specifically, those subscribers whose mail servers respect DMARC will bounce.)

You can't just strip the DKIM signature to prevent there from being an invalid one. The policy requires a valid signature — or a valid SPF record. SPF records are designed to say which IP addresses may send mail for a domain. Since a mailing list will be sending from the list server's IP and not the original sender's IP, that fails too. One email expert described the situation as "Yahoo! has declared war on mailing lists." It's pretty accurate.

The most common solution that's being put into play is From header rewriting. Mailing lists are changing their From headers, so that when you used to see:

From: "Xavier Ample" <xample@example.com>

You'll now see:

From: "Xavier Ample via Fun List" <funlist@heaven.af.mil>

Of course, this screws with replies, so Reply-To needs munging, too. It screws with lots of stuff, though, and it makes everyone angry — and rightfully so, I think. Certainly, I've had to spend quite a lot of time trying to deal with the fallout of this decision. DMARC just isn't good for individual mail accounts. I worry that some of the mechanisms that are being introduced to deal with this are going to create a much less open system for email exchange. This isn't a good thing! Email has a lot of problems, but being a network that one can join without permission is a good thing.

DMARC does a fair job at the thing for which it was intended, but it makes everything else much trickier. This is the nature of many email "improvements," which were added without careful consideration. Or, often, with careful consideration but not much concern. It's understandable. Email seems impossible to replace and impossible to really fix, so we bodge it over and over.

I mentioned SPF, above. SPF also broke parts of the pre-existing email system. Specifically, forwarding. SPF lets you say "only the machines that are MXes for example.com may send mail with an SMTP sender at 'example.com'". This broke forwarding servers. That is, imagine that you've got mydomain.com and its MX sends mail on to your private host myhost.mydomain.com. On that last hop, mx.mydomain.com might be sending you mail FROM an address someone@example.com, while the SPF records for example.com only allow mx.example.com to send such mail.

A second standard was introduced to fix this problem: SRS. With SRS, mx.mydomain.com would be required to rewrite the address to something like SRS0=xyz=abc=example.com=someone@srs.mydomain.com. There are just a holy ton of problems with this setup, but I'll stick to the one that I had to fight with today.

This is a valid email address for use in SMTP interchange:

"your \"best\" friend"@example.com

It's not often used, and it's basically totally awful, but it exists, it's legal, and you should generally try to cope with it if you're doing something as wide-ranging in effect as SRS. Sadly, the reference implementation of SRS totally drops the ball, rewriting to:

SRS0=xyz=abc=example.com="your \"best\" friend"@srs.example.com

This is not a legal address, to say the least.

If anybody needs to reach me, just send a fax.

I bought a Wii U! (body)

by rjbs, created 2014-04-10 23:11
last modified 2014-04-10 23:11
tagged with: @markup:md journal videogame wii

On Tuesday, Gloria and I celebrated our 14th anniversary! We went out to Tulum (yum!) and Vegan Treats (yum!) and it wasn't quite late enough that we wanted to go pick up the kid, so we decided to go walk around Target. I said I'd been thinking about buying a Wii U, and Gloria said I should. (Or maybe she just didn't say "I strongly object." I'm not splitting hairs, here.)

I bought one. Today, we went looking for some games to use the Target credit that we got by buying the game toward this week's buy-2-get-1 promotion on video games. In the end, Gloria ended up driving to Quakertown to buy video games for me while I sat at home poking at security code. I owe her big time — nothing new there!

So, now I've played a handful of Wii U games, done a Wii-to-Wii-U transfer, used the Wii eShop, and tried out a few of the non-game features on the Wii U. This is my preliminary report.

I bought the Wii U because I wanted to play Nintendo games. I have almost no interest in playing non-Nintendo games on it. (I kind of want to play ZombiU, though.) Eventually, there were enough games for the Wii U from Nintendo that I thought it would be worth the investment. We now own:

  • Super Mario Bros. Wii U
  • Super Mario 3-D World
  • NES Remix
  • Super Luigi Bros. Wii U ☺
  • Pikmin 3
  • Donkey Kong Country: Tropical Freeze
  • NintendoLand
  • Scribblenauts Unmasked (not Nintendo, but I really wanted it)
  • Scribblenauts Unlimited (which I got because it was effectively free)

I've played the first three, although none of them very much. They are all excellent in the way that I expect from Nintendo. It amazes me how they are able to produce such consistently great games! The only major franchise Nintendo game I remember disliking in the last ten years is Metroid: The Other M, which was outsourced. (By the way, I loathed that game!)

The big problem so far is the controller. The Wii U gamepad is way cool, but as a controller it's just a little weird. I think I'm very used to my hands being at a bit of an angle when playing games, and the gamepad makes me hold them straight. I'm not sure whether the distance between them is really an issue.

On the other hand, I can play those games with the Wiimote, too. It's not bad, especially NES Remix. I'm left feeling, though, that the Wii U gamepad is a poor replacement for a "normal" gamepad, and the Wiimote is a poor replacement for an NES controller. I think I'll probably much prefer playing both the Mario games with the Wii U "pro" controller, which is much more like an Xbox or PS3 controller. As for NES Remix, I think I'll stick with the Wiimote, but I'd like something a bit more substantial. The height:width ratio on the Wiimote isn't quite right, and I feel like I'm holding the thing the wrong way. The Wii U menu doesn't help with that: it assumes that you can use the cross pad and buttons like you're holding the remote vertically, even when you're deep in playing a game that uses it horizontally.

Still, I bought the Wii U for the games, and so far they're just great. I expect that trend to continue, so I'm sure I'll be delighted with the purchase over time.

Finally, there's the matter of everything that is neither the hardware nor the games. For example, the menu system, the social network, the system setup, and so on. In short: it's all bizarre.

There's this pervasive idea in Wii U that everybody who plays Wii U is your buddy, and you want them to post sticky notes on your game. When you reach a new level in any game, you might see notes from other players, including typed or hand-drawn notes. These range from the relevant to the insipid to the bizarre. They can be turned off, but they're weird. Weirder, these occur on the main screen. Instead of a menu like the Wii had, showing me all my options, the default is to show a swarming mass of Mii avatars who chatter amongst themselves about nothing much. Can you imagine if you were using Windows, and little random speech bubbles popped up here and there talking about cool new programs that were going to be released soon? It's just weird.

On the other hand, it seems like shutting these off shuts off some kind of avenue to receiving news and advance information. I'll probably do it anyway.

What would be cool, though, would be to get this chatter from just my actual circle of friends. I'd love to be able to use the Wii main menu and "Miiverse" as a sort of bulletin board with friends. With the whole Internet, though? Not so much.

I haven't yet set up any friendships, but I will. I'm looking forward to a Nintendo gaming experience where I don't need to tell my friends a 16 digit code to be befriended. My assumption is that Nintendo is still several years behind the curve, but hopefully they're at last on the acceptable side of it. The Wii code experience was indefensible.

My goal is to play through Super Mario Bros. Wii U first, or at least first-ish. After that, Mario 3-D Land. I'm not too worried about playing in order, though. Everything looks good. I mostly bought Scribblenauts: Unmasked to see whether I can stump it. My daughter demanded that I start it up to see if it could make Raven, and was delighted to see that it could. I'm looking forward to seeing whether it can make Doctor Phosphorus.

prev page
next page
page 1 of 82
2049 entries, 25 per page