From a5a11ee66def8586ca31107cce1e1e7f784851ca Mon Sep 17 00:00:00 2001 From: lcflight Date: Fri, 8 Mar 2024 11:20:48 -0500 Subject: [PATCH] adds redirects for tag links containing spaces --- .../canonicalizeUrl.spec-snapshot.ts.snap | 10 + .../getPosts.spec-snapshot.ts.snap | 1134 +++++++++++++++++ src/lib/getRedirects.ts | 13 +- src/lib/getTags.ts | 2 + 4 files changed, 1158 insertions(+), 1 deletion(-) diff --git a/src/lib/__snapshots__/canonicalizeUrl.spec-snapshot.ts.snap b/src/lib/__snapshots__/canonicalizeUrl.spec-snapshot.ts.snap index b0002ff..b08b4fc 100644 --- a/src/lib/__snapshots__/canonicalizeUrl.spec-snapshot.ts.snap +++ b/src/lib/__snapshots__/canonicalizeUrl.spec-snapshot.ts.snap @@ -220,6 +220,8 @@ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/derail' 1`] = `"https:// exports[`canonicalizeUrl > handles source 'doc.bmndr.co/discourse' 1`] = `"https://the_source_domain/discourse/export/txt"`; +exports[`canonicalizeUrl > handles source 'doc.bmndr.co/diy' 1`] = `"https://the_source_domain/diy/export/txt"`; + exports[`canonicalizeUrl > handles source 'doc.bmndr.co/docdriven' 1`] = `"https://the_source_domain/docdriven/export/txt"`; exports[`canonicalizeUrl > handles source 'doc.bmndr.co/dogeatdog' 1`] = `"https://the_source_domain/dogeatdog/export/txt"`; @@ -340,6 +342,8 @@ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/honeygrams' 1`] = `"http exports[`canonicalizeUrl > handles source 'doc.bmndr.co/howeyeuse' 1`] = `"https://the_source_domain/howeyeuse/export/txt"`; +exports[`canonicalizeUrl > handles source 'doc.bmndr.co/humbee' 1`] = `"https://the_source_domain/humbee/export/txt"`; + exports[`canonicalizeUrl > handles source 'doc.bmndr.co/icecream' 1`] = `"https://the_source_domain/icecream/export/txt"`; exports[`canonicalizeUrl > handles source 'doc.bmndr.co/ifttt' 1`] = `"https://the_source_domain/ifttt/export/txt"`; @@ -398,6 +402,8 @@ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/lockmyphone' 1`] = `"htt exports[`canonicalizeUrl > handles source 'doc.bmndr.co/loss' 1`] = `"https://the_source_domain/loss/export/txt"`; +exports[`canonicalizeUrl > handles source 'doc.bmndr.co/love' 1`] = `"https://the_source_domain/love/export/txt"`; + exports[`canonicalizeUrl > handles source 'doc.bmndr.co/maniac' 1`] = `"https://the_source_domain/maniac/export/txt"`; exports[`canonicalizeUrl > handles source 'doc.bmndr.co/manifold' 1`] = `"https://the_source_domain/manifold/export/txt"`; @@ -444,6 +450,8 @@ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/mongoid' 1`] = `"https:/ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/mongosad' 1`] = `"https://the_source_domain/mongosad/export/txt"`; +exports[`canonicalizeUrl > handles source 'doc.bmndr.co/montholutions' 1`] = `"https://the_source_domain/montholutions/export/txt"`; + exports[`canonicalizeUrl > handles source 'doc.bmndr.co/moreless' 1`] = `"https://the_source_domain/moreless/export/txt"`; exports[`canonicalizeUrl > handles source 'doc.bmndr.co/motivationtypes' 1`] = `"https://the_source_domain/motivationtypes/export/txt"`; @@ -496,6 +504,8 @@ exports[`canonicalizeUrl > handles source 'doc.bmndr.co/pdxqs' 1`] = `"https://t exports[`canonicalizeUrl > handles source 'doc.bmndr.co/perverse' 1`] = `"https://the_source_domain/perverse/export/txt"`; +exports[`canonicalizeUrl > handles source 'doc.bmndr.co/pigouminder' 1`] = `"https://the_source_domain/pigouminder/export/txt"`; + exports[`canonicalizeUrl > handles source 'doc.bmndr.co/pjf-anki' 1`] = `"https://the_source_domain/pjf-anki/export/txt"`; exports[`canonicalizeUrl > handles source 'doc.bmndr.co/pledgecaps' 1`] = `"https://the_source_domain/pledgecaps/export/txt"`; diff --git a/src/lib/__snapshots__/getPosts.spec-snapshot.ts.snap b/src/lib/__snapshots__/getPosts.spec-snapshot.ts.snap index f27feaf..4542378 100644 --- a/src/lib/__snapshots__/getPosts.spec-snapshot.ts.snap +++ b/src/lib/__snapshots__/getPosts.spec-snapshot.ts.snap @@ -31121,6 +31121,127 @@ The " `; +exports[`body > post diy hash f57e89932a84f190592afa8e0a2a459f 1`] = ` +" +

