What is a “Bag of Choppy”?

dobegood posted to Reddit:

My mum just used the phrase “we’d be in for a bucket of custard.” I’m not sure if this is a real phrase or she’s having a stroke. Please advise.

My mother once described her new cat, which was very skinny when she got it, as looking “like a bag of choppy”. I asked her what “choppy” was and she admitted that she didn’t actually know – all she knew is that her mother used to describe things that looked like that cat did as looking “like a bag of choppy”. We tried to look it up or work it out but we couldn’t get to the bottom of it – what is “choppy” except for something that comes in a bag and looks like a scrawny cat? – and so we decided to ask her mother, who was then still alive.

My gran was a proper Hartlepudlian, the kind that you could genuinely imagine hanging a monkey, and she was full of old phrases that defied definition. If you ate with your mouth open she’d tell you off for “clacking”, babies were “baens”, and we were always told not to sit on cold doorsteps or else we’d get “chin cough” (I’ve no idea to this day what chin cough is; all I know about it is the mechanism of transmission, and I’m skeptical of that!). Anyway, on our next visit to the North East we resolved to ask my grandmother what exactly was a “bag of choppy”.

Turns out she didn’t know either; it was just a phrase her mother had used.

tl;dr: what is a “bag of choppy”?

Tomorrow’s Web, Today

Maybe it’s because I was at Render Conf at the end of last month or perhaps it’s because Three Rings DevCamp – which always gets me inspired – was earlier this month, but I’ve been particularly excited lately to get the chance to play with some of the more “cutting edge” (or at least, relatively-new) web technologies that are appearing on the horizon. It feels like the Web is having a bit of a renaissance of development, spearheaded by the fact that it’s no longer Microsoft that are holding development back (but increasingly Apple) and, perhaps for the first time, the fact that the W3C are churning out standards “ahead” of where the browser vendors are managing to implement technical features, rather than simply reflecting what’s already happening in the world.

Ben Foxall at Render Conf 2017 discusses the accompanying JSOxford Hackathon.
Ben Foxall at Render Conf 2017 discusses the accompanying JSOxford Hackathon. Hey, who’s that near the top-right?

It seems to me that HTML5 may well be the final version of HTML. Rather than making grand new releases to the core technology, we’re now – at last! – in a position where it’s possible to iteratively add new techniques in a resilient, progressive manner. We don’t need “HTML6” to deliver us any particular new feature, because the modern web is more-modular and is capable of having additional features bolted on. We’re in a world where browser detection has been replaced with feature detection, to the extent that you can even do non-hacky feature detection in pure CSS, now, and this (thanks to the nature of the Web as a loosely-coupled, resilient platform) means that it’s genuinely possible to progressively-enhance content and get on board with each hot new technology that comes along, if you want, while still delivering content to users on older browsers.

And that’s the dream! A web of progressive-enhancement stays true to Sir Tim’s dream of universal interoperability while still moving forward technologically. I’ve no doubt that there’ll always be people who want to break the Web – even Google do it, sometimes – with single-page Javascript-only web apps, “app shell” websites, mobile-only or desktop-only experiences and “apps” that really ought to have been websites (and perhaps PWAs) to begin with… but the fact that the tools to make a genuinely “progressively-enhanced” web, and those tools are mainstream, is a big deal. If you don’t think we’re at that point yet, I invite you to watch Rachel Andrews‘ fantastic presentation, “Start Using CSS Grid Layout Today”.

Three Rings DevCamp 2017
Three Rings’ developers hard at work at this year’s DevCamp.

Some of the things I’ve been playing with recently include:

Intersection Observers

Only really supported in Chrome, but there’s a great polyfill, the Intersection Observer API is one of those technologies that make you say “why didn’t we have that already?” It’s very simple: all an Intersection Observer does is to provide event hooks for target objects entering or leaving the viewport, without resorting to polling or hacky code on scroll event captures.

Intersection Observer example (animated GIF)

What’s it for? Well the single most-obvious use case is lazy-loading images, a-la Medium or Google Image Search: delivering users a placeholder image or a low-resolution copy until they scroll far enough for the image to come into view (or almost into view) and then downloading the full-resolution version and dynamically replacing it. My first foray into Intersection Observers was to take Medium’s approach and then improve it with a Service Worker in order to make it behave nicely even if the user’s Internet connection was unreliable, but I’ve since applied it to my Reddit browser plugin MegaMegaMonitor: rather than hammering the browser with Javascript the plugin now waits until relevant content enters the viewport before performing resource-intensive tasks.

