Best of Lobsters — July 2024
- 1
- 2
Lobsters·2yLessons learned in 35 years of making software
After 35 years in the software industry, the author shares crucial lessons learned. Key takeaways include keeping solutions simple to make maintenance easier, quickly releasing functional software to build company value, and the importance of professional relationships for career advancement. Visibility of work and willingness to tackle new challenges are essential, as is cultivating a network outside the current workplace. The author also highlights the importance of seeking interesting opportunities over chasing salary and titles, understanding the impact of social class differences in the workplace, and delivering sufficient rather than perfect work.
- 3
Lobsters·2yScaling One Million Checkboxes to 650,000,000 checks
One Million Checkboxes (OMCB) is a website that scaled from a few expected users to over 650 million checks within days. The architecture involved using Redis for state management, nginx for static content and reverse proxy, and Flask for API handling. The site faced several challenges including unexpected high traffic, Redis connection issues, and bandwidth costs. Solutions included adding more servers, batching updates, using a connection pool, and eventually rewriting the backend in Go, which significantly improved performance. The project emphasized learning and fun over perfect solutions, leading to valuable scaling insights.
- 4
Lobsters·2yOne File Linux
OneFileLinux is a lightweight live Linux distribution packaged in a single ~20MB file that can be booted from the EFI system partition on both PC and Mac without installation. It eliminates the need for USB flash drives and additional boot managers, being compatible with various disk encryption methods. Ideal for scenarios requiring Linux on bare metal, it provides instructions for setup on Macs and PCs as well as a method to run from a USB flash drive.
- 5
Lobsters·2yFear of over-engineering has killed engineering altogether
Over the past two decades, there has been a shift in software engineering from rigorous planning to rapidly shipping products without much foresight. While agile methodologies have benefited the tech industry, there's a growing concern that the pendulum may have swung too far, leading to a disregard for basic engineering principles. The post emphasizes the importance of using simple tools like napkin math and Fermi problems for making informed decisions, ultimately saving time and resources. By sharing examples from the development of fika, the author illustrates how basic calculations can prevent costly mistakes and optimize development processes.
- 6
Lobsters·2yHow I Computer in 2024
The post details how the author uses their computer setup in 2024, covering their custom-built desktop, home server, Lenovo laptop, and iPhone. It emphasizes the importance of a solid audio-visual setup for remote work, the use of Tailscale for connectivity, and reliance on tools like Obsidian for note-taking and Todoist for task management. The author explains their preference for NixOS and highlights their productivity applications and development tools.
- 7
Lobsters·2yBuild your own Interpreter
Learn how to build an interpreter for the Lox scripting language by following the guidelines from the book 'Crafting Interpreters' by Robert Nystrom. The challenge starts from chapter 4 on scanning and covers topics like tokenization, ASTs, and tree-walk interpreters.
- 8
Lobsters·2yDoggo
Doggo is a command-line DNS client designed for humans, offering human-readable and JSON outputs. It supports multiple transport protocols including DNS over HTTPS, TLS, QUIC, TCP, UDP, and DNSCrypt. Additional features include ndots and search configurations, multiple resolver support, shell completions for zsh and fish, a web interface, and cross-platform capability. The tool also supports reverse DNS lookups, flexible query options, debugging, and response time measurement.
- 9
Lobsters·2yBlock Coding for Godot: Lowering the Bar of Entry for a Powerful Tool
Endless Foundation's new initiative introduces block coding for the Godot game engine, making it easier for beginners to learn game development. Block coding allows users to create programs using a user-friendly interface that bypasses complex syntax, making game creation more accessible. The goal is to bridge the gap between simplified tools and the professional Godot engine, leveraging the successful approaches of tools like Scratch and Blockly while preparing learners for advanced development.
- 10
Lobsters·2yAn Experienced (Neo)Vimmer's Workflow
Learn how to create a Personalized Development Environment (PDE) using Neovim, focusing on improving functionality with key plugins and configurations. The post covers advanced Neovim tips such as search and replace, keybindings, movement, undo/redo, and integrating essential plugins like Treesitter, Wilder, and Telescope. Additionally, it discusses customizing the status line, enhancing terminal usage, and setting up auto-complete with coc.nvim and Copilot. Ideal for experienced Vim users looking to optimize their workflow.
- 11
Lobsters·2ygRPC Over HTTP/3
HTTP/3 offers a range of benefits for gRPC services, including faster connection establishment, eliminating head-of-line blocking, and mandatory encryption via TLS 1.3. The post explores the practical implementation of gRPC servers and clients over HTTP/3 using Go's ConnectRPC and quic-go libraries. HTTP/3 leverages QUIC, a protocol built on UDP, to reduce latency and improve performance. Despite the early adoption phase, the potential for enhanced performance and security in API development is evident. Practical examples and experimentation reveal current capabilities and limitations of gRPC over HTTP/3.
- 12
Lobsters·2yBooting Linux off of Google Drive
A developer shares their journey of booting Linux from Google Drive using FUSE as a filesystem driver in userspace. The process involves configuring networking in initramfs and overcoming several challenges related to symlinks and file permissions. The end result is a functional Linux boot from Google Drive on virtual machines and eventually real hardware, contributing to Cloud Native Computing.
- 13
Lobsters·2yDark mode isn't as good for your eyes as you believe
Dark mode has gained popularity for its aesthetic appeal and supposed health benefits, such as reducing eye strain and conserving battery life. However, evidence suggests it may not significantly reduce eye strain or improve readability for most people and could even make text harder to read due to lower contrast in certain conditions. For OLED screens, dark mode does save battery life by deactivating black pixels. Although dark mode might be more comfortable in low-light environments, it is not proven to aid concentration or minimize distractions effectively. Limiting screen time remains the best solution for eye health and better sleep.
- 14
Lobsters·2yHow to convert Python Applications to installable applications?
Seeking guidance on converting Python applications to installable formats such as .exe, .app, or .bin. The aim is to create a user-friendly drag-and-drop installation without requiring pip install for the end user. Looking for recommended books, websites, and tutorials to get started.
- 15
Lobsters·2yhelix/CHANGELOG.md at master · helix-editor/helix
The latest release of Helix Editor includes contributions from 160 developers. Key updates include new features like a textobject for list-like entries and a picker for VCS-changed files. Commands have been added or improved for better usability, like `select_all_siblings` and enhanced `goto_file` detection. Usability improvements also feature better popup positioning and auto-saving buffers. Numerous bugs were fixed, especially around LSP integration and terminal behavior. New themes and language supports have been introduced or updated, ensuring a more versatile and stable editing experience.
- 16
Lobsters·2yC++ Design Patterns For Low-Latency Applications
Performance optimizations remain crucial in applications like high-frequency trading (HFT), where low latency is essential. This post discusses a preprint article from Imperial College London focusing on design patterns in C++ for low-latency applications. The optimizations include common practices like prewarming CPU caches and advanced techniques like hotpath versus coldpath separation. Benchmarks using Google Benchmark demonstrate the effectiveness of these patterns, and the detailed implementations are available on GitHub.
- 17
Lobsters·2y"Functional programming languages should be so much better at mutation than they are"
Functional programming languages often struggle with mutation, leading to unnecessary overhead and complexity. The post explores various approaches to incorporate mutation in functional languages, such as allowing mutable data structures, locally limited mutations, linearity, and functional but in-place data structures. Each approach comes with its own set of challenges, and the search for a robust solution continues.
- 18
Lobsters·2yBevy 0.14
Bevy 0.14 introduces a host of new features including Virtual Geometry for efficient rendering of large meshes, Sharp Screen Space Reflections, Depth of Field effects, Per-Object Motion Blur, Volumetric Fog and Lighting, Filmic Color Grading, and PBR Anisotropy. It also includes enhancements like ECS Observers and Hooks, improved color APIs, and support for GLTF KHR_texture_transform, amongst others. This release leverages a release candidate process to ensure stability and immediate usability.
- 19
Lobsters·2ygit-spice
git-spice is a tool designed to manage and navigate stacks of Git branches, allowing users to modify, rebase, and create GitHub Pull Requests efficiently. It supports incremental incorporation into your workflow, operates entirely locally, and provides easy-to-remember shorthands for commands. As free and open-source software, it's available under the GPL-3.0 license.
- 20
Lobsters·2yWhy German Strings are Everywhere
German Strings are a custom string type optimized for data processing, particularly in database systems. Unlike traditional C and C++ strings, they are immutable and designed to handle short, frequently read strings more efficiently. This custom implementation minimizes memory allocation, supports efficient prefix searches, and includes features like short string optimization and specialized storage classes. These enhancements make German Strings particularly suitable for high-performance applications where data integrity and retrieval speed are crucial.
- 21
Lobsters·2yUsing CSS nesting - CSS: Cascading Style Sheets
CSS nesting allows writing stylesheets that are easier to read, modular, and maintainable by reducing repetitive selectors. Unlike CSS preprocessors like Sass, CSS nesting is parsed directly by browsers. The `&` nesting selector is used to join selectors, improve readability, and ensure compatibility. Examples demonstrate how to use nesting with child selectors, combinators, and compound selectors, as well as highlighting invalid nested rules.
- 22
Lobsters·2yUsing S3 as a container registry
Using S3 as a container registry is feasible by exposing an S3 bucket through HTTP and uploading image files to specific paths. This approach can yield substantial performance improvements, particularly in upload speed, compared to traditional container registries like ECR. While the method is experimental and lacks the advanced features of dedicated registries, it opens up new possibilities for optimizing container image hosting.
- 23
Lobsters·2yMohamedjcali/aya: A minimalist version control system with fewer than 6 commands, offering a straightforward alternative to Git.
Aya is a minimalist version control system designed to be simple and user-friendly with fewer than 6 commands, making it easier to learn and use compared to Git. It aims to eliminate complex errors and provide a more intuitive experience for version control. Follow the provided steps to install Aya, initialize projects, and manage versions efficiently.
- 24
- 25
Lobsters·2y89 things I know about Git commits · Jamie Tanna
The post shares 89 insights about Git commits based on over a decade of experience in various team sizes and Open Source projects. It covers the importance of well-written commit messages, preferences for rebase-merging over other methods, the utility of tools like `git reflog` and `git subtree`, and the benefits of atomic commits. Emphasizing good practices in commit history and message writing, it also touches on the challenges and frustrations involved in maintaining high standards across teams. The insights also highlight the advantages of conventional commits and the value of reflection in commit messages.