Jokes I’ve Told That My Male Colleagues Didn’t Like

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

A guy walks into a bar. It’s a low one, so he gets a raise within his first six months on the job.

Did you hear the one about the woman who reported sexual harassment? Of course you didn’t; she was forced to sign an NDA.

Louise Bernikow once wrote: Humour tells you where the trouble is.

It’s okay to laugh at these jokes. But only so long as you do so with an awareness that their comedy comes from the nuggets of truth within each and every one of them. Our society’s come a long way this last century, but we’ve still got a long way to go.

Where Do New Viruses Come From?

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

A fun and lightweight 10-minute (very basic, but highly-accessible) primer into the mechanisms by which new viruses appear to emerge via spillover infection and viral evolution. I was pleased by the accuracy of the animations including efforts to show relative scale of microorganisms and the (correct) illustration of RNA as the genetic material of a coronavirus (many illustrators draw all viruses as carrying a double-stranded DNA payload).

The Neighbors’ Window

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

This beautifully-shot short film won Best Live Action Short Film at the Oscars last month, and if you haven’t seen it you owe it to yourself to do so. Over the course of 20 artfully-crafted minutes it tells two distinct stories, and before long you realise that what you’re really watching is the third story that emerges, Rubin vase-style, from the mind of the watcher and in the gaps between the two. Official website. Probably NSFW.

Dating App Writers Room

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

Ashley’s back! (Do Brian and Nick know any girls’ names that aren’t Ashley?)

But more-importantly, there’s a new BriTANicK, which is a rare enough treat these days that I feel the need to share it with you.

Identifying Post Kinds in WordPress RSS Feeds

I use the Post Kinds plugin to streamline the management of the different types of posts I make on my blog, based on the IndieWeb post types list: articles, like this one, are “conventional” blog posts, but I also publish notes (which are analogous to “tweets”), reposts (“shares” of things I’ve found online, sometimes with commentary), checkins (mostly chronicling my geocaching/geohashing), and others: I’ve extended Post Kinds to facilitate comics and reviews, for example.

But for people who subscribe (either directly or indirectly) to everything I post, I imagine it must be a little frustrating to sometimes be unable to identify the type of a post before clicking-through. So I’ve added the following code, which I’m sharing here and on GitHub in case it’s of any use to anybody else, to my theme’s functions.php:

// Make titles in RSS feed be prefixed by the Kind of the post.
function add_kind_to_rss_post_title(){
        $kinds = wp_get_post_terms( get_the_ID(), 'kind' );
        if( ! isset( $kinds ) || empty( $kinds ) ) return get_the_title(); // sanity-check.
        $kind = $kinds[0]->name;
        $title = get_the_title();
        return trim( "[{$kind}] {$title}" );
}
add_filter( 'the_title_rss', 'add_kind_to_rss_post_title', 4 ); // priority 4 to ensure it happens BEFORE default escaping filters.

This decorates the titles of my posts, but only in my feeds, so it’s easier for people to tell at-a-glance what’s going on:

Rendered RSS feed showing Post Kinds prefixes

Down the line I might expand this so that it doesn’t show if the subscriber is, for example, asking only for articles (e.g. via this feed); I’m coming up with a huge list of things I’d like to do at IndieWebCamp London! But for now, this feels like a nice simple improvement to a plugin I love that helps it to fit my specific needs.

×

Avoid rewriting a legacy system from scratch, by strangling it

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

Sometimes, code is risky to change and expensive to refactor.

In such a situation, a seemingly good idea would be to rewrite it.

From scratch.

