Astro on Cloudflare: when every prerendered page builds to [object Object] and the build stays green
A green build that produces a 15-byte index.html is a strange thing to look at. The file contains exactly this:

High-level, interpreted programming language. It is a language which is also characterized as dynamic, weakly typed, prototype-based and multi-paradigm
A green build that produces a 15-byte index.html is a strange thing to look at. The file contains exactly this:

Hi everyone! Today I’d like to talk about another open-source project of mine for building web applications based on Angular.
Over the past few years, I have conducted numerous successful experiments with high-performance web interfaces, which has given me a clear understanding of the structure and architecture for the project discussed below.
So, meet Centrifugal. Check out the project’s official website—there are plenty of cool use cases there!
The project was originally conceived to create a set of high-performance, flexible tools and components for building web applications. However, during one of the development iterations, I decided to add support for creating “all-in-one” interfaces—specifically, a standalone application mode featuring a fully customizable virtual keyboard. This enabled full support for building user interfaces for applications such as self-service kiosks and similar systems.

On June 28, 2025, the European Union’s transition period for the European Accessibility Act ended. For a broad range of commercial services—online stores, banks, transport, and telecom—web accessibility stopped being a matter of goodwill.
Technically, the requirement comes down to EN 301 549 and, for the web, WCAG 2.1 Level AA. You cannot learn WCAG by reading it: half the criteria sound perfectly clear while leaving it completely unclear what exactly should be written in the markup.
Some of our projects fall under the new requirements, and it is not only front-end developers who need to relearn their habits. Designers set contrast and focus order, analysts write error messages, and testers need to know what to check manually.
That is how a project of 20 exercises emerged. In each one, the page looks fine at first glance. It is broken only from an accessibility perspective: headings skip levels, a div with a click handler acts as a button, a label sits next to an input but is not formally associated with it. You edit the markup and immediately see the result as the page rebuilds on the fly. Everything runs directly in the browser, and both your code and progress stay in localStorage: a11y-exercises.github.io

We build a Tiny Language Model from scratch in pure Node.js without TensorFlow or PyTorch, implementing neurons, autograd, embeddings, self-attention, FFN, backpropagation, and SFT while observing how individual weights and entire matrices change during training.

Have you ever hidden something inside a PNG? A basic way to securely hide something inside an image. And all in your favorite JavaScript!

A WONDERFUL FUTURE
Technology is advancing at an astonishing rate. It seems like only yesterday that domestically produced KR1810VM86M microprocessors with a clock rate of just 8 megahertz appeared, forever dividing our lives into “before” and “after.” And a set of eight K565RU7 memory chips (similar to the Intel 41256) provided a RAM capacity of 256 kilobytes, a fantastic value for its time.
Back then, it seemed that with such rapid development, humanity was about to transcend the galaxy and rush to other worlds. Today, these figures only evoke a smile, but it was precisely with such advances in computing technology in the 1980s and 1990s that our journey into the future world of ones and zeros began.

How we turned a NAS control panel into an extension platform, why Log Manager was needed, and what the Plugin Template is for.
In the previous article (Mini Bucket 3.6.2: from beta to release), I showed how the panel matured to a stable state: we patched holes, separated databases, and added HTTPS.
But it’s still just a panel. SMB, FTP, and the rest are standard features found in almost any admin panel. It’s time to expand the functionality.
The best solution turned out to be: .....
About a year ago, I decided to create a universal open-source solution for list visualization. In the first versions, I tested the virtualization technology with various parameters, and there was a lot of research and questions. Today, version X.12.X was released, which runs on Angular 14-22. I’d like to talk about the capabilities of the tool (ng-virtual-list), the problems it solves, and give a brief overview with examples.
All examples below are contained in the code sample documentation.
The ng-virtual-list tool provides virtualized, high-performance lists with a variety of features that standard lists don’t have.

Why Debian 9, PHP 7.0, and no frameworks. And how to set up HTTPS in 5 minutes.
Foreword for those who haven't read the first article
Last time, I told the story of how I wanted to make a couple of pages for SAMBA and NFS, but ended up with a NAS control panel of 20+ pages. I named the project Mini Bucket.
Important: That version was a beta. Raw, with rough edges, but alive. Its goal was to demonstrate the concept. And people got interested. So, it needs to be polished.
Now – version 3.6.2. A ton of problems have been fixed, security has been added, a separate domain, forum, and wiki have appeared. Today, I'll walk you through the installation step-by-step with screenshots.
But first – a quick summary of what has changed. Then – pure practice.

