Spliit is an open-source expense-splitting app that has seen over 150,000 visits and over 29,000 users sharing group links. While the app is free to use, it costs the developer around $115 per month in hosting fees, primarily for database usage. The app is currently funded through donations, ranging from $6 to $107 a month.
The AI boom is driving a surge in US investment in physical infrastructure, particularly in high-end computers and data centers. This demand is leading to record-high construction rates, increased imports of computer parts, and massive investments from companies like Amazon, Google, and Microsoft. While the AI boom has led to increased employment in sectors like semiconductor manufacturing and construction, it has not really impacted the traditional software engineering job market.
The Internet Archive was breached again, this time through stolen access tokens to its Zendesk email support platform, exposing potentially sensitive data about users who requested content removal from their archives.
Static websites can be used as a simple, low-maintenance, and long-lasting method for organizing and preserving personal digital archives.
This developer describes his experiment of hosting a website entirely on solar power using a Raspberry Pi, highlighting the technical details, energy efficiency, and environmental considerations of this local-first approach to web hosting.
A guide on modifying the CPython interpreter to make ternary expressions default to None if no else clause is provided, mirroring Ruby's behavior.
Error boundaries in React are useful for catching and managing errors.
Vulnerabilities in Chromium allowed malicious Chrome extensions to execute arbitrary shell commands. By exploiting undocumented features in the chrome://policy page and a race condition in the chrome.devtools API, users were able to bypass the sandbox and execute code outside the browser's restrictions.
While Postgres 17 offers huge improvements, most users stick with older versions due to the perceived stability of the database and the challenges of upgrading. Major version upgrades can be complex and require extensive planning, data migration, and testing, especially for large production databases. However, delaying upgrades inevitably leads to technical debt. There is now a tool available called PG Versions that can help visualize the new benefits of upgrading earlier rather than later.
Evals, a new testing paradigm for AI-native development, are similar to end-to-end tests. They assess the quality of AI output using automated checks, human judgment, and AI-assisted grading. Vercel's frontend-generating AI product v0 is built on eval-driven development.
There are a few issues with system evaluation practices, like in cases where metrics with similar names yield vastly different results, implementation bugs lead to inflated scores, and incorrect predictions improve the score. Developers need to be careful when choosing metrics and understand what a metric truly measures to make sure it's implemented correctly.
Unit tests can serve as living documentation within the code itself, explaining how code behaves, staying in sync with code changes, and covering edge cases.
Spare Cores is a startup that benchmarks cloud platform pricing, offering a free service that compares prices across providers like AWS, GCP, Azure, and Hetzner. The company was started with a €150K grant and a team of three. It uses a combination of Python, Angular, and various databases to collect and analyze data.
2024.10.18·blog.pragmaticengineer.com·13 min read·TLDR Web Dev Tolgee is an open-source localization platform. It provides features like in-context translation, translation memory, and integration with machine translation services.
Sava OS is a desktop interface for web browsers that allows users to manage, filter, share, and organize their online data in a familiar environment. It has features like tab management, session control, personal feed creation, and folder sharing.
Google's NotebookLM now allows users to customize audio overviews. There is a pilot program for a business-focused version with enhanced features.
Zoom fatigue is caused by the cognitive load of online meetings, which depletes mental resources. Video calls require more effort to process nonverbal cues and the audio gaps caused by digital transmission disrupt the natural flow of conversation. The lack of physical proximity and the blurring of work and home life also make things mentally tough.
Cloudflare's security features, specifically Bot Fight Mode and AI Scrapers and Crawlers, are unintentionally blocking RSS readers from accessing websites. This happens because Cloudflare's AI-based system incorrectly identifies RSS readers as malicious bots, presenting them with human verification challenges they can't complete.
The demand for data to train large AI models is exceeding the availability of public data. Researchers are exploring synthetic data as an alternative, but it can introduce errors and degrade model performance. A new approach focuses on data quality over quantity, demonstrating that smaller, highly-trained models can compete with larger ones.
Google is restructuring its Knowledge & Information team to optimize for the Gemini era, moving the Gemini app team to Google DeepMind and the Assistant teams to the Platforms & Devices org.
Apple Passwords' generated strong password format uses gibberish two-syllable "words" by design to make them easier to remember and type on various keyboards while maintaining strong entropy.
OpenVMM is a modular, cross-platform, general-purpose Virtual Machine Monitor (VMM) written in Rust by Microsoft.
Adobe's new AI-powered "Project Turntable" allows users to rotate 2D vector images in 3D while maintaining their original 2D appearance and shape.
This blog post goes over the end-to-end process of implementing a drag-to-select functionality in React, with code examples and challenges faced along the way. For example, one of the challenges of implementing this functionality was representing user interactions when handling drag selections in multiple directions. To fix this, create a DOMVector class, a custom data type that captures both magnitude and direction, which removes the need for complex state management.
When building a Python backend for a transcript optimizer app, this developer used FastAPI, SQLmodel, and Whisper for transcript generation, along with LLMs for text optimization and quiz generation. GPT4o-mini and Claude 3 Haiku were cheaper for this task, especially when combined with chunking input text and creating pipelines to handle complex transformations. SQLite was used as the database solution.
2024.10.17·youtubetranscriptoptimizer.com·28 min read·TLDR Web Dev Canva's collaboration team implemented real-time mouse pointers to make its whiteboard product better. Initially, they utilized a backend-centric architecture using WebSockets and Redis, which scaled to support hundreds of thousands of simultaneous users, but had limitations in update rate. Recognizing these limitations, the team migrated to a WebRTC-based architecture, which allowed direct peer-to-peer communication between clients, reducing latency and improving scalability.
This is a detailed retrospective from a former Palantir employee who spent eight years at the company. Palantir is unique in that it has "forward deployed engineers" (FDEs) who work directly with clients and engineers who work on the core product (away from clients). The company also has a "messianic cult" culture, characterized by intellectual intensity and a focus on achieving real-world outcomes, and deals with the moral complexities of working with clients in the "grey areas" of government and defense.
Success in programs or applications due to flawed tests or incorrect models can lead to unexpected real-world failures. Even if tests pass and/or a model seems to work, it's still useful for developers to be “suspicious” by testing both "happy paths" (ideal scenarios) and "sad paths" (error handling).
React Server Components can cause a "server waterfall” problem, which is when a component's data fetching causes a delay in rendering due to dependencies. However, this problem also exists on the client-side. The benefit of server-side waterfalls over client-side waterfalls is that the server environment offers more control over the network and caching.
Sponsored
Learn how to migrate and monitor any AWS workload at any scale - from on-prem lift and shift, to serverless applications:
The new Next.js 15 Release Candidate 2 introduces Turbopack for development, which improves cold compilation performance and reduces memory usage. There are also Async Request APIs, a breaking change that makes rendering and caching better by making data-dependent APIs asynchronous. The release also includes a new Static Route Indicator, a 'Form' component for client-side navigation, and TypeScript support for the Next.js configuration file.
TinyWidgets is a collection of lightweight, reusable UI components for building local-first applications fast. It provides layout features like headers, sidebars, and dark mode along with a variety of components like buttons, cards, and metrics.
Express.js v5 has security updates, updated path matching and regular expressions, support for rejected promises, and body parser enhancements.
Stripe is immensely successful for a few reasons. It strategically rode the wave of e-commerce growth by focusing on developer-friendly solutions. The company diversified its product offering early on, expanding into adjacent markets and launching successful products like Stripe Connect, which allows businesses to create their own payment platforms. It also prioritized software solutions, particularly in the billing and tax software space, to overcome financial challenges.
A CSGO community server struggled with cheaters until someone developed IdentityLogger, a system that fingerprints players based on their IP address, Steam ID, and a unique Tracking ID derived from a persistent cookie stored on the player's computer via the game's built-in web browser. This third identifier is tied to the player's Steam installation directory and prevents ban evasion by requiring cheaters to change their Steam ID, IP address, and Steam installation folder simultaneously.
Automattic's retaliatory actions against WP Engine have negatively impacted the WordPress community, leading to contributor bans, a hostile fork of a popular plugin, and a growing perception of WordPress as a risky platform. This has led to many contributors questioning the Automattic CEO's leadership along with raising concerns about the commercialization of open-source projects.
A discussion on fighting software complexity with references to talks, papers like "Out of the Tar Pit", books like "A Philosophy of Software Design", and languages.
macOS may leak traffic through the firewall after system updates - this requires a reboot to resolve.
Number Flow is a React component that provides animation, formatting, and localization for numbers.
Greenmask is an open-source tool for anonymizing, transforming, and generating synthetic data for PostgreSQL databases with features like deterministic transformations and dynamic parameters.
Sponsored
If slow QA processes bottleneck you or your software engineering team and you're releasing slower because of it — you must check out QA Wolf.
The way data is organized in memory (data layout) can impact a program's performance. Choosing the right data layout, such as Array of Structures (AoS) or Structure of Arrays (SoA), can optimize cache line access and leverage vectorized instructions (SIMD) for faster execution. SoA, for example, can be much faster for reading operations, especially when combined with lightweight compression techniques like frame-of-reference encoding.
This article compares different methods for storing data in web browsers: Cookies, LocalStorage, IndexedDB, OPFS, and WASM-SQLite. Each method is analyzed for their features, limitations, and performance in various scenarios, including write and read latency for single and bulk operations.
Iterators and range objects are different in Python. While both are considered "lazy iterables" as they compute values on demand, they differ in their underlying mechanisms. Iterators are stateful, meaning once an item is consumed, it's gone. Range objects are not iterators - they are "lazy sequences" that can be looped over repeatedly without exhausting their values.
SMURF (Speed, Maintainability, Utilization, Reliability, and Fidelity) is a framework for better testing. Prioritizing one factor can have implications for others, so it's best to have a holistic approach when writing tests for applications.
The pursuit of unicorn status by venture capital funds has led to the creation of companies that, while initially seemingly harmless, become detrimental at scale. This is because the need for massive growth drives companies to exploit resources and disrupt markets. The recent decline in venture capital funding offers an opportunity for more non-hyper growth companies that are still sustainable businesses.
This developer proposes a missing IDE feature: automatically folding method bodies by default. This simple change improves code readability, as function signatures are often more important than their bodies.
React Native Bottom Sheet v5 has been released. It features a complete gesture solution rewrite, support for React Native Web, dynamic sizing, FlashList integration, and performance improvements.