Moss's Bloglet

About

This is the personal weblog of Moss Collum, a programmer living in Boston, MA. I used to have a description here of what I tend to blog about, but whenever I try to nail down a few main topics, I end up getting interested in something else. If you want to know what to expect, browsing the recent archives should give you some idea.

If you've found this page through Google, I hope it helps. The search tool may help find the exact post you're looking for. If you want to see what I've posted lately, you can go to the front page of the blog.

If you're someone I know, you probably already know about this blog and come here regularly, but if not, please leave me a note: chances are I'd be delighted to hear from you.

If you want to contact me, you can email me at gmail (where my address is my first name dot my last name), or just leave a comment here.

Note that the "Bloglet" of my page title is the Perl script I use for my blogging, not the other, better known Bloglet.

Journal

Julia and Tim and Erika and I spent the afternoon exploring the creepy zombie hangout at the edge of town, as you may already have seen on their blogs. I've only posted a few pictures here, but there are lots more in the photoset on Flickr. _
respond? (2)
12:50:13 AM, Monday 7 July 2008

-

Chandelier Behind The Window
Chandelier Behind The Window
_
respond? (1)
12:48:22 AM, Monday 7 July 2008

-

West Wall
West Wall
_
respond?
12:47:43 AM, Monday 7 July 2008

-

South Door Grafitti 1
South Door Grafitti 1
_
respond?
12:47:13 AM, Monday 7 July 2008

-

Faces
Faces
_
respond?
12:46:15 AM, Monday 7 July 2008

-

Grinding Mentos
Grinding Mentos
_
respond? (1)
11:07:36 PM, Friday 4 July 2008

-

Hole In Lid
Hole In Lid
_
respond?
11:05:35 PM, Friday 4 July 2008

-

Drilling Hole In Lid
Drilling Hole In Lid
_
respond?
11:04:02 PM, Friday 4 July 2008

-

Mento in Diet Coke - The Classic
Mento in Diet Coke - The Classic
I took a few pictures of my own of the activities of this afternoon. For science! _
respond?
11:02:29 PM, Friday 4 July 2008

-

"The customer is always right" is advice for shopkeepers, not for customers. _
respond? (4)
08:49:05 PM, Wednesday 18 June 2008

-

I've looked at RSpec before, but I never really saw the point--it just felt to me like a bulkier faux English format for unit testing. On the other hand, I've just learned about RSpec's plain text Story format, and it looks beautiful--like Fit with all the ugly complications taken away (which makes it a pretty perfect Ruby answer to Fit).

