# critical

Published articles for critical.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Critical correctness bug in Lix

DevFeed: [Critical correctness bug in Lix](<https://devfeed.tech/articles/critical-correctness-bug-in-lix-31375.md>)

Original publisher: [Read original article](<https://lix.systems/blog/2025-06-27-lix-critical-bug/>)

Published: 2025-06-27T00:00:00Z

Content type: news

Language: en

Sources: [News on Lix](<https://devfeed.tech/sources/news-on-lix.md>)

Topics: [bug](<https://devfeed.tech/topics/bug.md>), [incident](<https://devfeed.tech/topics/incident.md>), [Nix](<https://devfeed.tech/topics/nix.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [Deployment Tools](<https://devfeed.tech/topics/deployment-tools.md>)

Tags: [bug](<https://devfeed.tech/tags/bug.md>), [critical](<https://devfeed.tech/tags/critical.md>), [incident](<https://devfeed.tech/tags/incident.md>), [linux](<https://devfeed.tech/tags/linux.md>)

### AI overview

A critical regression in Lix versions 2.91.2, 2.92.2, and 2.93.1 can cause missing or silently invalidated store paths during derivation builds. The incident has been mitigated; versions 2.91.3, 2.92.3, and 2.93.2 are identified as unaffected, with recovery guidance provided.

### Source excerpt

This incident has been mitigated. This post will be updated with pointers on how to close it. The Lix team remains available over all support channels to help recovering any system affected by it.

## A Java Conversion Puzzler: Understanding Implicit Casting and Overflow

DevFeed: [A Java Conversion Puzzler: Understanding Implicit Casting and Overflow](<https://devfeed.tech/articles/a-java-conversion-puzzler-understanding-implicit-casting-and-overflow-30739.md>)

Original publisher: [Read original article](<http://blog.vanillajava.blog/2024/12/a-java-conversion-puzzler-understanding.html>)

Author: Peter Lawrey (noreply@blogger.com)

Published: 2024-12-07T22:23:00Z

Content type: article

Language: en

Sources: [Vanilla Java](<https://devfeed.tech/sources/vanilla-java.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [floating-point](<https://devfeed.tech/topics/floating-point.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [critical](<https://devfeed.tech/tags/critical.md>), [exercise](<https://devfeed.tech/tags/exercise.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [info](<https://devfeed.tech/tags/info.md>), [java](<https://devfeed.tech/tags/java.md>), [performance](<https://devfeed.tech/tags/performance.md>), [puzzles](<https://devfeed.tech/tags/puzzles.md>)

### AI overview

This article explains a Java conversion puzzle involving compound assignment, implicit casting, floating-point rounding, and integer overflow. It shows why adding 0.0f can produce different results for int and long values, including a conversion to Integer.MIN_VALUE when the rounded value is cast back to int.

### Source excerpt

This article explores a subtle Java conversion puzzle that challenges assumptions about how arithmetic operations, implicit casting, and floating-point conversions interact. Inspired by complexities often encountered in low-latency and high-performance environments, it demonstrates why a keen understanding of Java's type system is essential for building reliable and efficient applications. Introduction The following example demonstrates a scenario where an innocuous-looking arithmetic operation leads to a surprising result. While such questions are rare and arguably impractical, they highlight subtle behaviours that can affect correctness and performance, especially in critical systems like high-frequency trading platforms or complex data-processing pipelines. The Problem: A Surprising Print Statement Consider the following code: int i = Integer.MAX_VALUE; i += 0.0f; int j = i; System.out.println(j == Integer.MAX_VALUE); // true At first glance, one might assume that adding 0.0f to an int should not change its value. Indeed, the output true reinforces this notion. However, if you change int i for long i, things get weird: long i = Integer.MAX_VALUE; // only the type of i is changed i += 0.0f; int j = (int) i; System.out.println(j == Integer.MAX_VALUE); // false System.out.println(j == Integer.MIN_VALUE); // true What is going on, you might wonder? Let me start by explaining why using a long gives such a strange result. Understanding the Implicit Casting The key detail lies in how Java handles the += operator. It is not strictly equivalent to a = a + b; but rather: a += b; has a subtle difference which most of the time doesn't matter: // has an implicity cast here a = (typeOf(a)) (a + b); Another subtle feature of addition is that the result is the "wider" of the two types. This means that: i += 0.0f; is actually: i = (int) ((float) i + 0.0f); // or i = (long) ((float) i + 0.0f); The result of (float) i can be imprecise due to floating-point rounding. A float has a 2

## Effective Kotlin Item 2: Eliminate critical sections

DevFeed: [Effective Kotlin Item 2: Eliminate critical sections](<https://devfeed.tech/articles/effective-kotlin-item-2-eliminate-critical-sections-39292.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-synchronization>)

Published: 2023-08-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Operating system](<https://devfeed.tech/topics/operating-system.md>)

Tags: [bugs](<https://devfeed.tech/tags/bugs.md>), [collections](<https://devfeed.tech/tags/collections.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [critical](<https://devfeed.tech/tags/critical.md>), [execution](<https://devfeed.tech/tags/execution.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [state](<https://devfeed.tech/tags/state.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This tutorial explains why concurrent modifications to shared mutable state can produce lost updates and incorrect object states. It introduces threads, time slicing, and synchronization concerns in Kotlin/JVM, using an incrementing-variable example and discussing bugs involving collections.

### Source excerpt

Learn why do we need to synchronize access to mutable state, and how to secure it.

## Ways to Decrease Performance: Velocity Tracking

DevFeed: [Ways to Decrease Performance: Velocity Tracking](<https://devfeed.tech/articles/ways-to-decrease-performance-velocity-tracking-39954.md>)

Original publisher: [Read original article](<https://mende.io/blog/ways-to-decrease-performance-velocity-tracking/>)

Author: tobi@techunicorn.builders (Tobias Mende)

Published: 2023-07-15T06:00:00Z

Content type: opinion

Language: en

Sources: [Tobias Mende](<https://devfeed.tech/sources/tobias-mende.md>)

Topics: [Agile](<https://devfeed.tech/topics/agile.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>)

Tags: [agile](<https://devfeed.tech/tags/agile.md>), [article](<https://devfeed.tech/tags/article.md>), [critical](<https://devfeed.tech/tags/critical.md>), [measuring](<https://devfeed.tech/tags/measuring.md>), [metrics-practices-ways-to-decrease-performance-developer-productivity-engineering-excellence](<https://devfeed.tech/tags/metrics-practices-ways-to-decrease-performance-developer-productivity-engineering-excellence.md>), [performance](<https://devfeed.tech/tags/performance.md>), [practices](<https://devfeed.tech/tags/practices.md>), [story-points](<https://devfeed.tech/tags/story-points.md>), [teams](<https://devfeed.tech/tags/teams.md>), [velocity](<https://devfeed.tech/tags/velocity.md>)

### AI overview

This opinion article examines velocity tracking and estimation in Agile software teams. It explains how teams use story points, velocity trends, and burndown charts, then begins discussing how these practices can harm performance, including the limitations of human estimation.

### Source excerpt

Ways to Decrease Performance: Velocity Tracking This is the first article of my series, "Ways to Decrease Performance", which intends to trigger critical reflection on common "Agile" practices, that is, practices that I see many "agile" teams doing.

## The future of Keycloak Operator CRs

DevFeed: [The future of Keycloak Operator CRs](<https://devfeed.tech/articles/the-future-of-keycloak-operator-crs-31600.md>)

Original publisher: [Read original article](<https://www.keycloak.org/2022/09/operator-crs>)

Author: Václav Muzikář

Published: 2022-09-02T00:00:00Z

Content type: article

Language: en

Sources: [Keycloak Blog](<https://devfeed.tech/sources/keycloak-blog.md>)

Topics: [Keycloak](<https://devfeed.tech/topics/keycloak.md>), [Quarkus](<https://devfeed.tech/topics/quarkus.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [critical](<https://devfeed.tech/tags/critical.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [eol](<https://devfeed.tech/tags/eol.md>), [idm](<https://devfeed.tech/tags/idm.md>), [kerberos](<https://devfeed.tech/tags/kerberos.md>), [keycloak](<https://devfeed.tech/tags/keycloak.md>), [ldap](<https://devfeed.tech/tags/ldap.md>), [openid-connect](<https://devfeed.tech/tags/openid-connect.md>), [operator](<https://devfeed.tech/tags/operator.md>), [quarkus](<https://devfeed.tech/tags/quarkus.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [saml](<https://devfeed.tech/tags/saml.md>), [source-of-truth](<https://devfeed.tech/tags/source-of-truth.md>), [sso](<https://devfeed.tech/tags/sso.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

The article describes Keycloak's new Operator, rewritten for the Quarkus distribution and available as a preview. It explains that Custom Resource Definitions for managing Keycloak resources are not yet available because supporting features, including file storage and read-only interfaces, are still being developed. The CRDs were expected to be added with support anticipated in Keycloak 21.

### Source excerpt

A while back, we have announced a new Operator rewritten from scratch to provide the best experience for the Quarkus distribution. While the legacy Operator is now deprecated and will reach EOL with Keycloak 20, the new one is already available as a preview, see the installation guide. One of the most common concerns around the new Operator is the current lack of the CRDs for managing Keycloak resources, such as realm, users and clients, in a cloud-native way. One of the key aspects of the new Operator will be redesign of managing these Keycloak resources via CRs and git-ops. This new approach will leverage the new storage architecture and future immutability options, making the CRs the declarative single source of truth. In comparison to the legacy Operator, this will bring high robustness, reliability, and predictability to the whole solution. Before we would consider operator ready for leveraging CRs, we expect completing several features including but not limited to: File store (expected in Keycloak 20) to persist data in a file instead of DB. Read-only possibilities for administration REST API, UI Console and other interfaces. This is required for the new immutability concept which will be used to ensure any data coming from the CRs (and subsequently from the file store) are read-only from all interfaces. All of this is critical to proper CRs implementation, hence the new Operator is currently missing the CRDs for managing Keycloak resources. The missing CRDs will be added once Keycloak has the necessary support for it, which is currently expected in Keycloak 21. We have prepared a few options to alleviate the situation with missing CRDs in this repository.

## Building an Application Security Team

DevFeed: [Building an Application Security Team](<https://devfeed.tech/articles/building-an-application-security-team-36672.md>)

Original publisher: [Read original article](<https://shostack.org/blog/application-security-team/>)

Author: Jonathan Marcil

Published: 2017-10-15T00:00:00Z

Content type: opinion

Language: en

Sources: [Shostack & Friends Blog](<https://devfeed.tech/sources/shostack-friends-blog.md>)

Topics: [Application Security](<https://devfeed.tech/topics/application-security.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [application-security](<https://devfeed.tech/tags/application-security.md>), [critical](<https://devfeed.tech/tags/critical.md>), [false-positives](<https://devfeed.tech/tags/false-positives.md>), [red-team](<https://devfeed.tech/tags/red-team.md>), [security](<https://devfeed.tech/tags/security.md>), [team](<https://devfeed.tech/tags/team.md>), [teams](<https://devfeed.tech/tags/teams.md>)

### AI overview

The article discusses how to build an application security team and why the role requires both broad and specialized skills. It contrasts product-based security tools with penetration testing services, comparing their coverage, accuracy, false positives, creativity, and technical depth. It also describes the evolution of penetration testing toward Red Team operations.

### Source excerpt

[no description provided]

## Implementing Critical CSS on your website

DevFeed: [Implementing Critical CSS on your website](<https://devfeed.tech/articles/implementing-critical-css-on-your-website-31272.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/implementing-critical-css>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2017-02-28T21:34:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [modern web development](<https://devfeed.tech/topics/modern-web-development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [inlining](<https://devfeed.tech/topics/inlining.md>), [render](<https://devfeed.tech/topics/render.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [browser](<https://devfeed.tech/tags/browser.md>), [critical](<https://devfeed.tech/tags/critical.md>), [development](<https://devfeed.tech/tags/development.md>), [essential](<https://devfeed.tech/tags/essential.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementing](<https://devfeed.tech/tags/implementing.md>), [inlining](<https://devfeed.tech/tags/inlining.md>), [insights](<https://devfeed.tech/tags/insights.md>), [modern](<https://devfeed.tech/tags/modern.md>), [modern-web-development](<https://devfeed.tech/tags/modern-web-development.md>), [performant](<https://devfeed.tech/tags/performant.md>), [render](<https://devfeed.tech/tags/render.md>), [shows](<https://devfeed.tech/tags/shows.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This tutorial explains Critical CSS, a method for extracting the CSS needed for above-the-fold content and inlining it so the browser can render the page immediately. It presents the technique as part of building performant websites.

### Source excerpt

Implementing Critical CSS is an essential part of modern website development, this article shows you how to do it