Web Workers

I’d briefly played with Service Workers before and indeed we’re adding a Service Worker to the next version of Three Rings, which, in conjunction with a manifest.json and the service’s (ongoing) delivery over HTTPS (over H2, where available, since last year), technically makes it a Progressive Web App… and I’ve been looking for opportunities to make use of Service Workers elsewhere in my work, too… but my first dive in to Web Workers was in introducing one to the next upcoming version of MegaMegaMonitor.

MegaMegaMonitor v155a Lists feature
MegaMegaMonitor’s processor-intensive “Lists” feature sees the most benefit from Web Workers

Web Workers add true multithreading to Javascript, and in the case of MegaMegaMonitor this means the possibility of pushing the more-intensive work that the plugin has to do out of the main thread and into the background, allowing the user to enjoy an uninterrupted browsing experience while the heavy-lifting goes on in the background. Because I don’t control the domain on which this Web Worker runs (it’s reddit.com, of course!), I’ve also had the opportunity to play with Blobs, which provided a convenient way for me to inject Worker code onto somebody else’s website from within a userscript. This has also lead me to the discovery that it ought to be possible to implement userscripts that inject Service Workers onto websites, which could be used to mashup additional functionality into websites far in advance of that which is typically possible with a userscript… more on that if I get around to implementing such a thing.


The final of the new technologies I’ve been playing with this month is the Fetch API. I’m not pulling any punches when I say that the Fetch API is exactly what XMLHttpRequests should have been from the very beginning. Understanding them properly has finally given me the confidence to stop using jQuery for the one thing for which I always seemed to have had to depend on it for – that is, simplifying Ajax requests! I mean, look at this elegant code:

