The Curious Engineer

All blogs / Software / engineering practice

blog.allegro.tech

blog.allegro.tech

Welcome to our technology blog. We use Open Source solutions on a daily basis here at Allegro. Why not work on our karma and give something in return?

Software / engineering practiceFrontend / CSS / browsersTesting / QAAI / ML

Posts
266 from 1 Sep 2014 to 21 Oct 2026
Posting
monthly (21 in the last year)
Kind
company blog
Feed
https://blog.allegro.tech/feed.xml
Also at
https://allegro.tech/

2026 15

  1. Knowing When to Quit
  2. Automating Search Relevance Assessment at Scale with LLM-as-a-Judge
  3. Back to the data center in 2026 (just a little bit)
  4. How we achieved independent deployments in a micro-frontend architecture
  5. How AI Agents Halved the Effort of Migrating 500 Gradle Modules from Koin to Hilt
  6. Saying Goodbye to the Endless Excel Spreadsheets: How a Bottom-Up Drive Brought Us a New Test Management Tool
  7. Finding the Needle: Taming 150,000+ Backstage Entities with a Type-Safe Search and Command Palette
  8. Spec-Driven Development (SDD) — best practices (so far)
  9. GeeCON 2026 — a recap
  10. Two schools of TDD explained
  11. Thoughts on the Boiling Frogs 2026 conference
  12. Static code analysis in Kotlin — tools overview
  13. How to stub external services in integration tests
  14. Battle-testing Lynx at Allegro
  15. Starting a New Service: From Naming to Structuring the Project

2025 16

  1. The Seven Deadly Sins of Test Automation
  2. Transactions Aren’t Enough: The Need For End-To-End Thinking
  3. Quickstart: Run an MCP Server on JVM and Integrate with Copilot
  4. AI Between Progress and Responsibility - 3 Lessons from the World AI Summit
  5. Test-Driven Christmas — A Guide to the Advent of Code Mastery
  6. From complexity to simplicity: How to write integrations with external services
  7. Unit testing revisited
  8. Taming AI Chaos: A Structured Agent Workflow for Predictable Coding
  9. JavaZone 2025 report
  10. How the Garbage Collector Works in Go and How It Affects Your Programs
  11. Popular Gradle mistakes (and how to avoid them) - part 3
  12. How to call a REST API in integration tests
  13. Unlock faster data processing for Machine Learning: reducing pivoting time from hours to minutes
  14. Popular Gradle mistakes (and how to avoid them) - part 2
  15. How to create a synthetic annotator? The process of developing a domain-specific LLM-as-a-Judge.
  16. The AI dual-use dilemma using the example of China

2024 22

  1. How we saved over 60% of k8s resources in our frontend platform
  2. Automating Periodic Data Transfer from an Operational Database to a Data Warehouse
  3. Circuit Breaker not only for HTTP calls! (based on resilience4j)
  4. Popular Gradle mistakes (and how to avoid them)
  5. Do repeat yourself! What is responsibility in code?
  6. Automating Code Migrations at Scale
  7. Accelerate test execution in Groovy and Spock
  8. How to get back to programming after a more than 1.5 year gap - subjective thoughts and tips
  9. Migrating Selenium to Playwright in Java - evolution, not revolution
  10. The noisy JIT Compiler
  11. BPMN: The Key to Understanding Business Processes
  12. INP — what is the new Core Web Vitals metric and how do we work with it at Allegro.
  13. A Mission to Cost-Effectiveness: Reducing the cost of a single Google Cloud Dataflow Pipeline by Over 60%
  14. Engineering culture of Allegro & Allegro Pay: Pragmatic Engineer Score
  15. REST service client: design, testing, monitoring
  16. Unveiling bottlenecks of couchbase sub-documents operations
  17. Ten Years and Counting: My Affair with Microservices
  18. Unlocking Kafka's Potential: Tackling Tail Latency with eBPF
  19. Tired of repetitive tasks?! Go for RPA!
  20. Don’t bother: it is only a little expired
  21. WCAG 2.2 is here! And what about 3.0?
  22. Embed multicolor icons using a single DOM element

2023 13

  1. Clever, surprised and gray-haired
  2. How does B-tree make your queries fast?
  3. Beyond the Code - An Engineer’s Battle Against Knowledge Loss
  4. Online MongoDB migration
  5. The Acrobatics of Switching Between Management and Engineering
  6. From 3TB to 100GB: A Cost-Saving Journey in Database Maintenance
  7. Debugging hangs - piecing together why nothing happens
  8. Trust no one, not even your training data! Machine learning from noisy data
  9. Dynamic Workload Balancing in Hermes
  10. How neuroscience can help you as a software engineer - motivation
  11. Automating the Cloud — hiding the complexity of hardware provisioning
  12. Onion Architecture
  13. How we solved a mobile application performance issue with a few lines of code?

