3665 stories
·
3 followers

Against dystopian views of high-speed audiobook listening

1 Share

There was recently a thread on r/slatestarcodex about “What life hacks are actually life changing”. One of the examples given was:

Buy audiobooks to read much more books, listen at 1.5-2x speed

This led to the following thread (later removed):

Aaa: A midwit in making

Bbb: Audio books help people consume many more books than they otherwise would, and listening to them in place of podcasts on commutes or during the types of workouts where listening is feasible is generally a good thing. Though there are certainly some fun podcasts.

Ccc: But you retain far less information. So it’s just so your mind is busy with something and doesn’t have to deal with existential crisis

I find this delightful.

You think you’re giving out helpful tips for internet friends? Haha, no, you’re inviting a review of your intelligence and philosophical outlook! It’s like a cute little bunny prancing through the forest until a piano suddenly falls from the sky.

Of course, “person on internet is mean” isn’t much of a story. (Ask me about my emails after I suggested that maybe Julian Assange isn’t the most admirable human being ever.) And anyway, everyone was fine other than Aaa.

No, what makes this funny is that there was a chorus of people agreeing with Ccc.

I too must admit Ccc has a point. Certainly, it’s human nature to do things that make us feel better. And for many of us, that includes doing things to prevent experiencing existential crises.

But try the following statements:

  1. “Getting good sleep and regular exercise just means that your mind is full of happy chemicals and doesn’t have to deal with existential crisis.”

  2. “Having kids just means that your mind is busy taking care of new life and experiencing ‘joy’ and doesn’t have to deal with existential crisis.”

  3. “Hiking up to mountain vistas just means your mind is distracted by beauty and doesn’t have to deal with existential crisis.”

  4. “Having deep relationships just satisfies ancient instincts designed to help you access resources and trigger a feeling of ‘meaning’ in your mind so it doesn’t have to deal with existential crisis.”

If angst is bad, then isn’t it doing things that reduce angst good?

I think most people believe that. As evidence, I’ll point to a weird norm our culture has that most people don’t seem to notice. You’re not supposed to talk about existential crises. Personally, I think my baseline instinctual angstiness would place me somewhere near the 90th percentile of the population. (I mean, I have a blog…) But don’t whine about it because I don’t want to be a lame edgelord.

It’s acceptable to refer to angst, but with remove. You can make dark jokes or create existential art. You can recite that “most men live lives of quiet desperation”. You can go on the internet and make clinical comments about other people’s angst. But you aren’t supposed to tell your friends that you’re currently having an existential crisis, please help. That crosses a line.

Of course, “edgelords are lame” is a modern norm. But I doubt proto-edgelording would have gotten you much further centuries in the past. People would probably have told you to go to church, or told you to take care of your family, or just avoided you.

I bring this up because I think the “edgelords are lame” norm is… good? Baseline angst notwithstanding, my life is quite good and would not be improved at all by more contact with people moaning about their feel-feels. (See that? See how I use humor and derision to demonstrate distance?)

In fact, why don’t we invert Ccc’s implied criticism? Why don’t we take, “prevent your mind from dealing with existential crisis” as a basic life strategy?

This would indicate lots of “healthy” stuff. (Travel! Friends! Romance! Hobbies! Meaningful work! Children!) But perhaps it would also indicate “wireheading”—shortcutting your brain’s reward architecture to feel good when you aren’t “supposed” to.

If you’re not familiar with wireheading, the classic thought experiment goes like this:

There’s a machine. If you go into the machine, electrodes will be connected to your brain, your memories of the machine will be erased, and you’ll live the rest of your life in a simulation of all your dreams and fantasies. Do you enter the machine?

(So, pretty much exactly the plot of Total Recall? Yes, Total Recall is a meditation on wireheading.)

Philosophically speaking, I find wireheading troubling. But practically, in the particular case we’re examining here, we can just consider a simpler question.

Is listening to books on tape at 1.5x-2x speed a form of wireheading?

And if so, what about music? What about jokes? What about comfortable furniture or attractive wallpaper?

People don’t have existential peace because they’ve figured out the meaning of life. They have existential peace because that’s their nature or because they’ve developed happy lives and healthy thought patterns that don’t lead to them spending their time moping around. Feeling like you understand the meaning of life is downstream of existential peace, not upstream.

So even though I think Ccc is right, in a deeper sense I think Ccc is totally wrong. Don’t put existential crises on a pedestal! Arguably they’re just a weird glitch in the human brain anyway. There’s no “correct” way to look at all this stuff. So if you like listening to audiobooks at 1.5x to 2x speed, listen away.

Like many people, I used to have trouble sleeping. I did all the standard things—I reduced alcohol, I kept the room cold and dark, I stopped drinking 17 cups of coffee every day, everything. And all that stuff helped. (If you have trouble sleeping, do the standard things.) But I wasn’t satisfied, so I tried various supplements. All of these were either ineffective, or left me groggy the next day. Finally, I discovered that what really worked was to skip all the supplements, and just listen to a podcast that was both very good and also very boring. The best podcast for this purpose turns out to be…

