Gajus

A source of truth for my thoughts about engineering and startups

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