Best of LobstersDecember 2024

  1. 1
    Article
    Avatar of lobstersLobsters·1y

    How Many Hours Can You Code?

    Working excessive hours coding can severely impact physical, mental, emotional, and social well-being. The post shares two personal experiences of working long hours on tech projects and emphasizes the negative consequences and the importance of proper work-life balance. It's crucial to consider your health and avoid prolonged periods of intense work, regardless of potential financial gains.

  2. 2
    Article
    Avatar of lobstersLobsters·1y

    7 Databases in 7 Weeks for 2025

    This post discusses seven databases that are worth exploring in 2025, each offering unique capabilities and use cases. It covers PostgreSQL, SQLite, DuckDB, ClickHouse, FoundationDB, TigerBeetle, and CockroachDB, highlighting their key features and suggesting practical experiments to deepen understanding. This mix includes both well-established and emerging technologies, offering insights into client-server models, embedded databases, analytics, financial transaction processing, and globally distributed databases.

  3. 3
    Article
    Avatar of lobstersLobsters·1y

    Niki Tonsky: "I propose we replace semantic …"

    The discussion revolves around replacing traditional semantic versioning with a new concept called pride versioning. Major changes would be labeled as 'shame' for breaking compatibility, minor updates as 'proud' for adding new features without breaking existing ones, and patches as 'default' for bug fixes. Various developers share their thoughts and experiences with different versioning methodologies.

  4. 4
    Article
    Avatar of lobstersLobsters·1y

    lmno.lol

    A blog platform that emphasizes wholesome content without tracking, adverts, paywalls, and unnecessary bloat, ensuring a clean and enjoyable reader experience.

  5. 5
    Article
    Avatar of lobstersLobsters·1y

    State of JavaScript 2024

    2024's top three front end frameworks, all launched over a decade ago, have significantly evolved. Despite JavaScript's reputation for constant change, certain tools like Vite and Vitest continue to dominate. A new Metadata appendix provides insights into survey respondents, with a Query Builder available for custom analysis.

  6. 6
    Article
    Avatar of lobstersLobsters·1y

    anchore/grype: A vulnerability scanner for container images and filesystems

    Grype is a vulnerability scanner for container images and filesystems that works with various image formats and supports major operating system and language-specific packages. It can be integrated with CI tools like GitHub Actions and configured to use external data sources for enhanced vulnerability matching. Grype also supports various output formats and can be customized to include or exclude specific files or paths during scanning. Installation scripts are provided for macOS and Linux, and it also supports using SBOMs for faster vulnerability scanning.

  7. 7
    Article
    Avatar of lobstersLobsters·1y

    Lua is so underrated

    Lua is a versatile, efficient, and easy-to-learn scripting language designed for embedding in applications. It supports multiple programming paradigms and offers excellent performance through its clean design and minimalistic syntax. Despite its capabilities, Lua often flies under the radar compared to more marketed languages, making it an underrated choice for both gaming and embedded systems.

  8. 8
    Article
    Avatar of lobstersLobsters·1y

    Collection of insane and fun facts about SQLite

    SQLite is the world's most deployed and used database, maintained by just three people without outside contributions. It originated from a need for a serverless database on a US warship. SQLite is in the public domain and has an extensive test suite, partly proprietary, ensuring reliability. It has unique traits such as a single writer model, weak typing, and no foreign keys by default. Despite its quirks, SQLite has strong backward compatibility and diverse applications, even outperforming filesystems in some cases.

  9. 9
    Article
    Avatar of lobstersLobsters·1y

    Perfect Desk

    The post details the author's journey from using a prefabricated desk in their teenage years to customizing a perfect home office desk setup after the COVID-19 pandemic. It includes specific requirements for the desk, the planning process, and the final two-stage build, emphasizing the importance of cable management and functional space for multiple computers. The author reflects on the evolution of the workspace and shares insights on designing an ideal desk setup.

  10. 10
    Article
    Avatar of lobstersLobsters·1y

    I Almost Died for a Full Sentry Database

    A developer faced severe issues with a self-hosted Sentry instance that filled up rapidly, causing production apps to freeze due to blocking calls. Attempts to move Sentry to the cloud led to high costs and ultimately project failure due to mismanagement of error tracking and lack of proper alert monitoring.

  11. 11
    Article
    Avatar of lobstersLobsters·1y

    Why do we call it "boilerplate code?"

    The term 'boilerplate code' originates from the Industrial Revolution, combining aspects of steam engine boilers and the Linotype machine used in hot metal typesetting. Boiler plates referred to uniform, rolled sheets of iron used in steam engines. With the advent of hot metal typesetting, easily replicable molds of text made it possible for standardized articles to be distributed to various newspapers, which led to the use of 'boilerplate' to describe unoriginal, standardized content. This term was later adopted in journalism, law, and eventually programming to refer to repetitive or standard sections of code.

  12. 12
    Article
    Avatar of lobstersLobsters·1y

    Why Golang slices still surprise me

    Golang slices have dual behavior, acting as either dynamically sized arrays or fat pointers, which can cause confusion and bugs. Dynamic arrays own their data, while fat pointers do not, making some operations like appending invalid depending on the context. The capacity field in slices introduces surprising behaviors like reslicing beyond the length and modifying capacity, contradictory to Go's minimalist philosophy.

  13. 13
    Article
    Avatar of lobstersLobsters·1y

    Building a distributed log using S3 (under 150 lines of Go)

    The post describes how to implement a durable, distributed, and highly available log using AWS S3 in less than 150 lines of Go. Key highlights include the structure of the log interface, the implementation of the Append and Read operations, handling concurrent writes with S3 conditional writes, and failover/crash recovery mechanisms. The open-source project includes code and tests, with several open issues for further improvements.

  14. 14
    Article
    Avatar of lobstersLobsters·1y

    Eternal Terminal

    Eternal Terminal (ET) is a remote shell that ensures uninterrupted sessions even during network outages and IP changes. It maintains the active session seamlessly without the need to restart or reinitiate manually, offering an advantage over traditional SSH and alternatives like Autossh and Mosh by supporting tmux control mode and native scrolling.

  15. 15
    Article
    Avatar of lobstersLobsters·1y

    Home Manager: dotfiles management • gvolpe's blog

    Home Manager, in conjunction with the Nix package manager, enables declarative configuration of user-specific packages and dotfiles. It may be complex to grasp initially, akin to learning functional programming from an object-oriented background, but it offers substantial benefits once mastered. The post guides new users through incremental steps for using Home Manager, from software installation to full desktop management. It also addresses the challenge of dotfile management and introduces the mkOutOfStoreSymlink function for better handling of mutable configurations.

  16. 16
    Article
    Avatar of lobstersLobsters·1y

    Software Design is Knowledge Building

    A company relies on an integration service but decides to build an in-house system to cut costs. Despite successful initial development, the system becomes hard to maintain when transferred to a new team. This is attributed to the lack of a shared mental model among the new developers, making it difficult to understand and modify the software. The post highlights the importance of knowledge building and proper documentation in software design to ensure long-term maintainability.

  17. 17
    Article
    Avatar of lobstersLobsters·1y

    Turing Machines

    David Hilbert's 1928 Entscheidungsproblem asked whether an algorithm could determine the correctness of mathematical statements, to which Alan Turing and Alonzo Church independently concluded 'no' by 1936. Turing's hypothetical 'universal machine,' later termed the Turing machine, is foundational for modern CPUs, demonstrating that all computations can be boiled down to basic instructions. Programs for Turing machines can perform tasks as simple as printing sequences or as complex as arithmetic operations, reflecting the principles of modern computing. Despite their theoretical nature, Turing machines underpin the concept of 'Turing completeness,' crucial for understanding computational boundaries and the essence of modern computers.

  18. 18
    Article
    Avatar of lobstersLobsters·1y

    How bloom filters made SQLite 10x faster

    Researchers used Bloom filters to enhance SQLite's performance for analytical queries by 7x-10x. They focused on reducing expensive B-tree probes during join operations by implementing new opcodes that utilized Bloom filters, optimizing query execution without significant memory overhead. These changes were integrated into SQLite version 3.38.0.

  19. 19
    Article
    Avatar of lobstersLobsters·1y

    How do you do, fellow web developers? A growing disconnect.

    The author discusses a growing disconnect between older and younger web developers, highlighting differences in understanding web application structures and modern JavaScript frameworks. Personal experiences and examples from a new developer game show underline these generational gaps. The post reflects on shifting notions within the development community and the broad abstractions younger developers often work with.

  20. 20
    Article
    Avatar of lobstersLobsters·1y

    Making a Trello clone using htmx

    Learn how to create a Trello clone using htmx, an HTML-centric way to build dynamic web applications. The guide walks through creating boards, lanes, and cards, and handling user interactions like renaming items and reordering cards. It also explains how to use hyperscript for adding lightweight interactivity, while integrating with ASP.NET Core MVC for the back-end. Key techniques include using htmx for dynamic updates, handling form submissions, and using SortableJS for drag-and-drop functionality within lanes.

  21. 21
    Article
    Avatar of lobstersLobsters·1y

    PyMyFlySpy: track your flight using its headrest data

    PyMyFlySpy is an offline tool developed to track your flight using the data provided in in-flight Wi-Fi networks and a Firefox extension. It captures flight metrics like speed, direction, and estimated arrival time, and dynamically calculates the flight path to display on a map. PyMyFlySpy supports multiple airlines by configuring different data parsers, and all flight data is stored in an SQLite database. Future enhancements could include triggering specific events based on flight metrics.

  22. 22
    Article
    Avatar of lobstersLobsters·1y

    From Nix to Eos

    This post explores the evolution from Nix to Ekala, highlighting the complexities and drawbacks of current Nix implementations and presenting Ekala's new approaches. Adopting Thought Driven Development, Ekala aims to address issues in software distribution, reproducible builds, and the NixOS module system. The atom format is introduced as a key innovation to simplify code distribution and verification, while the Eos API and scheduler promise to enhance the backend task distribution and trust. The post underscores the mission to transform Nix's potential into practical, scalable tools for developers.

  23. 23
    Article
    Avatar of lobstersLobsters·1y

    Performance of Rust's match vs. lookup tables

    The post explores the performance differences between using Rust's `match` statements and lookup tables for certain bioinformatics algorithms, particularly focusing on how different methods perform in specific tasks. Through detailed benchmark tests and analysis of generated assembly and LLVM IR code, it concludes that inlined lookups are generally faster due to requiring fewer instructions. Additionally, the use of the `lazy_static` crate introduces overhead that can affect performance measurements.

  24. 24
    Article
    Avatar of lobstersLobsters·1y

    Switching to Firefox

    Firefox Mobile offers several superior features compared to Chrome, including the ability to install extensions, seamless PDF viewing in-browser, and automatic history deletion upon quitting. These features make Firefox a notable alternative for mobile browsing, despite some limitations such as the absence of `about:config`. The author encourages users to consider Firefox not only for ideological reasons but for practical enhancements.

  25. 25
    Article
    Avatar of lobstersLobsters·1y

    You can’t get more adversarial than PvP MMORPGs

    PvP MMORPGs face numerous security challenges, including network-level attacks, client-level cheating, and economic exploits. Mitigation strategies include using encryption, validating packets, setting rate limits, obfuscating traffic, and performing rigorous security assessments. It's crucial to avoid trusting client inputs and to implement strong authentication methods. Duplication of items and currency due to poor transaction handling can critically impact game economies. Balancing combat mechanics and curbing exploits like aimbots, teleportation hacks, and random number generator (RNG) manipulation are also essential to maintaining game integrity.