Could you please remove all references to lemmy-status?

I see at least uptime and response-times badge svgs being included in the sidebar.

I also see it in a head script, which I assume lemmy software generates automatically for preload or something.

 

We thought updating Oh Deer would take a week. Nine months later, we’d end up rebuilding our multiplayer hide-and-seek game from the ground up. Enjoy!

We share how fixing performance turned into rebuilding almost everything: the Hunter, the maps, the NPC deer, the multiplayer systems, and even a tiny animated screen on a TrailCam. Along the way, we learned better ways to make games and discovered how much we still had to learn.

The new Oh Deer brings:

  • 10-player matches: one Hunter and up to nine player deer.
  • 100 NPC deer to hide among.
  • Reworked maps, improved visuals, and better performance.
  • Upgraded TrailCams and deer abilities.
  • A completely reworked night phase: survive 40 seconds while your friends hunt you as Wendigos.
 

In Love Me Not you are a flower that climbs out of a cave. The cave has been cursed by a witch, so the level is regenerated above you whenever you fall.

This is similar to the procedurally generated levels in infinite runners like Doodle Jump, except that instead of erasing the entire level on a failure, Love Me Not only erases the most recent sections. This style of level generation is novel to me. For the purposes of this post I’ll call it spool generation.

I often simplify a player’s time with a game into a “novice period” and an “expert period”. These are usually characterised by different goals. In Love Me Not a novice’s objective is to escape the cave by any means necessary, while an expert’s objective is to escape the cave as fast as possible.

Spool generation had some natural effects on the novice period:

[expert period] I wanted to find a scoring system that could bring spool generation back into the decision space of an expert player.

Love Me Not on itch.io

 

[…] about some Celeste game-feel tricks. I don’t think that we invented any of these techniques, but they are important parts of the moment-to-moment experience of Celeste.

  1. Coyote Time
  2. Jump Buffering
  3. Halved-Gravity Jump Peak
  4. Jump Corner Correction
  5. Dash Corner Correction
  6. Semi-Solid Popping
  7. Lift Momentum Storage
  8. Wide Wall-Jump Window
  9. Even Wider Super Wall-Jump Window
  10. Stamina Refunds

You might have noticed a pattern! All are centered around widening timing or positioning windows, so that everything is fudged a tiny bit in the player’s favor. I think that this is a big reason why Celeste can feel kind even though it’s very difficult — it wants you to succeed.

 

While load testing one of our Rust services at work, we ran into something that took us way longer to figure out than we'd like to admit: memory that shoots up under load and just stays there.

Though glibc is the default allocator and works well for the majority of applications, it can retain significant allocator-owned memory for bursty workloads due to arena reuse, fragmentation, and cached free chunks.

Allocator switch, and this article was mentioned in Lemmy Release v0.19.20 - Reduced Memory Usage

This release significantly reduces memory usage for the Lemmy backend. Metrics on production instances show a reduction up to 10 times. Here you can see the statistics from a few different instances. Read on for a technical explanation below. Note that the change only affects x86, there is no difference on ARM (e.g. Raspberry Pi), see here for details.

 

Clara explores the concept of metacognitive awareness, the role it plays in learning, common traps in your thinking, and how using LLMs affects it in surprising ways.

Goes into research about learning, and more specifically about metacognitive awareness.

Timestamped link to where significant content begins.

Metacognitive traps:

  • Forming: Right question, wrong answer - right problem understanding, wrong solution approach
  • Dislodging: Failing to change an approach that is not working even upon realization
  • Assumption: Wrong question, right answer - solving the wrong problem
  • Location: So close, but so far - almost done, but realization that crucial steps were skipped in the beginning
  • Achievement: Band-aid on a broken bone - a lot written, small fixes in hopes that it'll start working

LLM don't solve any but introduce three new metacognitive traps:

  • Progression: Falling Behind Without Noticing - using AI-generated code beyond own understanding
  • Interruption: Distracting pop-ups - like generated-code auto-completion suggestions
  • Mislead: Following bad advice

Before these sections, I find "pauses are not bad" particularly noteworthy as well. I will be sending this to a Junior colleague.

 

The htmx team is very happy to announce the release of htmx 4.0.0! This is the culmination of 8 months of work (plus a game) and we are very happy with the results.

Note that we are not marking 4.0 as latest in NPM because we do not want to force-upgrade users who are relying on non-versioned CDN URLs for htmx. Instead, 2.x will remain latest and the 4.0 line will remain next until some point in early 2027. The website, however, will reference 4.0.

We hope you enjoy htmx 4. htmx 2 will continue to be supported indefinitely so don’t feel any pressure to upgrade.

 

For five days in March 2026, a single stolen token let one group poison five software ecosystems including a package downloaded 95 million times a month. The attack started with a misconfigured GitHub Actions workflow, and ended with backdoored code sitting inside CI/CD pipelines around the world.

