Hello crew! If you're reading this, you're interested in the future of the site, and for that I thank you. There's a lot of work to be done, but I'm super optimistic about the near and long term future of this place. I'm going to talk a bit about the project list, and what that means for changes you will see. The last few months have been invisible changes that have helped to shape the platform that we're on away from something that holds us back to being something that really works for us and allows us to grow. If you're interested in the technicals, read below the project tree.
You can see from last month's log, I made a lot of cuts to functionality that just wasn't used. It's not that I want to destroy people's work, but if we're going to make radical engine changes, we need to only support the code that we use. There is non-trivial technical debt we have accrued here that needs to be solved
Here's the project tree. Each of these items has their own dependencies, but this is the high-level list:
S3 Integration - Leverage Amazon's S3 to be a ghetto CDN for us.
- Improve Everything::S3 to be able to delete items and upload non-filesystem objects
- Integrate the s3content dbtable into jscript and stylesheet nodes so that items can have their own version and bucket configuration.
- For performance reasons, we will want to minify JS/CSS and upload a gzipped version
- S3 cannot negotiate content type, but we can negotiate browser capabilities on the main page, and if the browser supports gzip encoding, we can ship them off to like $NODEID.$version.min.gzip.css, otherwise just $NODEID.$version.min.css
- We will eventually need to ship four versions of CSS for each upload of CSS to S3.
- Implement a preference for theme developers (and site developers) to get the raw, uncached JSCRIPT stuff directly from the page.
Backup logs to S3, so that we can keep disk usage down, and prevent machine dependence.
Figure out why backups are completing to S3, but are not showing up as complete.
Apply content cache suggestion headers to the jscript and the CSS. Because we are doing explicit versioning, we can set very long-running caches.
Research built-in S3 versioning, and if it makes sense.
Move the S3 versioning away from using the NodeCache's version, as it's really not the right way to go for some technical reasons. It also screws with the development environment.
Sitemap generation
- Set the content type and caching properly on the sitemap stuff. That's more everything::s3 work.
- Set the granularity of the date to be better than day in the sitemap
- Include superdoc positions and set proper reload suggestions on various superdoc and other dynamic pages
Platform stuff
- Add better verbose logging now that we capture cronjob output. This might be better handled as an Amazon SNS message, but I'm not sure.
- Install NTP to combat clock skew
Webserver stuff
- Add in a reverse proxy rule for images, which might solve the Jukka Dim emulation problem below
- Add in a reverse proxy rule for java chatterbox, move to S3
- Add in a reverse proxy rule for TinyMCE, because having it off page breaks some stuff, including the html edit function
Layout stuff
- Remove the h1 from the logo in zen, because it confuses search engine snippet generators where the actual content stuff is. Ideally, this sort of depends on S3 upload stuff.
- Custodian reported a bug where categories are spooling up a bunch of stuff in Javascript, so there might be some performance work there.
- Jukka Dim emulation has hardcoded image paths, which is causing it to be broken. I can fix it with either a reverse proxy rule or an S3 thing
Arbitrary node metadata
- I'm implementing a system where we can place a key-value on any node. This is going to eventually replace user $VARS, and allow us to place any arbitrary piece of data on a node. The inaugural feature of this is to squash ads on pages that google has reported to me as being out of policy for their ad generation.
- I'm also going to be documenting each piece of metadata (somehow), so that I can look it up when I inevitably forget what particular keys are across the app.
- This feature will expand into providing microdata on various types of nodes. See http://schema.org for those technically inclined to learn how microdata works. Non-nerdy version is that it's going to give google better insight into your writing so that it's more easily findable, and the content is easier to pick up
Everything engine
I'm going to be implementing a delta-encoded layer 1 nodecache where anything that is marked as "permanent" is tracked by a global delta update time. Whenever a perm node gets updated, it will update that global time. This will prevent us from having to go back to the versions table whenever we access a node inside of our L1 cache. If we pass the global delta check, then no version checks needed. If we fail the global delta check, on this pageload only, we will revalidate the versions of everything in cache. This is a fairly straight-ahead change that should provide us pretty huge performance gains, that I will subsequently hammer into useful features. As noted below, typeversion handles most of that now without a problem, so we'll continue with that until we need a memcached
- Remove a lot of the Everything::* functions which really want to be inside of the Everything::HTML execution space, and place them in that space instead. When that's done, we can move a lot of those out of a polluted namespace into an app logic section so that we can reduce the permutations of copy and pasted code in the codebase.
This section gets updated as I work on stuff, and I often leave notes for myself here.
October 1
- Update guestuserbanner to put a comma in the right place.
- Create cachedeltaversion for delta-encoded nodecache. Since that is such a complicated piece, it's easier to do that before node parameters, though it's tempting only create a read-once cache for nodeparameters and be done with it until we need a memcache
- Moved the items from Everything::NodeBase::PERM into Everything::CONF so that they are tweakable outside of code, basically
October 2
- Did a pretty serious investigation last night into what I thought would be a good idea to handle delta-encoded L1 caching, but the truth is that it's going to be a lot of really finicky work to untangle the typeversion entries from a broader typeversion strategy. No one has actually touched the typeversion stuff for years, but it's still working under the hood, so that's a good thing. The problem is that we don't pick out individual types, we just grab all of the typeversion table and just run with it, so that's relatively performant. It's also a super minor speed increase to kill off nodetypes that we don't need. I'll need to bootstrap the typeversion table in the future in dev to properly simulate it, so there's some work to be done there before I can really continue to see if that or a different cache hierarchy strategy is in order. I did update sustype, nodelet, and a few other typeversion items to improve performance, but the other nodetypes don't hit sit in cache enough to warrant it.
- Backend of arbitrary node metadata is working fine and installed into production. I'll deal with the database problems when they show up with a front-end memcache/elasticache. In-page nodecache caching, it gets thrown away after the pageload. I'm going to wire up some admin/c_e tools shortly to tag stuff, and we'll move on from there.
- Cleaning out the restricted_testdoc type just to wind down an unused nodetype. Nuked mauler's testdoc
- Nuked New punch thyself
- Nuked mauler's Sandbox X: Sand of Destiny
- Nuked my updated proposal in 300 words or less
- Nuked mauler's sandbox XI: To Infinity and Beyond
- Nuked mauler's Sandbox I: A New Hope
- Nuked restricted_testdoc, the nodetype
- Added the Node Parameter Editor, and added it to episection_ces. I'm working on validation and application logic rules right now.
- As one of the inaugural cleanups, working on adding cloakers support into the nodeparam system. Started off inaugurally with the inactive E2Med account. Name of the parameter, for my reference 'chatterbox_cloaker'
- Added verbosity to the database_upload_to_s3 script so that I can help catch why it's acting like it's failing.
October 3rd
- Deleted user_attributes, as it was a skeleton function very similar to the nodeparam stuff. Removed the user attributes code from Everything::Experience.
- Updated noding speedometer to not use Everything::Experience as an explicit namespace in getLevel
- Removed the Everything::Experience explicit namespacing inside of swapvote. This is an untested change, please let me know if it breaks. I need to move the Everything::Experience functions into Everything::HTML, then into something sane that isn't that, because we're getting namespace poisoning everywhere as I try to untangle stuff and move it into the .pms, and de-duplicate the code.
- Edited kill opcode, adding in explicit Everything::Experience call momentarily, so when I change namespaces around for a few functions, it will all work out.
- Removed the explicit Everything::Experience bit from the wertperch occasional playground.
- Major change: completely revamped the module Everything::Experience to be under Everything::HTML. This is a really good thing as it is going to help us clean up a huge amount of the code sloppiness here with recursive and unmet dependencies in things. Everything is going to go into ::HTML, since it's the primary execution context for all of the eval()s, and then we can break it out into properly spaced, non-exported functions.
October 4
- Did the same thing with Everything::Room that I did with Experience. Similar results. Will need to remove literally 200 'use Everything::*' statements in places.
- Cleaned out some Everything::XML pieces, so that I can have less code to maintain. We aren't going to use nbmasta anymore. Everything engine isn't an engine as much as it is something that drives this site, so we'll continue to clean it up to make it the best engine for E2 it can be.
- Turned back on static nodetyping, and put both that and the configuration items for memcached into the JSON file, so that it you know, uses the same configuration as everything else
- Removed 'Everything::Experience' stuff from a few places e2 gift shop, Voting Oracle, Websterbless, e2compile.pl
October 5
- Changed the way the google traffic cookie operates; I don't think it's doing the right thing, and is skipping .net and .org pages. I will know in a few days if I'm right.
- Removed some more Everything::Experience stuff: general container, showchoicefunc, showchoicefunc test, voteit, shownewexp,setupuservars, createroom, voteit2, addwriteup, createdby,chatterinfo, displayuserinfo, vitsection_maintenance, displaywriteupinfo,setCloakVision,screenNotelet, zendisplayuserinfo, noders nursery, zen_voteit, statsection_personal, formxml_user, xmlwriteup, statsection_fun, test_htmlcode, classic user edit page, caneditas, Epicenter, Chatterbox, TIPS, outside urls, Most Wanted, xp superbless, Everything's Best Users, superbless, create room, Scratch Pad Viewer, Noding speedometer, statsection_advancement, testdisplaywriteupinfo, showNewGP, page actions, categoryform, setdraftstatus, parentdraft, unpublishwriteup, Giant Teddy Bear Suit
- Nuked Gigantic Code Lister test, chowchoicefunc test, as they were old nate test nodes that aren't used in the main featureset
- Nuked voteit2 as it was an old test node
- Nuked swapsvoteit. Less old code means less to manicure.
- Nuked randotip, which was an old helpful thing I coded up like ten years ago. Wasn't used anywhere.
- Nuked test_htmlcode. Wasn't used anywhere.
- Updated the database backup script. Now notification works properly (I get an email when the backup is ready for archival)
October 6
- More Everything::Experience cleanups. This time in node heaven search, node heaven title search, archived: voting/experience system, the occasional wertperch playground, all the code, mauler's Sandbox VIII: Eight is Great, OldMinerian Autonomous Poking Machine, Honor Roll and you, sanctify, swapvote, vote, kill, massacre, Outside URLs nodelet editor, Everything Poll Creator, wheel of surprise, sanctify user, Do you C? What I C!, oolong's testing ground, Create Category, display categories, The recommender, Recalculate XP, Old Writeup Settings, level settings, The Everything2 Voting/Experience System, Everything's Most Wanted, Bounty Hunters Wanted, create a registry, in10se's sandbox 2, room maintenance create, message, cool, Scratch Pad XML Ticker, Everything's Best Users XML Ticker, Personal Session XML Ticker
- Nuked E2 Dream Shop, as it was a skeleton without enough meat to warrant keeping
- Everything::Experience is dead, and no one really misses it
- Started in to remove stuff that has old Everything::Room stuff to it. dragUsers, changeroom, formxml_room, room display page, All The Code, E2 Bouncer, go outside
- Killed Everything::Room
- Nuked e2 bouncer 2008-10-19, because we have e2 bouncer, and a source code repository
- Refactoring Everything::Search so that it can be moved into Everything::Application. Started pulling out the constants into $Everything::CONF
October 7
- Hollowed out all of Everything::Search and placed it into our new global Application logic module, Everything::Application. This is going to simplify our namespacing problems, and make our object hierarchy less convoluted. It will also enable proper code removal from various htmlcodes and other less great processing hacks we have had to use over the years.
- ... and subsequently fixed a problem where getId and getType were not covered by the $this->{db}->$method namespacing.
- Write out everything.errlog now as e2app.$date.log, which makes so much more sense and will allow an automated log to S3 delivery agent move properly. Also, it can be used to help track down various problems to when they occur, rather than a long, cumbersome grep.
October 10
- Having a busy week away from E2, but should be back shortly. Removed the horrible, horrible namespace cross-contamination inside of Everything::NodeBase, and replaced it with an instantiated call to Everything::Application.
- Updated All The Code to use Everything::Application instead of Everything::Search
- Removed 'Everything::Search' pieces from rdf search. Also fixed a typo
- Removed the 'Everything::Search' piece from E2 xml search interface
- Ugh, turns out there's two searchNodeNames. One in Everything.pm and one in Everything::Search. I'm getting rid of the one in Everything.pm, but I don't like this change. It's tough to suss out what various pages were doing.
- Updated parentdraft and rootbeer277's other sandbox to remove the other Everything::Search calls
- Updated cache dump to give info on which htmlcodes are compiled.
- Added an AUTHORS.md to the repository to give people credit. I want to know if someone is missing who has worked on the site in the past.
October 14th
- Changed the nodecache nodelet to use the newer form of what is going to be the ARRAY return of NodeCache::cacheDump/CacheQueue::listItems
- Updated cache dump to do the same
- Made cacheQueue::listItems return an arrayref to include the permanent information. Turns out we have some usergroup bloat we are going to need to handle
- Added group size caching information to cache dump
- Turns out that after some investigation, group caching code is somewhat broken, and group is not getting recalculated on permanent nodes. Group calculation is a form of allowed nodecache poisoning, and that is more than a bit weird.
- Figured out the cache corruption in Everything::NodeBase. Moved all of the groupCache stuff to NodeCache where it can't break anything, and actually clear the groupCache stuff on cache purge
- Changed Master Control to use the new $APP->isEditor() code.
- Moved getLevel over to Everything::Application, installing a compatibility layer
- Moved noding speedometer over to the Everything::Application version of getLevel
October 15
- getLevel moves to Everything::Application: general container,categoryform, Noders Nursery, voteit, shownewexp, setupuservars, addwriteup, uploaduserimage, changeroom, chatterinfo, displayUserInfo, vitsection_maintenance, vitsection_misc, showuserimage, statsection_personal, setcloakvision, screennotelet, zendisplayuserinfo, formxml_user, showNewGP, strikeUser, page actions
- Slowly replacing isEditor (the htmlcode) with $APP->isEditor: the killing floor II, remove, approve_draft, publish_draft, category, softlock, insure, linktrim, Drafts for review, in10se's sandbox 6, Disable actions, Your ignore list, super mailbox, suspension info, Your ignore list, The Nodeshell Hopper, Magical Writeup Reparenter, superbless, caja de arena, OldMinerian Autonomous Poking Machine, for review, zen e2node display page, ajax update page, drafttools, writeuptools, unpublishwriteup, canseedraft, categoryform, page actions, homenodeinfectedinfo, canseeNotification, editor homenode tools, show_node_forward, voteit, showmessages, displayUserInfo, zenDisplayUserInfo, firmlinks,addfirmlink, nodenote, nwuamount, dreamwuamount, testshowmessages, zenDisplayWriteupInfo, epicenterZen, notificationsJSON, canseewriteup, setdraftstatus.
- Took some unused code from Epicenter
Nuked isEditor. Yay!
October 16
- Continuing with the getLevel cleanups from yesterday: Epicenter
October 17th
- Nuked: Archived: Voting/Experience System,
- Added the s3content table to jscript and stylesheet
- More getLevel stuff: setdraftstatus, parentdraft, canpublishas, classic user edit page, outside urls, node heaven search, Node Heaven Title Search,the wertperch occasional playground, mauler's sandbox VII: Seventh Heaven, E2 Gift shop, message, createroom, Notelet editor, OldMinerian Autonomous Poking Machine, Everything's best users, Outside URLs nodelet editor, Voting Oracle, Old Writeup Settings, Everything Poll Creator, Sanctify user, Create Category, Display Categories, Ragnarok!, level settings, The Everything2 Voting/Experience System, Everything's Most Wanted, create a registry, in10se's sandbox 2, room maintenance create, vote, category, message backup, sanctify, swapvote, Recalculated Users, Personal Session XML Ticker, Everything's Best Users XML Ticker
- Took a stab at trying to fix Level settings, but it's way broken for some reason.
- Pushed my Everything::Application paramaterization code to production. It's a bit sparse right now, but includes rudimentary support for the cloakers setting and a hard level override that I'd like for testing. Also, I can use it to put back nate, and dbrown's hard-set levels that I took away in the revamp.
- Updated cloakers to properly fix e2med, which was not lower-cased
- Created parameter, the opcode for general use
- Updated Node Parameter Editor to list available node parameters.
October 18th
- Fixed changeroom so that we now use the Everything::Application version of userCanCloak, instead of canCloak
- Moved the seclog stuff to Everything::Application::securityLog, so that we can handle that deeper within the application as need be
- Made a Security Monitor entry for Parameter editing.
- Set nate's and dbrown's level to be 99 via parameters
- Gave aalnan, e2med, anemotis, bipolarbear, halspal, jane austen, maultest, padlock the ability to cloak.
- Nuked cloakers, installDir, fulltextdb settings, test setting
October 19th
- Added a parameter item to start to wind down untrue gods
- Updated Other users to use that item
- Added a replacement for system_settings as system in Everything::CONF, so we can get rid of %HTMLVARS. Reason for this is that it's not accessible from outside of the web-application, so it makes it harder to abstract the logic when we use those short cuts. Guest user is the first such piece of go, and we'll be pulling out the thirty different ways we check for guest user into Everything::Application
- Moved the flushcbox stuff to use APP->securityLog instead of a raw insert into seclog.
- Pulling out e2contact stuff, as that group is no more. set_htmlvars, message, chatterbox, flushcbox, Usergroup discussions
October 20th:
- Move more seclog raw insertion stuff into $APP->securityLog(): lock user account, unlockaccount, sanctify, bless, superbless, sanctify user, massacre, IP Blacklist, giant teddy bear suit, bestow cools, nodenote, Recalculate XP, insure, massacre, verify your email account, message, user maintenance delete, security monitor
October 21st:
- Got a working ntp recipe from opscode, so now our webheads won't fall out of sync.
- Hacked up zen container for some SEO stuff until S3 integration is a bit happier.
- Small patch to displaywriteupinfo to massage google into knowing a bit more about a timestamp if we can do it.
- Final seclog scrub: e2 gift shop, websterbless, Dr. Nate's Secret Lab, N-Wing takes a stab at What's my password?,Mass IP Blacklister, xp superbless, Enrichify, mauler's Sandbox VIII: Eight is Great, Create a new user, What's my password?, magical writeup reparenter, suspension info, Wheel of Surprise
- Ditching the now-disabled punch thyself. Updated security monitor to match.
- Killed off Kurt's Restoremaster 2000
- Nuked showchatter2006March
- Working to kill untrue gods. Modified: showchatter
October 22nd:
- Removed the ability to see printable/chaos from zen e2node display page
- Removed the ability to see linkview from zen writeup display page
- Working to kill untrue gods: showmessages, testshowmessages, showmessages_expand, usergroup display page, Recent Users, other users xml ticker ii
- Deleted Untrue Gods
- Deleted Votes per level
- Deleted cache settings
- Deleted euphorics
- Deleted cache_settings
- Migrated the necessary bits out of mail settings into $Everything::CONF. Deleted mail settings
- Deleted cachable_nodes
- Deleted test setting
- Decided to retire the mini-feature of Other Users per-user topics, since it wasn't really used. Deleted: Brawl's Delirium (I can restore it if you want it back, Brawl). And modified Other Users to remove it. Deleted User info, the setting.
- Deleted famous dead people
- Updated usersearchform to remove the call to 'default searchtypes';
- Deleted kthejoker searchform, as it didn't appear to be used anywhere.
- Updated Oolong's sandbox to remove the call to 'default searchtypes';
- Took out 'default searchtypes' from writeup search
- Killed default searchtypes
- Deleted the updatenewbies.pl stuff. Nuked fresh users
- Removed nosearchwords from Everything::Application, and moved that data into Everything::CONF. This is going to not only help performance, but that setting never really changed anyways. I can always update the recipe and put it in there additionally. This is one of those fixes where the platform is really helping us out, instead of holding us back. Deleted nosearchwords
- Deleted cachable_types
- Deleted survey message clicktrack, survey message control, surveymessage, survey message settings, surveyclicks
- Cleaning out more settings nodes. Deleted bot info
- Deleted fool's errand
- Tagged zen stdcontainer as having English pages to help with SEO
- Updated showchoicefunc/Gigantic Code Lister for edev to include Application and MAIL
- Deleted usergroupLeaderAdd, as it was an unfinished prototype
October 24th
- Performance enhancement on the isApproved stuff with groupCache, and added a "nogods" parameter (just has to be defined) in Everything::Application::isEditor
- Deleted e2mottos, afd2009Username
- Completely rewrote the way we handle meta description tags. This is kind of important. If it's a writeup, it grabs a cleaned 155 characters of the writeup. If it's an e2node, and there's a lede writeup, it grabs that one's text, otherwise it uses the highest rated writeup in the node. It's not perfect, but it helps push our google problem downfield some.
October 25th
- I've observed that the usergroup type, which is marked as permanent is filling up the node cache because there are 200 of them and only 500 node slots per apache process. Since they don't get kicked out, then this can be sort of a problem. As of the time of this writing, there aren't a lot of slots left for "warm" e2nodes/writeups, and it could cause other performance problems if more groups are added to the system.
- Deleted The New E2 Roadmap, which is a path forward i wrote in 2002ish, before I had the knowledge necessary to get it done. Strangely, it's somewhat similar to the plan we have today.
- Removed testinc. We don't use GD.pm anyways
- Nuked Server Error Lookup. It's broken under the new system anyways.
- Nuked e2 hardware. Was an old note from nate talking about our pre-AWS infrastructure.
- Nuked chromatic scratch pad. Was part of the old scratch pad functionality, like pre-2006.
- Nuked afd code, which was an archive of the 2004 April Fool's day code
- Nuked testing123testing the rating
- Nuked rating the dbtable
- Nuked rating the nodetype
- Removed usergroup display page 2
- Nuked Fixing The Guest User Experience
- Nuked labratory maus
- Nuked Everything2 Fall 2007 Feature Set Developmental Specification
- Starting to remove the old method of guest user checking, 'Guest User' first: showNewGP, show content, e2 penny jar, Silver Trinkets, zen stdcontainer, ticket maintenance create, scratch pad xml ticker, universal message xml ticker, usergroup discussions, in10se's sandbox 2, Javascript Compiler, universal message json ticker, unfavorite, Gab Central, My Achievements, Golden Trinkets, Verify your email account, messageBox, zen container, adminbar, varcheckbox, zensearchform, nodeletsection, sigtitlebar, zenwriteups, varcheckboxinverse, javascript_decider, static javascript, canseewriteup, canpublishas, usergroup display page, category edit page, level settings (still broken though), category display page, The Everything2 Voting/Experience System, node backup, What's my password, Everything's Best Users, Oolong's Testing Ground, the draughty atelier, javascript repository, Wheel of surprise, VARS information
- Starting in on the HTMLVARS method: edev, general container, e2 scratch pad, writeup search, your filled nodeshells, The Everything2 Voting/Experience System, Raw VARS XML Ticker
October 26th
- Our site got pretty badly chuffed up by 80legs.com, which is a shady botnet operation. Fixed it, robots.txt'd them and mailed them.
- Pushed an optimization to isSpider so that it doesn't run unless it needs to.
- Looked at displaywriteuptitle some. It's a bit frustrating because node hits were getting updated there, but it doesn't look like it's being called from zen. Either way, removed the direct call to the old isspider htmlcode
- Added pagecache stuff to cache dump
- Made ajax update page return 'application/json' as the mime type
- Through a series of recent code changes, we no longer were triggering a codepath which repaired autocommit to being on, so I explicitly turned it on. This removed a stack of cases where selects were happening for_update, leaving these hugely long running transactions going in the background, which when the bot storm hit us, we collapsed under the weight of those open transactions. I've cleaned up the code a bit, and will have to do some more, but that was a deep, odd problem to hit.
- Fixed up update New Writeups Feeder so that it doesn't just update all the time whenever someone votes :(
October 27th
Here's what happened, and why it won't happen again: So today we got hit by a bot network called 80legs, which is like an obnoxious guy who invites himself and 50k of his friends over to drink all of your booze and cpu cycles. So we've locked him out; but the state that it left us in was kind of bad. I rebooted the database a few times, and started looking at the processlist to figure out what was going on. We're on innodb, so when people came back and started trying to post drafts and vote, we had some kind of residual problem where autocommit was being kept at off.
Since autocommit was being kept at 0, most of our sqlSelectManys and sqlSelects where being run with FOR UPDATE at the end, which gets a lock on them. This sucks and was causing locks to pile up. Change #1: Make sure autocommit is always on.
Now, this was all find and dandy, but with autocommit always on, it was always adjusting XP immediately and a few other direct update scenarios, but that didn't seem to really cause any problems. The big offender was inside of the update maintenance on writeup where it was calling update New Writeup Data. This query was tipping over, causing some serious problems. It means that whenever someone voted on a writeup, it recalculated New Writeups. The query for this did a REGEX on the titles which was not performing well and causing votes to never complete.
I've adjusted the natural regeneration of the New Writeups nodelet to be approximately a minute, and will look to see what it is going to take to make the new writeups system a bit more scalable. Realtime voting and chat confirmedly works again. I also need to address some more of the database internals, but we'll get there.
- Fixed ilikeit (opcode), to use the new isSpider method of E:A instead of the htmlcode
- Nuked test isSpider
- Nuked isspider
- Wound down vttest. Had to take it out of system settings
- Fixed a problem with Scratch Pads, which ended up being in convertscratchpads
- Nuked Experimental Writeup Poster (old kthejoker prototype)
- Nuked: E2 FAQ: detritus
- Okay, so had a few glasses of wine, so time to take out more guest user checks: Settings, Your nodeshells, Personal Session XML Ticker, Node Heaven XML Ticker, Everything's Best Users XML Ticker, Welcome to Everything, Scratch Pads, oolong's sandbox, N-Wing's plaything, go outside, Your Nodeshells II, your ignore list, Verify your email account, usergroup message archive, Theme Nirvana, The Catwalk, squawkbox, squawkbox update, show user vars, Random nodeshells, Old Writeup Settings, Notelet Editor, outside url notelet editor, Noding speedometer, Nodelet Settings, Node Tracker, Node Heaven, New Frontpage, my recent writeups, My Big Writeup List, Message Settings, Message Inbox 2, Message Inbox, macro FAQ, Level settings, Java Chatterbox, iron noder progress, Findings:, Everything User Search, Everything Email Options, Everything Document Directory, Guest Front Page, Everything2 - Oolong's Front Page, ekw scheme cannery, edit weblog menu, E2 Ticket Center, Drafts for review, Display Categories, Decloaker, Create Category, Create a node
October 28th
- Deleted Your Nodeshells III
- Deleted message backup
- Made htmlcode edit page not suggest that it was a patch and that I should apply it. Very obnoxious.
- Winding down the ebug type. Deleted Browse Bugs, derrogatory elves, writeup entities, sort Everything Document Directory, C! allocation for editors, bug example submission, ebug display page, ebug (nodetype), ebug (dbtable)
- More guest_user cleanup: Display Categories, Between the cracks, Advanced settings, admin settings, Node Heaven Title Search, Message Inbox Grouper, ascorbic's toolshed, Your insured writeups, vote, swapvote, socialBookmark, pollvote, nodeletwidget, msgdemo, changewucount, category, bookmark, Vitals, Sign in, Personal Links, New Writeups, Epicenter, chatterbox, Categories, AJAX chatterbox, zen e2node display page, stylesheet serve page, stylesheet display page, room display page, nodelet display page, choose theme view page, zenwriteups, zenMobileTabs, zenDisplayUserInfo, zenadheader, voteit, votehead, votefoot, vitsection_misc,varsInteger, varsComboBox, varMenu, usersearchform, titlebar, testdisplaywriteupinfo, standard html screen, softlink, showUserGroups, showmessages_expand, showmessages, showchatterrand, setupuservars, setCloakVision, sendprivatemessagetest, sendPrivateMessage, sendPrivateMessageOld, sayings_nwing, rtnsection_nws, rearrangenodelets, processMessage, parselinks, page header, nwuamount, nopublishreason, nodelet meta-container, newwriteups2, msgfield, movenodelet, log ip, linkStylesheet, linkGroupMessages, legacyfrontpage, jsrearrangenodelets, isGuest, guestuserbanner, formxml_room, epicenterZen, ekw titlebar, e2createnewnode, displaywriteupinfozen, displayuserinfo, displayWriteupInfo, displaySingleVar, classic titlebar, changeroom, categoryform, private message xml ticker, my chatterlight, classic iconbar
- Now, we go through everything that used the isGuest htmlcode: The Registries, Registry Information, Recent Registry Entries, zen user display page, Nodeshells
- Nuked isGuest. Now, I thought I got everything, but it's possible I didn't.
- Killing off the nodemethod stuff. isGuest (nodemethod). nodemethod (htmlcode), nodemethod display page, nodemethod edit page, nodemethod
- Deleted chatterlight_backup_February2008, as it is now archived in git
- Swapping $DB->getNodeParam for $APP->getParameter : showchatter, showmessages, showmessages_expand, usergroup display page, node heaven search, other users, private messages xml ticker ii