2022 19

  1. Transactions in MongoDB
  2. Vanilla JS is not dead! Microfrontends without web performance issues.
  3. Probabilistic Data Structures and Algorithms in NoSQL databases
  4. Example of modularization in Allegro Pay Android application
  5. How to efficiently write millions of records in the cloud and not go bankrupt — an Azure CosmosDB case study
  6. MBox: server-driven UI for mobile apps
  7. How to facilitate EventStorming workshops
  8. GC, hands off my data!
  9. Exploring GraphQL’s performance tradeoffs
  10. How to include refactoring into product development roadmap? Reducing technical debt inspired by real options identification
  11. Turn-Based Offline Reinforcement Learning
  12. An Agile team in its natural habitat
  13. Visual thinking
  14. Android UI testing in Allegro Pay organization
  15. The War in Ukraine
  16. Make your tests readable by example
  17. Why should we rewrite enzyme.js to react-testing-library and how to do that?
  18. How do coroutines work internally in Python?
  19. Shrinking the size of a monorepo

2021 25

  1. Evaluating performance of time series collections
  2. Clean Architecture Story
  3. Which skills to choose in order to be more valuable
  4. Moving towards Micronaut
  5. OAuth rate-limiting
  6. How we refactored the search form UI component
  7. Comparing MongoDB composite indexes
  8. How to ruin your Elasticsearch performance — Part II: Breaking things, one at a time
  9. How to ruin your Elasticsearch performance — Part I: Know your enemy
  10. Evolution of web performance culture
  11. How to turn on TypeScript strict mode in specific files
  12. Splitting data that does not fit on one machine using data partitioning
  13. CSS Architecture and Performance in Micro Frontends
  14. Making API calls a seamless user experience
  15. One task — two solutions: Apache Spark or Apache Beam?
  16. How to make context logging in Python less cumbersome
  17. Measuring Web Performance
  18. Domino - financial forecasting in the age of global pandemic
  19. My first days at Allegro
  20. Kotlin - a language for everyone and for everything. Even scripts.
  21. Digging into Allegro, or how I started my testing career
  22. Finite-state machines made easy
  23. My first days at Allegro
  24. Implement stateless authentication like a pro using OAuth: A 100% correct approach
  25. Impact of data model on MongoDB database size

2020 20

  1. Speeding up warm builds in Xcode
  2. Speeding up iOS builds with Bazel
  3. Big data marketing. The story of how technology behind Allegro marketing works.
  4. Testing React applications with Jest and Enzyme
  5. BigFlow — a Python framework for data processing on GCP
  6. Sureness, or how many tests do we need?
  7. Retrieving application state
  8. The power of kata
  9. Using ESLint to improve your app’s performance
  10. Common code approach: from rich libraries to rich environment
  11. Persisting application state
  12. Hexagonal Architecture by example - a hands-on introduction
  13. Migrating to Service Mesh
  14. Machine Learning + Agile Manifesto = ?
  15. The problem of immutability in Java
  16. Understanding accessibility
  17. Using dotnet new templates to streamline microservices development
  18. Making Webflux code readable with Kotlin coroutines
  19. How to manage Spring Boot services configuration on GCP
  20. Design for failure - multiple layers of processing to protect against failures.

2019 15

  1. Allegro Tech Meeting 2019 — the 12th edition
  2. Grouping and organizing Java classes
  3. Team tourism at Allegro — part 3 — more case studies
  4. Performance of JavaScript optional chaining
  5. Team tourism at Allegro — part 2 — case studies
  6. Share what you (don’t) know — how to accelerate your career in IT before it even started
  7. Team tourism at Allegro
  8. Page visibility and performance metrics
  9. A/B testing good practice – calculating the required sample size
  10. Migrating a microservice to Spring WebFlux
  11. Allegro culture — Tech Leaders’ Meeting 2019
  12. Hermes 1.0 released
  13. [April 1st] From PHP to Java and back again: a retreat from microservices
  14. Why Allegro Ads chose TypeScript
  15. Making friends with legacy code

2018 15

  1. Java 11 and beyond at Allegro
  2. It’s all about naming
  3. Turnilo — let’s change the way people explore Big Data
  4. From Simple to Fast - Custom Solr Document Collapsing
  5. Postmortem — why Allegro went down
  6. Squeezing performance out of Elasticsearch
  7. From Java to C# and back again
  8. Static linking vs dyld3
  9. From Java to Kotlin and Back Again
  10. A comedy of errors. Debugging Java memory leaks.
  11. Spring @WebMvcTest with Spock Framework
  12. Intuition Engineering at Allegro with Phobos
  13. Psychological needs at work
  14. How to approach testing in development process?
  15. Mesos Executor

2017 7

  1. This Fall digest
  2. Golang slices gotcha
  3. Presto - a small step for DevOps engineer but a big step for BigData analyst
  4. The Agile Testing Days Conference - Potsdam 2016
  5. Distributed rate limiting of delivery attempts
  6. Hitting the Wall
  7. Estimating the cache efficiency using big data

