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.
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.
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”.
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.
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.
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.
Fetch
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:
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).
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.
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.
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…):
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!
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!
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!).
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 support – at 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!
“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?
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.
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.
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:
v100 broke the auto-updater.
v100 also broke the error message that was supposed to appear if the auto-updater was broken and #3 happened.
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.