<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel><title>Moss's Bloglet</title>
<link>http://www.m14m.net/bloglet.php</link>
<description>Moss's Bloglet</description>
<docs>http://backend.userland.com/rss</docs>
<language>en-us</language>
<webMaster>webmaster@m14m.net</webMaster>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008170204905</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008170204905</link>
<title>"The customer is always right" is advice...</title>
<slash:comments>3</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008170204905</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008170204905_comments.rss</wfw:commentRss>
<description>&amp;quot;The customer is always right&amp;quot; is advice for shopkeepers, not for customers.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008170204905"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008170204905</comments>
<pubDate>Wed, 18 Jun 2008 20:49:05 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008166181601</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008166181601</link>
<title>I've looked at RSpec before, but I never really...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008166181601</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008166181601_comments.rss</wfw:commentRss>
<description>I've looked at &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt; 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 &lt;a href="http://fit.c2.com/"&gt;Fit&lt;/a&gt; with all the ugly complications taken away (which makes it a pretty perfect Ruby answer to Fit).&lt;/p&gt;&lt;p&gt;There's a bigger point here too, about &lt;a href="http://c2.com/cgi/wiki?UserStory"&gt;story&lt;/a&gt; tests. The more time I spend doing test driven development, the more I'm convinced of the value of having &lt;a href="http://c2.com/cgi/wiki?AcceptanceTest"&gt;a separate set of tests&lt;/a&gt; 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. (&lt;a href="http://c2.com/cgi/wiki?DoBothUnitAndAcceptanceTests"&gt;None of this is news&lt;/a&gt;, of course, but I feel like I'm starting to understand the details of it a bit better.)&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008166181601"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008166181601</comments>
<pubDate>Sat, 14 Jun 2008 18:16:01 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008164000924</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008164000924</link>
<title>I've just started playing with Groovy (an...</title>
<slash:comments>2</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008164000924</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008164000924_comments.rss</wfw:commentRss>
<description>I've just started playing with &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; (an interesting language with an unfortunate name) and &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; (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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008164000924"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008164000924</comments>
<pubDate>Thu, 12 Jun 2008 00:09:24 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008147185004</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008147185004</link>
<title>Oops, double-posted.</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008147185004</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008147185004_comments.rss</wfw:commentRss>
<description>Oops, double-posted.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008147185004"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008147185004</comments>
<pubDate>Mon, 26 May 2008 18:50:04 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008147184555</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008147184555</link>
<title>Atari on the Go Board

