Dan Q found GLQQT32Y Islip Millenium Wood

This checkin to GLQQT32Y Islip Millenium Wood reflects a geocaching.com log entry. See more of Dan's cache logs.

After a lovely walk up from the pump at GC6PDXP, my 3 y/o geocaching buddy and I found this lovely cache with no difficulty. Could easily justify a larger container here!
Beautiful day and a great location. TFTC.

Dan Q found GLQQRWZK Collice Street Water Pump

This checkin to GLQQRWZK Collice Street Water Pump reflects a geocaching.com log entry. See more of Dan's cache logs.

After an extended trip to the nearby park – one of our little one’s favourite places – she was able to be persuaded to join me for a little hike around the village. This old water pump (which she loved to play with) and the nearby cache was our first stop. An easy find: the little one was pleased to swap a sliding puzzle (which we barely managed to fit into the container) for a marble. SL. TFTC!

Annabel by an old-style water pump.

Dan Q couldn’t find GCZ51Y Eddie Confesses

This checkin to GCZ51Y Eddie Confesses reflects a geocaching.com log entry. See more of Dan's cache logs.

After a delightful hike across from two other caches, my 3 y/o geocaching assistant and I were optimistic about another find, but it wasn’t to be. It’s probably how well it’s camouflaged, but we hunted high and low sound the GZ for some time without success. The hint didn’t mean anything to us, so we hunted some more, but eventually had to give up. Maybe another day!

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' developers hard at work at this year's DevCamp.
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.

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:

fetch('posts.json')
.then(function(response) {
  return response.json();
})
.then(function(json) {
  console.log(json.something.otherThing);
});

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).

Other things I've been up to include Laser Duck Hunt, but that's another story.
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.

× × × ×

Dan Q found GLQP5J37 Best Kept Garden

This checkin to GLQP5J37 Best Kept Garden reflects a geocaching.com log entry. See more of Dan's cache logs.

Easy cache & dash for my 3 y/o niece and I on the way back from a trip to Islip play area (and one of Islip’s multis) from our home in Kidlington. Super easy find, nice and fast. No sign of the travel bug. TFTC.

Dan Q found GLQP4RPJ Church Micro 9088 – Islip, St Nicholas

This checkin to GLQP4RPJ Church Micro 9088 - Islip, St Nicholas reflects a geocaching.com log entry. See more of Dan's cache logs.

Came out with my 3 y/o niece (and budding geocacher) to the play area across the road and took a diversion to come find this cache. Enjoyed finding the stages and reading/counting to get the requisite numbers. GZ (from our interpretation of the coordinates) had an ‘obvious’ hiding place, based on previous Church Micros we’ve found, but our instincts were deceptive: what we needed to be looking for wasn’t really ‘micro’-sized nor was it, as we’d initially suspected, magnetic!

Hint meant nothing to us (some kind of pop culture reference?) but previous logs that mentioned broadening the search helped us resolve to carry on searching despite the recent DNF, and we evacuating found the container. We found it on the ground, but based on its design we don’t believe that that’s where it was supposed to be, so we returned it to the nearest location for which its design seemed to fit. Logs slightly damp, not critical, but we weren’t carrying our repair kit so we weren’t able to do any maintenance.

A great idea for a multicache but might benefit from a better hint (it still makes no sense even after finding the cache!) and perhaps a better hiding place (based on the logs, this one looks like it keeps getting disturbed).

SL. TFTC.

Dan Q found GLQJY8NE keele TB HOTEL north

This checkin to GLQJY8NE keele TB HOTEL north reflects a geocaching.com log entry. See more of Dan's cache logs.

Stopped off on the Southbound carriageway and took a walk over here to find this cache while I was nearby. Only had my phone and not my GPSr, which made finding this harder than I’d like (my phone’s GPS is usually pretty appalling) but the hint made all the difference. GZ a little disgusting right now as clearly the walk across the car park to the services’ toilets was too far for somebody (eww), made worse by this being the hottest day of the year so far (double eww). No sign of either travel bug – must have already been taken – which is a pity because I’m sure I could have helped both along! Ah well! TFTC.

Dan Q posted a note for GC2033H Heigh-Ho #5 – Doc

This checkin to GC2033H Heigh-Ho #5 - Doc reflects a geocaching.com log entry. See more of Dan's cache logs.

I just met somebody who was in the team that built this bridge (he was explaining about how the bridge is slightly wonky because the wrong kind of beams were delivered to the site). I was thinking: that’s a great story, I’m going to put a geocache somewhere near that bridge. But yours was already there so I shan’t. Just thought I’d share!

Digest for March 2017

Summary

This month, I concluded an extended screenscraping and data-mining operation into what music local radio station Jack FM played, joined-in the JSOxford/Render Conf hack event, and shared SMBC‘s weird homage to Dilbert.

All posts

Posts marked by an asterisk (*) are referenced by the summary above.

Articles

Notes

Reposts

Reposts marked with a dagger (†) include my comments or interpretation.

Not Dogs Birmingham is Three Months Old!

This is a repost promoting content originally published elsewhere. See more things Dan's reposted.

Happy birthday to Not Dogs Birmingham! Our doors have been open at the Bullring’s LinkStreet for just 12 weeks now and what fun we are having!Our fantastic Crew have welcomed many people (veggies, vegans and meat-eaters!) into the restaurant, seven days a week and we’re looking forward to seeing many more of you. Over the course…