+ \\"DIY +

+

+ Some people don’t need Beeminder, and our hats are off to them. + + Some people + + are psychologically incompatible with Beeminder, which is fine, there are + + other techniques + + they can use. +And then there are the people who create DIY Beeminders. +

+

+ For example, you can share a spreadsheet with a friend and send them money when you don’t stick to what you committed to. +It works perfectly well in theory and seems to work horribly in practice. +(This is based on quite a pile of anecdotal evidence, though it’s all a bit biased: we and most people we talk to about this are Beeminder users.) +

+

+ What goes wrong? +Roughly speaking: entropy. +Your friend stops paying attention and you find yourself all alone in your spreadsheet. +“Redundancy is your friend,” you hopefully suggest? +No, adding more friends just yields diffusion of responsibility and it’s even worse. +Sob-emoji. +Even committing publicly, say on social media, and even if you have an army of followers, doesn’t seem to work. +I mean, it helps — social accountability is great — just not enough to be sufficient on its own. +Because entropy gradually wins. +The threat of the shame of not following through gradually fades as you infer that everyone’s attention has moved on to your new posts about recreating the Starship Enterprise in Minecraft. +

+

+ Of course, some superhuman people can set up a commitment contract with a friend and persist in sending them money even when the friend’s checked out. +But mere mortals suffer + + cranial silicosis + + and find ourselves gradually abandoning the spreadsheet or sliding down a + + slippery slope + + of procrastinating indefinitely on sending the money we owe. +

+

+ Beeminder solves this by automatically charging you and never flaking out on you. +As long as the path of least resistance is to keep doing the thing you committed to and getting charged when you don’t, entropy is staved off. +

+

+ Don’t take our word for it +

+

+ We’ve been hearing stories like this forever and it all certainly matches our own personal experience. +Here’s Beeminder superstar + + Robert Perce + + backing us up: +

+
+

+ I am doing a “yoga every day for January” challenge and I convinced one of my friends to do it too. +I sent him texts every day for like a week and then he stopped responding. +My + + other + + friend who I also convinced to join and I are still going strong. +

+
+

+ My response: Chef’s kiss. +Unless that continues to work indefinitely with the other friend, in which case our whole point is ruined! +

+

+ Robert then added, “I have been going strong because I have a Beeminder goal, obviously.” +

+

+ There it is. +

+

+ The punchline here is that you can make a DIY Beeminder just fine, as long as you use actual Beeminder to prevent it from petering out. +(See also + + Beeminder’s Achilles Heel + + .) +

+

+ In a future post, I plan to talk about the general case, how all systems need anti-entropy measures and how Beeminder is an elegant and general anti-entropy tool in that sense. +(But I might never get around to doing that, because all of us, realistically, are going to gradually forget I ever formed this intention.) +

+" +`; + exports[`body > post docdriven hash 9c3fd496f747e03130ea75f0f3d6dfda 1`] = ` "

@@ -47301,6 +47422,220 @@ Go ahead, click on it: " `; +exports[`body > post humblebundle hash 818bb2e6a45417604557eaa6c9535e4d 1`] = ` +" +

+ \\"A +

+

+ We’re excited to be featured in a Humble Bundle! +

+

