Best of LobstersOctober 2024

  1. 1
    Article
    Avatar of lobstersLobsters·2y

    The Useless Web

    The Useless Web is a platform that redirects users to a variety of random and seemingly pointless websites. It highlights the quirky side of the internet where fun and entertainment take precedence over utility.

  2. 2
    Article
    Avatar of lobstersLobsters·2y

    Cognitive load

    Understanding and managing cognitive load is crucial in software development to minimize confusion and increase productivity. Cognitive load refers to the mental effort required to complete a task and has intrinsic and extraneous types. The post advocates for best practices such as reducing nested conditionals, preferring composition over inheritance, avoiding overuse of small methods, and rethinking microservices and frameworks to reduce unnecessary complexity and mental effort.

  3. 3
    Article
    Avatar of lobstersLobsters·2y

    Ghostty 1.0 is Coming

    Ghostty 1.0 is set to be publicly released in December 2024 as an open-source project under the MIT license. Aiming to be the best drop-in replacement for current terminal emulators on macOS and Linux, Ghostty focuses on being fast, feature-rich, and platform-native. Developed over two years with extensive private beta testing, it promises high standards-compliance and platform-native GUI. Looking ahead, Ghostty plans to introduce libghostty, enabling developers to build diverse terminal applications effortlessly.

  4. 4
    Article
    Avatar of lobstersLobsters·2y

    Talos Linux

    Talos Linux is a minimal, secure, and immutable operating system designed specifically for Kubernetes environments. It supports various platforms including cloud, bare metal, and virtualization. The system is managed entirely via an API, eliminating the need for SSH, shell, or console access. Talos Linux enhances security through mutual TLS authentication, immutable infrastructure, and adherence to best practices set by NIST and CIS. It also ensures predictability and evolvability by providing atomic updates and the latest stable versions of Kubernetes and Linux.

  5. 5
    Article
    Avatar of lobstersLobsters·2y

    Why is everybody talking about sync engines?

    Developers of a to-do app, 'ChoreCommander,' struggle with modern web app issues like offline functionality and real-time collaboration. The team debates various tech stacks before Ethan suggests using a sync engine, akin to those used in 90s game development, to solve these concerns. Sync engines manage network interactions and maintain local state, allowing for offline reads, optimistic updates, and real-time collaboration. This architecture promises improved responsiveness and simplicity for complex web apps.

  6. 6
    Article
    Avatar of lobstersLobsters·2y

    freetonik/textpod: Extremely simple note-taking app inspired by "One Big Text File"

    Textpod is a local, web-based note-taking app inspired by the 'One Big Text File' idea. It features a single page for all notes with a simple entry form using Markdown, and supports search/filtering with the `/` key. Notes are stored in a `notes.md` file, and it allows for file and image attachments as well as saving local single-page copies of links. Installation is straightforward using Cargo, and it aims to remain simple and accessible to beginners.

  7. 7
    Article
    Avatar of lobstersLobsters·2y

    Replacing nginx with axum

    The post discusses the process of replacing an Nginx server with Axum, a Rust library for writing web services. The author shares code examples and explanations on how to handle tasks such as creating basic web services, serving static files, managing multiple subdomains, and setting up reverse proxying. Additionally, the post covers securing services with basic authentication and setting up TLS using rustls_acme. The author acknowledges that while this setup might be more complex than Nginx, it offers the advantage of leveraging Rust's full capabilities.

  8. 8
    Article
    Avatar of lobstersLobsters·2y

    Introduction to Zig

    Pedro Duarte Faria introduces an open-source, project-based book on the Zig programming language, designed for both beginners and experienced developers. The book explores Zig through small projects like a Base64 encoder/decoder and an HTTP Server, covering syntax, data structures, memory management, error handling, and more. Readers can support the project through donations or by purchasing the book on Amazon.

  9. 9
    Article
    Avatar of lobstersLobsters·2y

    Rust is rolling off the Volvo assembly line

    Julius Gustavsson, the main software architect at Volvo, successfully implemented Rust in Volvo's low-power processor ECU for handling power management in electric cars. Initially using C and C++, Julius transitioned to Rust due to its safety features and robustness. Despite some tooling challenges, Rust proved highly effective for the project, leading to fewer bugs and higher quality software. Volvo is now exploring more opportunities to use Rust in other projects.

  10. 10
    Article
    Avatar of lobstersLobsters·2y

    Glad I did it in Go

    The author reflects on the success of using Go for writing the book 'Writing An Interpreter In Go' that has stood the test of time since its release in 2016. The Go code from the book still compiles and runs without issues in the latest Go version, proving Go's stability and simplicity. The post highlights Go's universal formatting style, built-in tools, and ease of understanding, making it an excellent choice for writing interpreters and compilers.

  11. 11
    Article
    Avatar of lobstersLobsters·2y

    Rust Prism

    An exploration of a complex Rust code snippet that demonstrates async functions, the use of the defer pattern, and error handling with anyhow::Result. The author shares their revelation about the intricacies of real-world Rust code, highlighting how different it can be from educational examples.

  12. 12
    Article
    Avatar of lobstersLobsters·2y

    Naming things

    Naming things accurately in programming is as hard as cache invalidation due to the complexity of language and context. Examples like how 'train' can mean different things in a train booking system or how 'glue' is used in TeX highlight the importance and challenge of choosing precise terms to avoid misunderstandings. Creating unique terms, as seen with the word 'stencil' in historical dictionaries, can sometimes resolve these ambiguities.

  13. 13
    Article
    Avatar of lobstersLobsters·2y

    6 years with Gleam

    The author has been contributing to Gleam since 2018, appreciating its type-safe and scalable approach. Initially involved with Elixir and the BEAM, they found Gleam increased productivity, especially in rapid-change environments like startups. After a venture using Gleam and Elixir, they developed a JavaScript target for Gleam to extend its benefits to frontend development. Relocating to Sweden for a job at Northvolt, they continued leveraging Gleam for personal projects and noted ongoing improvements in the language. Recently, they discussed Gleam's promising future at Code BEAM Stockholm and are open to new opportunities.

  14. 14
    Video
    Avatar of lobstersLobsters·2y

    How is this Website so fast!?

    The website's exceptional speed is due to server rendering of HTML, aggressive use of caching, and techniques like prefetching and critical CSS. By returning plain HTML and minimizing the need for additional network requests, the engineers ensure a fast, seamless user experience. They also utilize service workers, a CDN for global caching, and precise JavaScript management tailored per page. These optimizations enable the website to load quickly while handling a vast catalog of products efficiently.

  15. 15
    Article
    Avatar of lobstersLobsters·2y

    Terminal colours are tricky

    Customizing terminal colours can be challenging, often due to issues like hard-to-read color combinations and inconsistent colour standards across terminal emulators. Common problems include schemes like blue on black or bright yellow on white being difficult to read. Two main ways to configure colours are through terminal emulator settings or using shell scripts. Modern terminals and tools offer 256 colours and theme support, but customization complexities persist. A notable feature to improve readability is the 'minimum contrast' setting. Using tools like base16-shell and base16-vim can help harmonize colours between your terminal and editor.

  16. 16
    Article
    Avatar of lobstersLobsters·2y

    the death of the architect

    The post outlines the evolution of software design methodologies from traditional, design-first approaches to Agile and Extreme Programming (XP) methodologies. It emphasizes the shift from exhaustive, initial design documents to iterative and flexible development processes. While XP's early focus on system metaphors was later abandoned, the Agile Manifesto's preference for responding to change over following a plan remains central to modern software design. The post critiques the current state of software design, highlighting a need to reclaim more explainable and systematic design practices.

  17. 17
    Article
    Avatar of lobstersLobsters·2y

    Kernighan's lever

    Brian Kernighan's quote suggests that debugging is harder than writing code, but this should be seen as an opportunity for skill growth rather than a warning against writing clever code. By tackling complex problems, programmers leverage intrinsic motivations to enhance their abilities. This mechanism, dubbed 'Kernighan's lever', demonstrates that pushing oneself beyond current capacities leads to long-term personal development, despite short-term frustrations. Avoiding clever techniques might prevent these growth opportunities, leading to stagnation.

  18. 18
    Article
    Avatar of lobstersLobsters·2y

    LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLite

    Web applications require efficient methods of storing data within a user's browser. Traditional methods like Cookies and LocalStorage are compared with newer technologies such as IndexedDB, OPFS (Origin Private File System), and WASM-SQLite. Each method has its own use cases, advantages, and performance characteristics. The comparison includes factors like the ability to store complex JSON documents, multi-tab support, indexing capabilities, and performance in initialization, read/write latencies, and bulk operations.

  19. 19
    Article
    Avatar of lobstersLobsters·2y

    Less htmx is More

    After two years of experience with htmx, the author concludes that using plain HTML wherever possible creates a better user experience and easier maintenance. Instead of adopting a SPA approach with `hx-boost`, which introduces several issues, the recommendation is to use regular links and forms that leverage the built-in capabilities of browsers. Examples are given to demonstrate how to create dynamic content updates without sacrificing the core benefits of traditional page navigation. Advances in browser technology further support this approach, ensuring faster and more reliable web applications.

  20. 20
    Article
    Avatar of lobstersLobsters·2y

    We need more zero config tools

    The post highlights the convenience and efficiency of zero configuration tools that work out of the box. Tools like Fish, Helix, Lazygit, and Zellij are featured, emphasizing their minimal configuration requirements and robust out-of-the-box features. The author encourages the development of tools that offer a seamless default experience.

  21. 21
    Video
    Avatar of lobstersLobsters·2y

    How 1 Software Engineer Outperforms 138 - Lichess Case Study

    Lichess, a major online chess platform run by a single core developer, supports 5.2 million chess games daily using a unique tech stack including Scala, MongoDB, and TypeScript. The developer, Thibault Duplessis, focuses on simplicity, scalability, and open-source principles to maintain and evolve the platform efficiently. Despite being outnumbered by large teams like those at Chess.com, Lichess thrives due to thoughtful technology choices and a commitment to minimalism and excellent developer experience.

  22. 22
    Article
    Avatar of lobstersLobsters·2y

    Sorry, GenAI is NOT going to 10x computer programming

    Despite the hype around Generative AI dramatically increasing programmer productivity, recent studies reveal only modest improvements, with some instances of increased bugs and security concerns. Influential AI researchers argue that true productivity boosts require a deeper conceptual understanding that current AI lacks. Effective tools like a good IDE may offer more reliable gains.

  23. 23
    Article
    Avatar of lobstersLobsters·2y

    Microsoft maintains its own Windows debloat scripts on GitHub – OSnews

    Microsoft maintains a GitHub repository of Windows debloat scripts to help simplify setting up Windows as a development environment by removing unnecessary preinstalled applications. The scripts use Chocolatey wrapped in Boxstarter to manage installations and reboots. Despite being a few years old and somewhat defunct, the existence of these scripts underscores the ongoing issues with Windows bloatware and system requirements.

  24. 24
    Article
    Avatar of lobstersLobsters·2y

    Coding without braces: An alternate C Syntax

    C language accommodates alternative syntaxes like digraphs and trigraphs for symbols such as braces and brackets, introduced to support keyboards lacking these characters. Despite seeming obsolete today, these syntaxes still function in modern compilers, demonstrating the foresight of early C developers.

  25. 25
    Article
    Avatar of lobstersLobsters·2y

    Programming Languages That Blew My Mind

    The author shares their journey through various programming languages that significantly impacted their perspective on programming. They discuss the mind-blowing features of each language, from Basic's simplicity and Turbo Pascal's IDE to OCaml's robustness and Erlang's distributed systems. The post also covers x86 ASM, HyperCard, Prolog, Coq, Opalang, and Rust, highlighting unique features and their legacy in modern programming.