Spyke

Posts

rust·RustbyKissaki

Your Rust Service Isn't Leaking — It Could Be the Allocator

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.

Your Rust Service Isn't Leaking — It Could Be the Allocatorhttps://pranitha.dev/posts/rust-and-memory-allocators/Open linkView original on programming.dev
20
programming·ProgrammingbyKissaki

Therapy for the Vibe-Coded Brain - JetBrains Academy

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.

View original on programming.dev
40
webdev·Web DevelopmentbyKissaki

htmx 4.0.0 has been released!

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.

https://four.htmx.org/announcements/2026-08-28-htmx-4.0.0-is-releasedOpen linkView original on programming.dev
16
security·SecuritybyKissaki

Unmasking TeamPCP, King of Software Supply Chain Attacks

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.

Unmasking TeamPCP, King of Software Supply Chain Attackshttps://flare.io/learn/resources/blog/teampcp-software-supply-chain-attacksOpen linkView original on programming.dev
2

Unmasking TeamPCP, King of Software Supply Chain Attacks

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.

Unmasking TeamPCP, King of Software Supply Chain Attackshttps://flare.io/learn/resources/blog/teampcp-software-supply-chain-attacksOpen linkView original on programming.dev
2
gamedev·Game DevelopmentbyKissaki

How to Edit a Game Trailer That Keeps Viewers Hooked

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.

View original on programming.dev
4
programming·ProgrammingbyKissaki

Protecting our FLOSS commons from LLMs — Codeberg News

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.

https://blog.codeberg.org/protecting-our-floss-commons-from-llms.htmlOpen linkView original on programming.dev
46
security·SecuritybyKissaki

Cursor 0day: When Full Disclosure Becomes the Only Protection Left - Mindgard

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.

Cursor 0day: When Full Disclosure Becomes the Only Protection Left - Mindgardhttps://mindgard.ai/blog/cursor-0day-when-full-disclosure-becomes-the-only-protection-leftOpen linkView original on programming.dev
6
programming·ProgrammingbyKissaki

Zig 2026: No-AI Policy, $670K Foundation, Left GitHub & Why Zig Isn’t 1.0 - Andrew Kelley Explains

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.

View original on programming.dev
47
a11y·AccessibilitybyKissaki

ColorSym: Free Color Identification Symbols

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.

ColorSym: Free Color Identification Symbolshttps://luisfrancisco.itch.io/colorsymOpen linkView original on programming.dev
31

Determine Unused `Directory.Packages.props` declarations via Nushell

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 original on programming.dev
4
uiux·UI/UXbyKissaki

Why Horizontal Scrolling Never Caught On - Interface Studies

They go over how the web and frameworks decided against horizontal, apart from deliberate emphasis, they go over some desktop layout attempts, failures and successes (more of the same vs navigation), a chapter about (paper) documents as the source, and endless panes now using horizontal.

From the description:

Almost every screen we use is a landscape rectangle, wider than it is tall. And on almost all of them, the content moves vertically. Always down.

This video walks through a wrong question. If mobile scrolls down, why doesn't the desktop scroll sideways?

The question turns out to be wrong.

Chapters

  • [00:00] Introduction
  • [01:23] The Web Could, and Doesn't
  • [03:18] The Microsoft Bet - Windows 8 "Metro"/"Modern" failure
  • [06:18] What Makes a Difference - Layouts where horizontal works
  • [09:14] Horizontal Scrolling as Emphasis
  • [10:24] When Horizontal Axis Means Something
  • [12:13] The Document Model
  • [14:06] The Potential of a Glass Plane

References

View original on programming.dev
6