Gajus

A source of truth for my thoughts about engineering and startups

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