2HAASStart a project

Blog

Short reads on building software.

Tips, tool reviews and news for people who build for the web. One idea per post, explained plainly.

56 postsPage 4 of 5RSS feed

  1. Code Snippets2 min read

    Promise.allSettled: keep the results that succeeded

    Promise.all throws away every result when one request fails. Promise.allSettled waits for all of them and reports each outcome, so one failure cannot empty a page.

  2. Tech Tips2 min read

    JavaScript debugging beyond console.log

    console.log works until the bug is three calls deep. Breakpoints, conditional breakpoints, logpoints and the call stack show what the code does while it runs.

  3. Tool Reviews2 min read

    Dev Containers: one environment for the whole team

    New developers lose days to setup, and 'works on my machine' never dies. A devcontainer.json file gives everyone the same tools, versions and services.

  4. Tech News2 min read

    The WebAssembly Component Model, explained

    Core WebAssembly modules can only exchange numbers. The Component Model adds typed interfaces, so code written in Rust, Go, Python or JavaScript can be combined safely.

  5. Guides3 min read

    Error handling in microservices: retries and circuit breakers

    In a distributed system, something is always failing a little. Timeouts, retries with backoff, circuit breakers and consistent errors keep one fault from spreading.

  6. Guides3 min read

    JWT best practices: expiry, storage and validation

    JSON Web Tokens are simple to issue and easy to get wrong. Short lifetimes, refresh token rotation, safe storage and strict validation close the common holes.

  7. Code Snippets2 min read

    Intersection Observer: react when elements scroll into view

    Scroll listeners that measure element positions are slow and fiddly. Intersection Observer tells you when an element enters the viewport, with a few lines of code.

  8. Tech News2 min read

    Rust async functions in traits: what changed and why

    Rust 1.75 made async fn in traits part of stable Rust, removing the need for the async-trait macro in many cases. What you can write now and the limits that remain.

  9. Tech Tips2 min read

    Native image lazy loading: one attribute, used well

    The loading attribute delays offscreen images until the user scrolls near them. It takes one word, but on the wrong image it makes a page slower. Where it belongs.

  10. Tech Tips2 min read

    Serverless cold starts: causes and fixes

    The first request to an idle serverless function is slow because the platform has to start it. What happens during a cold start and six ways to shorten or avoid it.

  11. Code Snippets2 min read

    structuredClone: deep copy objects in JavaScript

    The spread operator copies only one level, and the JSON trick loses dates and breaks on cycles. structuredClone makes a true deep copy with one built-in call.

  12. Tech News2 min read

    WebGPU: modern graphics and compute in the browser

    WebGPU gives web apps direct, modern access to the graphics card for 3D rendering and for general computation such as machine learning. What it is and where it stands.

Tell us what’s in the way.

A few lines is enough. You get a candid yes, a candid no, or a sharper question.

  • Working software in week four
  • A reply in one business day
  • Handover is the deliverable

Prefer email? hello@2haas.com

The problem, who it is for, and what is in the way right now.

One business day to a real reply. No sales sequence, no call required.