Gajus

A source of truth for my thoughts about engineering and startups

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