2016 24

  1. Responsible work with MongoDB
  2. Deep learning for frame detection in product images
  3. API crafted for mobile
  4. Self-contained UI tests for iOS applications
  5. Advances in Information Retrieval and Allegro use case at SIGIR 2016
  6. opel — asynchronous expression language
  7. Performance and Availability pitfalls in the Microservices Architecture — CQK Top 10
  8. Thread pools — CQK Top 10
  9. JVM Garbage Collection — CQK Top 10
  10. Caching — CQK Top 10
  11. Are code reviews worth your time?
  12. Allegro OpenSource — embedded-elasticsearch
  13. The iOS bug chase
  14. Kotlin null safety and its performance considerations -- part 1
  15. Meet Retrofit2
  16. Writing a very fast cache service with millions of entries in Go
  17. Minimum Viable Product – already a cliché or a misunderstood concept?
  18. Managing environment inspired by Spotify
  19. Professional approach pays off
  20. Managing Frontend in the Microservices Architecture
  21. Integrating Android project with Codecov
  22. Books you should read: The Pragmatic Programmer
  23. The great adventure of migrating Allegro infrastructure to new Data Center - DC5
  24. Microservices and macro mistakes

2015 53

  1. Mini rant: V for Viable
  2. Let your tests tell a story
  3. Agile Teams — where to start?
  4. Real-time Web Application with Websockets and Vert.x
  5. Mini rant: gambling at work
  6. There is more to logging than meets the eye
  7. Comparison of WebDriver-based solutions for test automation
  8. Scrum-ban applied
  9. Scaling Graphite
  10. Blur background under Android common UI elements
  11. Introducing Slinger - deep linking library for Android
  12. Allegrotech.youth – success story of an education program
  13. Spark and Kafka integration patterns
  14. Martin Thompson and other IT Stars at Allegro
  15. Testing server faults with Wiremock
  16. PyWaw Summit - a Python conference for everybody
  17. Allegro OpenSource: Camus Compressor
  18. Allegrotech.youth – our educational project
  19. Fast Data Hackathon
  20. WebP at Allegro
  21. 7 reasons why Java developer should consider learning Groovy
  22. Is overmocking bad? And if it is, then why?
  23. An introduction to thread pools in Java
  24. How to write JAX-RS Client fast
  25. Allegro OpenSource: Elasticsearch reindex tool
  26. Automated tests with Geb, Spock and Groovy
  27. Diagnosing a MongoDB issue
  28. Testing in production... wait, what?
  29. How to UX without interface
  30. Spring Boot Starter Handlebars
  31. A flight plan for deploying a Node.js application
  32. Allegro OpenSource: tradukisto
  33. To the woods we go! To work we go!
  34. Summarising the 2nd edition of BrainCode Mobi
  35. Better coding with coaching
  36. Frontend made simple
  37. Adopting Gradle at Allegro — a success story
  38. Playing with fire — a Scrum experiment
  39. Browser Fingerprinting — introduction
  40. Acceptance testing with JBehave and Gradle
  41. Digging into the system
  42. Inner energy — you are not a perpetual motion machine
  43. Search Engines at Allegro — Part I — introduction
  44. TDD is not dead yet — GeeCon Poznan 2015
  45. Evolution of our platform architecture
  46. High performance with low-level tools
  47. Using Jersey model processor for supporting edge-service features
  48. Content headers or how to version your API?
  49. Eight steps to building Minimum Viable Product with Story Mapping
  50. Working with legacy architecture
  51. We were at QCon SF 2014
  52. A look at Swift functions
  53. Post-mortem report on 23-24, October 2014 failure

2014 22

  1. We visited Devoxx 2014
  2. Aspects in Spring
  3. Designing RESTful API
  4. Big Data Spain 2014 review
  5. Swift Method Dispatching — a summary of my talk at Swift Warsaw
  6. How to migrate to Java 8
  7. Allegro engineers at PyWaw meetup
  8. Quick introduction to Swift
  9. We were on re:inventure (AWS conference summary)
  10. Testing RESTful services and their clients
  11. Don’t lose your user’s context when installing Android applications
  12. Increasing Capacity and improving Resilience with asynchronous request processing, part I
  13. Hadoop World 2014 New York from a developer’s point of view
  14. Asynchronous REST Services with JAX-RS and CompletableFuture
  15. Story about delivering valuable products quickly, part I
  16. JDD.14 dev contest solutions
  17. Meet Allegro engineers at JDD, October, 13-14th, Kraków
  18. The Memory Game
  19. Java Testing Toolbox
  20. Allegro OpenSource: axion-release-plugin
  21. Cassandra Modeling Kata
  22. j.Piknik 2014 - have a beer with Allegro engineers