Best of LobstersJanuary 2025

  1. 1
    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.

  2. 2
    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.

  3. 3
    Article
    Avatar of lobstersLobsters·1y

    I quit my job to work on my programming language

    The author has decided to leave their job to fully dedicate their time to developing their new programming language, jank, which aims to integrate the best aspects of C++, Clojure, and Rust. Over the last ten years, they have experimented with various languages and honed their goals, receiving community support and funding along the way. They plan to release jank in 2025 and continue improving its features, with the dream of it becoming significant in the software development community.

  4. 4
    Article
    Avatar of lobstersLobsters·1y

    Django vs. FastAPI, An Honest Comparison

    The post compares Django and FastAPI, highlighting their strengths and weaknesses based on real-world experience. Django offers an 'all-batteries-included' approach with everything you need in one package, while FastAPI focuses more on flexibility and performance, requiring additional setup for many features. Django enforces a structured MVT architecture and has a more democratized governance model, whereas FastAPI offers more control and modern features like async support and type safety but relies heavily on external tools. Choosing between them depends on your specific project requirements and the type of skills you want to develop.

  5. 5
    Article
    Avatar of lobstersLobsters·1y

    Be aware of the Makefile effect

    The Makefile effect describes the phenomenon where engineers copy and tweak existing, often complex, tools instead of creating new solutions from scratch. This practice, while practical at the point of solution, can reveal underlying issues in tool design, leading to inefficiencies in debugging, limited learning, and security vulnerabilities. Tool designers should be aware of this effect and strive to minimize it to improve usability, learning, and security.

  6. 6
    Article
    Avatar of lobstersLobsters·1y

    Goodbye Github Pages, Hello Coolify · Quakkels.com

    Quakkels.com has moved from Github Pages to Coolify, an open-source PaaS that enables self-hosting applications, databases, and services without managing servers. The transition is driven by a desire for more independence from big tech. Coolify supports various applications like Laravel, Django, Nextjs, and more, automating deployments and notifications to minimize self-hosting complexities.

  7. 7
    Article
    Avatar of lobstersLobsters·1y

    Building a tiny Linux from scratch

    The author describes their journey of building a tiny Linux system from scratch to gain a deeper understanding of the Linux kernel and the boot process. They detail the steps taken to compile the Linux kernel and Busybox, write an init process in Rust, create an initramfs, and configure the system for UEFI booting. The post includes troubleshooting tips for common issues and additional ideas for expanding the project.

  8. 8
    Article
    Avatar of lobstersLobsters·1y

    The best laptop ever

    The M1 MacBook Air, purchased for just €950, proves to be an incredible machine for light web development, browsing, and emails. Despite its modest 8GB RAM and 256GB storage, it performs admirably and remains quiet and efficient. The author contrasts it with their more expensive M2 MacBook Pro, finding the price difference unjustified for their needs. The post highlights the usefulness of affordable tech that gets the job done without the need for the latest and greatest features.

  9. 9
    Article
    Avatar of lobstersLobsters·1y

    Moving on from React, a Year Later

    Over the past year, Scholarly has made significant progress, including securing funding, achieving SOC 2 Type II compliance, expanding their team, and maintaining a simple technology stack with Ruby on Rails, Stimulus, and MySQL. The decision to move from React to a server-rendered approach has resulted in better testability, faster performance, and reduced complexity. Their focus on minimizing JavaScript use has led to more reliable and maintainable code. Scholarly remains committed to their current tech stack and confident in their approach moving forward.

  10. 10
    Article
    Avatar of lobstersLobsters·1y

    Prototyping in Rust

    Prototyping is a crucial part of the programming process, and Rust, despite its reputation for being strict and complex, is excellent for this purpose. Developers can quickly bring ideas to life by using simple types, type inference, and tools like the Rust playground and bacon for faster feedback. Techniques such as using unwrap liberally and leveraging IDE support can make Rust prototyping both efficient and productive. Rust's strong type system helps catch design flaws early, and with small adjustments, prototypes can evolve seamlessly into robust production code.

  11. 11
    Article
    Avatar of lobstersLobsters·1y

    Microsoft just renamed Office on everyone's PCs, and the new name isn't great

    Microsoft has officially renamed its productivity suite from 'Microsoft 365 Office' to 'Microsoft 365 Copilot.' This change reflects the company's focus on integrating AI tools into the suite. Users can expect their Office apps to adopt the Copilot logo, with a possible shift towards prioritizing AI functionalities over basic productivity features. The rebranding has sparked mixed reactions, as some users may not be receptive to the increased AI focus.

  12. 12
    Article
    Avatar of lobstersLobsters·1y

    ollien/quicknotes: A notes application that makes taking notes... quick

    Quicknotes is a simple, fast note-taking application that stores notes locally in plain text. It can be installed via Cargo and allows users to create, edit, and maintain notes easily using their preferred text editor. Quicknotes also supports daily notes for journaling and offers customizable configuration. The app is designed to be straightforward and efficient, aligning with the creator’s personal workflow needs.

  13. 13
    Article
    Avatar of lobstersLobsters·1y

    Go is a Well-Designed Language, Actually

    Go, designed by Google engineers, is optimized for building large, concurrent server code that is easy to maintain, even across thousands of developers. Though it has faced criticisms for its simplicity, design choices such as Unix-centric filesystem APIs, lack of generics, and explicit error handling were deliberate to meet its design goals. Despite some downsides, Go remains popular for its readability and effectiveness in sizable projects.

  14. 14
    Article
    Avatar of lobstersLobsters·1y

    How I think about Zig and Rust

    Zig and Rust are both systems programming languages but have different core philosophies. Zig emphasizes simplicity and minimalism, lacking features like closures and operator overloading, which makes it suitable for low-level programming. Rust, on the other hand, comes from a high-level background, offering more expressiveness and safety features like traits and pattern matching. While Zig is ideal for direct memory and system-level operations with seamless C interoperability, Rust provides a more user-friendly experience with extensive tooling and a strong type system.

  15. 15
    Article
    Avatar of lobstersLobsters·1y

    SQLite4: SQLite4

    SQLite4 was an experimental project from 2012 to 2014, aimed at rewriting SQLite. The project was discontinued, and its lessons were incorporated into SQLite3. SQLite4 was never released or maintained and should not be used. The repository exists purely for historical reference.

  16. 16
    Article
    Avatar of lobstersLobsters·1y

    "Will I ever use this in the real world?"

    An intern shares an anecdote about unexpectedly applying theoretical computer science concepts, like graph traversal and register allocation, during their software engineering internship. This experience demonstrates the practical value of a formal CS education in real-world scenarios, beyond just understanding CRUD applications.

  17. 17
    Article
    Avatar of lobstersLobsters·1y

    The Juggler's Curse

    The concept of the juggler's curse is used to illustrate the continuous challenge of mastering new skills. As one progresses, previously difficult tasks become trivial, while new challenges emerge as the next impossible goal. This phenomenon, common in various fields, fosters feelings of imposter syndrome by making individuals perceive their own skills as easy and new ones as unattainable.

  18. 18
    Article
    Avatar of lobstersLobsters·1y

    Why Go Should Sometimes Be a No-Go

    The author discusses challenges faced while using Go, expressing relief at switching back to Java. Go's simplicity and lack of essential features, discouragement of clean code principles, immature package ecosystem, and cumbersome error handling are highlighted as major pain points. The author advises against using Go for complex software, suggesting it is more suitable for infrastructure work.

  19. 19
    Article
    Avatar of lobstersLobsters·1y

    I’m Lovin’ It: Exploiting McDonald’s APIs to hijack deliveries and order food for a penny

    API flaws in McDonald’s McDelivery system in India allowed exploits such as ordering food for ₹1 ($0.01 USD), hijacking/redirecting delivery orders, accessing sensitive driver information, and downloading order details and invoices. These vulnerabilities, discovered by the author in an attempt to enhance food industry security, were reported and efficiently addressed through McDonald's India’s bug bounty program. The fixes were implemented server-side, ensuring that the system is now secure for users.

  20. 20
    Article
    Avatar of lobstersLobsters·1y

    Sunsetting Cursed Terminal Emulation

    The post discusses the transition away from traditional terminal emulation for command lines and text-dominant user interfaces. It highlights the complexities and inefficiencies of current terminal emulation systems and introduces the Arcan project and its components like libarcan-tui and afsrv_terminal as modern alternatives. Detailed technical examples and networking capabilities are also described, offering a comprehensive guide on implementing new solutions for terminal interfaces.

  21. 21
    Article
    Avatar of lobstersLobsters·1y

    mit-pdos/noria: Fast web applications through dynamic, partially-stateful dataflow

    Noria is a streaming data-flow system designed to be a fast, read-heavy storage backend for web applications. It precomputes and caches relational query results to enhance read performance and automatically updates cached results as the underlying data changes. Noria supports dynamic data-flow and query changes, and provides easy integration with MySQL-based applications. It requires nightly Rust for building, and uses Apache ZooKeeper for server location management. Native Rust bindings and a MySQL adapter are available for interaction.

  22. 22
    Article
    Avatar of lobstersLobsters·1y

    This FTP site

    This post provides a comprehensive index of topics and resources related to various programming concepts, including polymorphic type inference, lambda calculus, probabilistic programming, denotational semantics, and more. The content covers a wide range of subjects in computation, types, meta-programming, continuations, logic, algorithms, and data structures, with a focus on functional programming languages such as Haskell, ML, and Scheme.

  23. 23
    Article
    Avatar of lobstersLobsters·1y

    Improve Rust Compile Time by 108X

    Nathaniel Simard shares his experience in reducing the compilation time for a Rust project from 108 seconds to just 1 second. Effective optimizations included using element-type generics, swapping const generics for a comptime system, and adjusting the LLVM optimization level. This approach was particularly useful for CubeCL, a GPU programming dialect, by leveraging JIT compilation to dynamically handle instruction sizes and reduce binary size.

  24. 24
    Article
    Avatar of lobstersLobsters·1y

    Bad Apple but it's 6,500 regexes that I search for in vim · eieio.games

    The post explains how the author managed to play the 'Bad Apple' video inside vim using 6,500 regex search queries. By breaking down video frames into 120x90 PNG images and converting them into binary arrays, the author utilized Python to process these images. To display each frame, vim's regex search capabilities were leveraged, creating a highlight-based animation that runs inside vim. Despite some challenges, this creative approach enabled a unique and entertaining use of vim.

  25. 25
    Article
    Avatar of lobstersLobsters·1y

    Game dev in Rust, a year later

    A year after the initial insights on game development in Rust, several major projects have abandoned Rust due to restrictive ownership and compile times. The Rend3 graphics stack was also abandoned and is now maintained as rend3-hp. Performance issues persist with the current graphics stack, which struggles to utilize more than 25% GPU load with an NVidia 3070. Maintaining 3D rendering in Rust requires significant effort, coping with rapid crate updates and a lack of spatial computation in rendering. Bevy offers an alternative but sacrifices Rust ownership for a dynamic ECS system.