Today, two people behind this attack were arrested. TeamPCP, allegedly operated by these threat actors, started attacks in late 2025 running opportunistic cloud exploits, then pivoted in early 2026 to targeting the software supply chain itself.

Flare’s Emerging Threats Team wanted to share examples of some of the techniques that can be used to unmask one operator behind TeamPCP, using the Flare platform to trace a single alias across the accounts, credentials, and infrastructure that connected back to a real identity. There were other independent investigations on this topic, including by Brian Krebs. Below, we walk through who TeamPCP is and share the process of deanonymizing threat actors.

 

For five days in March 2026, a single stolen token let one group poison five software ecosystems including a package downloaded 95 million times a month. The attack started with a misconfigured GitHub Actions workflow, and ended with backdoored code sitting inside CI/CD pipelines around the world.

Today, two people behind this attack were arrested. TeamPCP, allegedly operated by these threat actors, started attacks in late 2025 running opportunistic cloud exploits, then pivoted in early 2026 to targeting the software supply chain itself.

Flare’s Emerging Threats Team wanted to share examples of some of the techniques that can be used to unmask one operator behind TeamPCP, using the Flare platform to trace a single alias across the accounts, credentials, and infrastructure that connected back to a real identity. There were other independent investigations on this topic, including by Brian Krebs. Below, we walk through who TeamPCP is and share the process of deanonymizing threat actors.

 

Game trailers which take their time to show gameplay can perform way better than trailers which are cut fast and make a hard sell. See a before/after for the Sheepherds' Announce/Launch trailer to see what a difference the editing style made!

I explain how to make a game trailer which lets the viewer see what’s special about the game and how to apply it when you edit a gameplay trailer.

 

In Brief:

  • Two motions regarding "artificial intelligence" and Large Language Models (LLMs) were voted on among Codeberg e. V. members and passed.
  • We are promising to not use any of your data to train LLM and explain what the planned Terms of Use change mean for 'vibe-coded' projects.
  • We believe that LLMs endanger the free/libre software ecosystem as a whole.

The blog/news post then goes extensively into where Codeberg understands itself to be in the development landscape, and their voting results. They present their interpretation of the current software development and hardware landscape under the influence of LLMs, and the consequences they take. And how it changes not only development in general, but FOSS collaboration and projects specifically.

To us, it seems ridiculous to see projects with a single developer and virtually no users consuming as much or even more resources than some of the largest community projects on Codeberg, which operate frugal with CI/CD and storage resources. We do not believe it is reasonable for Codeberg to invest our precious donation money into hosting of large ghost projects.

 

After loading a project, Cursor attempts to find git binaries at various locations including the current workspace. By creating a repository with a planted malicious git.exe in the root, the IDE will execute it with no user interaction and no prompting of the user. This occurs repeatedly on a cadence.

 

Andrew Kelley quit his job in 2018 to build a programming language. Eight years later, Zig powers Ghostty, TigerBeetle and Uber's cross-compilation. It's top 5 most admired on Stack Overflow. There's just one thing missing: 1.0. Andrew Kelley explains why.

Vitaly talked to Andrew about:

  • Why Zig has no 1.0 after a decade, and why that's deliberate
  • Why Zig left GitHub
  • Why Zig banned AI from Zig
  • What makes Zig better than C (and why every other C replacement failed)
  • Andrew’s take on Open Source

It's a long interview, but I found it very interesting and worth it.

 

ColorSym is a free, open-source color-identification system that pairs every color with a unique, memorable symbol. When color alone isn't enough to tell things apart, the symbol does the job, so the roughly 1 in 12 men and 1 in 200 women with color vision deficiency can read your components, charts, or UI with confidence.

 

When using Central Package Management (Directory.Packages.props holds package versions), package version declarations can remain after package references have been removed. The package versions are unused and misleading.

dotnet nuget why can be used to get a dependency tree across projects to answer how a package comes into the dependency tree. However, the extensive tree list result for a list of version declarations is not viable to simply determine what 'is in use' and what isn't.

I am sharing my Nushell snippet which answers the question of what is declared but not referenced:

# List Directory.Packages.props version declarations that are in no csproj
def "dotnet unused-dirpackprops" [] {
  let defs = open Directory.Packages.props | from xml | get content | where tag == ItemGroup | get content.attributes.Include | flatten | sort --ignore-case --natural
  let refs = ls **/*.csproj | get name | each { open | from xml | get content | select content | flatten | flatten | where tag == PackageReference | get attributes.Include } | flatten | uniq | sort --ignore-case --natural
  $defs | difference $refs
}
❯ dotnet unused-dirpackprops
╭───┬─────────────────────────────────────────╮
│ 0 │ coverlet.collector                      │
│ 1 │ System.Net.Http                         │
│ 2 │ System.ServiceProcess.ServiceController │
╰───┴─────────────────────────────────────────╯

Gaps: In this simple form, only covers the standard csproj package references. Package references included during build through other target or prop files are not covered (probably irrelevant for most users).

view more: next ›