Your Own Roguelike

Are you into old games? Really old games? How about a dungeon-crawling game originally developed in 1980?

That game is Rogue. In Rogue you play a simple @ sign making your way through a procedurally generated dungeon made up of ASCII characters. Monsters are represented by capital letters. Death is frequent and permanent.

I never played the original Rogue, but I did spend some time playing other roguelike games such as NetHack and Angband. Even if you’ve never heard of those, I’ll bet you have heard of a more modern, mostly roguelike game called Diablo. I don’t even want to know how much time I spent playing that series of games.

In addition to playing games, I also still dabble in game development. One day I thought “Maybe I could make my own roguelike…”. That lead me to Roguelike Tutorials. Every summer the RoguelikeDev community on Reddit goes through the tutorial over the course of several weeks.

This tutorial uses Python and the TCOD library to develop a text-based, ASCII-art game. I’m a big fan of Python so this is great. But, there other game engines available that would let you develop something a little more modern.

Enter Godot, a free, open-source game engine. I’ve made a few half-hearted attempts to learn and use Godot over the past few years, but my never really stuck with it. I’ve had this link to the excellent Yet Another Roguelike Tutorial by SelinaDev open in a tab in Safari for at least 6 months.

And that’s the reason for this post. I leave interesting sites open in a tab for ages sometimes. I should probably use some kind of “read it later” site like Pocket to keep track of these sites, but for whatever reason I never really liked using any of those services.

If I find something so interesting that I leave it open in a tab, I’ll post about it here. After all what is a blog other than a series of posts about things that I find interesting?

Strange Loop Day 2

Day two started off with your choice of talks.

Ectype – Bringing Type Safety (and more!) to Vanilla JavaScript

I started with Holly Wu talking about a new system for making JavaScript type safe.

Ectype is a library and type checker that doesn’t require a build system of some other pre-compile step. Interesting stuff if you’re not into TypeScript.

The Economics of Programming Languages

Evan Czaplicki, creator of Elm, spoke to a packed room. I stood against the wall since there wasn’t an empty seat.

As the title says, he talked about the economics of creating your own language as opposed to languages like Swift and Go that are sponsored by a company. It’s tough to make a living doing your own thing.

A Long Strange Loop

Alex Miller created Strange Loop on October 22, 2009. He named it after a book that was sitting on his nightstand.

Alex talked about the origins of the conference and covered stats like the rise in attendance, the number of talks submitted, and some numbers about diversity.

There was an In Memoriam section mentioning three former speakers that have passed away.

Finally, Alex talked about why he’s ending the conference. It has achieved every goal he set for it. It’s getting harder to make sure the conference makes enough money to cover fixed costs.

He doesn’t want anyone else to take it over since the feeling of the conference is based on his beliefs, but he encouraged anyone who wants to start a conference to do their own thing.

I can’t believe this is the last Strange Loop. There’s no other conference like this.

Making Hard Things Easy

Julia Evans cheered us up with her wit and drawings.

She covered Bash, HTTP, SQL, and DNS. She’s great at finding fun ways to explain complex topics. Here’s her list of tricks for explaining hard things:

She followed this up with a list stereotypical people who take care of h

Drawing Comics at Work

Randall Munroe was the perfect ending for Strange Loop. He gave an interesting look back at how he went from NASA to web comics. It all started with this.

That comic got picked up by BoingBoing and suddenly everybody wanted a copy. He talked about several more comics, including my all time favorite:

Not everyone is nice on the internet. Do your own thing and don’t feed the trolls.

Strange Loop Party

The City Museum in St Louis is one of a kind.

The front has a variety of walkways, crawl spaces, and slides. On the roof there’s a Ferris wheel and a school bus hanging precariously off the corner of the building.

Unfortunately it started raining right after I got here so I listened to the band for a bit,

decided I was too old for the 3-story slide,

saw some interesting art,

wandered around the rest of the inside, and headed back to the hotel.

Strange Loop Day 1

How to Build a Meaningful Career

