Trimming the Quill: Some Development Notes

I've been continuing to put a lot of time into Quill, a build system for Tcl software projects (and so not into my Clojure project).I've gotten two significant pieces of feedback about Quill so far. One fellow mentioned that he'd like to try it, but Quill requires that you be using TCL v8.6, and he's still using TCL v8.5 (which is not at all unreasonable). Consequently, my focus for Quill 0.2.0 is making Quill work with whatever version of TCL you happen to have installed.Second, I do … [Read more...]

Adventures in Clojure: The Fact Base


When you're writing a game based around a game world of some kind, be it a text adventure like Zork, an action adventure like The Legend of Zelda, or any number of other games, there's stuff your game needs to remember. A lot of it has to do with the player: where is he, how much health does he have, does he have the Iron Mitts of Cooking that let him invade and conquer the Iron Chef Temple of Cuisine?But on top that, there are a lot of just plain facts to remember. Where has he been? … [Read more...]

Quill: A Build System for TCL/TK


I'm taking a break from posting about Clojure this week, because a few weeks ago my study of Clojure inspired me to work on a non-Clojure project. That sounds odd, I suppose, but it's often the way: in studying some programming language I'm not familiar with, I get ideas for work in areas I am familiar with.In this case the inspiration came from the Leiningen build tool, which I gushed about a couple of months ago. To recap, a budding Clojure programmer need only download Leiningen; and it … [Read more...]

Adventures in Clojure: Nearly Constant Data


As I noted last week, the Clojure way is to keep immutable (unchanging) data separate from the mutable data. Thus, you keep the network of rooms distinct from the data structure that indicates where the player and other things are at the present time. The latter changes while the game runs, and the former doesn't.At least, that's the theory. As I showed a couple of weeks ago, you can define the world map as a single, immutable data structure, and never change it thereafter. But there are … [Read more...]

Adventures in Clojure: Saving the Day


See the previous installment here.It's a big part of the philosophy of Clojure programming that you keep mutable state (data that can change) separate from immutable state (data that cannot change). There are a number of good reasons for doing this; the one that the Clojure books usually trot out is that it makes supporting concurrency easier because you don't need to synchronize reads and writes to data that never changes.Concurrency isn't all that important to a single-user text … [Read more...]

Embrace the Cloud—But Not Too Tightly

Sunset clouds over beach

It's summer time, and I'm busy with family things. Thomas Aquinas will return in a week or two.We hear a lot about the "Cloud" these days, and I suspect many readers have only a cloudy idea of what the Cloud is.What the Cloud is, is computer hardware that you don't own that you access over the 'net to do things and store your stuff.The Cloud is incredibly useful; it's a treat to be able to move from my computer to my phone to a friend's computer, and still access my stuff.  But … [Read more...]

Adventures in Clojure: The World is Mine!


So I'm, in a rather desultory fashion, putting together a simple text adventure in the Clojure programming language. (You can find the code at GitHub, should you be interested.)The first thing you need in a text adventure game is a world to move around in. The world usually consists of a collection of rooms. Each room can have any number of links to other rooms; each link is in a particular direction. Directions include the four cardinal directions (north, south, east, and west) and … [Read more...]

Tools for Learning Clojure, Part V: A Game!


Previous Parts: I, II, III, IV.I've always maintained that the only way to really learn a programming language is to code up some kind of project using it: not something out of a book, but something of my own, something that's fun. For many years, my project of choice was the old fashioned text adventure. I got started with computers in the mid-1970's, when we all we had were dumb-terminals and today's beautifully 3-D rendered games were not even a dream. Text was king; and text adventure … [Read more...]

Tools for Learning Clojure, Part IV: GitHub

GitHub Octocat

In Part I, I talked about Clojure and the need for a convenient "REPL": a piece of software that lets you type input at the language engine and see its responses. In Part II I talked about Leiningen, a very cool tool that not only gives you a good REPL but also automates many other tedious aspects of development. In Part III I talked about a simple IDE for Clojure called Nightcode.And the final piece in the puzzle is GitHub.GitHub is a website that provides configuration management … [Read more...]