</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008147184555</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008147184555_comments.rss</wfw:commentRss>
<description>&lt;b&gt;&lt;a href="http://www.flickr.com/photos/mossosaur/2525325939/"&gt;Atari on the Go Board&lt;/a&gt;&lt;/b&gt;&lt;br&gt;&lt;a href="http://www.flickr.com/photos/mossosaur/2525325939/"&gt;&lt;img src="http://farm3.static.flickr.com/2320/2525325939_867c0b8fdb_m.jpg" alt="Atari on the Go Board" style="border: solid 1px #000000;" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008147184555"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008147184555</comments>
<pubDate>Mon, 26 May 2008 18:45:55 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008143213813</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008143213813</link>
<title>This is what MetaFilter is for. Also YouTube.</title>
<slash:comments>1</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008143213813</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008143213813_comments.rss</wfw:commentRss>
<description>&lt;a href="http://www.metafilter.com/71892/Theremin-cats"&gt;This&lt;/a&gt; is what MetaFilter is for. Also YouTube.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008143213813"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008143213813</comments>
<pubDate>Thu, 22 May 2008 21:38:13 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008124235335</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008124235335</link>
<title>&amp;nbsp;So, er, I'm afraid comments may not be...</title>
<slash:comments>22</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008124235335</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008124235335_comments.rss</wfw:commentRss>
<description>&amp;nbsp;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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008124235335"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008124235335</comments>
<pubDate>Sat, 03 May 2008 23:53:35 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008090182608</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008090182608</link>
<title>The thing that makes Lisp-style function calls...</title>
<slash:comments>6</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008090182608</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008090182608_comments.rss</wfw:commentRss>
<description>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 &amp;quot;Hello&amp;quot;) is no more obscure than print(&amp;quot;Hello&amp;quot;). 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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008090182608"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008090182608</comments>
<pubDate>Sun, 30 Mar 2008 18:26:08 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008089224643</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008089224643</link>
<title>This is probably also a sign that I should really...</title>
<slash:comments>2</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008089224643</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008089224643_comments.rss</wfw:commentRss>
<description>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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008089224643"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008089224643</comments>
<pubDate>Sat, 29 Mar 2008 22:46:43 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223903</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223903</link>
<title>...especially if I manage to get it right.</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008089223903</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008089223903_comments.rss</wfw:commentRss>
<description>...especially if I manage to get it right.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008089223903"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008089223903</comments>
<pubDate>Sat, 29 Mar 2008 22:39:03 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223544</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223544</link>
<title>Interesting...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008089223544</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008089223544_comments.rss</wfw:commentRss>
<description>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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008089223544"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008089223544</comments>
<pubDate>Sat, 29 Mar 2008 22:35:44 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223057</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008089223057</link>
<title>Don't mind me--just testing some stuff out.</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008089223057</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008089223057_comments.rss</wfw:commentRss>
<description>Don't mind me--just testing some stuff out.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008089223057"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008089223057</comments>
<pubDate>Sat, 29 Mar 2008 22:30:57 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008086221700</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008086221700</link>
<title>Three days and some much needed rest later, it's...</title>
<slash:comments>11</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008086221700</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008086221700_comments.rss</wfw:commentRss>
<description>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 &amp;quot;week&amp;quot; I mean from now through Monday).&lt;/p&gt;&lt;ul&gt;    &lt;li&gt;Time spent blogfixing: 12 hours and 30 minutes (Planned: maybe 13.)&lt;/li&gt;    &lt;li&gt;Blank page bug: tentatively, since it was impossible to reproduce, &lt;i&gt;fixed!&lt;/i&gt; The entry posting code now checks that the new page has been saved successfully before replacing the old page. Also, it's now written entirely in Python, rather than calling out to my old, painfully badly written, Perl script. It may be a bit snappier now, too, but we'll see.&lt;/li&gt;    &lt;li&gt;Stop display of email in comment pages: done. It still saves the email address if someone enters it, with the idea that eventually I'll set it up so that the blog owner can see email addresses to contact people with.&lt;/li&gt;    &lt;li&gt;Update the Blog Tracker to highlight responses to your comments: done. Assuming you use the Blog Tracker under the same name you use when posting comments, you'll now see a little box at the top of your tracker listing new comments in threads where you've posted. One quirk: it may list your own comment among them, though it won't see it as a response. There's more that could be done with this feature, but what I have now seemed like a good 80/20 solution.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;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:&lt;/p&gt;&lt;ol&gt;    &lt;li&gt;Fix entry editing on Mike and Cassie's blogs: because really, after setting out to do it this many times, it deserves doing.&lt;/li&gt;    &lt;li&gt;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.&lt;/li&gt;    &lt;li&gt;Keep the draft of an entry saved on the entry form when posting fails.&lt;/li&gt;    &lt;li&gt;Allow editing of blog templates.&lt;/li&gt;    &lt;li&gt;(If there's time) add a checkbox to the entry page to manually trigger a new page turnover.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;We'll see how it goes. Wish me luck!&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008086221700"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008086221700</comments>
<pubDate>Wed, 26 Mar 2008 22:17:00 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008086214347</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008086214347</link>
<title>This is a test.</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008086214347</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008086214347_comments.rss</wfw:commentRss>
<description>This is a test.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008086214347"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008086214347</comments>
<pubDate>Wed, 26 Mar 2008 21:43:47 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008083235131</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008083235131</link>
<title>
It's late, so the full update comes tomorrow. For...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008083235131</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008083235131_comments.rss</wfw:commentRss>
<description>&lt;p&gt;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.&lt;/p&gt;&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008083235131"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008083235131</comments>
<pubDate>Sun, 23 Mar 2008 23:51:31 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008082175528</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008082175528</link>
<title>Doing all this work on bloglet has been a great...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008082175528</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008082175528_comments.rss</wfw:commentRss>
<description>Doing all this work on bloglet has been a great opportunity to get back into using &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;. 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.&lt;/p&gt;&lt;p&gt;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 &lt;a href="http://docs.python.org/lib/module-doctest.html"&gt;doctest&lt;/a&gt;, 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 &lt;a href="http://blog.ianbicking.org/minimock.html"&gt;minimock&lt;/a&gt;. The only problem is that now I want versions of it for Ruby and Java.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008082175528"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008082175528</comments>
<pubDate>Sat, 22 Mar 2008 17:55:28 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008082155449</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008082155449</link>
<title>
Just finished implementing most of the new blog p...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008082155449</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008082155449_comments.rss</wfw:commentRss>
<description>&lt;p&gt;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 &lt;i&gt;aware&lt;/i&gt; of all the requirements, which is more an art than a science.&lt;/p&gt;&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008082155449"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008082155449</comments>
<pubDate>Sat, 22 Mar 2008 15:54:49 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008078000308</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008078000308</link>
<title>One slightly frustrating thing about the new rich...</title>
<slash:comments>1</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008078000308</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008078000308_comments.rss</wfw:commentRss>
<description>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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008078000308"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008078000308</comments>
<pubDate>Tue, 18 Mar 2008 00:03:08 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008077001909</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008077001909</link>
<title>So, time for another bloglet programming update...</title>
<slash:comments>8</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008077001909</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008077001909_comments.rss</wfw:commentRss>
<description>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.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Time spent blogfixing: 13 hours 45 minutes. (Planned: about 20.)&lt;/li&gt;
    &lt;li&gt;Enhanced Posting Page: Done, as you'll see if you try to post something. Please let me know if anything doesn't seem to be working the way it should, or the way you'd like it to. Also note that the old version is still available, linked to from the new one.&lt;/li&gt;
    &lt;li&gt;Blank Page Bug: The rewrite is well underway, but not done yet. I'd guess I'm about halfway through where I need to be. The new code has some checks in it that make a recurrence of the bug very unlikely, as well as adding some other flexibility.&lt;/li&gt;
    &lt;li&gt;Referer Script: The referer script is running again! It turned out to be an easier problem than I thought. I've also added a timestamp to the stats pages, so if the script stops running again, it will become clear sooner.&lt;/li&gt;
    &lt;li&gt;Fix entry editing on Mike and Cassie's blogs: I didn't get a chance to look at this.&lt;/li&gt;
    &lt;li&gt;Update Blog Tracker to highlight threads with in which you've commented: I didn't get a chance to look at this.&lt;/li&gt;
    &lt;li&gt;Research tracking comments in LiveJournal: They really don't make this easy. I came up with two possibilities, neither of them very satisfactory. One would require a paid account for blog tracking, and would take about two weeks to build. The other would require anyone who wanted their comments tracked to run a program on their own computer to update a BLT feed, and would take about a week.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="first"&gt;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:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Fix the blank page bug, since I'm already halfway through doing it.&lt;/li&gt;
    &lt;li&gt;Stop display of email in comment pages. (i.e., become objectively anti-spammer).&lt;/li&gt;
    &lt;li&gt;Update the Blog Tracker to highlight threads in which you've commented.&lt;/li&gt;
    &lt;li&gt;(I only expect to finish 1-3, but just in case I have time) Fix entry editing on Mike and Cassie's blogs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="first"&gt;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).&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Make the Blog Tracker track comments on LiveJournal: 8 or 13 points, depending on which approach I take.&lt;/li&gt;
    &lt;li&gt;Make Neil's blog have the same features as all the others: 8 points.&lt;/li&gt;
    &lt;li&gt;Edit blog entries in place--when logged in, click on an entry on your blog to edit it, then save it directly from your blog page: 3 points.&lt;/li&gt;
    &lt;li&gt;Make blog templates editable: 5 points.&lt;/li&gt;
    &lt;li&gt;Allow filtering of selected blogs in the Blog Tracker (for example, LiveJournals that you already follow through your friends list): 3 points.&lt;/li&gt;
    &lt;li&gt;WYSIWYG comment editing, using the same tool as the new blog posting screen: 1 point.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="first"&gt;Anything else? Suggest it, by all means. I'll post again next Saturday to say what I've done.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008077001909"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008077001909</comments>
<pubDate>Mon, 17 Mar 2008 00:19:09 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008069231702</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008069231702</link>
<title>The Art of the Possible is a new blog to discuss...</title>
<slash:comments>1</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008069231702</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008069231702_comments.rss</wfw:commentRss>
<description>&lt;a href="http://www.theartofthepossible.net/"&gt;The Art of the Possible&lt;/a&gt; is a new blog to &lt;a href="http://www.theartofthepossible.net/about/"&gt;discuss an alliance between liberals and libertarians&lt;/a&gt;, and it looks really good. Among others, it has Kevin Carson, whose &lt;a href="http://mutualist.blogspot.com/"&gt;Mutualist Blog&lt;/a&gt; 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 &lt;a href="http://highclearing.com/index.php/archives/2008/02/21/7909"&gt;this great post from Jim Henley&lt;/a&gt; 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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008069231702"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008069231702</comments>
<pubDate>Sun, 09 Mar 2008 23:17:02 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008068224057</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008068224057</link>
<title>So, last weekend, after posting that, I proceeded...</title>
<slash:comments>9</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008068224057</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008068224057_comments.rss</wfw:commentRss>
<description>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?&lt;br&gt;Time spent blogletfixing: 5 hours. (Planned: about 12.)&lt;br&gt;Searching: Searching works again! Yay! As a reminder, &lt;a href="http://www.m14m.net/search"&gt;http://www.m14m.net/search&lt;/a&gt; will let you search any non-password-protected blog.&lt;br&gt;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.&lt;br&gt;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.&lt;br&gt;Deploy Script: I've got a simple one. It'll doubtless evolve as things go on, but it does what I need for now.&lt;br&gt;&lt;br&gt;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:&lt;br&gt;1) Make Textile, Trackback, and WYSIWYG editing available on everyone's posting pages.&lt;br&gt;2) Fix the bug that causes occasional blog pages to be destroyed.&lt;br&gt;3) Get the referrer script running again, or establish that this will be impossible.&lt;br&gt;4) Fix entry editing on Mike and Cassie's blogs.&lt;br&gt;5) Update the Blog Tracker to highlight threads in which you've commented.&lt;br&gt;6) Spend an hour researching ways to track comments in LiveJournal.&lt;br&gt;&lt;br&gt;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?&lt;br&gt;&lt;br&gt;I'll post again next Saturday with another update.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008068224057"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008068224057</comments>
<pubDate>Sat, 08 Mar 2008 22:40:57 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008061005636</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008061005636</link>
<title>As I've hinted before, I'm planning to spend a lot...</title>
<slash:comments>7</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008061005636</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008061005636_comments.rss</wfw:commentRss>
<description>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.&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;&lt;p&gt;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:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Make the search page work again.&lt;/li&gt;&lt;li&gt;Make Textile, Trackback, and WYSIWYG editing available on everyone's posting pages.&lt;/li&gt;&lt;li&gt;Fix the bug that causes occasional blog pages to be destroyed (especially on Mike's blog, for some reason).&lt;/li&gt;&lt;li&gt;Write an automatic deployment script for uploading new features to the website.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;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!&lt;/p&gt;&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008061005636"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008061005636</comments>
<pubDate>Sat, 01 Mar 2008 00:56:36 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008052222642</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008052222642</link>
<title>The xkcd before last is spot on.</title>
<slash:comments>9</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008052222642</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008052222642_comments.rss</wfw:commentRss>
<description>The &lt;a href="http://www.xkcd.com/385/"&gt;xkcd before last&lt;/a&gt; is spot on.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008052222642"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008052222642</comments>
<pubDate>Thu, 21 Feb 2008 22:26:42 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008046005733</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008046005733</link>
<title>It seems I've been neglecting my blog again...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008046005733</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008046005733_comments.rss</wfw:commentRss>
<description>It seems I've been neglecting my blog again. That won't do.&lt;br&gt;&lt;br&gt;Just got back from a really wonderful &lt;a href="http://www.houseoftomorrow.com/"&gt;Magnetic&lt;/a&gt; &lt;a href="http://www.myspace.com/themagneticfields"&gt;Fields&lt;/a&gt; concert. If they're stopping somewhere near you this tour, see if you can still get tickets!&lt;br&gt;&lt;br&gt;Further bulletins as events warrant.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008046005733"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008046005733</comments>
<pubDate>Fri, 15 Feb 2008 00:57:33 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008029225657</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008029225657</link>
<title>Song quote game!...</title>
<slash:comments>18</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008029225657</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008029225657_comments.rss</wfw:commentRss>
<description>Song quote game!&lt;br&gt;1. We ain't goin' to the town, we're goin' to the city&lt;br&gt;2. It's 1995, the girls are just friends&lt;br&gt;3. You got rings on your fingers and your hair's hot red&lt;br&gt;4. I wanted to look like the All American Kid from New York City&lt;br&gt;5. I don't see you and it's getting dark, today we should have gone to Central Park&lt;br&gt;6. We'll see the bright and hollow sky&lt;br&gt;7. I will be mad and you will be possessed, that is the only way to fight this world&lt;br&gt;8. But at night under cover of darkness, she sneaks out to receive my S.O.S.&lt;br&gt;9. This debt cannot be paid with all your jack&lt;br&gt;10. Or maybe there's some kind of local competition here to see who can be the rudest&lt;br&gt;11. Thursday I go waltzing to the zoo&lt;br&gt;12. He's seen the hook that hides a haloed setting sun&lt;br&gt;13. I drive around. I walk around in circles&lt;br&gt;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&lt;br&gt;15. Come fiddler, come dancer, come plowman or come sailor&lt;br&gt;16. And would you let me know if I forget the secret, took my eye off of the ball?&lt;br&gt;17. Did you exchange a walk on part in the war for a lead role in a cage?&lt;br&gt;18. And did he, did he, did he, come back across?&lt;br&gt;19. Snakes in the grass beneath our feet, rain in the clouds above&lt;br&gt;20. We learned more from a three minute record, baby, than we ever learned in school&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008029225657"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008029225657</comments>
<pubDate>Tue, 29 Jan 2008 22:56:57 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008028113209</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008028113209</link>
<title>IntelliJ IDEA a great IDE because it is deeply...</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008028113209</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008028113209_comments.rss</wfw:commentRss>
<description>IntelliJ IDEA a great IDE because it is deeply aware of Java syntax, as &lt;a href="http://www.martinfowler.com/bliki/PostIntelliJ.html"&gt;Martin Fowler has said before&lt;/a&gt;. 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 &lt;i&gt;as text&lt;/i&gt;--ignoring meaningless whitespace, recognizing renamed files, and the like--but think how much more powerful it could be if it recognized it as &lt;i&gt;code&lt;/i&gt;. 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.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008028113209"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008028113209</comments>
<pubDate>Mon, 28 Jan 2008 11:32:09 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2008026234119.php#2008026234119</guid>
<link>http://www.m14m.net/bloglet-archive-2008026234119.php#2008026234119</link>
<title>A bowling competition between furries and Klingons...</title>
<slash:comments>2</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008026234119</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008026234119_comments.rss</wfw:commentRss>
<description>A &lt;a href="http://www.youtube.com/watch?v=ljAXHWE0bDQ"&gt;bowling competition between furries and Klingons&lt;/a&gt;. I don't understand, but I approve.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008026234119"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008026234119</comments>
<pubDate>Sat, 26 Jan 2008 23:41:19 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2007302121337.php#2008024224717</guid>
<link>http://www.m14m.net/bloglet-archive-2007302121337.php#2008024224717</link>
<title>"Anonymous" (hackers loosely connected...</title>
<slash:comments>2</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008024224717</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008024224717_comments.rss</wfw:commentRss>
<description>&amp;quot;Anonymous&amp;quot; (hackers loosely connected to &lt;a href="http://en.wikipedia.org/wiki/4chan"&gt;4chan&lt;/a&gt;) have &lt;a href="http://en.wikinews.org/wiki/%22Anonymous%22_releases_statements_outlining_%22War_on_Scientology%22"&gt;declared war&lt;/a&gt; on the &lt;a href="http://en.wikipedia.org/wiki/Scientology"&gt;Church of Scientology&lt;/a&gt;. I can't decide what to think of this, and find myself ill-prepared to make any sense of it at all, but the whole thing is fascinating. At the very least, it's a sign of what a bizarre future we live in. Further relevant sources:&lt;br&gt;- The &lt;a href="http://www.youtube.com/watch?v=JCbKv9yiLiQ"&gt;Declaration of War&lt;/a&gt;, in YouTube video form.&lt;br&gt;- &lt;a href="http://partyvan.info/index.php/Project_Chanology"&gt;Project Chanology&lt;/a&gt; on the Insurgent Wiki--a rallying point of sorts.&lt;br&gt;- &lt;a href="http://encyclopediadramatica.com/PROJECT_CHANOLOGY"&gt;Encyclopedia Dramatica article&lt;/a&gt;&lt;br&gt;- &lt;a href="http://yro.slashdot.org/yro/08/01/24/1311252.shtml"&gt;Slashdot post&lt;/a&gt;&lt;br&gt;- &lt;a href="http://www.metafilter.com/68378/The-Admirals-Notebook"&gt;MetaFilter post&lt;/a&gt;&lt;br&gt;- &lt;a href="http://blog.wired.com/27bstroke6/2008/01/anonymous-attac.html"&gt;Wired article&lt;/a&gt;&lt;br&gt;- Surprisingly well researched &lt;a href="http://gawker.com/347367/why-kids-on-the-internet-are-scientologys-most-powerful-enemy"&gt;Gawker post&lt;/a&gt;&lt;br&gt;- And some noticeable effects on the front pages of Digg and Reddit.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008024224717"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008024224717</comments>
<pubDate>Thu, 24 Jan 2008 22:47:17 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2007302121337.php#2008018132006</guid>
<link>http://www.m14m.net/bloglet-archive-2007302121337.php#2008018132006</link>
<title>I've been thinking a lot lately about how to break...</title>
<slash:comments>6</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008018132006</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008018132006_comments.rss</wfw:commentRss>
<description>I've been thinking a lot lately about how to break large (several day) projects down into smaller tasks--probably because that's what I do most Monday afternoons at work. There are various little heuristics we've come up with for recognizing good task breakdowns, but I think they amount to three basic rules:&lt;br&gt;1) Break projects down into tasks of about five hours.&lt;br&gt;2) Say how you will know when each task is finished.&lt;br&gt;2) If you can't do this, spend about five hours answering your questions.&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008018132006"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008018132006</comments>
<pubDate>Fri, 18 Jan 2008 13:20:06 -0600</pubDate>
</item>
<item>
<guid isPermaLink="true">http://www.m14m.net/bloglet-archive-2007302121337.php#2008015201641</guid>
<link>http://www.m14m.net/bloglet-archive-2007302121337.php#2008015201641</link>
<title>Make x not y!</title>
<slash:comments>0</slash:comments>
<trackback:ping>http://www.m14m.net/trackback/2008015201641</trackback:ping>
<wfw:commentRss>http://www.m14m.net/2008015201641_comments.rss</wfw:commentRss>
<description>&lt;a href="http://www.google.com/search?q=%22make+*+not+*%22"&gt;Make &lt;i&gt;x&lt;/i&gt; not &lt;i&gt;y&lt;/i&gt;&lt;/a&gt;!&lt;br&gt;&lt;a href="http://www.m14m.net/comments.php?comment=2008015201641"&gt;Comment&lt;/a&gt;</description>
<comments>http://www.m14m.net/comments.php?comment=2008015201641</comments>
<pubDate>Tue, 15 Jan 2008 20:16:41 -0600</pubDate>
</item>
</channel>
</rss>