Fall of Civilizations Podcast


P.S. Today’s link is to RPGAdventures on Comedy Theory:

When you see a pattern (“A, B, C”), your brain automatically recognizes the pattern (“Alphabet”), and makes a prediction about what comes next.

Jokes have two parts, setup and punchline. Setup leads people to recognize a pattern, which their brains automatically use to make predictions and assumptions. Punchline forces their brain to switch to a different pattern, shattering their assumptions, making it clear that predictions they’ve made are invalid.



Read the whole story
emrox
4 days ago
reply
Hamburg, Germany
Share this story
Delete

Announcing Deno 2

1 Share
Our next major version of Deno combines the simplicity, security, and performance of Deno 1 with full Node and npm backwards compatibility, and much more.
Read the whole story
emrox
5 days ago
reply
Hamburg, Germany
Share this story
Delete

Don't let dicts spoil your code

1 Share

table of contents

How often do your simple prototypes or ad-hoc scripts turn into fully-fledged applications?

The simplicity of organic code growth has a flip side: it becomes too hard to maintain. The proliferation of dicts as primary data structures is a clear signal of tech debt in your code. Fortunately, modern Python provides many viable alternatives to plain dicts.

What’s wrong with dicts?

Dicts are opaque

Functions that accept dicts are a nightmare to extend and modify. Usually, to change the function that takes a dictionary, you must manually trace the calls back to the roots, where this dict was created. There is often more than one call path, and if a program grows without a plan, you’ll likely have discrepancies in the dict structures.

Dicts are mutable

Changing dict values to fit a specific workflow is tempting, and programmers often abuse this functionality. In-place mutations may have different names: pre-processing, populating, enriching, data massage, etc. The result is the same. This manipulation hinders the structure of your data and makes it dependent on the workflow of your application.

Not only do dicts allow you to change their data, but they also allow you to change the very structure of objects. You can add or delete fields or change their types at will. Resorting to this is the worst felony you can commit to your data.

Treat dicts as the wire format

A common source of dicts in the code is deserializing from JSON. For example, from a third-party API response.

>>> requests.get("https://api.github.com/repos/imankulov/empty").json()
{'id': 297081773,
 'node_id': 'MDEwOlJlcG9zaXRvcnkyOTcwODE3NzM=',
 'name': 'empty',
 'full_name': 'imankulov/empty',
 'private': False,
...
}

A dict, returned from the API.

Make a habit of treating dicts as a “wire format” and convert them immediately to data structures providing semantics.

The implementation is straightforward.

  • Define your domain models. A domain model is simply a class in your application.
  • Fetch and deserialize in the same step.

In Domain-Driven Design (DDD), this pattern is known as the anti-corruption layer. On top of semantic clarity, domain models provide a natural layer that decouples the exterior architecture from your application’s business logic.

Two implementations of a function retrieving repository info from GitHub:

import requests

def get_repo(repo_name: str):
    """Return repository info by its name."""
    return requests.get(f"https://api.github.com/repos/{repo_name}").json()

The output of the function is opaque and needlessly verbose. The format is defined outside of your code.

>>> get_repo("imankulov/empty")
{'id': 297081773,
 'node_id': 'MDEwOlJlcG9zaXRvcnkyOTcwODE3NzM=',
 'name': 'empty',
 'full_name': 'imankulov/empty',
 'private': False,
 # Dozens of lines with unnecessary attributes, URLs, etc.
 # ...
}

class GitHubRepo:
    """GitHub repository."""
    def __init__(self, owner: str, name: str, description: str):
        self.owner = owner
        self.name = name
        self.description = description

    def full_name(self) -> str:
        """Get the repository full name."""
        return f"{self.owner}/{self.name}"

def get_repo(repo_name: str) -> GitHubRepo:
    """Return repository info by its name."""
    data = requests.get(f"https://api.github.com/repos/{repo_name}").json()
    return GitHubRepo(data["owner"]["login"], data["name"], data["description"])
>>> get_repo("imankulov/empty")
<GitHubRepo at 0x103023520>

While the example below has more code, this solution is better than the previous one if we maintain and extend the codebase.

Let’s see what the differences are.

  • The data structure is clearly defined, and we can document it with as many details as necessary.
  • The class also has a method full_name() implementing some class-specific business logic. Unlike dicts, data models allow you to co-locate the code and data.
  • GitHub API’s dependency is isolated in the function get_repo(). The GitHubRepo object doesn’t need to know anything about the external API and how objects are created. This way, you can modify the deserializer independently from the model or add new ways of creating objects: from pytest fixtures, the GraphQL API, the local cache, etc.

☝️ Ignore fields coming from the API if you don’t need them. Keep only those that you use.

In many cases, you can and should ignore most of the fields coming from the API, adding only the fields that the application uses. Not only duplicating the fields is a waste of time, but it also makes the class structure rigid, making it hard to adopt changes in the business logic or add support to the new version of the API. From the point of view of testing, fewer fields mean fewer headaches in instantiating the objects.

