Category: Development

TypeScript Native Compiler: 10x Performance Boost

2025-03-11
TypeScript Native Compiler: 10x Performance Boost

The TypeScript team announced a native port of the TypeScript compiler and tools to dramatically improve performance. This native implementation is projected to drastically speed up editor startup, reduce most build times by 10x, and substantially reduce memory usage. Initial testing shows compilation speed improvements of more than 10x for several large projects (e.g., VS Code, Playwright). Future native TypeScript (planned as TypeScript 7) will support more advanced refactorings, deeper code analysis, and lay the foundation for next-gen AI development tools. TypeScript 6 (JS-based) will continue to be maintained to ensure a smooth transition.

Cinder JIT: Efficient Type Representation Using Bitsets and Semilattices

2025-03-11
Cinder JIT:  Efficient Type Representation Using Bitsets and Semilattices

The Cinder JIT compiler employs a clever type representation, treating types as sets (even lattices) and choosing a compact bitset representation. This article delves into how Cinder leverages bitsets and semilattice structures for efficient type information handling, covering basic type representation, type unions, and specialization. By encoding type information into bitsets, Cinder effectively represents type unions and allows for finer-grained type distinctions. Furthermore, Cinder introduces a specialization mechanism to track the specific value of individual objects, further improving compiler optimization efficiency. The article also discusses the Bottom type and details on generating the type lattice.

Development bitsets

Zero-Downtime Database Migration Verified with PlusCal

2025-03-11

This blog post details how the author used PlusCal, a DSL for TLA+, and formal verification to ensure the correctness of a zero-downtime database migration. A PlusCal model was built simulating user Upsert, Delete, and Get operations on a database, along with a background migration process. By simulating a system without migration and one with migration, and verifying the consistency of Get operation results across all states, the author ensured the correctness of the migration algorithm. Formal verification helped in early detection of flaws, such as improper handling of TOMBSTONES, and highlighted the importance of atomic operations, like the atomicity of checking and inserting data during migration.

Development

8 Visual Patterns to Improve Code Readability

2025-03-11
8 Visual Patterns to Improve Code Readability

A programmer auditing code found themselves mentally fatigued despite high-quality code. The culprit wasn't cyclomatic complexity, but readability. Research revealed eight visual patterns to improve readability: minimize line/operator/operand count; avoid novelty in function shapes, operators, or syntactic sugar; group long function chains; keep conditionals short; avoid gotos; minimize nesting; use descriptive and visually distinct variable names; and shorten variable lifetimes. These patterns help improve code readability, reduce bugs, and increase developer productivity.

Development

GCC 15 to Support COBOL!

2025-03-11

A major update is coming to the GCC 15 compiler: COBOL language front-end support has been merged! This is a significant step forward for GCC's COBOL support, facilitating the migration of legacy mainframe COBOL applications to Linux and cloud environments. While COBOL's popularity isn't what it once was, this merge is still a welcome surprise. Developers can use the `gcobol` command to invoke the COBOL compiler front-end. Expect COBOL support alongside many other features in the GCC 15.1 stable release in the coming weeks.

Development

Local Deep Research Assistant: A Powerful AI Research Tool Combining LLMs and Web Search

2025-03-11
Local Deep Research Assistant: A Powerful AI Research Tool Combining LLMs and Web Search

A powerful AI-powered research assistant performing deep, iterative analysis using multiple LLMs and web searches. Run it locally for privacy or configure it for cloud-based LLMs (Claude, GPT) for enhanced capabilities. It supports full webpage analysis, offers rich output options (detailed findings with citations, reports, summaries), and features local document search (RAG) for private document collections. The system intelligently selects search sources (Wikipedia, arXiv, DuckDuckGo, etc.) based on your query, offering flexible LLM and search engine support.

Development Research Tool

Sidekick: A Powerful, Locally-Run LLM App for macOS

2025-03-11
Sidekick: A Powerful, Locally-Run LLM App for macOS

Sidekick is a native macOS LLM application that runs entirely locally, accessing your files, folders, and websites without needing extra software. Utilizing RAG technology, it handles vast datasets, supports multiple reasoning models including a code interpreter, generates images, and boasts advanced Markdown rendering capabilities, plus built-in writing assistant tools. Sidekick prioritizes simplicity and ease of use, operating entirely offline, with no conversation tracking, and an open-source approach for transparency.