Taylor Poindexter and Scott Hanselman kicked things off with an opening keynote filled with thoughts and ideas about career building.

They’re both great speakers. They transitioned between sharing the stage and taking turns at center stage several times. The talk was a lot of fun.

Playing with Engineering

Next, AnnMarie Thomas gave her keynote about play. She runs a place called the Playful Learning Lab which sounds amazing. Learn by building fun things.

My biggest takeaway was “Play is about process, not about outcome.”

Without Open Data, There is no Ethical Machine Learning

Keynotes are done. Time for some tech. I started with Erin Mikail Staples talk about Open Data.

Maybe scraping all of Reddit and Twitter isn’t the best way to build an AI?

President Obama signed an executive order stating that government data should be open and accessible. Unfortunately, releasing data in an open format takes funds and that funding has been disappearing since he left office.

Programming Distributed Systems

Mae Milano’s talk on distributed systems was so good. It was definitely the most technical talk I saw today.

She was a little soft spoken, but very smart and had some great one-liners. The audience favorite was:

The speed of light is pretty slow — around 4 inches per clock cycle.

Mae Milano

And this explains why global distributed systems are so hard to build.

I was really impressed by MixT, a DSL for writing transactions to guarantee consistency across multiple databases.

Oatmeal is Cheap: A Fundamental Theorem for Procedural Generators

Indie game developer and university student Younès Rabii shared mathematical formula for creating procedurally generated art.

He built an interactive graph showing the three properties of procedurally generated art. Adjusting the graph in real-time showed the effects. A great way to demonstrate the math.

Software & The Game of Go

I was a few minutes late to David Nolen’s talk so maybe I missed the part about software.

It was a great overview of the history and rules of Go. I’ve played in the past, but never had much luck. It’s much harder than it looks.

He ended with the ten rules above which are good for many thibgs beyond Go.

Designing Dope Distributed Systems for Outer Space with High-Fidelity Simulation

I finished the day learning about simulation testing from Toby Bell.

He and his team are building software for a pair of satellites that will orbit the Earth every 90 minutes and line up to take pictures of the sun’s corona.

The two satellites will line up 40 meters apart, the satellite closer to the sun has optics, the other captures the image. They effectively form a 40 meter long camera system.

When your software is running in space, effective testing on earth is obviously very important.

Day 1 Done

And with that day one is done. Time for the after party.

Strange Loop Day 0

I’m in St Louis for a few days for the last ever Strange Loop Conference. I attended back in 2019, but skipped the last few years due to the plague. When I heard this was the last ever Strange Loop I knew I had to come back.

Part of what makes this conference so special is the venue. Union Station is a great hotel and the party at the City Museum is awesome. Here are a few example pictures in and around Union Station:

The hotel lobby, no filter.
Outside my first-floor room there’s a live band and pyrotechnics.
That water is actually a koi pond. I wonder what the fish think about the pyro?
Around the corner there’s a giant Ferris Wheel, of course.

The conference kicks off tomorrow morning at 9:30 AM so I better start getting my schedule figured out. I’ll post more pictures tomorrow, including the City Museum.

The MacBook Pro

Apple has really put the “Pro” back in MacBook Pro. Ars Technica says “Yep, it’s what you’ve been waiting for”. That looks to be true.

I guess some might say I’m an Apple fanboy. I have an iPhone, iPad, Apple Watch, Apple TV, etc. Now that I’m so deep in the ecosystem it just makes sense to stick with it.

I bought 13-inch M1 MacBook Pro a year ago when they were announced. I was immediately impressed. It’s the fastest computer I’ve ever owned, the battery lasts all day, and it seems like the fan never even turns on.

There are a few things I’m not crazy about. I never use the touch bar. I don’t look at the keyboard while I type, so I don’t even think about it. I would like a little more screen real estate. The M1 is still plenty fast, but faster is always better.

The lack of ports doesn’t bother me. I rarely plug in anything other than the charging cable. On my old MacBook Pro I did occasionally use the SD Card reader, and I’ve even used HDMI to connect to TV.

