Common Lisp Scripts

As part of my project to learn common lisp, or at least write more common lisp as part of my day to day work and life, I've This is a total rip off of this blog post, with a few minor changes: I hacked some makefile goodness so that it will automatically create binaries for all .lisp files, and means that you can drop a script in the directory and not have to edit the makefile to get the magic to happen.…

Keep reading

Common Lisp Progress

The backstory: I'm trying to learn Common Lisp. It's sort of an arcane programming language with a few aspects that I rather like, and I'm viewing this as an exercise to generalize my programming experience/knowledge. I've written some common lisp over the years, mostly because I use stumpwm, but I've been struggling to find a good project to start on my own or hack on an existing project. A few weekends ago, I started hacking on coleslaw, which is a static site generator written in common lisp.…

Keep reading

Learning Problems

Learning how to make computer software is hard. Not fundamentally hard: lots of people can do it, and even more people do things that are functionally equivalent to programming though they wouldn't think of it as such. But teaching people how to write good computer software is a challenge, and one that I'm generally interested in exploring more. For a long time, I've been interested in this problem from the outside: I didn't really know how to program in any meaningful sort of way and I was interested in deconstructing the process of making software.…

Keep reading

Documentation Inheritance

I'm interested in using metaphors and methods from programming and engineering to make documentation better. There are some obvious elements that are ripe for stealing in terms of process (scrum, iteration, etc.) as well as tooling (issue tracking, version control.) As I've continued to explore the connections and metaphors have become less obvious, but remain very helpful. Recently I've been thinking about and using the idea of inheritance to help address content duplication issues.…

Keep reading

Rambling about a Bug

I spent some time yesterday evening dealing with a bug in some code I wrote/maintain, and I thought it would be a good exercise to just talk about the issue, and approaches problem solving. This is both an effort to demystify the act of programming and debugging and a brainstorming exercise. I explained a bunch of the background in an external page, to make the content a bit more accessible.…

Keep reading

Write Sane Software

a checklist There's a difference between software that works, software that's brilliant, software that's maintainable, and software that's good. This is post that begins to enumerate the kinds of things that you can do as you write software to help make it sane and possibly good. This isn't about computer science, or really even about engineering principals. We all have a sense of what makes a physical object (furniture, buildings, electronics) feel like they are well made.…

Keep reading

Python Concurrency Rant

What and Why Concurrency is the term we use to think about operations that can happen at the same time. A computer program is just a list of operations that have some sort of ordering. If you run those operation in the order the programmer wrote them in, and the programmer wrote the right code, everything should work fine: If operation B depends on the outcome of operation A, then you just have to make sure that operation A happens before B.…

Keep reading