Content from 2014-05

Dozing Off

posted on 2014-05-07 15:13:00

Life is going pretty well. Norma and I have moved into a new apartment. I'm figuring out how to balance work and my other goals. My student loans will be paid off by my 28th birthday in August.

I decided to work from home today. I slept poorly, I think it's the pollen. I've been thinking a lot about what I want lately. Neither Academia nor Industry quite seem to fit. Academia only cares about work that advances the state of the art in specific subfields, Industry only cares about work that advances the bottom line.

My goals don't quite fit in with either of those things. I want to write software to help people understand how other software works. Specifically, a Nintendo Emulator and set of tools for observing and modifying old games on the fly. And so I find myself thinking about how to work fewer hours so I can find more time for my 'art projects' without sacrificing hobbies, relationships, and a social life.

I've been too drowsy today to get meaningful work done on work or hobby projects, but here's what I thought about in the shower:

  • I should add a proper JIT compiler to cl-6502 that uses the "compile-to-closures" technique described by xach.
  • I should fix trowel so that it can correctly compute the control flow graph of simple (NROM) NES games that aren't self-modifying. Like I meant to do last summer.
  • I should implement the UNROM mapper for famiclom using neth, sprocketnes, or tenes for reference if needed. That way, I could play with Mega Man 1 and its annotated code in addition to Super Mario Bros.
  • I should start on a lispy macroassembler/compiler to 6502 because there are idioms to capture in these games and neslisp isn't gonna cut it.
  • Also, I thought about adding crossposting support and 'embeddables' to coleslaw briefly but that doesn't count. That's my one halfway 'practical' piece of software. People do like to blog.

Seriously, is there somewhere I can do an MFA but really just write weird artsy software for 2 years?

Oh, well. Time to take a nap and then try to write some code to find Biconnected Components in C again.

Breaking Radio Silence

posted on 2014-05-05 13:12:11

Long time, no blog.

I've been offline for a while. I burned out last July and only really started hacking on my lisp projects again in March. So what's changed in the last two months? Actually, kind of a lot.

Coleslaw 0.9.4

Coleslaw 0.9.4 is hereby released. I apologize that 0.9.3 which went out in the last quicklisp release had an embarrassing escaping bug.

The most fun part of Coleslaw is trying my hand at API design. Lisp is a great tool for writing extensible software and Coleslaw has been a good proving ground for that since everyone has a slightly different set of requirements for their blogware.

I've been reading Sonya Keene's Object Oriented Programming in CL lately which led to a large refactoring around the new Document Protocol. I'm not prepared to say anything intelligent about protocols yet, but thankfully plenty of people have done so elsewhere. This blog post by sykopomp isn't a bad place to start.

In addition to the document protocol and the usual litany of bugfixes, Coleslaw now has a new theme based on bootswatch readable, user-defined routing, support for static pages, and greatly expanded docs.

The main things to tackle before 1.0 are a plugin to support incremental compilation for very large sites and a twitter/tumblr cross-posting plugin.

cl-6502 0.9.7

Additionally, someone actually found a use for my Readable CPU emulator! Dustin Long was working on a homebrew Nintendo game and wanted a way to unit test his code, so he's been using cl-6502 to get cycle counts and otherwise check behavior. Naturally, the very basic assembler got on his nerves so he sent me a nice pull request adding support for labels, compile-time expressions, and decimal, hex, and binary literals. Thanks, Dustin!

I also rewrote the addressing modes again, reduced consing, and made debugging easier by using Alexandria's named-lambda for all the opcodes. The cl-6502 book has been updated, of course.

Upcoming

With any luck, I'll get back to work on famiclom or tools for analyzing old NES games like Super Mario Bros and Mega Man 2. It's good to be back.


Unless otherwise credited all material Creative Commons License by Brit Butler