So of course I ordered a 14-inch MacBook Pro with the M1 Pro. The good news is I can get $880 for my 1-year-old 13-inch M1. Combine that with 3% cash back on the Apple Card (of course) and the price tag doesn’t look so bad.

I won’t receive it until end of November, early December. Once it arrives I’ll post more details about how it compares to the M1. And decide if it was really worth it or I just like having the latest and greatest.

Foundation

I’m really enjoying the new Foundation series on Apple TV+. Here’s the trailer if you haven’t seen it.

I read the books years ago and listened to the audiobook of Foundation earlier this year. As I started watching the series I found myself trying to compare it to the book which was a mistake.

The series is based on the books, but differs in some pretty significant ways. For one thing, the future that Asimov’s books describe seems to be made up entirely of white males. In the series both Gaal Dornick and Salvor Hardin are played by young black women. A much needed change.

The special effects are very well done. I don’t remember especially vivid descriptions of space travel in the books, but the series does a great job. I also like the fact that space travel takes time. The ships look amazing, but they aren’t magical.

Readers of the books know that just as you get comfortable with a set of characters the story jumps forward and introduces a new cast. This happens between episodes 2 and 3 of the new series and it was a little jarring.

Some are already calling this the next Game of Thrones, but I don’t think that will be the case. I hope it makes it to eight seasons, but it seems like things come and go quickly in the streaming world.

It’s a smart series, very well done, and updated for modern times. I’m looking forward to future episodes.

iPadOS 15

Of course I updated to iPadOS 15 as soon as I could. I don’t run beta versions anymore, but since I don’t use my iPad for anything critical, I’m not afraid of release day updates.

The way multitasking works now is great. Discovering and remembering the multitasking gestures before was next to impossible. I can’t believe it took this long to add a tiny menu to the top of every app.

Reading and Writing

It’s nice having the App Library on iPad now. I only use a handful of apps on a daily basis. It’s nice having all of the infrequently used apps available, but out of the way. This should also help make room for the new widgets.

Speaking of widgets, I’m not currently using any. I’m not sure I really see the point. Maybe they just don’t fit my iPad usage patterns. I spend most of my time catching up on news, reading books, writing a bit, and playing casual games. I’m not sure where widgets fit into that.

I’m still getting used to the changes to Safari. The new extensions UI is great. I was able to install 1Password with just a few taps. The new rounded tabs are growing on me, but I still think they look more like buttons than tabs.

The best new features, in my opinion, are additional privacy protections in Safari and Mail. It seems like Apple is continuing to focus on online privacy. Anything that keeps advertisers from tracking me across the web makes me happy. I understand that content creators want to get paid, but you can still show ads without tracking.

Crafting Interpreters

I’ve been working my way through Crafting Interpreters by Robert Nystrom for the past few days. It’s an excellent book about creating your own programming language.

I was already familiar with Nystrom’s previous book Game Programming Patterns. A great book on design patterns, even if you’re not a game programmer.

Crafting Interpreters covers a new object-oriented scripting language called Lox. You’ll first implement a tree-walk interpreter in Java and then create a bytecode virtual machine in C.

I probably won’t ever directly use these skills in my day job, but gaining a deeper understanding of interpreters and virtual machines can’t hurt. Especially considering I split my time between the Ruby interpreter and Java VM.

Almost as interesting as the book itself is the way he wrote it using a combination of Markdown for prose and hand-drawn diagrams. More details are in his blog post Crafting “Crafting Interpreters”.

If the book sounds interesting to you, you can read it online for free at the link above. After reading the first few chapters onscreen, I bought a print copy. I like having the book open on my desk while writing code.

The Matrix Resurrections

Oh my god. I realize this is two Matrix posts in a row, but this trailer looks amazing!

In theaters and HBO Max on December 22. That makes me even happier. I really want to see this, but I’m still not ready to step back into a theater. I honestly may never be.