Facebook chose Mercurial over Git because Mercurial is written in a more modular way that makes it easier to extend. Additionally, back when Facebook adopted Mercurial, its developer community was more helpful in addressing Facebook's specific scaling problems. However, it is true that Git is a familiar tool for many engineers, and Mercurial was not necessarily the faster choice out of the box.
DoorDash uses metric-aware rollouts to automatically detect and address app quality degradation during experiment rollouts. This new feature allows for faster response to issues and a much better customer experience by automatically pausing rollouts and alerting experiment owners when app quality degradation is detected.
Progressive enhancement is a design and development principle where a website is built in layers, starting with a solid baseline experience for all users and progressively adding enhancements based on browser capabilities. This approach prioritizes functionality and accessibility for all users, regardless of their device or browser, and uses JavaScript as an enhancement rather than a requirement. This is the opposite of graceful degradation, where a "perfect" experience is designed and then broken down for less capable browsers, potentially resulting in a broken user interface.
Mako is a new open-source front-end build tool based on Rust.
TypeScript is not just a linter but a typed language built on JavaScript, with the ability to infer types and act as a linter due to the presence of the 'any' type.
The strlcpy function in C is inefficient - use memccpy, memcpy, or strdup instead.
The open source community needs to attract younger developers to maintain and improve existing projects as many experienced programmers are aging and burning out.
As Notion grew exponentially, it had to build a scalable data lake. Its solution involves incrementally ingesting updated data from Postgres to Kafka, then using Hudi to write to S3 for processing. Spark is used for complex tasks like tree traversal and denormalization. This approach has resulted in cost savings, improved data freshness, and has unlocked new possibilities for AI and search features.
Checkly, a synthetic monitoring tool, reduced its pod startup time by optimizing the AWS SDK and changing the order of operations. It initially used large containers with long startup times, but switching to ephemeral pods required a faster startup. The company found that multiple versions of the AWS SDK were causing delays. Standardizing the version led to a bunch of savings in compute costs.
TypeScript's new isolated declarations feature simplifies code packaging by automatically generating .d.ts files. This improves the "go to source" functionality and also removes the need to manually create these files. It makes publishing packages faster by shifting definition file generation from the publishing process to the installation process.
Git 2.38 introduced the --update-refs feature to streamline the process of rebasing stacked branches. This new feature automatically updates dependent branches when the base branch is rebased, eliminating the need for manual rebasing and potential conflicts. It can be used in various scenarios, including rebasing a stack of branches, updating stacked branches on a changed branch, and interactive rebasing.
Sponsored
Join Lumigo CTO, Aviad Mor, and AWS Serverless Hero, Yan Cui! On the agenda: why observability for AWS microservices [9] has gotten so expensive and complicated [9] — and what you can do about it. Featured topics include AI and ML for observability, distributed tracing, cost management techniques, and more! Join live to attend the
PLV8 is a trusted Javascript language extension for PostgreSQL. It can be used for stored procedures, triggers, etc.
Quartz is a set of tools that helps you publish your notes as a website for free. It converts Markdown notes into a fully functional website.
gpu.cpp is a lightweight library that makes portable GPU computation with C++ simple. It focuses on general purpose native GPU computation, using the WebGPU specification as a portable low-level GPU interface. This means developers can drop in GPU code in C++ projects and have it run on Nvidia, Intel, AMD, and other GPUs, along with a wide variety of laptops, workstations, mobile devices, and more.
Visual programming often fails to gain traction among developers because it focuses on replacing code syntax instead of visualizing important, implicit aspects of software that developers already struggle with. Developers already use visual representations like treemaps, code retention diagrams, network topologies, and memory layouts to understand and analyze different aspects of their code and systems. These visualizations can be immensely helpful for tasks like onboarding in large codebases, diagnosing performance problems, understanding data layouts, and tracking complex client-server interactions, so there still is a lot of opportunity here for startups.
By chaining various messaging APIs in browsers and browser extensions, it's possible to achieve 'universal code execution', breaking Same Origin Policy and browser sandbox. This vulnerability allows malicious web pages to communicate with an extension's content script and then relay messages to the background script, which can further communicate with a native application on the host operating system. This means that the chain can execute arbitrary code on the victim's machine.
Using SVG for responsive web visualization can be difficult. This article presents an alternative hybrid approach that combines HTML, CSS, and SVG. A grid-based layout with logical properties can be used to handle bidirectional text and accommodate positive and negative values.
Git-PR allows you to make patch requests to GitHub repositories over SSH.
Deploying Next.js applications on Cloudflare pages is not a seamless process due to a lack of documentation, inconsistencies with Next.js conventions, compatibility problems with a Vercel CLI change, issues with Set-Cookie headers, and challenges with logging and Node.js compatibility.
You should create a dedicated web page that people can easily link to for definitive information and search engine optimization to promote discussion about your ideas, projects, and features.
React Hooks can become unmanageable if overused or misused.
with contributors, founders, and CEOs building the tools that they use everyday - from Laravel to Node.
Sponsored
React Native is a framework that lets developers build native mobile apps using JavaScript and React. It has some key differences from React, such as the use of native UI primitives and the lack of global styling. This transition guide for React devs interested in building mobile apps provides a deep dive into the differences between React and React Native and discusses common mistakes new devs make, such as using array.map for large lists, using the default Button element, and placing secrets in app code.
Domain logic refers to code that operates on the core models of an application. Extracting domain logic from components and placing it in a dedicated domain layer improves code readability, testability, and reusability. It also reduces the need for complex testing setups and allows for focused unit tests.
Accounting systems should be accurate, auditable, and timely. Data should be immutable, durable, and recorded at the smallest grain and code should be idempotent. This article also goes through best practices for building financial systems, such as using integers for financial amounts, consistent rounding methods, delayed currency conversion, and integer representations of time.
Performance is largely systemic and is influenced by culture, systems, management, and individual traits. Underperformers need effective feedback and a structured approach like the accountability dial.
A patch for a vulnerability in Apache Tomcat 9 on Ubuntu 22.04 is only available to Ubuntu Pro subscribers. This is because Tomcat 9 is part of the universe repository, which is only supported on a "Best Effort" basis for regular users. Canonical has decided to withhold the patch from regular users despite having it available for Ubuntu Pro subscribers.
Sponsored
Websites are meant to be easy to update, but that vision often clashes with the dev-centric reality of many sites.
Korvus is a search SDK that unifies the entire RAG pipeline in a single database query. It's built on top of Postgres, with bindings for Python, JavaScript, Rust, and C.
CodeMirror is a code editor component for the web. It can be used in websites to implement a text input field that supports many editing features and has a rich programming interface to allow further extension.
TinyBase is a reactive data store for local-first apps. v5.0 introduces the new MergeableStore type for CRDT-based data merging and a Synchronizer framework for syncing data across different media. TinyBase now exclusively supports Expo SQLite v14 (SDK 51) and above.
The X Window System's boot stipple, a mesh pattern displayed during startup, served as an early indicator of successful configuration and helped users troubleshoot issues in the era of slow computers. Its disappearance in the mid-2010s was likely due to efforts to modernize and speed up Linux boot processes. While the stipple can be brought back through command-line flags, the process is fragmented across different display managers, reflecting the complex and sometimes unpolished nature of the X ecosystem.
Qualcomm's Oryon core is a CPU designed for laptops that aims to compete with AMD and Intel. It features a unique clustered architecture with high reordering capacity and fast clock speeds. The CPU faces challenges in terms of software compatibility and pricing compared to its x86 counterparts.
Dropbox integrates machine learning to provide advanced file understanding features such as summarization and Q&A, using LLMs for text processing and embedding generation. This allows users to efficiently retrieve summaries and answers from all kinds of file types.
Andrej Karpathy walks readers through recreating GPT-2 from scratch.
WebVM is a server-less virtual Linux environment running client-side.
JS errors provide stack traces, Java exceptions require exception details like name, code, and domain, and iOS NSExceptions need specific information such as exception names and messages.
The new React compiler has some limitations in addressing memory leaks caused by closures, particularly in the context of memoization hooks. While the compiler effectively caches values that don't depend on state or props, it doesn't prevent the underlying issue of shared closure contexts that can lead to prolonged memory retention. The author demonstrates this with a code example where creating a new object dependent on state within a memoized function results in a memory leak despite the compiler's memoization.
This article explores unusual aspects of the x86 instruction set architecture discovered while creating an x86 emulator for time travel debugging. There are multiple encodings for the same instructions in the architecture. It uses prefixes to modify instruction behavior. The author also notes the peculiar nature of segment overrides in both 32-bit and 64-bit modes, the surprising behavior of shift instructions, and the inconsistent handling of flags by different instructions.
Real-time audio programming requires avoiding any code that might cause delays or unpredictable behavior, as such glitches would disrupt the smooth flow of audio data and lead to undesirable sound artifacts. People working with real-time audio need to understand worst-case execution times and avoid common pitfalls like locking, memory allocation, and external events within the audio callback function. To achieve seamless audio processing, employ lock-free data structures and atomic operations for communication between real-time and non-real-time contexts.
Web developers have a hard time keeping up with new developments that are happening all the time. They also feel like they don't have enough time and/or are getting bored of their jobs.
Margin of Safety is a mental model that emphasizes the importance of accounting for potential errors and uncertainties when making estimations. It essentially acts as a buffer, preventing failure by providing extra capacity to handle unexpected events. It's a useful model to apply when estimating software projects (and most other things in life).
Sponsored
Over 2/3rd of dev teams test less than 50% of their workflows, causing bugs to sneak out. QA Wolf [9] gets your organization to 80% automated E2E test coverage in less than 4 months.