Development local LLM

A 9-Month Odyssey: Implementing Bel in Clojure

2025-03-11

This post details a nine-month journey of implementing the Bel programming language in Clojure. Initially envisioned as a weekend project, the author encountered several challenges: creating a custom parser for Bel's unique syntax; handling Bel's continuation-passing style, which necessitated a re-implementation of the interpreter's call stack to overcome stack overflow issues; and optimizing performance by leveraging Java data structures. The author delves into Bel's powerful features, such as `lit`, `globe`, `scope`, `mac`, and `err`, showcasing the capabilities enabled by continuations. While the project is still under development, the author highlights the valuable lessons learned throughout this challenging yet rewarding experience.

Development

Automating IP Address and Network Changes in Kubernetes

2025-03-11
Automating IP Address and Network Changes in Kubernetes

The author's Kubernetes cluster relies on dynamically assigned IP addresses, creating vulnerabilities in its network configuration. To address this, a Kubernetes deployment was created to periodically check and update the public IP addresses of their Unifi gateway using the Unifi API. Upon detecting changes in IP addresses or IPv6 networks, it automatically updates Unifi firewall rules and Kubernetes service resources (including MetalLB configuration), and notifies the user via MQTT. The program is written in Python and leverages Kubernetes and Unifi APIs for automation.

Development IP Address Management

Shef: Cook Up Shell Recipes Without the Mess

2025-03-11
Shef:  Cook Up Shell Recipes Without the Mess

Shef, a powerful CLI tool, lets you create complex shell workflows without the headache of writing intricate bash scripts. Inspired by CyberChef, Shef uses a simple YAML format to chain commands, incorporate interactive prompts, implement loops and conditional logic, and build reusable recipes. It streamlines shell scripting by offering features like templating, transformations, and easy error handling, making it a game-changer for automating tasks and managing complex processes.

Development shell scripting

Windows Explorer's O(n²) Icon Arrangement Algorithm Causes Hangs

2025-03-10
Windows Explorer's O(n²) Icon Arrangement Algorithm Causes Hangs

A Windows user encountered explorer hangs, and the author used performance analysis tools to pinpoint the culprit: an inefficient icon arrangement algorithm. The algorithm's O(n²) time complexity resulted in excessively long arrangement times with many icons, even when hidden. The author experimentally verified this, highlighting the need for developers to avoid such inefficient algorithms.

Development

You Suck At CSS: A Book Review

2025-03-10

Rex Riepe's 'You Suck At CSS' isn't about avoiding CSS; it's about mastering it efficiently. The book targets both beginners and experts, aiming to help developers quickly complete frontend tasks while emphasizing team efficiency. It supports the California Stylesheets framework and focuses on rapid web development using modern technologies. It provides context on why CSS and its ecosystem are the way they are.

Development Front-end Development

Rethinking Bug Trackers: A Separation of Concerns

2025-03-10

After years of using various bug trackers, the author identifies a fundamental flaw in their data representation, leading to recurring frustrations. Three key issues are highlighted: a unified 'Fix Version' field conflating facts and plans; a two-tiered Status and Resolution system blurring the lines between code reality and future intentions; and the conflation of bug lists with to-do lists, creating awkwardness for non-bug tasks. The author proposes a 'separation of concerns' principle, suggesting a split into 'facts' and 'plans' tables. The facts table records objective bug information (existence, version, severity), while the plans table tracks intentions, timelines, and subjective priorities. This separation streamlines bug tracking, better accommodates different project types, and even allows for the complete omission of the plans table for projects focused solely on bug resolution.

55-Year-Old Developer Faces 10 Years for Sabotaging Former Employer's Network

2025-03-10
55-Year-Old Developer Faces 10 Years for Sabotaging Former Employer's Network

A 55-year-old software developer faces up to 10 years in prison for deploying malicious code that crippled his former employer's network, resulting in hundreds of thousands of dollars in damages. Davis Lu, who worked at Eaton Corp. for 11 years, allegedly planted the code after a 2018 corporate restructuring reduced his responsibilities. The malicious code, including a self-activating 'kill switch' named 'IsDLEnabledinAD', caused system crashes, data loss, and globally impacted Eaton Corp. users upon Lu's termination in 2019.