Fair warning right away: I'm not a programmer. The code could be prettier, the architecture more elegant. But my goal was different – to make a convenient tool for myself as a system administrator. What came out came out. Don't judge too harshly, it's beta.
How it all started
I had some free time. I had an old Netgear Stora MS2000 lying around – I'd installed Debian 7 and OpenMediaVault on it back in the day. Then a disk crashed, I reinstalled Debian 9, but OMV turned out to be too heavy for this hardware.
Editing configs in the console every time was tedious. And all I really needed was SAMBA and NFS. So I thought, why bother? I'll write a couple of PHP scripts to create and edit shares.
And so Mini Bucket began.
The first two pages – and off we went
I whipped up the first two pages quickly: shares started working. Then I thought, "It would be nice to have a dashboard to see all the stats." A third page appeared – a dashboard with graphs.
Then I figured: since I've got SMB and NFS, might as well add rsync and FTP too. Added them.
Day by day, my "two-page panel" grew into a project now called Mini Bucket – NAS Control Panel.
And you know what? It actually works. On hardware where modern panels simply won't start or slow to a crawl.
What is this thing?
Mini Bucket is a web-based NAS control panel focused on resource efficiency. It runs on:

This article is not about Puppeteer being a bad tool. Puppeteer is excellent. And competent TLS fingerprinting will bypass most defenses. But there is a class of tasks where even a perfect network stack won't save you — because detection has long since landed at the level of rendering engine behavior. Let's take a look at how Cloudflare and Akamai expose you through WebGL and Canvas, and why “clean” code no longer works.

Before creating our future messenger, we need to decide on the technology we'll use for its development. Among web development tools for single-page applications (SPAs), Angular and React are clear favorites. I won't dwell on the advantages of each of these tools, but will focus on Angular, as I've previously conducted research on non-classical virtualized lists and found that it handles this task better than React.

Micro frontends: hype or game-changer? How one team cut costs, sped releases, and built scalable apps without chaos.

Complex systems often appear chaotic or incomprehensible, yet closer examination reveals that such complexity can frequently be reduced to a simple underlying mechanism. By systematically removing layers of emergent behavior, one can uncover a fundamental rule or equation from which the entire system originates.

If you’re building a multilingual React Native (or web) app, you’ve probably tried react‑i18next, i18n‑js, LinguiJS, or similar libraries.
But in every project, the same issues come up:
❌ Unused key‑value pairs are never removed
❌ Content gets duplicated
❌ Ensuring format consistency across languages is painful
❌ i18next doesn’t generate TypeScript types by default — so t(“my.key”) won’t throw even if it’s been deleted
❌ Localization platforms like Lokalise or Locize get expensive fast
Frustrated by these challenges, I waited for a better solution... then decided to build one myself: Intlayer.

Memory leaks in Node.js can be silent killers for your applications. They degrade performance, increase costs, and eventually lead to crashes. Let’s break down common causes and actionable strategies to prevent or fix them.

tl;dr; in the modern TS/JS landscape and overall tooling trends, better stick with static code generators, they are more performant in many ways, easier to integrate into apps, other tools and the multitude of modern JS runtimes. My new tool is as good as other static code generators, but it also produces strictly type safe code and unit tests for you.
This post goes into a rather deep comparison of my new tool Type Predicate Generator (from here just Generator) to other runtime type checkers, also giving a rather broad overview of the related topics. To get a sense of what it does try checking the Playground first.
If you're about to create your first tool for the TypeScript ecosystem the insights in this article will help you hit the ground running.

Do you want to know how to build an AI image analyzer? Then read this article till the end! I'm going to show you how to build AI analyzer tools really simply, so you almost don't have to have any prior knowledge. I will take you step by step, and we will use Project IDX and the Gemini API. This means you don't have to set up anything; everything we will do is on the cloud. If you're ready, then let's get started!

The new code as the side effect
If we use the reducer function for form data handling It has an infinite list of returned values, which expands when the next development iteration updates the interface defining the form and implements a new field. So the reducer pattern is procedure code, not a functional

In the internet’s early days, blogging was straightforward. A server with PHP and MySQL allowed you to share your thoughts globally. Even FTP access with an index.html file sufficed.
However, as the web evolved, so did blogging requirements. Non-programmers needed user-friendly web interfaces, faster loading times, and seamless daily publishing. Platforms like Reddit, WordPress, and Tumblr emerged, but they faced a common issue: website ownership.