Issue 0x05 - \n\r\n\r


Greetings, adventurers!

So… it’s March apparently.

Time flies, huh?

To kick things off, GuildMUD is moving along slowly, but surely—special thanks to TMCG member @rogersm for kicking so much ass on it lately. If you’d like to contribute, please feel free to open an issue or a pull request on GitHub. Prior knowledge of the C programming language is not required, just a willingness to learn something new!

In other news, I am planning on dropping a small Code Jam (witty name to be determined) in the next newsletter. While the actual specifics are still being worked out, I am on the hunt for an interesting prize or two to award the winner(s) of said jam. If you have any ideas (or would like be a sponsor), please let me know by responding to this email or pinging me on Slack. Also, participation will be limited to TMCG members, so if you’d like to take part please join us on Slack!

And, finally, I’m always on the look out for new content for this newsletter. If you have something interesting to share with the community, or would like to write an article for our official blog, please message me on Slack or respond directly to this email. I would love to hear from you!

That’s it! Happy March everybody!

- Zach


> notes

Off the Cliff ep4: A Moving Experience

Movement in MUDs is not something people thought about all that much. There was the occasional full-coordinate based system, but mostly it was a lot of “north” and “enter door” back in the 1990s…

Theft, Waste, and Puzzles: How I Design

I hoard information but I don’t see the point in keeping it from others, so I’m going to elucidate a bit on the grand secret of my design process. I try to get this sort of thing out in dev blogs and…

> open source

Automerge

Automerge is a JSON-like data structure that can be modified concurrently by different users, and merged again automatically.

slime

You can’t go a day in TMCG without a conversation about Entity-Component-Systems. Slime is an ECS library for Elm that provides an easy way to build a full game, using common Entity-Component-System architecture.

SLIME

SLIME—not that one ☝️—is the Superior Lisp Interaction Mode for Emacs. SLIME extends Emacs with support for interactive programming in Common Lisp (another common topic around TMCG).

Hide

Inspired by a thought experiment at TMCG, Hide is a quick project by TMCG member @kazan that can be used to find messages hidden in text indentation.

Axolemma

Created by TMCG member @sean.o, Axolemma is a tool for procedurally generating RanvierMUD areas.

> inventory

Iosevka

Don’t ever let anybody tell you that your text editor has to be ugly. While there are a lot of bells and whistles that can be added, the typeface is one of the first things worth tuning. Iosevka is a slender typeface designed for code, from code.

Hack

A second contender in the “awesome typeface for coders” category, Hack is another popular typeface designed for source code.

SvgBobRus

Convert ASCII diagram scribbles into happy little SVGs. I have no more words for this one. It’s just straight awesome.

> oedit tests

Automatic Visual Diffing with Puppeteer

This is a novel approach to testing that takes a screenshot of a web application and compares it to the expected response. There may not be much practical value in it, but damn if it isn’t interesting!

Realizing Quality Improvement through Test Driven Development

Written exactly 10 years ago, this is a fascinating study about the effects of TDD on quality and efficiency. Spoiler alert: TDD decreases defects and developer efficiency.

The Ethics of Test-Drive Development: A Thread

TMCG member @trevoke is… wildly bullish about test-driven development (rightfully so, in my personal opinion). Here is an interesting Twitter thread about the ethics and professionality of TDD.

> train int

The OSDev Wiki

Look… there’s no practical reason to create your own operating system. But since when did we care about practicality? The OSDev Wiki is the authoritative source for accomplishing exactly that task (something I am currently trying and failing at myself).

Rails Hurts

The goal of the “Rails Hurts” project is to discuss the problems of good software design avoiding academic terminology as much as possible. It’s not for Rails Ninjas, Rockstars, and other characters who are completely comfortable with “The Rails Way.”

The Cost of Forsaking C

The C programming language is not trendy. The most recent edition of the canonical C text (the excitingly named The C Programming Language) was published in 1988. This article makes some great points about the practicality of learning C, the most interesting of which is that C helps you think like a computer.

Three Ways to Think About Value

This is an interesting article about measuring and quantifying value in a product development environment. I know. It’s not technically about software development, but as so many of us are professional developers there is some interesting information here.

> quaff elixir

Elixir School

So, I drank the proverbial Kool-Aid and am slowly learning Elixir. The fact that it is syntactically similar to Ruby helps a bunch, but what helps even more is this site. It lays everything out in a way that I personally love to learn.

WebSocket

An exploration into a stand-alone library for Plug applications to easily adopt WebSockets.

What's all this fuss about Erlang?

What’s all the fuss about Erlang? In this website exclusive, Joe Armstrong tells us.

Flow

Computational parallel flows on top of GenStage

The Lasp Programming System

Lasp is a programming system for building large-scale, eventually consistent, distributed applications. Lasp provides a comprehensive approach through layered components addressing the problems of cluster membership, data synchronization, message ordering, and consistency management.

Shape Up With Elixir Protocols

In Elixir all functions are namespaced. That means when you write a function, they have to be defined inside of a module. This is good because it means we can easily define the same function, but implement it differently for different modules.

> cast 'inspiration'

On Set Design

This is a great article about set design in tabletop gaming. It offers unique methods for describing rooms and loot in a way that encourages speed, flexibility, and creativity, allowing for constant engagement with players.

A Sandbox to Play In

Game design is, by far, one of the most exciting aspects of MUD development, and it all starts with the game world. The current “accepted best definition” of a game universe for persistent worlds is “sandbox.” This means a malleable environment with lots of toys which players can then use to make whatever they want to out of the environment–as much as the game allows, at any rate.

Designing Side Quests? Study These 7 Games

Side quests can make or break your game. Here, notable developers suggest some games that do side quests notably well, and Chris Avellone offers guidelines.

> quit

Alas, all good things must come to an end.

The MUD Coders Guild is a community for people with a passion for creating text-based games. Join us on Slack!