Best of Lobsters2025

  1. 1
    Article
    Avatar of lobstersLobsters·21w

    I’m a former CTO. Here is the 15 sec coding test I used to instantly filter out 50% of unqualified applicants. – Jose Zarazua

    A former CTO shares a simple coding screening question used to filter job applicants. The test presents basic code logic that qualified developers can solve mentally in seconds, while unqualified candidates resort to copy-pasting into interpreters or AI tools. The question includes a hidden character that produces different results when copy-pasted versus solved manually. Results showed 50% of applicants used automated tools, 47% answered correctly, and 3% answered incorrectly, effectively halving the candidate pool requiring deeper review.

  2. 2
    Article
    Avatar of lobstersLobsters·1y

    Why do AI company logos look like buttholes?

    AI company logos frequently feature circular designs with gradients, central openings, and radiating elements, often leading to unintended anatomical comparisons. Factors like design psychology, unintentional biomimicry, the copycat effect, and design by committee contribute to this trend. This phenomenon highlights the tech industry's fear of standing out, with historical design trends showing similar patterns of conformity.

  3. 3
    Article
    Avatar of lobstersLobsters·1y

    DoomPDF

    DoomPDF is a unique adaptation of the classic Doom game that executes within a PDF file, compatible exclusively with Chromium-based browsers. The source code is available on GitHub.

  4. 4
    Article
    Avatar of lobstersLobsters·1y

    Tools Worth Changing To in 2025

    As 2025 approaches, it's a good time to reevaluate and upgrade the tools used in professional settings. Noteworthy recommendations include Ghostty, a cross-platform terminal emulator; Fish, a user-friendly command line shell; Helix, a post-modern text editor; Jujutsu, a unique version control system compatible with Git; Zed, a high-performance code editor; Nix, a declarative build and deployment tool; and Ollama, a local AI model runner. Each tool offers distinct benefits and improvements over more traditional options.

  5. 5
    Article
    Avatar of lobstersLobsters·1y

    Learning TypeScript

    This post introduces branded types (or opaque types) in TypeScript and their usefulness in ensuring type safety by differentiating between structurally similar types. It covers the need for branded types, how to implement them using 'as' assertions and type predicates, and presents various use cases for branded numbers and strings. It also discusses community libraries like ts-brand and Effect TS that simplify using branded types. Alternatives such as unions, enums, and template literal types are explored, along with the concept of wrappers for ensuring utmost safety in type validation.

  6. 6
    Article
    Avatar of lobstersLobsters·51w

    Scrappy

    Scrappy is a prototype tool designed for creating home-made apps, allowing users to craft personalized software for themselves and friends. It empowers the DIYer to create apps tailored to specific needs without extensive programming expertise. Scrappy provides a canvas-based environment similar to Figma, where users can incorporate interactive elements and share apps effortlessly, promoting collaboration. The tool aims to democratize software creation, fostering creativity and custom solutions beyond mass-market offerings.

  7. 7
    Article
    Avatar of lobstersLobsters·1y

    A Programmer's Reading List: 100 Articles I Enjoyed (1-50)

    Programmers often share their knowledge through technical articles. This post is the first part of a series, presenting 50 articles focused on topics such as general programming knowledge, software engineering, backend development, technical writing, Python, and Go. Highlights of these articles include insights on learning effectively, managing self-motivation, optimizing Go program performance, the cost and quality of software, and writing helpful error messages.

  8. 8
    Article
    Avatar of lobstersLobsters·37w

    You Don't Need Animations

    Animations should serve a clear purpose rather than being added for decoration. Key considerations include frequency of use (high-frequency interactions should avoid animations), speed (UI animations should stay under 300ms), and user goals. Examples demonstrate how purposeful animations can explain features, provide feedback, or improve perceived performance, while unnecessary animations can slow down workflows and frustrate users.

  9. 9
    Article
    Avatar of lobstersLobsters·24w

    Vanilla CSS is all you need

    Modern CSS has evolved to include native variables, nesting, container queries, and advanced features like :has() and color-mix(), making build tools and preprocessors unnecessary for many projects. An analysis of three production applications from 37signals (Campfire, Writebook, and Fizzy) reveals a consistent nobuild CSS architecture using OKLCH colors, character-based spacing, semantic component classes with minimal utilities, and progressive adoption of cutting-edge CSS features. The approach demonstrates that vanilla CSS can handle real-time chat, publishing platforms, and project management tools with 14,000 lines across 105 files, achieving sophisticated interactions like animated dialogs, dynamic theming, and stateful UI without JavaScript or build steps.

  10. 10
    Article
    Avatar of lobstersLobsters·1y

    Postman is logging all your secrets and environment variables

    Postman has been found to log secret strings and environment variables, compromising user privacy. Despite claims of protecting sensitive data, the app sends unmasked variables to its servers, posing risks especially for healthcare applications. Users are advised to block Postman's analytics endpoints to prevent data leakage.

  11. 11
    Article
    Avatar of lobstersLobsters·1y

    Smallweb – Your internet folder

    Smallweb offers a simple, file-based hosting method where subdomains map directly to subfolders in your directory, making app creation as easy as creating a new folder.

  12. 12
    Article
    Avatar of lobstersLobsters·1y

    Every line of code is always documented

    Every line of code is inherently documented through the project's version control history. By analyzing commit messages, developers can uncover why specific lines of code were written, making history a valuable tool for understanding and improving code. Effective use of git blame, git log, and other tools can help identify who wrote specific code, when it was added, and the reasoning behind it. Improving commit messages and avoiding unrelated changes in a single commit are stressed as important practices.

  13. 13
    Article
    Avatar of lobstersLobsters·48w

    Writing a basic Linux device driver when you know nothing about Linux drivers or USB

    A detailed walkthrough of creating a Linux device driver for a Nanoleaf RGB LED device from scratch. The author explores USB fundamentals, explains HID devices, demonstrates using libusb with Rust to communicate with hardware, and covers practical aspects like udev rules and interrupt handling. The tutorial progresses from basic device enumeration to implementing a working userspace driver that can control LED colors and handle device responses.

  14. 14
    Article
    Avatar of lobstersLobsters·29w

    'AI' Sucks the Joy Out of Programming

    A developer with 28 years of experience shares their critical perspective on AI-assisted programming tools. While LLMs handle simple tasks adequately, they fail on complex problems and create unmaintainable code. The trial-and-error feedback loop with AI agents removes the learning journey and problem-solving satisfaction that makes programming rewarding, replacing it with frustration over debugging AI-generated code without gaining understanding or mastery of the underlying concepts.

  15. 15
    Article
    Avatar of lobstersLobsters·37w

    If I hear "design pattern" one more time, I'll go mad

    A critical examination of design patterns in software development, arguing that many patterns are overcomplicated names for simple programming concepts. The author contends that patterns like Command (which is just a function) and Strategy (which is just an interface) create unnecessary cognitive overhead and that developers naturally arrive at these solutions through iterative design without needing formal pattern terminology. The piece advocates for focusing on underlying principles rather than memorizing pattern names, suggesting that good architecture emerges from composing language features to solve problems rather than following prescribed patterns.

  16. 16
    Article
    Avatar of lobstersLobsters·1y

    AerynOS

    AerynOS is a groundbreaking Linux distribution that promises atomic updates, high performance, and exceptional reliability. It allows users to experience fast desktop computing with optimized system architecture. The system ensures reliable updates with live atomic processes, reducing the need for reboots and preventing broken states. AerynOS also offers advanced package building and automatic boot management.

  17. 17
    Article
    Avatar of lobstersLobsters·24w

    Use Python for Scripting!

    Python 3 offers significant advantages over shell scripts for automation tasks, particularly for cross-platform compatibility. While Bash scripts often fail between Linux and Mac due to GNU vs BSD tool differences, Python's standardized library works consistently across systems. Python provides better readability with human-readable method names, a comprehensive standard library covering JSON, HTTP, and data structures, and is pre-installed on most machines. The article demonstrates practical examples comparing Bash's cryptic syntax with Python's clearer alternatives, recommending Python for scripts that grow beyond 10-20 lines or become difficult to maintain.

  18. 18
    Article
    Avatar of lobstersLobsters·1y

    Some features that every JavaScript developer should know in 2025

    JavaScript is continuously evolving, introducing new features that can significantly enhance development efficiency. Some notable features every developer should know by 2025 include iterator helpers for efficient array transformations, the Array.at() method for accessing elements with negative indexing, Promise.withResolvers() for simplified promise handling, and String replace methods that accept callbacks. Additionally, the structuredClone() method offers deep cloning of objects, tagged templates enable powerful string manipulations, WeakMap and WeakSet provide better memory management, and Set operations have been expanded with new boolean capabilities.

  19. 19
    Article
    Avatar of lobstersLobsters·1y

    Why we ditched Next.js and never looked back

    Northflank encountered significant performance and scalability issues with Next.js, leading them to develop a custom server-side rendering solution using React and Express. They observed substantially faster page loads, improved SEO rankings, and reduced crashes after the switch. The team criticizes Next.js for being bloated, slow, and overly complex, especially when used at scale.

  20. 20
    Article
    Avatar of lobstersLobsters·28w

    How I fell in love with calendar.txt

    A developer shares their experience adopting calendar.txt, a plain text file for managing calendar events using Unix command-line tools. They demonstrate how simple grep, vim, and bash aliases provide elegant solutions for viewing daily events, editing dates, and handling recurring events—all faster and more reliable than web-based calendar interfaces. The approach offers simplicity, trust, and personal customization through Unix tools, though mobile access remains challenging on proprietary systems like Android.

  21. 21
    Article
    Avatar of lobstersLobsters·1y

    Best Simple System for Now

    The Best Simple System for Now (BSSN) is a concept that proposes a middle ground between perfectionism and pragmatism in software development. This system is the simplest one that meets current needs without over-engineering. Characteristics include simplicity without anticipating future requirements, focusing on the present needs, and ensuring code quality. The idea challenges the traditional dichotomy between quick fixes and sustainable development, advocating for iterative delivery and the constant evolution of the code to meet present needs effectively.

  22. 22
    Article
    Avatar of lobstersLobsters·32w

    The Web Is About to Get Better for Everyone, Everywhere

    The European Accessibility Act, effective summer 2025, will require digital products in the EU to meet enforceable accessibility standards. This legislation will likely trigger a global upgrade in web accessibility, as companies typically build one version of their products rather than maintaining regional forks. Similar to GDPR's impact on privacy, the EAA will affect how teams design, build, and ship products, requiring semantic HTML, keyboard navigation, screen reader support, and inclusive design patterns. The improvements will spread through shared design systems, component libraries, and frameworks, benefiting developers worldwide and potentially influencing accessibility legislation in other regions.

  23. 23
    Article
    Avatar of lobstersLobsters·49w

    Cursor YOLO deleted everything in my computer

    A developer experienced a critical bug with Cursor's YOLO mode that resulted in the deletion of all files on their computer during a backend migration from Express.js to Next.js. The AI editor attempted to delete old files, failed initially, then proceeded to delete everything including itself. Data recovery attempts using EaseUS were unsuccessful, though the developer had backups on Google Drive and GitHub.

  24. 24
    Article
    Avatar of lobstersLobsters·1y

    Golang on the PlayStation 2

    The author explores the concept of running baremetal Go code on a PlayStation 2, using TinyGo and the ps2dev SDK to tackle compatibility challenges. The piece details the specific configurations, issues with 64-bit integer operations, and steps taken to get Go programs running on the console. Code snippets and technical explanations are provided, and future improvements are outlined for advancing this project.

  25. 25
    Article
    Avatar of lobstersLobsters·1y

    "Vibe Coding" vs Reality

    Vibe coding refers to a trend where developers use large language models (LLMs) to produce software from simple descriptions in natural language, without focusing on detailed coding practices. While these tools have made software development more accessible, they suffer from limitations like repeating mistakes, making inappropriate assumptions, and lacking long-term memory. Current models can assist in creating mockups but are not reliable enough for producing secure, production-quality software without human intervention and expertise.