Daily Edition · Page 4

THE DAILY INDEX

Technology, AI, software, security, crypto and business

ARTICLES & TUTORIALS

TLDR Web Dev

FEATURE FLAGS ARE RUINING YOUR CODEBASE

Feature flags are a valuable tool for separating code deployment from feature releases, but their overuse can complicate codebases and hinder testing. Too many feature flags leads to difficult testing and complex code and creates excuses for PMs to not make hard decisions like completely removing a feature. To deal with this, you should separate your feature flags into categories and deal with them differently: release toggles for merging not-ready code into production, ops toggles for features with unknown performance implications, experiment toggles for A/B tests, and permission toggles to enable different experiences for different users. Only let PMs manage the latter two and let developers remove control release and ops toggles as soon as they're done.

MODERN GIT COMMANDS AND FEATURES YOU SHOULD BE USING

Most people stick to basic Git commands. This article discusses less common but powerful Git commands. One useful command is git switch, which offers safer, more focused branch switching compared to git checkout. Another is git restore, which simplifies file restoration and replaces some uses of git reset and git checkout. For large monorepos, git sparse-checkout improves performance by checking out only specific directories. git worktree enables working on multiple branches simultaneously, removing the need for stashes or multiple repo clones.

THE "MISSING" GRAPH DATATYPE ALREADY EXISTS. IT WAS INVENTED IN THE '70S

Programming languages lack built-in graph support not because graphs are too complex, but because modern languages' imperative model makes it difficult to write graph algorithms without committing to a specific graph representation. A declarative language like Datalog, based on relational algebra, is a much more natural fit for expressing graph algorithms. Datalog's ability to optimize queries based on dataset characteristics and its expressiveness makes it both performant and easy to use for graph-related tasks.

ARRAY LANGUAGES VS. THE CURSE OF THE SPREADSHEET

Spreadsheets are widely used for data entry, computation, and presentation, but their design makes them prone to hidden errors and difficult to manage as complexity grows. This presents an opportunity for array programming languages, which offer a more reliable and expressive way to perform complex calculations. The Kap array programming language aims to bridge the gap between spreadsheets and traditional programming, providing a familiar spreadsheet-like interface for data entry and presentation while using an actual programming language for computation.

CRACKING META’S MESSENGER CERTIFICATE PINNING ON MACOS

Meta's Messenger app for macOS uses certificate pinning to prevent users from easily analyzing network requests sent to Meta's servers. Using the Hopper disassembler, this author identifies a key function (IsUsingSandbox()) that controls certificate pinning behavior. By modifying a few bytes within the Messenger binary to force this function to return "true", the author is able to effectively disable certificate pinning and successfully intercept network traffic for analysis.

TLDR IndexPage 4