Here’s how it goes:

  1. You discuss with management about the strategy of stopping new features for some time, while you rewrite the existing app.
  2. You estimate the rewrite will take 6 months to cover what the existing app does.
  3. A few months in, a nasty bug is discovered and ABSOLUTELY needs to be fixed in the old code. So you patch the old code and the new one too.
  4. A few months later, a new feature has been sold to the client. It HAS TO BE implemented in the old code—the new version is not ready yet! You need to go back to the old code but also add a TODO to implement this in the new version.
  5. After 5 months, you realize the project will be late. The old app was doing way more things than expected. You start hustling more.
  6. After 7 months, you start testing the new version. QA raises up a lot of things that should be fixed.
  7. After 9 months, the business can’t stand “not developing features” anymore. Leadership is not happy with the situation, you are tired. You start making changes to the old, painful code while trying to keep up with the rewrite.
  8. Eventually, you end up with the 2 systems in production. The long-term goal is to get rid of the old one, but the new one is not ready yet. Every feature needs to be implemented twice.

Sounds fictional? Or familiar?

Don’t be shamed, it’s a very common mistake.

I’ve rewritten legacy systems from scratch before. Sometimes it’s all worked out, and sometimes it hasn’t, but either way: it’s always been a lot more work than I could have possibly estimated. I’ve learned now to try to avoid doing so: at least, to avoid replacing a single monolithic (living) system in a monolithic way. Nicholas gives an even-better description of the true horror of legacy reimplementation, and promotes progressive strangulation as a candidate solution.

Dan Q found GC37D9X London Bridge

This checkin to GC37D9X London Bridge reflects a geocaching.com log entry. See more of Dan's cache logs.

Found with fleeblewidget on a day trip to London from Oxford. Finding was pretty easy – GPSr dropped us right on it and we spotted it immediately. Waiting for gaps in the human traffic, even on this rainy morning, during which to retrieve it was harder! TFTC.

Dan Q found GC13M78 From a Swan to the Canary: Tower – Save me!

This checkin to GC13M78 From a Swan to the Canary: Tower - Save me! reflects a geocaching.com log entry. See more of Dan's cache logs.

An easy find with fleeblewidget during a day trip to London from Oxford. Posed for a photo in front of the bridge to give us an excuse to mill around for a few minutes. Perhaps thanks to the rain there weren’t many tourists around, so we didn’t have to wait too long. TFTC!

Pay Up, Or We’ll Make Google Ban Your Ads

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

A new email-based extortion scheme apparently is making the rounds, targeting Web site owners serving banner ads through Google’s AdSense program. In this scam, the fraudsters demand bitcoin in exchange for a promise not to flood the publisher’s ads with so much bot and junk traffic that Google’s automated anti-fraud systems suspend the user’s AdSense account for suspicious traffic.

The shape of our digital world grows increasingly strange. As anti-DoS techniques grow better and more and more uptime-critical websites hide behind edge caches, zombie network operators remain one step ahead and find new and imaginative ways to extort money from their victims. In this new attack, the criminal demands payment (in cryptocurrency) under threat that, if it’s not delivered, they’ll unleash an army of bots to act like the victim trying to scam their advertising network, thereby getting the victim’s site demonetised.

Note #16758

Today my #distributed #remotework office is provided by @OCFI_OI, which provides me that most #Oxford of views: simultaneously containing architecture of the 1960s… and the 1160s.

View of 1960s buildings in front of Oxford Castle.

×

Who finished second?

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

Three athletes (and only three athletes) participate in a series of track and field events. Points are awarded for 1st, 2nd, and 3rd place in each event (the same points for each event, i.e. 1st always gets “x” points, 2nd always gets “y” points, 3rd always gets “z” points), with x > y > z > 0, and all point values being integers.
The athletes are named: Adam, Bob, and Charlie.

  • Adam finished first overall with 22 points.
  • Bob won the Javelin event and finished with 9 points overall.
  • Charlie also finished with 9 points overall.

Question: Who finished second in the 100-meter dash (and why)?

I enjoyed this puzzle so much that I shared it with (and discussed it at length with) my smartypants puzzle-sharing group. Now it’s your turn. The answer, plus a full explanation, can be found on the other side of the link, but I’d recommend that you try to solve it yourself first. If it seems impossible at first glance, start by breaking it down into what you can know, and what you can almost know, and work from there. Good luck!

And if anybody feels like hiring Nick to come and speak anywhere near where I am, that’d be awesome of you.