Sponsored
TLDR WEB DEV 2024-04-23
Parse notes
- Subscription/account footer truncated before parsefooter_truncated
01GENERAL
Read the documentation and see Paragraph code examples
02ARTICLES & TUTORIALS
4 SOFTWARE DESIGN PRINCIPLES I LEARNED THE HARD WAY
This author built a large-scale service and found certain principles reappearing throughout the implementation. It's useful to prioritize a single source of truth and minimize mutable state when building something from scratch. Developers should also make sure not to abstract things prematurely and not to overuse mocks when writing tests for their code.
DEBUGGING INFINITE LOOPS
In object-oriented programs, infinite loops can happen unknowingly. To understand and fix these issues, you should successively inline the methods on the stack until you have a self-referencing method. This gets to the root of the issue compared to just applying a code-level hack.
03OPINIONS & ADVICE
MY FIRST PROMO REJECTION, A BLESSING IN DISGUISE
This author was rejected for their first promotion at Google after two years in their role for not displaying enough impact. From that rejection, they learned the importance of taking initiative and strategically selecting projects that demonstrated impact.
THE TRAP OF OVER-ENGINEERING AND OVER-DESIGN
Developers often over-engineer and over-design software by abstracting things excessively and focusing on hypothetical future scalability. Instead, it's better to prioritize core functionality first, keep the scope reasonable, and have a “good” solution over a “perfect” one.
DROP EVERYTHING AND REVIEW
Software development has multiple feedback loops: the inner loop (immediate feedback from tools), the middle loop (code reviews), and the outer loop (deployment and system-level testing). Code review often gets delayed, unnecessarily inflating the middle loop which leads to slower deployment. This author advocates for code reviews to be the top priority for teams after any urgent production issues so that teams can keep shipping at a smooth pace.
04LAUNCHES & TOOLS
FRANKEN/UI
Franken UI is a collection of copy-pastable components that are HTML-first and framework agnostic.
FIRECRAWL
Crawl and convert any website into LLM-ready Markdown. It can be self-hosted and comes with Python and Node SDKs.
05MISCELLANEOUS
DEVELOPING RAPIDLY WITH GENERATIVE AI
Discord builds products with generative AI quickly by identifying suitable use cases early and then prototyping with off-the-shelf LLMs. It evaluates prompts deeply before deploying at scale. Discord leans towards using off-the-shelf LLMs before thinking about using self-hosted ones because it saves engineering resources. Often, if the target problem can't be solved with GPT-4, then it probably can't be solved yet with generative AI at all.
HOW SHORT CAN GIT ABBREVIATE?
The default 7-character length of Git hashes can lead to collisions in large repos like the Linux kernel. This article analyzes the distribution of abbreviation lengths, finding that while most commits can use short abbreviations, a large number require longer ones (up to 11 currently). It recommends using at least 12 characters for large repositories and referencing full Git hashes if possible.
06QUICK LINKS
ON GENERATING IDEAS - LEADERSHIP & WORK
People should generate ideas independently and quietly first before bringing them to group settings.
THE DANGERS OF SINGLE LINE REGULAR EXPRESSIONS
This article describes a vulnerability within an application where a poorly constructed regular expression allowed for multiline input, allowing arbitrary Ruby code execution.
GOOD IDEAS IN COMPUTER SCIENCE
A list of Computer Science victories, like arrays, hashmaps, processes, version control, GUIs, and more.
EFFICIENT ENGINEERING TEAMS (X POST)
Efficient engineering teams often have a Directly Responsible Individual for each part of their systems.