This will be my 100th writeup. I was hoping for something a little more epic for the landmark writeup, but I've gotten caught up in a coding spree that I think I should detail more carefully.

I should say a few things about my coding style. First of all, I'm loudmouthed, and this applies also to the way I code. I talk and talk and talk about coding, because I talk and talk and talk about everything else in life. I also like to make coding very open, and I strongly advocate keeping open about coding as well. In Patch Manager you can track almost every change I make except the ones that are currently not technically feasible to track (and I hope to make them trackable soon). In fact, this root log will be little more than a summary and explanation of the recent coding changes I will read from Patch Manager.

A bit about my coding background: the only code not my own that I've ever worked with is free code. I think this shows a little in my coding style, because I'm used to talking very openly about code, to change anything in sight, to document and track my changes because I expect them to be read by someone else. I think of myself as something like a people's coder, and now I'm very aware that I'm coding for you noders. I want to hear your input, tell me where I or we messed up, tell me what you think, what feature you would like to see implemented. If you're in edev, let me invite you right now to make patches whenever you feel like it, and I promise for the time being to review them myself if no one else does. If you're an ordinary noder, please note that as a "temporary" change, I've reopened e2 bugs, and I heartily encourage you to put your bug reports there, as new writeups.

Enough talk. Here's what I've been up to:

  • External links: This is what kicked off my coding spree. I showed a writeup of mine to someone, they were confused by how the pre-external linking worked, so I decided, "well, I can change this, can't I?" I worked together with Oolong under alex's watchful gaze, until the thing worked. Then spent a while smoothing out some bugs. It seems to be working almost 100% right now, although I wish we had a better way to mark external links than with a png that may eventually clash with someone's zen theme.

  • Tables in writeups: My work with the table code was quite minimal, just helped a little with debugging. The code is call's, and putting it in place was Oolong's work.

  • Catbox frivolity: Because I keep stalling fulfilling the promises of root log: september 2007, I started messing around with silly catbox things, such as making /whisper commands synonyms (/small, /aside, /monologue) and /sing synonyms (/rap, /chant, /song, /gregorianchant). The reason is that the catbox is one of the simplest pieces of code around here, or perhaps just for me because it's one of the things I cared about the most at first. I keep telling myself that working on easy stuff isn't bad, because it's good practice for the hard stuff. (NB to clientdev: you guys only have to worry about implementing /me, /whisper, and /sing; all synonyms will show up as one of those).

    Additionally, /me now is separated by space or punctuation, so things like "/me's happy with the new changes" or "/me, surprised, looks again" will now work fine.

  • Other Users changes: The first change was to add a new feature to Other Users: spying on other users (enabled in your user settings) now also randomly tells you if one of your fellow users has noded within the last week, and what they noded. This was jessicaj's idea, OKed by alex. Then alex suggested an interesting feature to sort Other Users by number of writeups within the last year, which I implemented. Your recent writeups are counted in My Recent Writeups, and a change I made to display the count in your homenode was rolled back by Oolong. I might add a user preference to show others in your homenode how much you've recently noded, if there is demand for it. Screw demand. I went ahead and did it anyways.

  • Scratch pads editable by eds and admins: Although most users won't immediately see this change, while debugging other code I came upon the baffling obstacle of not being able to see a user's HTML source in their scratchpad. I scratched that itch, and after a few tries and debug sessions, I enabled scratchpad editing for eds and admins. Let ordinary users be aware that with the same responsibility that eds and admins exercise for everything else, they may also according to their better judgement edit your public scratch pads. As a privacy issue, eds and admins cannot see your private scratch pads.

  • Statistics nodelet: A minor change, the statistics nodelet now counts the number of laynoder nodes (i.e. writeup containers) instead of counting every single thing in the database. If I find an efficient way to do this and there's demand, I might also add a statistic for counting the number of nodeshells.

  • Usergroup changes: Two minor things: one, if you are in a usergroup because you are in one of the usergroups it contains itself (e.g. you are in chanops because you're in e2 contact or in content editors because you're in gods), you now get a box for messaging this usergroup. Also, if you own the usergroup, simple usergroup editor will now tell you who is ignoring the usergroup.

  • Message Inbox and homenode edit changes: This isn't my code, but fellow edevite raincomplex's code; I just implemented it and helped debug it a little. A few more buttons for helping archiving or unarchiving your messages in Message Inbox, plus a button for selecting all of your bookmarks for removal in your homenode edit.

  • Revoting: This is still in alpha, and we're currently still discussing if we should make it go live or not, but the idea right now which I've coded up as a mockup is that you can change your vote on a writeup, costing you another vote, but there will be no further changes, i.e. both your GP and the votee's XP will stay fixed with a revote. This is intended to fix voting misfirings or change a downvote to an upvote if an author made a conscientious effort to improve a writeup. I suppose that if an author makes a writeup worse, or whatever else may tickle your fancy, you can also change an upvote to a downvote. Currently quick(re)voting is not yet implemented, but if you want to see what it could look like, have a look at Swap's playground on the development server.

In addition, there are also a bunch of minor bugs that I will mention quickly:

  • New Other Users code barfed on funny characters, not anymore.

  • Fixed broken links in anonymised "created by" notices in nodes/nodeshells.

  • Fixed some character encoding issues with the catbox. DonJaime also submitted some patches for this.

  • Addressed a problem where eds either could /msg or edit other scratch pads, but not both

  • Addressed various bugs with external linking; now external links can be multiline.

  • When external links are pipelinks without anchor text, a default [link] anchor text is in place, this mostly to address a few catbox mistakes of hitting enter right after putting the pipe in an external link.

  • Made it a bit harder to mis/msg in the catbox, now "/msg noder" without any message text doesn't do anything instead of dropping into catbox.

  • Allow bona-fide external links when displaying details of catbox client like Frogbox.

  • Don't show Webster's nodes in Do you C! what I C?, since they're unvotable.

That looks like everything so far. Now, to paraphrase one of my predecessors,

bugs go to Swap