The Open Source Maintainer's Dilemma: How to Actually Help

2025-03-10

A developer on Hacker News highlights the challenges faced by open-source maintainers. Large organizations rely on these projects for cost savings but rarely contribute back, leaving maintainers overwhelmed. The core issue is poor communication: maintainers lack clear contribution guidelines, leaving contributors unsure how to help effectively. The author suggests maintainers clearly state their needs—whether they accept PRs, how to submit bug reports, and if they accept monetary support—to improve efficiency and collaboration.

Development maintenance

Hit Reinforcement Learning Textbook: Mathematical Foundations and Accompanying Videos

2025-03-10
Hit Reinforcement Learning Textbook: Mathematical Foundations and Accompanying Videos

A reinforcement learning textbook that has received 5,000+ stars, providing a mathematical yet accessible introduction to fundamental concepts, problems, and classic algorithms. The book includes numerous examples and is accompanied by Chinese and English lecture videos (available on Bilibili and YouTube). Developed over years of teaching experience, it's suitable for undergraduates, graduates, researchers, and practitioners.

Development

Three Steps to Zero-Downtime Deployments on AWS EKS

2025-03-10
Three Steps to Zero-Downtime Deployments on AWS EKS

Glasskube engineer Jakob shares his experience achieving zero-downtime deployments on AWS EKS. The article delves into the workings of the AWS Load Balancer Controller, highlighting two potential downtime issues during rolling updates: health check delays and pod termination delays. Three solutions are presented: enabling Pod Readiness Gates, implementing graceful application shutdown, and using a sidecar container or adding a termination delay within the application. These three steps effectively prevent 502/504 errors during rolling updates, resulting in 100% zero-downtime deployments.

Does Visual Studio Rot Your Brain? A Programmer's Lament

2025-03-10

This article explores the impact of Visual Studio on programmers' thinking. While acknowledging its usefulness, the author argues that Visual Studio's heavy automation, particularly IntelliSense, may hinder the development of true programming skills and creativity. The author contrasts this with the pure joy of coding without such aids, emphasizing the mental benefits of a more hands-on approach. The piece also delves into the history of programming tools and speculates on the future changes brought about by Avalon (WPF) and XAML.

Development

arXivLabs: Experimental Projects with Community Collaborators

2025-03-10
arXivLabs: Experimental Projects with Community Collaborators

arXivLabs is a framework for collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved share arXiv's values of openness, community, excellence, and user data privacy. arXiv only works with partners adhering to these principles. Got an idea to enhance the arXiv community? Learn more about arXivLabs.

Development

Stack Traces: An Underappreciated Debugging Tool

2025-03-10

This article highlights the importance of stack traces in debugging. Using a Python example, it demonstrates how stack traces pinpoint error locations and function calls. However, the article notes challenges in obtaining and maintaining complete stack traces in modern languages like Go and Rust, and within microservice architectures. While some workarounds exist, they require extra effort compared to Python's ease of use. The author advocates for prioritizing stack traces, arguing that their benefits outweigh any performance overhead.

Development stack trace

CPython's Performance Boost: A Tale of Unexpected Twists and LLVM Regressions

2025-03-10

A recent CPython merge introduced a new bytecode interpreter implementation, initially showing impressive 10-15% performance gains across various benchmarks. However, this improvement stemmed from inadvertently circumventing an LLVM 19 regression. When benchmarked against a better baseline (like GCC or tuned LLVM 19), the actual performance boost shrinks to a mere 1-5%. Weeks of compiling, benchmarking, and disassembling revealed that LLVM 19's limitations on tail-call duplication caused the regression. While the tail-call interpreter is a valuable improvement, this incident highlights challenges in benchmarking, performance engineering, and software engineering, such as the difficulty in choosing baselines and understanding the complexities of compiler optimizations.

Development

Virtual Keypunch: A Retro Trip to the 'Big Iron' Era

2025-03-10
Virtual Keypunch: A Retro Trip to the 'Big Iron' Era

Remember punch cards? Now you can experience this retro programming method with 'The Virtual Keypunch,' a free online tool. Type your text, and it generates a simulated punch card image, supporting various card types (FORTRAN, COBOL, etc.) and even binary mode. It's not just a fun nostalgic experience; it offers developers a unique way to learn about early programming.