There's a bigger point here too, about story tests. The more time I spend doing test driven development, the more I'm convinced of the value of having a separate set of tests describing user requirements in the user's language. It's not just a matter of doing integration-level testing, or of having tests that the user can review. It's that the functional tests are the final shield against breaking real features. When you're refactoring constantly, you may gradually end up replacing every class in your system, so eventually unit tests won't give you enough security to say that everything still works. Having an outer layer of tests that specify just the functions that people actually care about means that, even at the end of a big refactor, you can still be confident that nothing is broken. Fit tests, for all their imperfections, do this job for Java code. Here's hoping RSpec can do it for Ruby. (None of this is news, of course, but I feel like I'm starting to understand the details of it a bit better.) _
respond?
06:16:01 PM, Saturday 14 June 2008

-

I've just started playing with Groovy (an interesting language with an unfortunate name) and Grails (the Rails-like web framework for Groovy). It's too soon to say for sure what I think of it, but at the point when I added an enum field to one of my model objects, set up a scaffold controller, and saw a popup menu appear for that enum as if by magic, it pretty well won me over. Also: Java has its good points and bad points, but having access to the Java standard library is a very nice thing. _
respond? (2)
12:09:24 AM, Thursday 12 June 2008

-

Oops, double-posted. _
respond?
06:50:04 PM, Monday 26 May 2008

-

Atari on the Go Board
Atari on the Go Board
_
respond?
06:45:55 PM, Monday 26 May 2008

-

This is what MetaFilter is for. Also YouTube. _
respond? (1)
09:38:13 PM, Thursday 22 May 2008

-

 So, er, I'm afraid comments may not be working quite right, and a few other things too. Bear with me, I'm hoping to have it fixed soonish. _
respond? (22)
11:53:35 PM, Saturday 3 May 2008

-

The thing that makes Lisp-style function calls harder to understand than C-style function calls is not the fact that the function name goes inside the parentheses. In itself, (print "Hello") is no more obscure than print("Hello"). But it does lead to something hard, namely, that you can no longer use parentheses for grouping: (x) or ((x)) are no longer equal to x. (x) is a call to the function x, and ((x)) is a call to the function returned by that call. In a C-style language, these would be x() and x()(), either of which could be arbitrarily wrapped in grouping parentheses without making a difference to the overall meaning. _
respond? (6)
06:26:08 PM, Sunday 30 March 2008

-

This is probably also a sign that I should really get a local testing environment running. I have unit tests, which is nice, but I don't have an apache server running bloglet where I can post stuff like this and test it without everyone else seeing. That's getting to be a problem. Also, Selenium tests sure would be helpful for all this JavaScript stuff. _
respond? (2)
10:46:43 PM, Saturday 29 March 2008

-

...especially if I manage to get it right. _
respond?
10:39:03 PM, Saturday 29 March 2008

-

Interesting. Some of the work I'm doing on the saved entry stuff might also help with some of the weirdness we see in commenter name cookies from time to time. _
respond?
10:35:44 PM, Saturday 29 March 2008

-

Don't mind me--just testing some stuff out. _
respond?
10:30:57 PM, Saturday 29 March 2008

-

Three days and some much needed rest later, it's tomorrow! So, here's the more detailed update, and the plan for the final week (and by "week" I mean from now through Monday).

For this week, the NaNoEdMo 50 hour goal leaves me with a rather ambitious 18 hours and 45 minutes of work to plan. I'm planning based on that, but if I do all the work I've planned and it takes less time than that, I've decided I'll still be perfectly satisfied. Likewise if I spend that much time, regardless of whether everything's done. Also, I'm not going to be too worried if March turns out to have a couple of extra days. Whatever happens, I think I've achieved the main goal of the month: actually finish some improvements to bloglet, get to know the code again, and clean up some old frustrating things about it. So, without further ado, the plan for this week:

  1. Fix entry editing on Mike and Cassie's blogs: because really, after setting out to do it this many times, it deserves doing.
  2. Make the tab key work on the new entry page like it does on a regular HTML form, tabbing from the entry box to the password box: because it's been driving me and Tim crazy.
  3. Keep the draft of an entry saved on the entry form when posting fails.
  4. Allow editing of blog templates.
  5. (If there's time) add a checkbox to the entry page to manually trigger a new page turnover.

We'll see how it goes. Wish me luck! _
respond? (11)
10:17:00 PM, Wednesday 26 March 2008

-

This is a test. _
respond?
09:43:47 PM, Wednesday 26 March 2008

-

It's late, so the full update comes tomorrow. For now: items 1-3 done, as predicted, though one part of that isn't deployed yet. The Blog Tracker will recognize responses to your comments, as long as you use the same name when commenting that you do when reading the tracker. One slight display quirk that I'll let people discover for themselves. Everyone is encouraged to vote on what I should do next in the comments--I'm not sure I have enough input to put together next weeks work, so far.

_
respond?
11:51:31 PM, Sunday 23 March 2008

-

Doing all this work on bloglet has been a great opportunity to get back into using Python. A few years ago, it was my language of choice for anything I did on my own. Then I started playing with Ruby (and especially Rails) and started using it wherever I would have used Python before. Ruby's blocks are such a great feature that I couldn't imagine doing without them. On the other hand, Python has its own virtues (in particular, it's got the cleanest syntax I've ever seen, even with its handful of quirks), and since a lot of bloglet was already written in Python, it was the natural choice for this.

Anyway, I've been pleased at some of the developments that have happened since I last used Python regularly. There's a with statement that helps with a lot of the situations where blocks would be used in Ruby, and a truly great syntax for writing decorators--functions that wrap and enhance other functions or classes. Most of all, I've been doing all my testing in doctest, and it's easily the nicest environment I've ever seen for writing unit tests. It naturally encourages a writing style that makes for good code-level documentation: a common goal for unit testing frameworks, but one I've never seen realized so well. It provides tools that will let it integrate cleanly into a larger test suite. And it's so simple that it encourages similar simplicity in tools that you use with it, such as Ian Bicking's minimock. The only problem is that now I want versions of it for Ruby and Java. _
respond?
05:55:28 PM, Saturday 22 March 2008

-

Just finished implementing most of the new blog posting code. It's passing all the tests I have, but I still need to make posts ping BLT. In my experience, this is one of the riskiest points in the software development process: you've got something that passes all its tests and that appears to work, but there are a handful of requirements that still aren't tested and that could easily be forgotten. I'm not sure how to deal with this risk. I suspect having better acceptance tests would be a good start: state the requirements for a feature when you start on it, so that you'll see that something isn't finished until you've both written the feature and tested for it. But then, part of the problem is just being aware of all the requirements, which is more an art than a science.

_
respond?
03:54:49 PM, Saturday 22 March 2008

-

One slightly frustrating thing about the new rich text posting page is that it cancels out the ugly hack I was using to make the first paragraph of each entry not be indented. Time to experiment with other ways to do that. _
respond? (1)
12:03:08 AM, Tuesday 18 March 2008

-

So, time for another bloglet programming update. I didn't get everthing done that I hoped to this week--I'd planned on making up all the time I missed last week, but that proved to be overambitious--but I did make some progress.

For my goals for this week, I've picked the highest priority things that it looks like I'll be able to get done, based on the rate I've been going:

  1. Fix the blank page bug, since I'm already halfway through doing it.
  2. Stop display of email in comment pages. (i.e., become objectively anti-spammer).
  3. Update the Blog Tracker to highlight threads in which you've commented.
  4. (I only expect to finish 1-3, but just in case I have time) Fix entry editing on Mike and Cassie's blogs.

I'd be interested in hearing what people would like to see me work on after this week. Please suggest any features you'd like in the comments. To get started, here are some things people have suggested, and other obvious next places to go. I've rated the difficulty of each on on a simple point system--so far, I seem to finish seven or eight points worth of work a week (when I'm not sick).

Anything else? Suggest it, by all means. I'll post again next Saturday to say what I've done. _
respond? (8)
12:19:08 AM, Monday 17 March 2008

-

The Art of the Possible is a new blog to discuss an alliance between liberals and libertarians, and it looks really good. Among others, it has Kevin Carson, whose Mutualist Blog was the first example I saw of someone blending free-market libertarianism with a genuinely left-wing approach to politics and economics. On a related note, see this great post from Jim Henley on where a reasonable libertarian should want to start dismantling the state (hint: not with welfare). As for myself, I'm still not a libertarian--I see plenty of problems where (good) government looks like part of the ideal solution--but in today's political environment they're with me on the most important issues, so there it is. _
respond? (1)
11:17:02 PM, Sunday 9 March 2008

-

So, last weekend, after posting that, I proceeded to get a nasty flu for the whole damned week. So I'm not where I hoped to be, for lack of time. Where do I stand?
Time spent blogletfixing: 5 hours. (Planned: about 12.)
Searching: Searching works again! Yay! As a reminder, http://www.m14m.net/search will let you search any non-password-protected blog.
Enhanced Posting Page: Did some poking around, and this will be pretty easy, but not so easy that I can finish it up before going to bed tonight.
Blank Page Bug: I don't know what's causing the bug, but I know how to rewrite it in a way that will be less error prone. As a bonus, this will also leave the code simpler overall.
Deploy Script: I've got a simple one. It'll doubtless evolve as things go on, but it does what I need for now.

As for my goals for next week, I'm bringing forward the two unfinished things from last week, and adding the things people mentioned that seemed most in demand:
1) Make Textile, Trackback, and WYSIWYG editing available on everyone's posting pages.
2) Fix the bug that causes occasional blog pages to be destroyed.
3) Get the referrer script running again, or establish that this will be impossible.
4) Fix entry editing on Mike and Cassie's blogs.
5) Update the Blog Tracker to highlight threads in which you've commented.
6) Spend an hour researching ways to track comments in LiveJournal.