Streamline model creation

Wrapping dicts require creating a lot of classes. You can simplify your work by employing a library that makes “better classes” for you.

Create models with dataclasses

Starting from version 3.7, Python provides Data Classes. The dataclasses module of the standard library provides a decorator and functions for automatically adding generated special methods such as __init__() and __repr__() to your classes. Therefore, you write less boilerplate code.

I use dataclasses for small projects or scripts where I don’t want to introduce extra dependencies. That’s how the GitHubRepo model looks like with dataclasses.

from dataclasses import dataclass

@dataclass(frozen=True)
class GitHubRepo:
    """GitHub repository."""
    owner: str
    name: str
    description: str

    def full_name(self) -> str:
        """Get the repository full name."""
        return f"{self.owner}/{self.name}"

When I create Data Classes, my Data Classes are almost always defined as frozen. Instead of modifying an object, I create a new instance with dataclasses.replace(). Read-only attributes bring peace of mind to a developer, reading and maintaining your code.

Alternatively, create models with Pydantic

Recently Pydantic, a third-party data-validation library became my go-to choice for model definition. Compared with dataclasses, they are much more powerful. I especially like their serializers and deserializers, automatic type conversions, and custom validators.

Serializers simplify storing records to external storage, for example, for caching. Type conversions are especially helpful when converting a complex hierarchical JSON to a hierarchy of objects. And validators are helpful for everything else.

With Pydantic, the same model can look like this.

from pydantic import BaseModel


class GitHubRepo(BaseModel):
    """GitHub repository."""
    owner: str
    name: str
    description: str

    class Config:
        frozen = True

    def full_name(self) -> str:
        """Get the repository full name."""
        return f"{self.owner}/{self.name}"

Online service jsontopydantic.com saves my time creating Pydantic models from third-party APIs. I copy the response examples from their documentation to the service, and the service returns Pydantic models.

You can find some examples of me using Pydantic, in the post Time Series Caching with Python and Redis.

For legacy codebase, annotate dicts as TypeDict

Python 3.8 introduced so-called TypedDicts. In runtime, they behave like regular dicts but provide extra information about their structure for developers, type validators, and IDEs.

If you come across the dict-heavy legacy code and can’t refactor everything yet, at least you can annotate your dicts as typed ones.

from typing import TypedDict


class GitHubRepo(TypedDict):
    """GitHub repository."""
    owner: str
    name: str
    description: str

repo: GitHubRepo = {
    "owner": "imankulov",
    "name": "empty",
    "description": "An empty repository",
}

Below, I provide two screenshots from PyCharm to show how adding typing information can streamline your development experience with the IDE and protect you against errors.

For key-value stores, annotate dicts as mappings

A legitimate use-case of dict is a key-value store where all the values have the same type, and keys are used to look up the value by key.

colors = {
    "red": "#FF0000",
    "pink": "#FFC0CB",
    "purple": "#800080",
}

A dict, used as a mapping.

When instantiating or passing such dict to a function, consider hiding implementation details by annotating the variable type as Mapping or MutableMapping. On the one hand, it may sound like overkill. Dict is default and by far the most common implementation of a MutableMapping. On the other hand, by annotating a variable with mapping, you can specify the types for keys and values. Besides, in the case of a Mapping type, you send a clear message that an object is supposed to be immutable.

Example

I defined a color mapping and annotated a function. Notice how the function uses the operation allowed for dicts but disallowed for Mapping instances.

# file: colors.py
from typing import Mapping

colors: Mapping[str, str] = {
    "red": "#FF0000",
    "pink": "#FFC0CB",
    "purple": "#800080",
}

def add_yellow(colors: Mapping[str, str]):
    colors["yellow"] = "#FFFF00"

if __name__ == "__main__":
    add_yellow(colors)
    print(colors)

Despite wrong types, no issues in runtime.

$ python colors.py
{'red': '#FF0000', 'pink': '#FFC0CB', 'purple': '#800080', 'yellow': '#FFFF00'}

To check the validity, I can use mypy, which raises an error.

$ mypy colors.py
colors.py:11: error: Unsupported target for indexed assignment ("Mapping[str, str]")
Found 1 error in 1 file (checked 1 source file)

Take dicts under control

Keep an eye on your dicts. Don’t let them take control of your application. As with every piece of technical debt, the further you postpone introducing proper data structures, the more complex the transition becomes.

Read the whole story
emrox
6 days ago
reply
Hamburg, Germany
Share this story
Delete

Fixing your website's JavaScript performance

1 Share
Learn about lesser-known web performance bottlenecks connected to excessive JavaScript usage, like long tasks, large bundle sizes, and hydration issues.

Read the whole story
emrox
6 days ago
reply
Hamburg, Germany
Share this story
Delete

Forums Are Still Alive, Active, And A Treasure Trove Of Information

1 Share

When I want information, like the real stuff, I go to forums. Over the years, forums did not really get smaller, so much as the rest of the internet just got bigger. Reddit, Discord and Facebook groups have filled a lot of that space, but there is just certain information that requires the dedication of adults who have specifically signed up to be in one kind of community. This blog is a salute to those forums that are either worth participating in or at least looking at in bewilderment.

