Best of LobstersJune 2024

  1. 1
    Article
    Avatar of lobstersLobsters·2y

    The Death of the Junior Developer

    The rise of AI tools like ChatGPT is reshaping the software development landscape, significantly impacting junior developer roles. These language models are becoming highly competent at tasks traditionally reserved for junior programmers, lawyers, and writers, raising concerns about job displacement. Senior developers are adapting by using AI to accelerate their work, shifting into roles that focus on prompt engineering and code review. The article urges junior developers to upskill rapidly and stay ahead of these technological advancements to remain competitive in the evolving job market.

  2. 2
    Article
    Avatar of lobstersLobsters·2y

    ChatGPT is bullshit

    Large language models like ChatGPT are producing falsehoods more accurately described as 'bullshit' rather than 'hallucinations'. These models generate human-like text by analyzing probabilities rather than aiming for truth. Describing their inaccuracies as bullshit is argued to be a more useful framework for understanding and discussing their behavior, particularly since these models are designed to produce convincing text rather than accurate information.

  3. 3
    Article
    Avatar of lobstersLobsters·2y

    Don’t Refactor Like Uncle Bob. Please

    An article discussing the flaws in Uncle Bob's approach to refactoring code and his implementation of his own principles. The author suggests that readers should come up with their own refactorings and take Uncle Bob's principles with a grain of salt.

  4. 4
    Article
    Avatar of lobstersLobsters·2y

    coder/picopilot: GitHub Copilot in 70 lines of JavaScript

    GitHub Copilot is implemented in just 70 lines of JavaScript, and you can use it by installing the 'coder.picopilot' extension via VS Code. The setup involves cloning the repository, running specific bun commands, and launching VS Code in development mode. Customize prompts via your settings and create your own AI extensions effortlessly.

  5. 5
    Article
    Avatar of lobstersLobsters·2y

    Go evolves in the wrong direction

    The post discusses the perceived drawbacks of Go's simplicity and lack of advanced features. It highlights the potential increase in complexity and implicit code execution introduced by recent additions such as generics and iterators. The author suggests focusing on Go's essential features like simplicity, productivity, and performance.

  6. 6
    Article
    Avatar of lobstersLobsters·2y

    Time to Say Goodbye to Google Fonts: Cache Performance

    Self-hosting fonts can improve performance compared to using Google Fonts due to cache partitioning in browsers.

  7. 7
    Article
    Avatar of lobstersLobsters·2y

    rust is not about memory safety

    The main focus of Rust is program correctness, not just memory safety. Segfaults are not a skill issue. Rust ensures program correctness by statically assuring that references are valid and eliminating the possibility of bugs at compile time.

  8. 8
    Article
    Avatar of lobstersLobsters·2y

    Modern Good Practices for Python Development

    Modern Python development practices include using tools like mise or pyenv for managing multiple Python versions, utilizing pipx for developer applications, and always using virtual environments. Prefer the most recent Python 3 version for new projects for better performance and security. Additionally, organize project configurations in a pyproject.toml file, use formatters and linters like Black and Ruff, and write tests with pytest. For packaging, use wheel and container images, and prefer f-strings for string formatting. Use logging instead of print() for diagnostics, and handle async code appropriately.

  9. 9
    Article
    Avatar of lobstersLobsters·2y

    diff2html

    diff2html provides a CLI tool for viewing differences in code with both line-by-line and side-by-side previews. It utilizes highlight.js for syntax highlighting and pairs similar lines for better change tracking. Installation is simple with npm, and the tool allows browsing commit changes directly in a web browser.

  10. 10
    Article
    Avatar of lobstersLobsters·2y

    Why Not Open Source?

    This post discusses the reasons why Yaak will not be open source and explains how the introduction of a plugin system can provide the benefits of open source without the burden. It explores the assumptions about open source and plugins, highlighting the advantages and potential challenges of both approaches.

  11. 11
    Article
    Avatar of lobstersLobsters·2y

    Serving a billion web requests with boring code

    A developer recounts their experience building and launching a large-scale healthcare application for the US government using stable and well-known technologies like Golang, PostgreSQL, and React. Emphasizing the importance of simplicity and reliability, the project achieved high performance with minimal errors. The backend was modular, using gRPC for service communication, and a strict backwards-compatibility policy ensured robustness. The team faced challenges with documentation generation and maintaining sql-mock tests, but overall, the software was successful and served millions efficiently.

  12. 12
    Article
    Avatar of lobstersLobsters·2y

    basecamp/omakub: Opinionated Ubuntu Setup

    Omakub is an opinionated Ubuntu setup that provides a fully-configured web development system. It includes curated tools and applications for a ready-made system without the need for manual configuration. Users can install Omakub by running a single command.

  13. 13
    Article
    Avatar of lobstersLobsters·2y

    ioi/isolate: Sandbox for securely executing untrusted programs

    Isolate is a sandbox for securely executing untrusted programs, preventing them from affecting the host system. It was developed by Martin Mareš and Bernard Blackham, and is now maintained on GitHub. Bug reports and feature requests can be submitted there.

  14. 14
    Article
    Avatar of lobstersLobsters·2y

    erezsh/reladiff: High-performance diffing of large datasets across databases

    Reladiff is a high-performance, open-source tool designed to diff large datasets across various databases. It reduces data transfer by performing diff calculations within the database, employing a divide-and-conquer algorithm for cross-database diffs and join operations for intra-database diffs. The tool is multi-threaded, configurable, and outputs JSON and git-like diffs for CI/CD integration. Reladiff supports over a dozen databases including MySQL, Postgres, and Snowflake, and is available on PyPI for easy installation.

  15. 15
    Article
    Avatar of lobstersLobsters·2y

    How to Save the Princess in 8 Programming Languages [Comic]

    A comic that humorously depicts the challenges of programming and the need for a time tracker like Toggl.

  16. 16
    Article
    Avatar of lobstersLobsters·2y

    Docker Considered Harmful

    Docker is complex and not as simple to use as the alternatives. It is unnecessary for building containers and offers no real advantage. Docker's security features are limited and it has inherent vulnerabilities. The concept of 'application containers' is not new and can be achieved without Docker. There are alternative tools available, such as systemd-nspawn, that provide similar functionality without the complexity.

  17. 17
    Article
    Avatar of lobstersLobsters·2y

    Effect – The best way to build robust apps in TypeScript

    Effect is a library for building robust apps in TypeScript. It provides maximum type-safety, makes code more composable and reusable, and offers an extensive library with a rich ecosystem of packages. Effect handles errors by embracing them and providing built-in error-handling primitives.

  18. 18
    Article
    Avatar of lobstersLobsters·2y

    Open Sourcing Kinopio

    Kinopio, a browser-based application, on its 5th anniversary, has been open-sourced. This means users can now download, modify, and run the code on their own computers. The app, built with node.js, has a straightforward installation process. The decision to open source aims to increase appreciation for the work behind Kinopio and possibly invite community contributions, although it also comes with risks such as potential cloning and the stress of managing code contributions.

  19. 19
    Article
    Avatar of lobstersLobsters·2y

    1/6 | How We Hacked Multi-Billion Dollar Companies in 30 Minutes Using a Fake VSCode Extension

    The post discusses how the authors were able to create and publish a malicious VSCode extension that stole source code in just 30 minutes. They identified vulnerabilities in VSCode extensions and highlighted the risks associated with them. Multiple multi-billion dollar companies were affected by the attack.

  20. 20
    Article
    Avatar of lobstersLobsters·2y

    Why I am not yet ready to switch to Zig from Rust

    The author loves programming in C and has spent a lot of time programming with it. They appreciate that C feels right and the connection it has with machine code. However, C is an unsafe language and has some limitations. The author was drawn to Rust because of its memory safety features, although they initially struggled with the borrow checker. They eventually found Rust productive to work with. The author also explored Zig, which feels like C but at a lower level than Rust. However, they found some issues with Zig, such as the use of comptime, encountering segmentation faults, and memory leaks. Additionally, there are currently no books available for learning Zig, and the ecosystem and industry investment are not as developed as they are for Rust.

  21. 21
    Article
    Avatar of lobstersLobsters·2y

    Python still surprises

    After nearly 20 years of working with Python, the author was surprised to learn that `some_list += x` modifies the list in place, unlike `some_list = some_list + x`. This led to a realization about the `__iadd__` operator function, which allows in-place modification as part of Python's operator overloading conventions.

  22. 22
    Article
    Avatar of lobstersLobsters·2y

    virchau13/proxy-proxy-proxyer: A client and server for getting around restrictive proxies by going directly through them

    This post introduces a unique tool called 'proxy-proxy-proxyer' designed to bypass restrictive network proxies by routing HTTP requests through multiple layers of proxies. The author details their experience in developing the tool to overcome proxy restrictions at a coworking space, exploring multiple approaches before ultimately building a custom solution in Node.js and later refining it in Rust. Caution is advised due to its experimental nature and lack of proper security features.

  23. 23
    Article
    Avatar of lobstersLobsters·2y

    Thoughts on Desktop Operating Systems in 2024

    The post recounts the author's experiences and thoughts on various desktop operating systems in 2024, particularly focusing on Windows, MacOS, and Linux. Windows is praised for its stability and gaming capabilities but criticized for its intrusive ads and inconsistent app quality. MacOS is lauded for its superior UI design and ecosystem integration but noted for its limited gaming options and increasing ads. Linux is appreciated for its open-source nature, strong development environment, and growing gaming support, particularly with GNOME and Valve's Proton.

  24. 24
    Article
    Avatar of lobstersLobsters·2y

    nathan-osman/go-sunrise: Go package for calculating the sunrise and sunset times for a given location

    A Go package helps in calculating the sunrise and sunset times for any given location. By providing the date and geographical coordinates (latitude and longitude), the SunriseSunset() method returns the corresponding times as time.Time values. If there is no sunrise or sunset, both values will be time.Time{}.

  25. 25
    Article
    Avatar of lobstersLobsters·2y

    Go: Don't name packages common nouns — brandur.org

    The post advises Go package authors not to name packages after common nouns and suggests alternative naming conventions to avoid conflicts with variable names.