Any feedback? Further things you'd like to see? Notes on things I've listed here? In particular, Mike, does item 5 sound like it would give you what you need for seeing which comment threads to pay attention to?

I'll post again next Saturday with another update. _
respond? (9)
10:40:57 PM, Saturday 8 March 2008

-

As I've hinted before, I'm planning to spend a lot of time this month concentrating on fixing bugs in Bloglet and adding new features. I've been experimenting with ways to write tests and generally make the existing code more stable, and it's going well, so I'm far less worried about trying to do this than I would have been last year.

I'm setting a concrete goal, borrowed from NaNoEdMo, of doing 50 hours of work on Bloglet before the end of March. I'm also planning to check in here on Friday night or Saturday morning of each week, to say what I've done and what I plan to do in the next week. I urge everyone (or at least everyone who blogs here) to comment on these posts to suggest things you'd be interested in seeing. I'd like to focus as much as possible on building things everyone actually wants.

For this week, I'm setting relatively simple goals, to get off to an easy start and do something to measure my pace by. They are:

  1. Make the search page work again.
  2. Make Textile, Trackback, and WYSIWYG editing available on everyone's posting pages.
  3. Fix the bug that causes occasional blog pages to be destroyed (especially on Mike's blog, for some reason).
  4. Write an automatic deployment script for uploading new features to the website.

If you have opinions about how any of this should be done, or ideas about other stuff you'd like to see, please, please post about it!

_
respond? (7)
12:56:36 AM, Saturday 1 March 2008

-

The xkcd before last is spot on. _
respond? (9)
10:26:42 PM, Thursday 21 February 2008

-

It seems I've been neglecting my blog again. That won't do.

Just got back from a really wonderful Magnetic Fields concert. If they're stopping somewhere near you this tour, see if you can still get tickets!

Further bulletins as events warrant. _
respond?
12:57:33 AM, Friday 15 February 2008

-

Song quote game!
1. We ain't goin' to the town, we're goin' to the city
2. It's 1995, the girls are just friends
3. You got rings on your fingers and your hair's hot red
4. I wanted to look like the All American Kid from New York City
5. I don't see you and it's getting dark, today we should have gone to Central Park
6. We'll see the bright and hollow sky
7. I will be mad and you will be possessed, that is the only way to fight this world
8. But at night under cover of darkness, she sneaks out to receive my S.O.S.
9. This debt cannot be paid with all your jack
10. Or maybe there's some kind of local competition here to see who can be the rudest
11. Thursday I go waltzing to the zoo
12. He's seen the hook that hides a haloed setting sun
13. I drive around. I walk around in circles
14. Get out of bed. Resistance is futile. Wake up and assimilate the day. -- Machines can do the work, so that people have time to think
15. Come fiddler, come dancer, come plowman or come sailor
16. And would you let me know if I forget the secret, took my eye off of the ball?
17. Did you exchange a walk on part in the war for a lead role in a cage?
18. And did he, did he, did he, come back across?
19. Snakes in the grass beneath our feet, rain in the clouds above
20. We learned more from a three minute record, baby, than we ever learned in school _
respond? (18)
10:56:56 PM, Tuesday 29 January 2008

-

IntelliJ IDEA a great IDE because it is deeply aware of Java syntax, as Martin Fowler has said before. It brings the feel of a Smalltalk-style IDE, in which one is directly editing a program image in memory, to Java's world of source code in text files. But the more I work with it, the more I wish I had a version control system with the same code-centric view of the world. Subversion, like vim, can be configured to handle source code quite well as text--ignoring meaningless whitespace, recognizing renamed files, and the like--but think how much more powerful it could be if it recognized it as code. I'd like to see a VCS that could show changes, not by comparing lines or words, but by comparing parse trees; that could suggest, when merging two branches, that a class or method name had changed; that could recognize two blocks of code as being structurally identical even when none of the symbols in them had the same names. It seems to me that something like this could change the whole experience of working on software as a team. It would make it far more practical to do large refactorings on actively maintained code. If it worked well, it could improve team development as much as refactoring tools have improved individual development. _
respond?
11:32:09 AM, Monday 28 January 2008

-

A bowling competition between furries and Klingons. I don't understand, but I approve. _
respond? (2)
11:41:19 PM, Saturday 26 January 2008

-

older entries

Archives

Search blog

Browse by date

Recent activity