+ If you’re already familiar with Humble Bundle you might associate them pretty heavily with gaming and therefore be slightly confused right now. +So first off, no, we’re not pivoting into games; we’re still leaving that up to + + Habitica + + . +But when Humble Bundle contacted us in December, it was with the idea of putting together some kind of personal improvement bundle, thinking ahead to new years and all the annual hullabaloo around + + Fresh Starts + + . +

+

+ So while we’re normally + + kind of allergic + + to salesiness and self-promotion, +anything that makes us feel like a bridal boutique associate working on commission, +we were pretty excited to team up with Humble Bundle. +

+

+ In case you don’t even need to be sold on this, click below to get the bundle: +

+ + \\"The + +

+ “Actually I need to be sold on this” +

+

+ Ok, the deal (foreshadowing) with Humble Bundle is that they broker deals where you buy a bundle of software (often games) for a discount, and part of what you pay goes to charity. +It’s a good deal for us, a good deal for the partners, a good deal for Humble Bundle, a good deal for you, and a good deal for the charity. Wheeee! +

+

+ This bundle features us alongside + + RescueTime + + (which we + + integrate with + + !), + + RoboForm + + , and + + MoodFit + + in a bundle that benefits + + Active Minds + + and the + + Michael J Fox Foundation + + . +

+

+ For $25 you get a discount on a premium subscription from the other three companies — 12 months of RescueTime, 90 days of MoodFit, and 12 months of RoboForm — and from Beeminder you get $10 of + + Honey Money + + , and as much extra honey as you want for 50% off. +Basically it’s a BOGO deal: however much Honey Money you buy, you get again as much for free (plus the H$10 no matter what). +The 50% off deal is a one-time offer, so if you expect to want more honey in the future, stocking up now saves a lot of money! +

+

+ “Honey what now?” +

+

+ For those just tuning in, Honey Money is basically Beeminder store credit. +It’s good for our premium plans and you can also pay for derailments with it (or not, if that would spoil the power of Beeminder’s sting for you). +Also you can gift it to other users with + + honeygrams + + , which might be a nice way to get someone you know started with Beeminder. +You can even exchange honey for + + Manifold’s + + play-money currency, mana, and vice versa. +

+

+
+   +
+

+

+ Whew. That was an awful lot of self-promotion for our tastes! +To close out, here’s a palate cleanser in the form of twelve dumb bee puns: +

+
    +
  1. + What is small, black and yellow, and drops things? A FUMBLEBEE +
  2. +
  3. + What type of bee can’t make up its mind? A MAYBEE +
  4. +
  5. + What do bees use to fix their hair? A HONEYCOMB +
  6. +
  7. + What do you call a bee who’s having a bad hair day? A FRISBEE +
  8. +
  9. + Where does a bee sit? ON ITS BEEHIND +
  10. +
  11. + Why did the bee go to the dermatologist? IT HAD HIVES +
  12. +
  13. + What kinds of bees can’t be understood? MUMBLEBEES +
  14. +
  15. + What kind of bees live in graveyards? ZOMBEES +
  16. +
  17. + What did the bee say to the flower? HI HONEY <3 +
  18. +
  19. + What do you call a wasp? A WANNABEE +
  20. +
  21. + What do you call a bee that’s always complaining? A GRUMBLEBEE +
  22. +
  23. + What do bees like to chew? BUMBLE GUM +
  24. +
+

+
+   +
+

+

+ PS: In case you had any doubts about how serious we are about this, check out the + + fancy Humble Bundle landing page + + we made. +But if you just scrolled down here impulsively, you’ll want to actually + + buy the Humble Bundle + + first. +

+" +`; + exports[`body > post icecream hash 6365ef668cb7d87a77289bef2de8da56 1`] = ` "

@@ -53734,6 +54069,287 @@ Equivalently: You are risk-averse. " `; +exports[`body > post love hash 3b23c9d3b6334a4090aa5e81a64f6bde 1`] = ` +" +

+ \\"Bees +

+

+ It’s funny how often advice seeking takes the form, “Oh man, I don’t know how to convey XYZ,” and the person you’re asking replies, “How about literally ‘XYZ’?” And you’re like, “Huh. Yeah, wow, I am a genius, thanks!” +

+

+ There’s probably a lesson there for relationships but I mention it because it happened to me + + [1] + + when I was agonizing about what to say about an article about us on +DatingNews.com: +“ + + The Beeminder App Keeps Singles on Track With Their Personal Goals + + ”. +What I want to say is that the folks at DatingNews.com asked me a bunch of great questions and turned my answers into a really good, heartfelt article. +Also they were super nice! +