What follows is a list of forums that range from at least interesting to good. I will attempt to contextualize the ones I know well. This post is by no means supposed to be complete and will be updated whenever I find more good forums.

Audio (Audiophile)

Audiophiles have an oversized presence in the forum game. Part of this has to do with the fact that overpriced gear brings out the worst, best, and most creative in people. It is a fantastic place to start this off. 

  • Audio Science Review is notorious and fairly new in the grand scheme of things, a forum that deserves its own post. They pride themselves on doing objective, scientific analysis of speakers, amplifiers and home audio equipment generally. 
  • Super Audio Best Friends is another audio forum that apparently has had beef with ASR’s methodology.
  • Audiogon is also a well-known, good and reliable audio forum.
  • If you want a forum that is just people talking about old speakers specifically, Audiokarma is the destination. Speakers have generally gotten better and more efficient over time, but old speakers have their defenders, and this forum has some fairly interesting and unique information that does not exist elsewhere. It has a sister site called Videokarma that I had no idea existed before writing this blog. 
  • For everything involving headphones, Head-fi’s forums are probably the best and the ones I root for the most with audiophile stuff. It’s where I found my favorite closed-back headphones. They have their own convention, Can Jam. I probably respect this forum the most.

Audio (DIY)

Eventually you wanna cross from simply being a guy who has an expensive stereo to someone who starts making audio equipment. Here are some good places to start.

  • diyAudio is the destination if you want to make speakers, amplifiers, PAs and more. An incredible resource.
  • Speaker building groups like the Midwest audio club are quite good.
  • Semi related, but GroupDIY is the best website for building a microphone and related equipment. You can make a total Neumann U 87 clone from info gleaned from that site, and people who have been on their forums have gone on to start their own mic businesses. 

Audio (professional) and musicians

People who own audio gear in a professional context are their own niche. This particularly holds true for musicians.

Music

People who collect old records love posting. Here are some of the most active haunts.

Cameras, Video, Production, Gear

One of my niches is cameras, and so as a result I have spent a lot of time on vintage cameras. I have close to 30 film cameras at this point, and I lay the blame squarely at forums and Goodwill’s auction site. Here are some old forums to enable you.

  • For modern cameras the DPreview forum is by far the most active.
  • A lot of my knowledge came from obsessing over the MFLenses subreddit. This was particularly popular around when camera sensors got big enough that you could adapt older glass to newer camera bodies. I learned a lot about Soviet era lenses there. 
  • This has led to other, niche forums. I spend a lot of time with vintage Minolta cameras, and for that the Dyxum forum is still fairly active. Konica Minolta’s camera department was later bought by Sony in 2006, so it now encompasses discussions of Sony cameras. 
  • PentaxUser is also still kicking around, though Pentax as a brand is not what it once was and the forum is less active.
  • DVXuser used to be one of the best forums for shooting video, based on the Panasonic AG-DVX100, but if you are old enough to remember that camera you are old now. 
  • Photo.net’s forums remain active. 

Adjacent to this and you start getting into video production and editing: 

  • Real video editing heads know about the Creative Cow forums. I have spent nights working overtime looking for why something wasn’t rendering correctly. There is a deep treasure trove of info there.
  • Blackmagic’s forums are active if you use any of their products.
  • Further down the rabbit hole is Videohelp, which is a great resource for a lot of questions about encoding. 
  • Even further down that rabbit hole are the Doom9 and the MakeMKV forums, the former being real pervert encoding information, and the latter being useful if you wanna learn how to archive your blu-rays using a jailbroken disc drive called a LibreDrive

Home Theater, A/V and Media

Speaking of blu-rays, let’s talk about home theater, A/V and general media.

Drugs and Substances

Drugs are great for forums. While I am not making it the explicit policy of Aftermath to do drugs, the forums for drugs are informative or at the very least very funny.  

  • Bluelight is the most notorious active drug forum. As with many drug forums, the stated goal is harm reduction.
  • I have a special place in my heart for the psychedelic mushroom forum Shroomery. Partly this is because it’s ancient and it still looks like a black light poster, but also because it has a lot of non-drug related mushroom advice on there. If you wanna learn how to cultivate culinary mushrooms it’s a great resource.
  • The Poppers Forum exists. While the idea of a poppers forum is conceptually funny, it is actually a complicated topic. Poppers availability, chemistry and legality is a somewhat complex topic. As an aside, I would highly recommend the recently released book Deep Sniff if you are interested in the history of poppers.
  • Grass City is the dedicated weed forum. Kinda speaks for itself.
  • I remember there used to be a lot of steroid forums. That’s not my scene and not worth linking directly but it is worth mentioning.
  • I don’t drink any more but I used to home brew beer, and when I did the Homebrewtalk forum was a destination I spent a lot of time on. Lots of very helpful guides on how to make alcohol. They also send you an email wishing you happy birthday. The Homebrew Forum based out of the UK is also a good resource here.
  • Wine Making Talk is an active wine making community. 
  • The BeerAdvocate community I spent less time on because BeerAdvocate reviews were some of the worst writing I have ever read. 
  • Wine Berserkers is a notorious wine forum. CellarTracker is also well known.
  • Home Barista forums are some of the larger coffee forums.
  • Teachat used to be the biggest tea forum, but apparently there was a split, so now Tea Forum exists.

