Gajus

A source of truth for my thoughts about engineering and startups

  1. Finding What to Fine-Tune with Ablation
  2. 3 pnpm Settings to Protect Yourself from Supply Chain Attacks
  3. Applying Sentry Component Annotations Client-Side Only
  4. Isolated Development Environments for Agentic Development
  5. Batching Redis lookups with DataLoader and MGET
  6. This Blog Was Made by AI
  7. Test Markdown
  8. X "For You" Algorithm Explained
  9. Twitter (most likely) regrets adding Follow
  10. Fine-tuning OpenAI models
  11. Understanding and avoiding visually ambiguous characters in IDs
  12. Setting up PostgreSQL for running integration tests
  13. Designing one-to-one relationships in PostgreSQL
  14. The case for native assertions in PostgreSQL
  15. How to add Sentry tracing to your Node.js app
  16. What makes great engineering teams?
  17. Testing Rehype Pretty Code
  18. Integrating Fastify with Slonik
  19. Integrating Slonik with Express.js
  20. Attempting Large Code Refactor using LLMs
  21. Detecting unnecessarily mounted React components in a large app
  22. Debugging mysterious traffic from Boardman, OR
  23. Bulk inserting nested data into the database (part II)
  24. How a few lines of code reduced database load by a few million queries
  25. Routing PostgreSQL queries between read-write & read-only instances
  26. Building advanced SQL search from a user text input
  27. Writing composable SQL using JavaScript
  28. Fully qualified names vs a jungle of imports
  29. Rewriting tests from Cypress to Playwright using GPT3
  30. Migrating from Cypress to Playwright using GPT3
  31. Validating PostgreSQL results & inferring query static types
  32. What makes a good commit
  33. CTO vs Head of Engineering
  34. Redesigning Remote Team Culture
  35. How I got my first Node.js job
  36. .gitignore mistake that everyone makes
  37. Onboarding email with 80% response rate
  38. Why Remote Working Is Bad
  39. The Magic of Engineered Serendipity
  40. 5 tips for remote job seekers
  41. How to execute effective daily standups using Slack?
  42. Solving social isolation
  43. Stack Overflow is leaking user emails
  44. Mocking PostgreSQL queries in Node.js
  45. Ultimate guide to concurrent logging in Node.js
  46. Using HTTP proxy with Puppeteer
  47. Traveling and working remotely from Japan. 20 oddities
  48. How to terminate a HTTP server in Node.js?
  49. Why IMDb IDs cannot be trusted and why not to use padded IDs
  50. Ensuring healthy Node.js program using watchdog timer
  51. A declarative way to cache PostgreSQL queries using Node.js
  52. Handling unhandled promise rejections in async functions
  53. Detecting a promise that will never resolve/ reject
  54. Stop using package-lock.json or yarn.lock
  55. Mistake that cost thousands (Kubernetes, GKE)
  56. My favorite CSS hack
  57. Dynamically generating SQL queries using Node.js
  58. Logging in Browser
  59. Warming cache
  60. Capturing stdout/ stderr in Node.js using Domain module
  61. Stop using Knex.js
  62. Processing large volumes of data safely and fast using Node.js and PostgreSQL
  63. Lessons learned scaling PostgreSQL database to 1.2bn records/month
  64. The case for Array#replace()
  65. Ensuring good service health by automating thorough integration testing and alerting
  66. I've accessed my email inbox that I have not used for 7 years & found 15,559 emails
  67. Do not protect your website from scraping (part 1, technology barriers)
  68. Compressing GraphQL response
  69. Applaudience ❤ GO2CINEMA
  70. I reduced GraphQL codebase size by 40% and increased type coverage to 90%+
  71. Using DataLoader to batch requests
  72. I have been doing web app error tracking and debugging wrong all these years
  73. Using flow-runtime to enforce strict type constraints at runtime
  74. Roarr! the perfect JSON logger for Node.js and browser
  75. The Twitter effect
  76. Do file sharing and piracy "eat at the roots" of the cinema industry?
  77. Do file sharing and piracy "eat at the roots" of the cinema industry?
  78. Hacking Medium to create a self-hosted blogging platform
  79. Using React v16 to create self-destructing components
  80. The biggest UX mistake in e-commerce: discount code input on the checkout page
  81. Filming sites of the IMDb top 1000 movies
  82. Replacing coordinates with MGRS
  83. Pre-rendering SPA for SEO and improved perceived page loading speed
  84. Making the anchor links work in SPA applications
  85. React application seen as a blank page via "Fetch as Google"
  86. Distributing a self-replicating malicious code using NPM
  87. Stop using CSS in JavaScript for web development
  88. Protecting APIs from the DDoS attacks by signing the resource identifiers
  89. The wheels of open-source
  90. Making docker-in-docker builds x2 faster using Docker "cache-from" option
  91. Parsing absolutely anything in JavaScript using Earley algorithm
  92. Developing isomorphic applications using webpack
  93. The missing CI/CD Kubernetes component: Helm package manager
  94. I am calling for better Git GUI client change staging support
  95. Don't use Babel transpilers when debugging an application
  96. Don't use Babel transpilers when debugging an application
  97. Using DataLoader to batch queries
  98. Using MySQL in Node.js
  99. Behaviour Driven Development with JavaScript
  100. Pro AngularJS
  101. The Definitive Guide to the ES7 Async Functions
  102. MySQL SINSERT
  103. The Definitive Guide to the JavaScript Generators
  104. Harder, Better, Faster, Stronger: Lo-Dash v3
  105. The Definitive Guide to the JavaScript Generators
  106. Behaviour Driven Development with Javascript