Welcome to October!

So my dear friend Lucy-S's day log last month got me thinking. I've been doing way too much work for "me" recently (server deployment improvements, code cleanups, etc), and not enough work for you guys, so we're going to change that this month. So here's how this is going to work; I'm going to trade you. I'm going to do some work for me up front, and then we're going to work on some stuff for you guys. Does that sound good?

A couple of big things are done up front. I've upgraded the database as of last night to mysql 5.5. This brings us inline with the development environment and closes a bit of odd technical debt that might make it hard to debug something with the split database (5.5 in dev, 5.1 in production). I just needed an evening to get it done, and now it is.

I've turned on page compression. This is a bit humbling; as I thought it was on, but upon deeper inspection into my soul, I have no idea why I would think it would be on. If we ever graduate to a real CDN, then we'll move it off of being inside of the page, but for now, it's inside of the engine itself. We were already doing this for stylesheets, so it's about time. There are probably better ways to do it inside of the engine, but I did it on the quick and dirty, and according to safari, it works great. This should mean faster pageloads for people, especially our lovely UK noders.

So let's talk features. There's two that we're going to get done this month, that are going to require a good deal of work, but that I think is going to start to make things a bit interesting around here. The first one is that we're going to retire Node Heaven. Okay, so that's a bit dishonest. That's a feature for both of us; I need the archived node format to change some. Drafts Beta will give you an idea of what the new Drafts page is going to look like after I push it live. Removed/nuked drafts will live in their own section. I need to do a bit more work on it, but that's kind of what that looks like. So instead of looking into node heaven, I'm going to put everything that was ever nuked, and is not obviously a maintenance node, into your drafts. You can permanently remove them from there if you so choose, or leave them there to rot. No worries either way

Okay, so onto the real feature. We're going to create a writeup feedback mechanism that's very similar to user group debates, if you have seen those. Here's the general overview of it, and once I have it working in a beta capacity, then I'll put together a feature spec for people to comment on (possibly using the system, if it's in production). I'm calling the feature "Writeup Feedback", but I'm bad at naming. Here's the gist:

  • Feedback is a way outside of the messaging system for users to write more detailed commentary or responses to a particular piece. We use the messaging system for far too much, and while it is truly the lifeblood of the site, we shouldn't keep relying on it. People don't get credit for the incredible work that they do in helping out new noders.
  • Feedback will be off by default on old write-ups. People can of course, go back on and turn it on, if they want.
  • Feedback by default will be private to a selected group of folks: Editors can always see feedback, regardless of setting. The author and the responder can see any feedback in any thread.
  • Feedback can also be seen by users of a high enough level. The thought here is that we want experienced people policing feedback discussions over how to improve a particular piece.
  • Feedback should follow something back and forth from draft form.
  • You can choose to open up public commentary where everyone can see the responses to any writeup of yours. For instance, that would be a useful thing to have here in root logs. There's nothing you can't say to me that I don't care if it's public or not.
  • Feedback can be voted upon by those who can see it. There's no reason why we can't support things like C!s on it later.
  • We're going to keep separate track of people's feedback ratings. It's something we can take into account when choosing new staff.

The goal here is to help collaboration when writing here, and to make it a place where you can truly work on a piece with the community. I have larger plans for this feature, but that is certainly the first cut, and I'll have some more details on it soon as I work it up in dev.

Diving deeper into the code, we've done a lot of symbol pollution cleanup. This means moving a lot of Everything::HTML functions into Everything::Application so that we can properly encapsulate the logic. E2 used to have a large, flat namespace where people could call various functions and it was used liberally inside of the eval()'d execution context. Now, since we're moving to templates, we're going to want the logic in a place where we can get to it. Everything::HTML will continue to exist for a while as we get the last of the display and document code out of the database. The goal is to move it into a combination of Everything::Application and Everything::Request. Everything::Request is our first Moose-based object in the code.

Strengthening the models has been going well off in the branch in which I am working. It appears that there are some small, deep bugs with how it works; most notably the return type is bogus when looking for either the search results or "not found". Once I have that and the rebless code for the current drafts implementation done, we can start to take the newly cleaned namespace of Everything::Application, and wind that into the various nodetypes.

So that's where we stand. Progress continues, but is hard to see because it is so deeply under the covers. We are changing the tires on the car while it is still running


    Oct 8
  • Added compression to the page
  • Database upgrade
  • Removed the mvtest code which wasn't used
  • Moved all of the voting code over to Everything::Application
  • Fixed a deep bug introduced last night where users with legacy passwords weren't updated to the new system
    Oct 9
  • Removed jQuery BBQ from the default script set after a bit of investigation. It doesn't appear that we actually use it for anything, but I'm not going to like, delete the node for a while just in case I'm wrong
    Oct 10
  • Playing with Javascript unit testing some. Looking at QUnit and Mocha, though Mocha has been kind of hard for me to get working.
  • Added the accounthelp@ alias to the Sign In nodelet.
    Oct 11
  • Did a pile of long-overdue frontend javascript work today. I consolidated all of the non-BBQ javascript into one load and placed it at the bottom of the page. This should make pageloads snappier for users, and allow us to do more with the javascript.
    Oct 12
  • Reimplemented a jquery bbq deparam shim for us, so I can get rid of that heavyweight library for a super-simple use case, I think. We have this bit of javascript which adds lastnode_id onto urls. We might just replace this with cookies entirely.
  • Removed the IE 5,6,7 support code in the javascript. IE 7 is 0.21% of our traffic, so it's safe to get rid of.
  • Fixed some things that were incompatible with a modern jQuery.
  • Everything looks good in my smoke tests, so pushing the modern jQuery out to production. Up to jQuery 1.11.1.
  • Not to totally pat myself on the back, but I effectively halved pageload speed for me.
  • Wired up javascript unit tests, which might help me test things later, not sure.
    Oct 13
  • Increased max writeup size from 64k to 16M.
    Oct 19
  • Deleted honor roll and you
  • Made every page load faster by simply having the basesheet have proper cache-control headers on it, so that it will revalidate in like, 2023.
  • Use asynchronous javascript for page loading boosts.
    Oct 20
  • Fixed the IE9+ compatibility check to tell it to not use quirks mode, ever.
    Oct 26
  • Working on more symbol cleanups (work has been crazy the last few days, apologies)
    Oct 29
  • Continuing to clean out Everything::HTML. Moved showCompleteDiff and showPartialDiff over to Everything::Application. Changed up the broken patch importer and patch display page
  • Nuked testfront
  • Created the changeroom sustype, so that we can lock users in a particular room.
    Oct 30
  • Reimplemented the /drag command as a "soft" borg.