Fashion

I personally don’t think you should learn about style from a forum unless you have a hyper specific way you prefer to dress. That said, there’s a lot of useful info on clothing brands online.

Plants and Animals

Farming and gardening is, unsurprisingly, fertile ground for forums.

  • AG talk is apparently quite a good agricultural forum and not surprisingly spartan in its layout.
  • The Combine Forum is a great resource if you own a combine harvester. I do not, but it makes for a good read even if you don’t own a John Deere 9660 STS.
  •  The Lawn Forum is quite good if you are the kind of person who gets obsessed with lawns, although I learned a lot about fescue if you (correctly) believe that lawns with traditional grass are bad for the environment. It’s also where I found out about chelated iron as a non-toxic herbicide.
  • I somehow ended up on Beesource, the beekeeping forum a while back while attempting to learn about an antifungal chemical. Seems fun over there! 
  • I have heard nothing but good and useful things about  the garden.org forums
  • Bonsai Nut for trees.
  • Guinea Pig forum.
  • Backyard Chicken is the forum for home chicken owners.
  • Birdsforum is the birding community hub. 
  • Pigeon.biz is the internet’s main hub for pigeon information. 
  • Parrot forums, for parrot and other bird owners like parakeets, cockatiels and macaws.

Repair Hobbies, Vocational Hobbies, Appliances and Home Goods

Sometimes you gotta fix some stuff. Forums are the perfect structure, because old guys love hanging out in a place and telling you how to fix something.

Gaming

Gaming forums have seen better days, but gaming has always been one of the largest percentages of forum communities. We don’t need to relitigate NeoGAF or ResetERA here. Some of the more interesting forums are the retro ones. 

  • The Shmups forum is actually where a lot of the first RGB mods for CRT TVs emerged. 
  • The Arcades-Projects forum is a wildly useful resource and community if you have or want to refurbish an old arcade cabinet. 
  • ResetERA is the forum that emerged after the collapse of NeoGAF, and now is where everyone in gaming news lurks.
  • Also the Arcade Controls forum.
  • The GBATemp forums are where to go if you’re trying to keep up with hacking and Homebrew.
  • Bitbuilt is the forum for modding consoles into portable handhelds.
  • IGN
  • Giant Bomb
  • RIIMuk
  • GameFAQs is a national treasure and some of the only archives of how to correctly play certain niche games.
  • InsertCredit and Select Button are good forums.
  • Gamers With Jobs forum
  • Vogons 
  • The longest running LucasArts forum is MixnMojo, which contains an old archive of the LucasArts forums from back in the day. 
  • The Visual Novel Database is one of the most comprehensive resources for visual novels.
  • The rpg.net forums are ancient tabletop forums.
  • The BoardGameGeek forums are still quite active as well. 

 In addition to general topics there are multiple forums devoted to specific games and subgenres. 

Technology/Computers/Software

Tech people are unsurprisingly still active on forums. Here are some of the more active ones.

Crafting

Forums are great if you are trying to make some stuff. 

  • TheRPF is the best prop/cosplay forum bar none, and potentially one of the most useful forums on this list. 
  • Finishing.com has been going for decades, and if you have any question about finishing metal it has probably been asked. The site has roots in the pre Internet era and it’s maintained by one guy from New Jersey.
  • The American Association of Woodturners is a great resource if you have a wood lathe or would like to have one. 
  • Chemists Corner is for people who formalate makeup and cosmetics. If you want to start making your own shampoo or moisturizer this is a great place to start, along with bulk buying sites like Making Cosmetics.
  • The Secret Society of Lathe Trolls if you want to cut vinyl. 
  • Wet Canvas is a hub for painting and other visual arts. 

Hyper-Niche Activities (Useful)

Hyper niche forums call for their own category. 

Hyper-Niche Obsessions (Questionable)

Not all forums are in the service of something useful, so here are the ones that are at best neutral.

Other 

  • You have to mention Something Awful because while it does have some genuinely vile parts, it’s apparently gotten much better since LowTax died and also because big portions of it have useful niche info.
  • Niche off boards on 4chan would occasionally have good stuff, but that’s harder to recommend with a straight face on account of it being a cesspool but also just difficult to sift through and anonymous, which runs counter to the idea of most forums as a resource. Moreover it has always just given me a headache to look at it even on a good day.
  • BoingBoing’s forums are worth mentioning. 

Sex Stuff

I’m not going to link to porn forums because that’s really just kinda tacky, but there are some sex-adjacent forums that are interesting unto themselves.

  • The largest porn forum is adultdvdtalk (NSFW, obviously), primarily when it comes to commercial pornography.
  • I have been informed by a person who makes technologically advanced buttplugs that there is a forum for people that sync their toys to porn. I will direct you to the post about it for attribution instead of linking directly.
  • There is an entire forum dedicated exclusively to porn modding in video games called Lovers Lab

