Gajus

A source of truth for my thoughts about engineering and startups

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