Recording Screencasts with Emacs

This article is part of the “Meta Advent 2019” series. I’ve committed to writing a new blog post here every day until Christmas.Yesterday I was reminded of one of my favourite aspects of blogging - you share some knowledge, but you also gain a lot of knowledge in return. To be more specific - severa...

Advent 2019 part 7, Do that doto

This post is part of Advent of Parens 2019, my attempt to publish one blog post a day during the 24 days of the advent.doto is a bit of an oddball in the Clojure repertoire, because Clojure is a functional language that emphasizes pure functions and immutabilty, and doto only makes sense when dealin...

Ruby, Where do We Go Now?

This article is part of the “Meta Advent 2019” series. I’ve committed to writing a new blog post here every day until Christmas.A while ago I wrote an article, where I made the case Ruby seems to have lost its way. I thought I had exhausted the topic, but a few of the recent developments around the ...

Advent 2019 part 5, Clojure in the shell

This post is part of Advent of Parens 2019, my attempt to publish one blog post a day during the 24 days of the advent.I already showed you netcat, and how it combines perfectly with socket REPLs. But what if all you have is an nREPL connection? Then you use rep$ rep '(clojure.tools.namespace.repl/r...

Are monads practical?

Bruno Ribeiro asked a great question about the practical uses of monads. Are they useful? Why are they used so much in Haskell? In this episode, we briefly go over the history of monads in Haskell and how they allow you to do imperative programming in a pure functional language. Are monads practica...

MECCA Pix

So now we've got a nice raster image of our pixel art. How do we import it into our app? This is the job of MECCA Pix.First we need to be able to upload a file. I'll provide one here as a default, but this is a real upload form; feel free to replace it with a (small, low-res!) image of your own:...

Advent 2019 part 4, A useful idiom

This post is part of Advent of Parens 2019, my attempt to publish one blog post a day during the 24 days of the advent.Here’s a little Clojure idiom that never fails to bring me joy.(into {} (map (juxt key val)) m) The keen observer may notice this does exactly nothing. It’s a complicated way of tak...

Documenting nREPL Middleware APIs

This article is part of the “Meta Advent 2019” series. I’ve committed to writing a new blog post here every day until Christmas.One common problem with third-party nREPL middleware is that often they aren’t (properly) documented and you have to dig into the middleware code to figure out how to use i...

MECCA ROMs

Confession: I used an SNES emulator to extract the image data in yesterday's post. While this is a step up from searching for sprite sheets online (my previous method), how would I go about ripping the graphics straight from the game? This is the domain of MECCA ROMs.Are we making an emulator yet? W...