Exercise/Training/Competitive Sports Forums

People who train their bodies or in a competitive sport love posting on forums. Here are some of the most notorious. 

Sports Forums

I am going to be honest, sports generally are a weak point for me. My understanding is that this is one subject where a lot of stuff has moved to other platforms like Discord. That said, I did reach out to the folks at Defector. Dan McQuade mentioned the Sports Argument Stadium at Something Awful, and Luis credited the college football boards on IGN as an inspiration. Another suggestion from Dan McQuade:  "Oh people loved the Eagles message board. Like on the official site. Great community developed there. Not kidding. smart and informed.”

Gun, Weapon and Military Forums

I have found a shocking amount of practical information from gun and military forums despite not wanting to own a gun or to deal with a huge portion of gun owners.

  • I have stumbled into useful information about military clothing on the AR15 forum. I do not endorse it because it’s obviously a reactionary site, but gun forum stuff is shockingly useful if you wanna learn how to refinish something. I have also stumbled across it when looking up deadstock Patagonia military surplus jackets.
  • Blade Forums are apparently the big non-culinary knife forums. Similarly, I have ended up there despite not owning a switchblade or gravity knife.
  • Secret Projects forum are the aviation forums specifically devoted to lost or unbuilt military projects. 
  • The Great War Forum is the forum about WW1.

Car and Vehicle Forums

I don’t own a car or even want one, but I would be remiss if I did not mention some car-adjacent forums. A lot of them have sadly gone under, but the ones that remain and are active are unsurprisingly very niche.

Those are just some of the more interesting forums I could find that are still active. I don’t assume that all of them will live to even the end of the year, but I think it is worth remembering that culture is still being generated in independent places that aren’t closed gardens owned by tech companies. It’s important that we cultivate these wells of knowledge, lest we lose them forever, in favor of spaces far outside of our control.

Read the whole story
emrox
6 days ago
reply
Hamburg, Germany
Share this story
Delete

Engineering Managers' Guide to Effective Annual Feedback

1 Share

As we’re entering the last quarter of the year, the time has come when many tech companies start their yearly feedback cycles, providing formal feedback on the performance of their employees. While time-consuming, if done well, this is a great tool for Engineering Managers to make a difference in the professional life of their reports, so to help, I summarized what I’ve learned about this process during my career.

What's the point?

You might face some frustration about this process, as some find it unnecessarily bureaucratic, so it’s worth going through the values of it. The main goals of a regular, written feedback cycle are:

  • Recognition, support for self-reflection and personal growth
  • Alignment with team- and company needs
  • Documentation

Breaking these down with some explanations:

Recognition, support for self-reflection and personal growth

Hopefully, you’re giving regular feedback on the performance of your team members, but a more official, regular, written feedback cycle can further emphasize achievements and boost morale. Looking back on a successful year can motivate people and increase their engagement.

The self-review part of a typical feedback cycle strengthens self-awareness and career ownership, by forcing your team members to take a step back and critically assess their performance. The resulting ownership attitude will help develop the habit of continuous self-improvement.

Besides confirming (or challenging) their self-assessment, these formal feedback checkpoints help you identify blind spots and areas for growth that the individual might not have recognized.

While people own their careers, the role of managers is to help set challenging but attainable goals and give support to achieve them. A solid assessment that offers clear, actionable feedback to help individuals be successful in their roles is a great foundation for this work during the next period.

Alignment with team- and company needs

The feedback cycle is the time to clarify expectations for the coming year and, therefore, a good opportunity to compare the performance of the individual with the requirements of the current (and maybe next) career level. Similarly, this is a good point to discover any ambitions to move vertically or horizontally in the organization, something that can be worked on in the coming months.

You also need to ensure individual efforts are aligned with broader objectives. For example, if the company’s backend is built in Node.js, there’s limited value in a junior engineer starting to learn Rust. (Though it might be an appropriate tool for a Staff Engineer to fulfill their goal of increased scope of impact and finding performance improvement areas in the tech stack.)

In case of misalignments between individual performance and company needs, making these issues clear and explicit can help move the discussion from ignorance and dismissal to the support the person needs to improve.

Documentation

The output of the feedback cycle process is an actual document, which creates a record of performance and growth over time. This record can be a basis for future decisions on promotions and assignments — or performance improvement plans.

Having this track record ready helps ensure continuity even through management changes, and offers legal protection for both the company and the employee, should disagreements escalate. Also, well-documented feedback is a great source for picking successful projects and achievements for a CV.

Other considerations

While not the primary goals of feedback cycles, they are helpful in further areas too:

  • Relationship building, by deepening the trust and understanding between manager and report;
  • Skill development, by practicing giving constructive feedback, coaching, and mentorship;
  • Deepening organizational understanding, by gathering valuable information about personal performance and team health; and ensuring fair and consistent evaluation across the organization.

