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