.then(function(response) {
  return response.json();
.then(function(json) {

Whether or not you’re a fan of Javascript, you’ve got to admit that that’s infinitely more readable than XMLHttpRequest hackery (at least, without the help of a heavyweight library like jQuery).

Laser Duck Hunt at Render Conf 2017
Other things I’ve been up to include Laser Duck Hunt, but that’s another story.

So that’s some of the stuff I’ve been playing with lately: Intersection Observers, Web Workers, Blobs, and the Fetch API. And I feel all full of optimism on behalf of the Web.

[x-post /r/MegaMegaMegaLounge] [Graph] Tracking ‘engagement’ across the MegaLounges. Why are some Megas more-active than others? (interpretation in comments)

This link was originally posted to /r/MegaMegaMonitor. See more things from Dan's Reddit account.

Engagement level by MegaLounge

In /u/10_9_‘s recent thread about gilding trends, /u/razerxs made an interesting observation: that the huge ‘drop offs’ in membership of MegaLounges after /r/MegaMegaMegaLounge does not correlate with their expectations, based upon the level of activity in /r/MegaLoungeV. /u/razerxs

observed that e.g. /r/MegaLoungeV is a highly-active sub, which isn’t necessarily what you’d expect if the activity level was based entirely upon the number of people permitted to have access.

I started wondering if there might be a better predictor of engagement levels. I experimented by looking at the ratio of how many people ‘subscribe’ to each MegaLounge to how many people are permitted into there. This isn’t a perfect measure of engagement, of course, but my thinking was that of the people who are invited into a MegaLounge, only some of those will add it to their front page… but that those who add it to their front page are more-likely to actively participate.

The graph shows three things. From the left axis, the blue and red lines show the number of people who are allowed into each MegaLounge and the number of people who are subscribed to each MegaLounge. As you might expect, there’s a gap between the two and the gap narrows in higher lounges, where there are fewer people.

But what I was interested in is whether and where this gap changes proportionally: is the “subscription rate” among eligible people higher in particular lounges, and can this been seen as a predictor of activity levels and engagement rates in each lounge? That’s what the green bars show (against the right-hand axis: note that it doesn’t start at zero). In general, across the MegaLounges up to and including /r/MegaLoungeSol, there does seem to be a slight upward trend: i.e. the higher a lounge you’re in, the more-likely that eligible people are to add that lounge to their front page. Beyond /r/MegaLoungeSol the bars jump around all over the place, probably because of the small number of people ‘up there’, and I suggest that we ignore them: accuracy of this as a predictor would be expected to be better where there were more subscribers: say, up to about /r/MegaLoungeDiamond.

What this would predict would be a “lull” at /r/MegaLoungeVIII. I don’t know if that’s your experience or not. And, interestingly, the ‘subscription ratio’ at /r/MegaLoungeV and /r/MegaLoungeX are also unusually low, bucking the overall trend. What does this mean? I don’t know. But if /r/MegaLoungeV really is to be considered one of the more “active” MegaLounges, then I think that we can safely say that my hypothesis – that we might be able to predict activity hotspots by looking at the subscription rate – is not backed up by the data.

Still: interesting stuff.

People who should REALLY be using MegaMegaMonitor

This self-post was originally posted to /r/MegaMegaMegaMonitor. See more things from Dan's Reddit account.

You know how I love to play with statistics and data mining. Well, I’ve been doing so, and I thought I’d share with you uber-elites some fun-but-pointless data I’ve been extracting: the names of the Redditors who’d probably most-benefit from MegaMegaMonitor, but who aren’t using it (based on how many tracked private subs they’re part of – note that some subs are tracked but don’t [yet] have icons…):

  1. /u/madazzahatter
  2. /u/outroversion
  3. /u/k_princess
  4. /u/prepetual_change, /u/mike_pants, and /u/rachycarebear
  5. /u/The1RGood, /u/AdrianBlake, /u/TheBlazingPhoenix, /u/troll9025, /u/dystopika, /u/vanityprojects, /u/DaveLambert, /u/preggit, and /u/Eat_The_Muffin
  6. /u/SkinBintin, /u/KnashDavis, /u/wil, /u/mrkleen340, /u/IpMedia, /u/nottychz, /u/drocks27, /u/thebobstu, /u/Karma_4_Free, /u/Mrs_Holman_7, /u/krixo, /u/S_Jeru, /u/Motha_Effin_Kitty_Yo, /u/carmabound, /u/InvaderT, and /u/AndyWarwheels

I wonder if I should have some kind of referrals scheme, whereby people can claim credit for getting other people ‘hooked’ on MegaMegaMonitor. Or maybe just have a scoreboard of “who suggested it to whom”.

Or maybe I’m overthinking it all again.

Anyway: just wanted to share with you. I’m thinking of doing some statistics cross-referencing “highest MegaLounge” against “number of (tracked) private sub memberships”, because I’ll bet there’s a correlation there… and if there is, I’d be interested to see who the outliers are! /u/k_princess would probably be one, as she’s in lots of private subs but is only up to /r/MegaLoungeSaturn, somehow. /u/outroversion even more so, with a highest MegaLounge of /r/MegaLoungeRuby. But there’s always a lot we can learn from the outliers. And there must be outliers at the other extreme, too: people who are way up in the MegaLounges but aren’t in many other private subs: I wonder who they are?

This has been your insight into my mind, for today. Have a great week!

MegaMegaMonitor now supports the noble Ninjas! (and the filthy pirates, I suppose)

This self-post was originally posted to /r/NinjaLounge. See more things from Dan's Reddit account.

As of MegaMegaMonitor v120, the browser plugin now supports /r/NinjaLounge! What does this mean – well, if you install MegaMegaMonitor into your browser:

  • You’ll be able to see your ninja brethren everywhere on Reddit: they’ll have a “ninja” icon after their name, so you can’t miss them!
  • You’ll be able to write secret messages that only other ninjas (who use MegaMegaMonitor) will be able to decode. A great way to “out” suspected pirates when you meet them elsewhere in Reddit and to coordinate attacks.
  • If you choose, you can go into your MegaMegaMonitor settings and take off your ninja disguise! If you do this, even pirates (who use MegaMegaMonitor) will be able to see that you’re a ninja by the icon next to your name, so it’s only an option for ninjas who prefer an aggressive stance rather than a stealthy one. It’s up to you!

The pirates are about to make this same discovery, too, but (on account of me being a ninja!) you’re hearing about it first. To arms!


v114 released – performance improvements

This self-post was originally posted to /r/MegaMegaMonitor. See more things from Dan's Reddit account.

I’ve just released version 114 of MegaMegaMonitor. You’ll get the upgrade automatically within the next day or so, or you can force it to upgrade manually by clicking here. If you’re not using it yet, install it here. Changes in this release are:

  • Performance improvements – many users, and particularly those on slower computers, those using Firefox, those with access to many private subreddits, and those browsing long comment threads, have seen MegaMegaMonitor get painfully slow. Performance should be much improved for these users, now.
  • Two new subreddits – MegaMegaMonitor now supports /r/gildedgonewild and /r/ElephantLounge. /r/ElephantLounge is another subreddit to which I don’t personally have access, so I’d love to hear from people who do to reassure me that the icons are working as they’d expect. These newly-added subreddits support all of the usual MMM features including encrypted messages.
  • Prettier icons – people at ‘gemstone’ level MegaLounges now have appropriate icons, and people ‘stuck’ (black icons) in the MegaLounge chain theme “after the sun” now have part of the style of the icon carried over, too.

As always, I’d love to hear what you think, including any ideas for the future. I’m still hoping to make the “gossip” feature, mostly for the folks in /r/gilderguild, and I’ve still got grand ideas to help support /r/NinjaLounge and /r/PirateLounge (I’m just waiting for the go-ahead!). I’d also like to add some stability-improving features in an upcoming release, to help ensure that MegaMegaMonitor stays working with minimal intervention and is hopefully even capable of outliving me!

Update: I’ve also just pushed out v116, which also adds:

  • Encrypted messages on wiki pages – it’s now possible to use the secret message feature to put encrypted messages onto Reddit wiki pages, too. I’ve done this so that I can use some as examples in the upcoming documentation that’ll be appearing later today.

Update2: MMM updates are like buses. You wait for ages for one to come along, and then three come all at once. Here’s v120, which adds:

  • /r/NinjaLounge and /r/PirateLounge support – not only do pirates and ninjas get icons and encrypted messages, like everybody else: they also get an extra setting on their options page to choose whether or not their identity is protected (via ninja stealth or pirate magic) – the default – or if they’re going out proud and fully-armed (which means that their enemies can see their icon, too!).

v108 released – faster updates, smarter caching, better “back” button support, able to power more private subs, new subs, and “tiny icons” mode

This self-post was originally posted to /r/MegaMegaMonitor. See more things from Dan's Reddit account.

I’ve just released a new version of MegaMegaMonitor, v108. It’s compatible with v106, so you can upgrade “at your leisure” (or else your browser will probably do it for you in a day or two). Here’s what’s new:

  • Faster updates – thanks to some improvements at the back-end (and with apologies to people who were temporarily inconvenienced by missing flair for a few hours yesterday), your MegaMegaMonitor icons should now never be more than 8 hours out-of-date (and typically closer to 3-4), rather than the previous 24 hour delay.
  • Smarter caching – this is achieved, however, alongside smarter caching, so your copy of MMM will spend less time checking for updated data, which will make it less-likely to slow your browser down, especially if your Internet connection isn’t very good.
  • Better “back” support – thanks to the HTML5 History API, the MegaMegaMonitor “tools/options” panel now has its own web address. Which means that if you press “back” to get out of it, it works like you’d expect, not in weird ways as it did previously. It also means that you can give people a link to “their MMM options page” if you’re helping them to understand it – here’s your MMM options page, for example!. Your options are still all stored on your computer, of course – it’s just an illusion.
  • Private sub supportat long last, MegaMegaMonitor is capable of supporting private subreddits of which I’m not personally a member. If you’re the moderator of a private sub and want to make this happen for your private sub, get in touch. If you’re not a moderator but would like this to happen for your private sub, talk to your moderators! This new change means that, for the first time ever, it’s possible for somebody to have more icons than me. Get collecting!
  • New subs – Icons, cryptokeys etc. have been added for /r/MegaLounge2, /r/BestFriendClub, and are ready to be added to /r/NinjaLounge and /r/PirateLounge as soon as the /r/PirateLounge mods add /u/MegaMegaMonitorBot as a contributor (there are also some bonus features for the /r/NinjaLounge and /r/PirateLounge on the way, too).
  • “Tiny icons” mode – don’t like how much space all of the icons take up? Now from the options page you can switch to “tiny icons”, which are eye-squintingly small but should fit daintily alongside the name of the redditor you’re looking at. How sweet.

I hope that’ll keep you all amused for a little while. Don’t forget to get in touch if you’d like icons for your private subs: I wonder if the /r/HarryPotter folks would like MMM support for their “houses” (which are four private subs)? And whatever happened in the end to /r/DragonLounge? And is /r/ElephantLounge still a thing? The more subs MMM supports, the sooner people will finally start overtaking me with icons!

(FYI: the /r/centuryclub mods have already said “no”, so that’s not going to happen until I get another 70K comment karma…)

Update: /u/gamehelp16 (who’s about to get some gold for their efforts) spotted a bug in the tiny icons that could make some icons invisible, some of the time. I’ve now released v110, which fixed that problem. Thanks, /u/gamehelp16!

Edit: fixed typo.

Update2: v108/v110 also broke the “search for a user’s posts by sub” feature, so I’ve rushed-out v112 to fix that. I really ought to initiate some kind of “beta” process, shouldn’t I?

v108 will be the first version to have the potential to support ANY private subreddit. Applications welcome to be among the first subs to get this feature.

This self-post was originally posted to /r/MegaMegaMonitor. See more things from Dan's Reddit account.

I’ve got all of the core code written for v108, and I’m looking forward to sharing it with you all. But first, I’d like to find mods from one or more private subs of which I’m not a member who’d like to be guinea pigs for a new feature.

This new feature will, at long last, allow icons, encrypted messages, and all of the other fabulous features you love to be used on private subreddits even if I’m not personally a member of them. From the serious (/r/top? /r/centuryclub?) to the silly (/r/dragonlounge?) and even to fringe outliers (/r/MegaLounge2), this feature could be yours. I’m already talking to the /r/NinjaLounge / /r/PirateLounge folks.

Here’s how it works:

  1. You invite /u/MegaMegaMonitorBot into your private sub
  2. You let me know (some day I’ll automate this step by having /u/MegaMegaMonitorBot let me know)

MegaMegaMonitorBot can then see the membership list for your sub, and can thus – for MMM users – let them “see” one another anywhere around Reddit. So it’s basically the same as regular MegaMegaMonitor, except you don’t need to invite me personally into your sub.

The observant among you might note that, if I were the unscrupulous type, I could log in as /u/MegaMegaMonitorBot and snoop upon whatever it is that you say there. I suppose that’s true, just as it is with any bot that you grant access to your sub. But on the other hand: if I were malicious, I’d already have seen such content by abusing the trust of the people in your sub who’ve installed MMM already. Just sayin’. Anyway: the key thing is, it’s up to you. I think that this has the potential to add real value to many kinds of private subs, and I’d love for people to have the chance to make use of it.

Not a mod? Tell the mods of the subs you’re in!

tl;dr: next version of MegaMegaMonitor will be able to support private subs of which I’m not personally a member: mods who want to do this should invite /u/MegaMegaMonitorBot and then contact me; non-mods should pester their mods.

Icons all disappeared after the v106 release? My bad, sorry…

This self-post was originally posted to /r/MegaMegaMonitor. See more things from Dan's Reddit account.

To fix it, (1) delete MMM from your Greasemonkey/Tampermonkey scripts list, then (2) restart your browser, then (3) install MMM again. Most people can get away with fewer steps than this, but this three-step approach should work for everybody.

Hi all!

So apparently everything broke for a lot of people after I released v106. The problem was the combination of two things:

  1. v100 broke the auto-updater.
  2. v100 also broke the error message that was supposed to appear if the auto-updater was broken and #3 happened.
  3. v106 changed the format that the data was passed around in, which invalidated earlier versions that were still “out there”. It repaired #2, though!

The combination of these two factors meant that people running v100, v102, or v104 will have ended up “stuck” on those versions, and won’t even have gotten error messages to tell them that the data format had changed and they needed to update.

I’ve remotely-fixed #1 as of yesterday, so everything should fix itself for anybody who’s still affected. Sorry it took longer than it should have to do that, though: I’ve had a nasty stomach bug this week.

Everything should now be okay for everybody, and I’m going to be getting started on all-new features in about a week and a half, of which the principal new feature will be tools to allow MegaMegaMonitor to work on private subreddits that I’m not a member of (with permission from the mods of that sub). Updates, as usual, on /r/MegaMegaMonitor.

Thanks for the well-wishes, all.