So, while it may seem like a bureaucratic chore, a well-executed feedback cycle is a powerful tool for both individual growth and organizational success. It's an investment in your people and, by extension, in the future of your team and company.

Preparation

Effective feedback is built on continuous work during the year, the most important cornerstone of it being regular 1:1s. Nothing someone reads in their yearly feedback document should come as a surprise. So, while concentrated work is just coming to you now, the difficulty of it and the quality of the outcome will depend on how much effort you put into regular feedback during the year.

As a first step, get familiar with company requirements: the timeline, format, etc. Check your company’s engineering career ladder expectations, review and refresh your understanding of the skills and behaviors expected from someone with the person's title. This ensures your feedback is calibrated to their role and level, promoting fair and consistent evaluation across the organization. Review company values and culture pillars too. Reflect on how the individual has demonstrated or could improve in embodying these principles, to help tie your feedback to the organization’s expectations.

Schedule calls to get further feedback if necessary from different people in the organization. Be mindful that others are juggling feedback tasks too, so you might need to give a longer heads-up.

You should block off appropriate time to write good feedback. I usually need around 4 hours per person to do a thorough discovery, distill my thoughts, and then write and finalize my feedback. This is a considerable time investment, but a good review's impact makes it worth it. Try to spread these writing sessions to different days, the exercise can be very energy-draining. Also, I find it helpful to have a final draft, sleep on it, and do the last edit with fresh eyes.

While doing your research, prepare specific examples to support your feedback points. Concrete situations help illustrate your observations and make the feedback more actionable.

Finally, consider potential emotional reactions and prepare for difficult conversations. Think about how to deliver sensitive feedback constructively and how you might respond to various reactions. Kim Scott's book "Radical Candor" offers excellent advice on delivering feedback with compassion and clarity. If you feel unprepared for potentially challenging conversations, ask for help from your People team or your manager. Just make sure to give them plenty of advance notice, as this is one of the busiest times of the year for them too.

Writing the Feedback

If you’re done with all the preparations and managed to block off a few distraction-free hours, it’s time to start writing.

The Main Document

I like to keep one big internal document for all the materials related to a person’s feedback. I typically don't share this with anyone, though there were some cases when it was useful that I could show the whole context to my manager when I was working on a particularly tricky feedback. This personal document has the following structure, and is filled out sequentially:

  • Kickoff thoughts: I have a list of questions that I answer first to myself, before looking at any other feedback or self-review. It has a double goal: first, to capture my unbiased opinion; and second, if there are many areas where I struggle to answer or realize later that I missed something, then it’s a good reminder for myself that I’m losing track of this person and next year I need to do a better job supporting them. A few useful example questions that can translate to most workplaces:
    • What's my gut feeling about their performance?
    • What are their strengths and weaknesses?
    • What are their blind spots?
    • What areas am I not comfortable judging and how can I increase my confidence in them?
    • What notable events do I remember them having this year? (Releases, incidents, talks, blog posts, etc.)
    • What other aspects of their work can be relevant?
  • Others' feedback: The amount of material here hugely depends on the company, but ideally, you have peer feedback, 360 feedback (even from different teams and departments), a self-review, and upward reviews if you manage managers. I copy-paste them to this document so everything is in one place. You can also reach out to coworkers, mentees, partners in different departments, etc. The more specific you are with your questions, the less generic and more useful the answer will be. (eg: instead of "How was Mark doing this year?" ask "Mark was the dedicated developer working on the newsletter feature with you as the designer this year. What did Mark do that made the work easier for you? What did you find challenging during the collaborations with him?" — and you'll get better answers than "He was okay!")
  • To ensure I haven't missed anything, I quickly go through my 1:1 notes with the person and add high-level pointers to this document.
  • I like to dig up my last year's review to ensure continuity and full coverage. I usually don’t copy everything just the main points, to keep the document manageable.
  • The Actual Feedback: this is the main text that I'll write based on the above, and that I'll share with the person once done.
  • Delivery: I like to do a live delivery of feedback, see more details on that below. Here I'm adding a very short high-level bullet list that's in front of me during the talk, ensuring I'm not missing any important aspects. I also take notes in this section during the delivery about how the meeting went, their reactions, etc., so all information is in one place for later retrieval.

The Actual Feedback

The format of the feedback depends on the organization, but it usually follows a “positive” / “negative” structure, often euphemizing the latter as “growth areas”, “rooms for improvement”, etc. Refer to your organization's specific requirements.

If you only take away one thing from this article, it should be the concept of Strength-Based Feedback. Unlike traditional approaches that attempt to "fix" weaknesses, strength-based feedback acknowledges that, realistically, weaknesses can only be managed, not fixed. This approach shifts development conversations from problem-solving to focusing on growth, empowering employees to excel in doing what they do best. Strength-based feedback can lead to meaningful engagement and performance improvements and allows individuals to contribute more effectively to their organizations.