+

+ And it’s absolutely true that if you’re in the market for a life partner, Beeminder could make an especially huge difference to the whole rest of your life. +

+

+ How? +Well, all the ways you can beemind yourself into a better catch go without saying. +I’ll say one anyway, since we have a recent blog post about it with its own list of 15 things to consider + + beeminding for peak athleticism + + . +Athletes are attractive, we hear. +If that’s not where you’re at, you might like some of our massive number of + + weight loss posts + + . +My favorite one for a general audience is probably +“ + + Primum Non Amplifico + + ”. + + [2] + + Or just beemind exciting new hobbies or reading books. +Intelligence is even more attractive. +

+

+ But all of that is about you. +What about actually beeminding finding love? +That is absolutely a thing as well. +We recommend taking inspiration from one of the most amazing Beeminder users of all time who made a whole + + dating journal in the Beeminder Forum + + . +

+

+ To head off the natural question of why a nerdy woman who dates men needs a Beeminder goal — don’t men throw themselves at her? — one answer is that it works better to apply your own filters and initiate contact. +But even if you’re happy with a more passive approach, you still have to pick from that flood of incoming messages and actually reply for a date to happen. +It’s eminently beemindable! +And of course a typical experience for men on dating sites is getting zero incoming messages but it’s the same story: you have to keep sending messages. + + Scott Alexander popularized the term micromarriage + + for a related concept, as a motivational tool: +

+
+

+ If you go to a party, and you don’t meet anyone interesting there, it’s tempting to get discouraged. +If you try again and again, with identical results, it’s tempting to give up. +[…] Instead, think of yourself as getting 500 micromarriages each time (or whatever you decide the real number is, with the understanding that you should update your estimate at some rate conditional on success or failure). +All you need to do is go to a thousand parties and you have a 50-50 chance of meeting the right person! +Maybe that number would sound more encouraging if it was lower — but it took me twenty years of trying, so I couldn’t have been getting more than a few hundred micromarriages a day, and I wasn’t slacking off. +

+
+

+ Scott continues, after talking about recently getting married himself: +

+
+

+ Twenty years and exactly one million micromarriages later, I have yet to find any better advice. +Gather your micromarriages while ye may, for time is still a-flying. +Do annoying things, expect them to fail, and increment a little counter in your head each time, to prevent yourself from going insane. +Then do more annoying things. +Teach a juggling class. Join a weird transhumanist compound. +Go to one of Aella’s weird parties. +There is no royal road. +I’m not claiming to have super useful advice here, just to be able to say from the end of a long and very rocky path that it does eventually pay off. +

+
+

+ Of course our point is that you can do much better than incrementing a counter in your head. +You can increment a counter on a Beeminder graph. +

+

+ And we’d be remiss if we didn’t mention the classic example from Nick Winter’s book, + + The Motivation Hacker + + , in which he describes beeminding romantic gestures to his girlfriend. +They’ve since gotten married and created THREE WHOLE HUMANS together. +We are exceedingly proud. +

+

+ Honey for your honey +

+

+ Once you try Beeminder and transform your life and find True Love and all that jazz, maybe you would like to introduce your honey to your (other) partner in awesomeness? +(That’s us!) +

+

+ You could introduce them to us by telling them about your goals. +Nine out of ten nerds think it’s sweet to beemind doing things for your partner. +You could even add them as a + + supporter + + on goals that are important to you, and they’ll get emailed when you derail. +

+

+ For the people who like to poke all the buttons, gift them some honey to get started with and let them dive in! +The page for sending honeygrams got all dressed up for the season of love. +

+ + + +

+ If you put an email address in the “To” field instead of a Beeminder username, that person will be notified, we’ll help get them set up, and then transfer the honey to them. +If they fail to get set up, you keep your honey. +Or if they happen to already have a Beeminder account, the honey will transfer to them instantly. +

+

+ Honey for your honey! +If you send them H$5, you can say “the first derail is on me”. +

+

+ You can of course also gift honey to your loved ones who already use Beeminder. +Or any friends or siblings who seem like they need some Beeminder-like help in the dating game? +If that’s not too forward… +