Development

Open Source Android Apps: Privacy, Security, and Customization

2025-03-10

Tired of intrusive ads and privacy concerns in closed-source apps? Open-source Android apps offer a refreshing alternative. Publicly available source code ensures transparency and security, allowing users and developers to examine the code for vulnerabilities and malicious elements. Open-source apps often prioritize user privacy, collecting less data and providing clear documentation on data usage. Furthermore, you can customize the app to fit your needs, and a strong community supports ongoing development and improvements.

Development open source apps

Free95: Open-Source Windows-Compatible OS Aims to Reclaim the Past

2025-03-10
Free95: Open-Source Windows-Compatible OS Aims to Reclaim the Past

Free95 is an open-source operating system compatible with Windows. It offers a user-friendly Windows-like environment with the added security and transparency of the open-source community. Your favorite Windows games and applications should run flawlessly. The project aims to remove the bloat and security concerns often associated with proprietary operating systems, offering an alternative free from corporate control. Compatibility is achieved through NT system calls and Win32 API implementation. To contribute, submit a pull request or contact developer dripkap_19416 on Discord. You can compile the OS from source or download a binary from the Releases section.

Structured: Redefining Data App Development

2025-03-10
Structured: Redefining Data App Development

Structured is revolutionizing how developers build and deploy data applications by consolidating the entire analytics stack into code. Addressing the inefficiency of deploying production-grade data-intensive apps, Structured offers a lightweight SDK enabling developers to prototype, deploy, and manage data applications (dashboards, internal tools) in hours. They're looking for experienced full-stack engineers to join their team and work on building the core SDK, designing interactive components, and optimizing performance. The tech stack includes Python, TypeScript, Next.js, React, Postgres, AWS/GCP.

arXivLabs: Experimenting with Community Collaboration

2025-03-09
arXivLabs: Experimenting with Community Collaboration

arXivLabs is a framework for collaborators to develop and share new arXiv features directly on the website. Individuals and organizations involved share arXiv's values of openness, community, excellence, and user data privacy. arXiv only works with partners adhering to these principles. Got an idea to improve the arXiv community? Learn more about arXivLabs.

Development

The Power of Abstraction: How Linux and FFmpeg Build Extensible Media Frameworks

2025-03-09
The Power of Abstraction: How Linux and FFmpeg Build Extensible Media Frameworks

This article explores how Linux and FFmpeg achieve code extensibility through abstraction and interfaces. Linux's "everything is a file" philosophy, using the `file_operations` structure to define a common interface for file operations, allows various resources (network sockets, special files, USB devices) to be accessed uniformly. FFmpeg employs a similar strategy, using abstract concepts like `AVCodec` to easily add new codecs and formats; the integration of DAV1d exemplifies this design's advantages. The article uses Ruby, Go, and C code examples to illustrate different ways to implement abstract interfaces in various programming languages, ultimately highlighting the crucial role of good software design in improving code maintainability and extensibility.

Development

Deep Dive into Apple's XNU Kernel Exclave Architecture

2025-03-09
Deep Dive into Apple's XNU Kernel Exclave Architecture

This article delves into the secure enclave architecture within Apple's XNU kernel. Exclaves manage resources via a two-level kernel table structure, encompassing domains (e.g., com.apple.kernel) each containing multiple resources (services, buffers). Conclaves, a special resource type, enable shared access among services, controlled by a Conclave Manager. A new _exclaves_ctl_trap() system call manages various Exclave operations, including launching conclaves, looking up services, and executing downcalls (secure world code execution). Upcalls allow secure world code to invoke specific XNU kernel functions. The article details the three-stage Exclave boot process and how the SPTM memory typing system controls Exclave memory access.

Development Secure Architecture

AI-Powered Development: No More Fear of Large, Complex Projects

2025-03-09

A seasoned programmer has noticed a profound change over the past year: he's no longer intimidated by large or complex projects, nor unfamiliar technologies or programming languages. This is thanks to advancements in AI. The author cites two past projects he abandoned due to complexity, contrasting them with the significantly increased efficiency using AI-assisted programming today. He completed a project in an hour that previously took six weeks, and expresses excitement about the future, calling it a golden age for programmers.

Development
1 2 141 142 143 145 147 148 149 214 215