Think about it like this: if someone struggles extremely hard to “fix” their weaknesses, they have a good chance of becoming average-mediocre in that area. However, if they spend this energy to double down on what they already do well while being mindful of and compensating for their blind spots and weaknesses, then they can be exceptionally good performers.

Besides focusing on strength-based feedback, I try to follow these principles:

  • Be concise, don’t waste anyone's time;
  • Be specific and provide examples;
  • Avoid recency bias, focus on the whole year not just the last few months;
  • Don’t extrapolate from a big event (successful release or failure, promotion or performance problems, etc.), make sure you cover the whole year equally;
  • Avoid taking good performance for granted, and don't overlook long-lasting questionable behavior;
  • Be compassionate.

Recently, the use of Large Language Models, relying on AI tools to write reviews came up in EM discussions. My opinion on it is that I try to judge the output and not how it was created. If the resulting text is solid feedback, then I’m happy for you to save a bit of time by using ChatGPT. If not, you need to work more on it, regardless of the tools used.

I use LLMs to kick off ideas, simplify, summarize, structure, and validate my draft. I don’t use them to extend my text or make it sound more official. Some situations where I found AI-assisted writing useful:

  • Validating my draft feedback to ensure it contains everything from my notes;
  • Help rephrasing feedback to ensure it's clear and actionable;
  • Summarizing and structuring lengthy text into key points.

As always, check your company's policies on AI use first, and make sure you don’t disclose any sensitive or confidential information to third parties without previous approval.

When you’re done with your draft feedback, check with your manager and HR business partner, especially in case of the extremes: if you're planning to give feedback that ventures into performance problems, or if you know you'll want to promote your report soon. (In some organizations, you need to get an OK from your manager or HRBP before delivering the feedback, make sure you’re familiar with your company’s rules.)

Delivery

Once you have a final text, you need to deliver your feedback. Here are two approaches that I tried but didn’t work for me:

  • Sharing the written feedback in advance, then discussing it live. It’s easier to misinterpret my written words, miss the emphasis, only focus on the bad parts, etc. Ideally, the written feedback document initiates a great discussion, but this has less chance to happen if my report reads and digests the feedback alone. If your company has a strong async culture, where people are trained and used to interpret written communication maturely, then this might work for you. Still, I advise you not to skip the live part if possible, as it has great value in bringing a shared alignment and increasing trust.
  • Sharing the written feedback during a live discussion. I experimented with this when I was remotely managing people. The idea is to share my screen and go through the feedback, freely discussing points as needed. In reality, people need more time to digest and come up with good comments, so this ended up being a pair-reading exercise, which is a waste of time, and we only had deeper discussions in subsequent 1:1s.

What worked for me was having a live high-level discussion and then sending over the written feedback. In this setup, I only shared the main talking points of my feedback live, giving them a first chance to react, and in general, set the stage for my full feedback. I then sent over the written document and offered a follow-up call if necessary. This allowed people to process what I wrote at their own pace, and sharing the high-level points earlier ensured they were not expecting any surprises anymore, allowing them to better focus on details.

Avoid the compensation question — or know that nothing else will be heard if you bring it up. It's either good news, and nothing else in your feedback will matter; or bad news, and the person won't be able to focus on anything else. In both cases, your work that went into a well-balanced Feedback will go wasted. Separate the money question from the feedback and focus on what they were doing and how.

Avoid on-the-spot negotiations about the feedback. In case there's a disagreement, explain that this is your point of view, if you're factually wrong, you are happy to be corrected, but otherwise ask them to read through your feedback with all the details in their own time, digest it, and schedule a follow-up to discuss their points.

Follow-up

Sometimes, companies have processes that require both parties to "sign" their feedback. This gives some wiggle room to modify your written assessment based on feedback from your report. Stick to your main points (unless you're proven factually wrong), but show some flexibility in how you deliver them, and consider adding details if you missed something important for them.

Official feedback can be a great foundation for someone to build their next year's goals. Encourage your reports to do this exercise, to come up with what they want to achieve in the next 12 months. Start the discussion of how they'll approach these goals, and what support you can give for them. Tracking the progress of their development, referring back to the agreement you had after the previous Feedback can be a recurring topic once a month or so during your 1:1s.

If your feedback includes a warning about the risk of low performance, make sure you work closely with the person to avoid having to take more drastic steps. Support them with clear, explicit expectations, find tasks that can help them use their strengths to grow in lacking areas, and discuss regularly if the risk is still valid.

If you think the person is ready for the next level, your written feedback will be an important part of a promotion package. Discuss with your manager the process of nominating someone for a promotion, and only disclose to your report when you're confident of the process, to avoid setting overly optimistic expectations.

Once you're done with the entire feedback cycle (CONGRATULATIONS!), spend half an hour while the memory is still fresh to do a mini postmortem with yourself, and see what worked well, what parts of your process could be improved, and what you want to do differently next year.

Further reading

I found the following articles on the subject insightful:

I write about Engineering Leadership topics similar to this one. Sign up here to receive my future articles by email.

Read the whole story
emrox
7 days ago
reply
Hamburg, Germany
Share this story
Delete
Next Page of Stories