+

+ If you’re not up to speed on the honey money thing, see + + our previous blog post about it + + . +(The short version is that honey money is Beeminder credit, good for premium plans and, if you choose, derailments. +You can also exchange it with + + Manifold + + ’s currency, mana.) +And if you’re ready to start spreading the love around, go ahead and click on this fancy coin: +

+

+ + + +

+

+
+   +
+

+

+ PS: In other Valentine’s Day news, and speaking of Aella’s weird parties, we’re proud to say Beeminder is a sponsor of the wild work of art that was + + Bet on Love: The Prediction Market Dating Show + + . +

+

+
+   +
+

+

+ Footnotes +

+

+ + [1] + + Thanks yet again to + + Robert Perce + + for the rubber-ducking there. +

+

+ + [2] + + And my favorite for an utterly whack-a-doodle audience is probably +“ + + Alliterative Alimentation + + ” about my convoluted diet scheme which today is the 2nd anniversary of (and which Bethany, in an immense outpouring of love, has been doing with me in solidarity the last two months). +

+" +`; + exports[`body > post magic hash bb858d8a81f9abd86f9ceba68bbdc50f 1`] = ` "

@@ -58660,6 +59276,303 @@ But if you stay on your yellow brick road, both selves win. " `; +exports[`body > post montholutions hash c997bf6ae9298bc68e96d6a215aa6f3f 1`] = ` +" +

+ \\"Bee +

+

+ Well, +everyone, +Happy New Year! +

+

+ 2023 is gone and 2024 is ticking, +and it’s the traditional time of year to be + + RESOLUTE + + . +We’ve written about the science of this stuff before. + + Katy Milkman + + calls it the Fresh Start Effect, +and I am absolutely not immune. +You can find my + + New Year’s Resolution: Ride or Die + + thread on our forum right now. +

+

+ Plus, the more people I tell that I’m totally going to average 6 yoghurts a week in 2024, +the more likely I’ll succeed, +right? +

+

+ But can we take this further? +Why let New Year’s hog all the new-leaf-turning? +I had so many goals in mind, +but it felt like starting them all at once would surely doom me to failure. +At the same time, +waiting for 2025 felt silly, +but I need + + some + + kind of push to start on these ideas. +

+

+ And surely there’s another calendar division that can maybe be just as powerful a psychological marker, +giving me, say, +twelve fresh starts in a year… +

+

+ 🤔 +

+

+ Lightbulb moment! +

+

+ So how about… +New Month’s Resolutions? +

+

+ The idea is that each month of 2024, +I’ll try out a new goal. +At the start of the month, +I’ll create something new, +set the rate to something relatively ambitious, +and maybe even risky, +but set the end date to the end of the month. +Something that might be difficult to stick to all the way through the year seems much less daunting if I’m only going to do it for a month. +And this way I don’t start all my brand new shiny ideas for goals at once, +get + + overwhelmed + + , +and run away — +but I don’t have to wait for 2025. +

+

+ This idea seemed good enough that I’ve created a thread for it on the forum, +so that + + everyone + + can join me in the experiment. + + Wanna jump aboard? + +

+

+ Come on in, the water’s fine +

+

+ If you’re not ready yet, +let’s see if I can convince you of the power of this idea. +I think everyone has tons of things they + + could + + be doing that feel difficult, +that would need work to establish as a habit. +Or ideas that they’re going to get round to someday. +Imagine having a prompt to just dust one of those off and actually try it, +give it a go, +take a little risk, +not just once a year but a new one each month. +

+

+ There’s not so much pressure to get it right straight away — +these can be experiments, +because even if one fails, +you have eleven more chances! +And personally I’m willing to bet that I’m going to create some goals I can stick to in the long-term, +or at least learn important things about how to make those goals work for me. +(Or not. +It’s fine if some of them never do!) +

+

+ For me, +the year’s starting out with a goal I haven’t tried on Beeminder before. +It’s been a while since I managed to fit exercise into my schedule on a regular basis, +for a bunch of reasons. +Not all of them are akratic, +but honestly by now it’s at + + least + + half down to akrasia. +

+

