POPOVER API
The Popover API, newly available in Baseline, gives web developers a standard mechanism (using pure HTML or JavaScript) for displaying popover content on top of other page content.
Full-text search across article titles and summaries. Refine with sector, year, content type, and reading-time filters.
The Popover API, newly available in Baseline, gives web developers a standard mechanism (using pure HTML or JavaScript) for displaying popover content on top of other page content.
Flutter achieves platform-agnosticism through its own rendering engine, platform channels, and packages that bridge the gap between the Flutter code and the native platform.
Sponsored
Multi-tenant data lakes provide a secure and scalable foundation for customer-facing analytics [4]. Companies like Zendesk (145,000 accounts), Asana (100,000+ customers), and Zuora (1000s of platforms) leverage this combination for efficient resource utilization, tenant data isolation, and contextual insights, unlocking value from
Token-based authentication is when a user is authenticated by presenting a digitally signed token instead of entering a password. It's a common alternative to session-based authentication. JSON Web Tokens (JWTs) are a popular implementation of token-based authentication as they have a self-contained structure that includes user data and a signature for integrity verification. This article provides code implementations for both generic token-based authentication and JWTs.
React Query and React Context can be used together to manage data dependencies and make component logic simpler. Combining both makes implicit dependencies (like knowing a query has been executed elsewhere) clear and visible in your code.
Flaky tests are when tests sometimes pass and sometimes don't. Most of the time, they occur due to tests being poorly written and not hermetic. Sometimes, they can be due to resource constraints or data conflicts in the test environment. To prevent flaky tests, developers should catch them early by running tests often and reduce dependencies on external factors as much as possible.
Developers often feel the urge to rewrite code they perceive as messy, even if it's their own relatively recent work. This is because reading code is inherently harder than writing it. However, code that works and has been in production for a long time is often more stable and robust than developers realize.
DrawDB is a database entity-relationship editor in the browser. Developers can use it to build diagrams, export SQL scripts, and more.
Teable is a no-code database built on Postgres. It uses a spreadsheet-like interface to help create complex enterprise-level database applications.
JSONPath is a language for querying and extracting data from JSON documents. It can be used for tasks like updating OpenAPI descriptions or writing validation rules. Its syntax is inspired by XPath, making it easy to navigate JSON structure and find specific data.
While AI applications offer new capabilities to users, the pricing is mostly the same as traditional software applications. Most AI apps use subscription models, often based on the number of users. Free versions or trials are common to drive initial adoption. A new pricing model that AI could help facilitate is success-based pricing, where the user gets charged only when the product delivers a successful outcome.
Telling your users something is easy while they're struggling to understand it can be frustrating and counterproductive for learning and adoption of your product.
Baileys is a TypeScript/JavaScript WhatsApp Web API that uses a WebSocket directly to interact with WhatsApp on the web.
CSS Text Box Trim is a CSS property that allows you to remove the leading whitespace from a block of text.
Sponsored
Selecting the right frontend framework can be daunting and lock-in goes against the original open vision for the web [5].
This is a long collection of thoughts and problems that two indie developers faced when trying to use Rust for game development after completing development of several games written in Rust. They conclude that Rust presents fundamental challenges to game development, even after one becomes experienced with it. For example, Rust's borrow checker often requires code restructuring for even basic tasks, leading to a frustrating development experience. Also, Rust's focus on refactoring and correctness can lead to over-engineered solutions that prioritize code purity over being able to ship the game to a playable state quickly.
Different tools tackle the UI challenge of indenting nested treeview components with varying solutions. GitHub uses CSS Grid and calculated spacer widths for a clean, adaptable layout. Figma uses JavaScript-driven spacer management, which works well but is much more complex. Adobe uses either padding adjustments (Photoshop) or pseudo-elements (Spectrum) for visual depth.
Mouse clicks, scrolls, and movements leave a data trail that reveals user behavior. Machine learning can analyze this data to predict what users will do next or who they are. This can be used to personalize experiences and improve security, but factors like the type of mouse can affect accuracy.
Measuring software engineering productivity is notoriously tough, so this author, a VP of Engineering, tracks indicators related to building an ideal engineering organization, like profitability. One useful profitability indicator is 'value-add capacity', the percentage of engineering time spent adding value for customers.
Engineers who want to learn more effectively should be intentional about it. They should plan focused reading time, minimize distractions, and take notes while reading. This article covers memorization techniques like the Link Method and Memory Palace to help understand connections between concepts better.
Sponsored
QA Wolf [11] gets web apps to 80% automated test coverage in just 4 months. They build and maintain your automated test suite, plus provide unlimited parallel test runs (24-hour maintenance included).
JSONata is a JSON query and transformation language. It lets you select one or multiple matching nodes with simple queries. It also provides helper functions, such as arithmetic, comparisons, sorting, grouping, datetime manipulation, and aggregation for more complex JSON querying and transformation.
Effect is a TypeScript framework that provides a full-fledged functional effect system with a comprehensive standard library. It contains multiple effects that deal with SQL schemas, RPCs, and more.
Inversion is a mental model where you invert a problem to gain a different perspective on how to solve it. For example, instead of focusing on how to make your team happy, you think about how to make them miserable. This helps you identify your current shortcomings and make better future decisions that affect them.
Newchip, a startup accelerator, promised introductions to investors and other resources, but instead filed for bankruptcy, leaving over a thousand startups in jeopardy. The warrants Newchip held in these startups are now being auctioned off by the bankruptcy court. Some founders have lost their companies as a result, since now their cap tables have unknown investors.
A complete guide to starting your own Wireless ISP.
GitHub's comment file upload feature is being used to distribute malware disguised as legitimate files from trusted Microsoft repositories.
A lecture that explains the implementation details of the XZ Utils Backdoor and the multi-year effort to put it in place.
Sponsored
The Gcore engineering team decided to see what happens if they ran an image classification model on their CDN infrastructure [4]. This white paper has the full details of Gcore's experiment — tuning a WASM-at-the-edge environment for AI inference workloads. Bonus: there
Figma recently migrated its custom Skew programming language to TypeScript, a move made possible by improved browser support for WebAssembly and internal optimizations. This transition allows for seamless integration with Figma's existing codebase and external libraries, easier onboarding for new developers, and access to the TypeScript developer ecosystem. In this article, the Figma engineering team goes over their migration process, which was done gradually and automatically so as to not disrupt developer workflows internally.
Time-based CSS animations offer a new approach to creating animations without using traditional keyframes. The technique uses a custom CSS variable that tracks time in milliseconds, providing a way to manipulate CSS properties in real time. This article goes over various examples of such animations with code examples, showing off how to control animation duration, frame rate, easing, and more with precision.
The current web is dominated by large platforms and ads - much different from the “old web” which focused more on creativity and community. To build a better version of the “old web,” we could build protocols that resist “digital toll booths” that are established by businesses today. It'll take experimentation, but the tools are there to build a more user-driven web again.
People are usually rejected in system design interviews due to their inability to analyze and articulate trade-offs in design decisions. They aren't able to explain their design choices clearly and justify the pros and cons of each. Other rejected candidates try too hard to find a single “perfect” solution or overengineer their solution.
GitHub Copilot Workspace assists developers throughout the entire software development process, from brainstorming a project plan to writing and testing code, using natural language.
Stirling-PDF offers PDF manipulation features (splitting, merging, converting, etc.) within a locally hosted web environment.
A new study reveals that recruiters are only slightly better than a coin flip at judging resumes and predicting which candidates will pass technical interviews. They only correctly chose who to interview 55% of the time and different recruiters often disagreed on the same resume. Recruiters were found to subconsciously favor candidates from top companies. Simple ML models trained on objective performance data were found to be more accurate than human recruiters in predicting interview success.
Gary Kildall created the first successful commercial operating system, CP/M, in 1974. His company, Digital Research Inc. (DRI), established CP/M as an industry standard, but later lost out to a Microsoft offering that copied its appearance and functionality. Despite this, Kildall continued to innovate, contributing to the development of important technologies such as CD-ROM encyclopedias and early computer animation.
While Apple is investing heavily in AI across its product lineup, it won't be building massive data centers to support it. Instead, Apple will follow its typical 'hybrid' cloud approach, using third-party services with its own infrastructure combined. Apple is expected to announce more AI-powered features at WWDC in June.
Big Tech companies that used to be in “peacetime” mode are now in “wartime” mode, indicated by layoffs, cost-cutting, and the tougher hiring landscape.
The Android Studio IDE now has built-in code completion and chat features powered by Gemini.
You can use SQLite as a NoSQL store by creating a table with a path column (for unique document identification) and a data column (to store JSON strings).
Some Android VPN apps can leak DNS traffic outside the VPN tunnel, even with privacy features like "Always-on VPN" or "Block connections without VPN" enabled, due to bugs in Android itself.
Sponsored
Companies like AWS, Google Cloud, and Vercel work with TLDR to reach developers at scale with highly customized campaigns (like this one!).
Cache coherence makes sure that data stays consistent across multiple caches in distributed systems. There are two types of cache coherence protocols: snooping and directory-based protocols. In snooping protocols, caches "listen" on a bus, updating or invalidating copies based on other caches' actions. In directory-based protocols, a central directory tracks data location and state, coordinating updates and invalidations.
This is a detailed breakdown of the Node.js Performance API, which can be used to track performance metrics, add custom metrics, and view network timing data for resources fetched by your app. It covers multiple methods of the API, such as mark(), which adds markers to the timeline, and measure(), which calculates the duration between two markers.