Gajus

A source of truth for my thoughts about engineering and startups

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