+ So my first goal is a way to slowly open up some time in my schedule for doing + + something + + : +each day, I have to hold a good-form plank for as long as I can, +working up from the very easiest baby planks on forearms and knees to… +whatever ends up being the most difficult plank I can manage by the end of January! +(And I’m already pretty sure I’d like to keep this goal in some form after January.) +

+
+
+

+ +

+
+ + Nicky’s plank goal + +
+
+
+

+ I have other ideas for goals: +taking a walk during my lunch break, +getting back to starting my day with a bit of reading, +setting up my treadmill again and actually using it, +getting a new fitness tracker and actually using it, +having a set time each day to read without distractions with my phone in airplane mode, +using up some of my postcard sets by sending more postcards on + + Postcrossing + + … +With eleven more opportunities coming up, +I get to try all kinds of things! +

+

+ I’ve even created a sort of meta-goal for this, +so that I won’t forget to start a new goal as the new month rolls round. +I spent some time in the graph editor making it pretty, +so it steps up only at the beginning of each month, +but you could just have a goal set to roughly 1/30 per day, +add data for January now, +and it’ll come due again about the right time. +

+
+
+

+ +

+
+ + Nicky’s meta-goal for New Month’s Resolutions + +
+
+
+

+ Look, we’re all doing it! +

+

+ Other folks on the forum thread are trying things out as well: +enbee’s trying out a + + more extreme version of an existing goal + + , +felixm’s trying out + + doing a little check-in after meditation sessions + + , +poisson’s trying out + + beeminding using a waterpik to floss + + — +beeminding what you buy is an + + Officially Approved Beemindery Activity + + ! +Get anything for Christmas that you really ought to be using…? +

+

+ I won’t list + + everyone + + ’s goals here, +but hopefully that gives you a taste for it and sparks a few ideas of your own! +

+

+ And the beauty of it is, +if it doesn’t work out, +it’s only for this month. +That moment of enthusiasm, +that feeling of a brand new start and a chance to start something new… +this year, that won’t be confined to January 1st. +In reality, +it never was. +The best time to start a new goal is now. +But sometimes we need a little push to be inventive, +to take a risk, +to push ourselves a little further. +

+

+ Twelve little pushes sound good to me. + + Are you in? + +

+

+ P.S. If you find this later, +well, +there’s no time like the present! +

+" +`; + exports[`body > post moreless hash 526551f435609f8ff5741e320dc7641f 1`] = ` "

@@ -65831,6 +66744,227 @@ Can you tell that I’m in awe? " `; +exports[`body > post pigou hash 07b65766e0060134944539775b064752 1`] = ` +" +

+ \\"A +

+

+ Do you know about Pigouvian taxes? +I’m sad that normal humans don’t know about this. +There are so many things that liberals and conservatives argue about that Pigouvian taxes just magically resolve into the best of both worlds! +But googling it yields a sea of impenetrable economics jargon, so let me start with my attempt to give a crude sense of the idea. +

+

+ You know how a carbon tax makes sense as a way to disincentivize greenhouse gas emissions? +If the tax were high enough and the tax revenue were effectively spent on undoing the harm of the emissions — see + + beeminder.com/climate + + — then there’d be no need for other laws or shaming people about their carbon footprints. +Everything would be elegantly priced in. +Pigouvian taxes generalize that idea to anything: +congestion pricing, +sin taxes for drugs that may have adverse societal impacts — anything where some transaction happens between two parties but third parties are also affected. +

+

+ “It’s a tax on excess indulging. It’s ok to pay it sometimes, just not too often.” +

+

+ What does this have to do with Beeminder? +Well, ice cream, for example, has a cost to you beyond its immediate monetary cost. +You can think of your future self as that affected third party. +Maybe you don’t want to completely abstain from ice cream but it would be nice if you could make choices about it that factor in its true cost. +

+

+ Well, Beeminder can do that! +You can reframe the Beeminder pledge to think of it + + not as a punishment + + but as a tax on excess indulging. +It’s ok to pay it sometimes, just not too often. + + [1] + +

+

+ I got this idea of Beeminder as a tax from my friend + + Yassine Meskhout + + who had previously invented the concept of + + taxing vs punitive commitment contracts + + . +He describes punitive regimes as generally having an escape valve to ensure you aren’t punished unjustly. +Maybe you can’t bike to work when it’s snowing so your fine print on your Beeminder goal stakes out an exemption for that. +

+

+ The problem with punitive goals, as Yassine describes them, is that the element of discretion makes them quickly lose their force. +The fine print expands or it has fuzzy boundaries that keep tempting you to apply it to more questionable circumstances. +

+

+ A taxing system, by contrast, doesn’t care about your excuses. +Too tired? Too busy? Too sick? +As Yassine says, “doesn’t matter, pay up.” +

+
+

+ The paying up is a clear demonstration that you’d prefer eating the penalty, and is a good and honest demonstration of what your capabilities are that day. +

+
+

+ Even though that sounds, and sometimes is, too harsh, we’ve been gradually gravitating to the taxing side of this dichotomy over the years. +We used to +rave about punishment, like in our old post, +“ + + Contra Positive Reinforcement + + ”. +We still stand by that post and many users genuinely prefer the punitive mindset. +I now personally prefer the taxing mindset and tend to be most impressed with users who think of Beeminder that way. +

+

+ But people are different and the same person may even need different approaches for different goals. +It’s probably worth clarifying, at least in your own head, when creating a goal, whether you want Beeminder to punish you for crossing the bright red line or just tax you for crossing it. +And even for a single goal, whether it’s taxing or punitive may depend on the pledge amount. +We recommend trying to settle on an amount of money at risk that is motivating but not punishing. +This is the beauty of the + + exponential pledge schedule + + . It quickly gets you to your Motivation Point without spending + + too + + taxing of an amount along the way. + + [2] + +

+

+ To review, +a punishment framing can encourage an excuse-making mindset over a results-oriented mindset. +It can also encourage you to make your goals less ambitious. +Instead, try treating Beeminder’s stings as an elegant behavior-shaping tax and accept that some derailments are inevitable. +You can view that tax as the cost of the service Beeminder provides: nudges or rumble strips keeping you on track. +Finally, you can dial in a sweet spot in terms of both the steepness of the bright red line and the amount of money at risk. +The (meta) goal is to be pushed to do as much as possible — or whatever maximizes the motivational value you get from Beeminder — at minimal cost. +

+

+
+   +
+

+

+ P.S. This is part of a series of posts in which we argue for a mental reframing of Beeminder’s stings, from punitive to taxing: +

+ +

+
+   +
+

+

+ Footnotes +

+

+ + [1] + + In case you want the econ-jargon version: +With Beeminder you’re internalizing the externality imposed on your future self. +

+

+ + [2] + + Specifically, the current pledge schedule is constructed so that whatever pledge level you’re at, you’ll have spent a total of exactly half that by hitting all the previous pledge levels. +

+" +`; + exports[`body > post pledgecaps hash c09705a76b0d9310e40130207f326fe4 1`] = ` "

diff --git a/src/lib/getRedirects.ts b/src/lib/getRedirects.ts index 810e503..c35213d 100644 --- a/src/lib/getRedirects.ts +++ b/src/lib/getRedirects.ts @@ -1,13 +1,24 @@ import getPosts from "./getPosts"; +import getTags from "./getTags"; export default async function getRedirects(): Promise> { const posts = await getPosts(); + const tags = await getTags(); - return posts.reduce>((acc, post) => { + const postRedirects = posts.reduce>((acc, post) => { if (!post.redirects.length) return acc; post.redirects.forEach((r) => { acc[`/${r}`] = `/${post.slug}`; }); return acc; }, {}); + + const tagRedirects = tags.reduce>((acc, tag) => { + if (tag.redirect) { + acc[`/tags/${tag.redirect}`] = `/tags/${tag.name}`; + } + return acc; + }, {}); + + return { ...postRedirects, ...tagRedirects }; } diff --git a/src/lib/getTags.ts b/src/lib/getTags.ts index 3a323b2..2bacb2d 100644 --- a/src/lib/getTags.ts +++ b/src/lib/getTags.ts @@ -6,6 +6,7 @@ type Tag = { name: string; posts: Post[]; count: number; + redirect: string | null; }; const getTags = memoize(makeTags); @@ -21,6 +22,7 @@ async function makeTags(): Promise { name: t, posts: matched, count: matched.length, + redirect: t.includes(" ") ? t.replace(/ /g, "+") : null, }; });