Kiwi.com (formerly Skypicker) is a flights booking engine that consists of an extensive database of flights from all over the world.
Technical articles and stack decisions from Kiwi.com
BigQuery data in Google Sheets using Data connector
Big data is becoming a significant challenge for businesses as the amount of data grows. To address this challenge, many businesses are turning to cloud-based storage solutions for their data and…
code.kiwi.com 2022 wrap-up
2023 finally arrived, and we cannot be more excited about the upcoming tech community projects, but let’s take a moment to look at all the amazing things that happened in code.kiwi.com in 2022. Grab…
Pentesting, Part 2: You’d Like To Buy Some?
I got a message from my friend in the lines of: “Hi! I remember you did penetration tests, we want it. Where can we order some penetration tests?” Let’s quickly summarize why you would even do such a…
Looker Onboarding Obstacles
We’ve been using Looker as a self-service and reporting tool in Kiwi.com for more than 3 years. Onboarding this tool has been an interesting journey led by many, sometimes too late, realizations. And…
7 Similarities Between Cybersecurity and (Tech) Community Management
It has been a year since I decided to heed the call of my heart, leave my beloved field of cybersecurity and a nice corporate job, and go for a new career in tech community management. This…
Type-safe arguments in Jetpack Navigation Compose
Jetpack Navigation Compose is the Jetpack Navigation library enhanced for usage in Compose. But the actual “enhancement” is a bit limited and different from the View-based navigation. Most…
Pentesting, part 1: What is pentesting?
Do you want to know about pentesting but don’t know where to start? Not sure what the difference is between hacking and pentesting? Eager to learn how the pentesters know where to stop their…
Feature flag and A/B test management in the iOS app
In bigger apps, there is often a need for using feature flags. As responsible developers, we don't want to depend directly on a third party for this, so we create abstractions on top of the remote…
Page Objects for E2E Android UI testing
Android end-to-end UI testing is not that difficult, but we have observed that the official API/tooling doesn’t scale much if you have a big app. “Page Object” is a design pattern abstraction over a…
The Career Framework 2 years later: How it impacts our engineering culture at Kiwi.com
Two years ago, if you asked what you should do to get promoted, every team lead at Kiwi.com would give you a different answer (or just a shoulder shrug). And there are more questions you could ask…
Techweek 2022: 5 reasons why you should attend
At Kiwi.com, we decided to resurrect local tech meetups in a big style — by bringing a week full of events to the community. Read on to see what we have in store for you! It does not matter which…
Rewriting Android App’s Back-Handling Logic
Our Kiwi.com app is quite old and vast. It is in development for about 7 years; each year we’re adding more features and code, each year the app is being worked on by more developers. We evolved to a…
Web app rendering 101
I’ve encountered many people being oblivious to the way web application rendering works. Initial rendering is an important topic, especially in the context of SEO and performance, so brew yourself a…
Tech Community Events in 2021
Every community builder can tell that the year 2021 was not that easy when it came to organizing events. The road was rocky, but we are extremely happy to share the wrap-up of Kiwi.com tech community…
Kiwi's Google Data Catalogue Adoption Journey
Nowadays when data is spread across various systems of heterogeneous technology stacks, the catalog of a company’s data assets becomes crucial. The right choice of a data catalogue has to go hand in…
CatBoost C++ library
In this article, you will find information about our implementation of the CatBoost C++ library, the reasons why we wrote it, and how to optimize C++ computations based on memory reorganization and…
Nonstop Operations with Scylla Even Through the OVHcloud Fire
Disasters can strike any business on any day. This particular disaster, a fire at the OVHcloud Strasbourg datacenter, struck recently and the investigation and recovery are still ongoing. This is an…
How to Download a Brain with Pair Documenting
When people leave the company, a lot of specific and ad hoc knowledge goes away with them. Unless there is already a strong documentation culture, there’s only so much that can be said and done…
Cypress.io quick tip: Put elements in the context
Let’s take a page with multiple elements that have the same unique attribute and you want to interact with each of them separately. In our case, we want to book a flight for a family of three…
Faster pipelines with Knapsack Pro by parallelizing Cypress tests on GitLab CI
When the runtime of our build pipeline had reached 20 minutes on average for each commit on each Merge Request, we knew we needed a solution to speed things up. We wanted to optimize everything we…
Skip the UI using API calls
As a QA engineer who would like to start with test automation, the first thing you will learn is how to interact with the page and write automated scripts to replay your actions. But following this…
Kiwi.com Nomad — the synergy between science, technology, and creativity.
Modern technologies have given us the power not only to progress in creating a new “reality” but also to innovate areas that have been established before. Different ways of traveling existed for…
When & which UX Research method to use?
Can you imagine you invest a lot of money into high-quality coffee processing equipment, finalize your cafe’s interior design and open the coffee shop’s doors but you don’t check the market’s needs…
Pytest Cassettes: Forget about mocks or live requests
What if I told you that you can simply record API communication on cassette and replay it anytime you want? Setup takes literally minutes, but imagine all the saved time on mocking all external…
What is UX Research?
User experience research (UX Research) is inseparable from creating a desirable user experience (UX). UX research helps you to understand how to make people value and enjoy using your products or…
How do we use Terraform and Vault to deploy Cloud Functions
Most of the internal tools mentioned below are not open-sourced and they fairly depend on multiple services and providers that we use within Kiwi.com. On account of that, we cannot give you the…
What is UX?
Imagine that you just entered a really classy café. You can feel the pleasant smell right away — the smell of freshly grounded coffee, warm milk, and a slight vanilla scent from the candles around…
Almost 100% uptime & Blazingly fast API responses? Cloudflare Easy.
Leverage Cloudflare CDN with stale-if-error and stale-while-revalidate cache-control headers to ensure your API is always available.
Covid-19 and its impact on Engineering work at Kiwi.com
For us at Kiwi.com, the global pandemic has shown the importance of having accurate data in the most significant way. We have huge traffic volumes, and when you are processing huge amounts of data…
How did we do an internal Python course in Kiwi.com
Earlier this year, we came up with the idea of starting a Python course to share our knowledge also internally, organized from Kiwis to Kiwis. Radovan Lapár, our backend Python developers, was the…
It’s Hacktoberfest time!
Hacktoberfest is a month-long celebration of open source software, and it happens every year in October. This global event is open to everyone and is an excellent way to give back to the open-source…
Cypress: Setting up the first acceptance tests in Gitlab CI pipeline
Late evening calls, reverted releases, lost revenue, and eventually fear of touching anything in legacy code not to break something. Nobody likes that. Do you know what is one of the best ways to…
Hacking Node.js legacy url API
Security is essential to us in Kiwi.com as it ensures our customers’ safety. We need to be proactive and search for possible security issues that might affect our business and potentially cause a…
Events in 2020
Interested in Kiwi.com events? Here you can find a list of all of the events we are organising, partnering, or supporting. Please, follow the links that will provide you with more information. For…
From coding the first Kiwi.com algorithms to “But does it scale”?
Back in 2012 Jozef Képesi co-founded Kiwi.com (formerly Skypicker) and created the first functional version of its search engine. Many things have changed since then, the company grew from two to…
Towards secure by default Google Cloud Platform: Service Accounts
How to bring secure defaults ("paved road") into your Google Cloud Platform environment.
Developing a travel-related game in 6 days using Flutter
Kiwi.com organized a Mobile Challenge in collaboration with mDevCamp, for all the mobile enthusiasts to create a travel-related game. I won 3rd place with my application — game Airline Manager. With…
Kiwi.com to offer a clear career path to every engineer
In the past years, our engineers in Kiwi.com felt that they lack proper support in career growth. Many of them felt stuck and they did not know how to move forward with their careers. This was part…
GraphQL 101 Challenge
REST was born in 2000 as Roy Fielding wanted to define the standardized way of API communication. Over time, REST API has reached it’s limitations so in 2015 Facebook internally developed GraphQL as…
Inbox Zero and Message Throttling in Slack
If you are happy with your Slack experience and believe that Slack makes you both productive and focused on your work, then you can stop reading now. However, if you feel overwhelmed by the constant…
Find a flight with Kiwi.com and Postman
✅ open this site and choose 2 airports. The first one as a departure point and the second one as an arrival point. Write down their codes (5–50 minutes depending on your indecisiveness) Normally we…
Working remotely during and after a pandemic
At Kiwi.com, travel is in our blood. We’re happy on the move, and even happier when we’re helping others move too. This means we’re excited when new opportunities for movement arise. It’s true that…
5 Reasons to Write a Document Before Writing Code
Writing a proper design document is often frowned upon. Whether it is an RFC or a problem specification — it doesn’t matter what you call it — the usual reaction is: Ain't nobody got time for that. We need to write code. But it can be highly beneficial.
Python Hackathon II
Fifty participants attended our second Python Hackathon organised by Engeto, PwC and Kiwi.com. The proceedings were supervised by more than a dozen Python gurus at the Impact Hub Brno. The purpose…
Get a free ticket for Machine Learning Prague!
Machine Learning enthusiasts, hold on to your science! Machine Learning Prague, the biggest European conference on data sciences is around a corner and we have a ticket to give away. On March 20–22…
Wrap-up: code.kiwi.com events in 2019
We leaped into 2019 with enthusiasm and optimism, thinking big and trying to figure out how to make it an unforgettable year for you. 12 months on, it is incredibly rewarding to see all the events…
Schemathesis: property-based testing for API schemas
Many companies have moved from monoliths to microservices for better scalability and faster development cycles and so have we at Kiwi.com. We still have monolithic applications, however they are…
React Native at Kiwi.com
Kiwi.com app is running on three main platforms — web, iOS and Android — and was written with different platform-specific technologies. We were curious about the possibilities of sharing code across…
Kiwi.com sponsors one of the biggest IT hackathons in the Czech Republic
The weekend of 9 and 10 November has marked a special event for all tech enthusiasts. Some 150 international and local techies gathered at Impact Hub Brno to form teams and enjoy 36 hours…
Designing GraphQL schema for Kiwi.com: Part I. — Why?
GraphQL schema design is important; this can be very well illustrated by our necessity to refactor some of the parts multiple times. Learn more in the following article by our Frontend Developer…
How to work with developers? A few tips and tricks from a product manager’s perspective
Miroslav Rozenberg, one of Kiwi.com’s product managers, shares his experience of working with developers for people who only can print “Hello world”. To give you a little bit of context, I started…
And the winner of the Global Travel Hackathon is…
13 locations, 250+ people, more than 50 teams all around the globe, and in most places, 24 hours of hacking. This is how we celebrated World Tourism Day at Kiwi.com. Everyone’s eyes are fixed on…
Kubernetes goodies for your local workspace
I’d like to share my local setup for Kubernetes that helps me in being a bit more productive every day. It’s NOT a pro guide for infra engineers, but it should be enough for software/data engineers…
Orbit, Kiwi.com’s design system, has new documentation
Kiwi.com’s design system, Orbit, has matured a lot since we launched our documentation at orbit.kiwi last April. We now offer unified components for designers, as well as React developers; and, we…
Get to know the winner of Kiwi.com Student Challenge and his project
Meet John, a fan of Arsenal, who wants to visit a live match of Arsenal in Barcelona. John is a bit impatient and he doesn’t want to go through all the possible websites to book his flight. In the…
5 reasons you cannot miss the Global Travel Hackathon
Did you know? 27 September is World Tourism Day. We decided to celebrate the day by attending and organising travel hackathons all over the globe on that day. We want to bring together engineers…
Readability counts even in code reviews
There are many guides all around the web on giving a good code review. Most of them will tell you what to look for (possible security issues, design, performance, etc.), what guidelines to follow…
How I learned to stop worrying and love test-driven development
Many people are only discovering test-driven development now, and many of them give up because the way they implement it doesn’t work for them.
Kiwi.com at EuroPython 2019
The biggest European Python conference previously saw the sunny Italian beaches and the rocky cliffs of Scotland. In 2019, it moved again — this time to the Swiss city of Basel famous for raclette…
Look back at Voice Travel Hackathon
The Voice Assistant — a new user interface — is slowly coming to every device and every family, and we believe that one of the best uses for it is in the world of travel. However, the fundamental…
Things I learnt as a first-timer at WWDC
Apple’s WWDC is the most-watched event of all iOS / Mac app developers around the globe. It is a full-week conference where new technologies and devices are introduced.
Building a Python CI pipeline
Continuous Integration is a software development methodology where multiple team members ship their code to a shared repository.
Infrastructure-as-Code: what is it and how can you use it?
The following text is a part of Kiwi.com’s internal DevOps handbook. We thought it could come in handy for others as well, so we decided to share it with the world here, like we’ve done before here…
Highlights from WWDC 2019
When asked to describe this year’s WWDC, words like “packed”, “massive”, and “overwhelming” come to mind. It seems that Apple has announced multiple years worth of development. The following are some…
5 reason you should apply for Kiwi.com’s Summer Camp for senior devs
The Summer Camp for senior devs is back. This year again we’re taking engineers to Barcelona on 22–28 July to boost their programming skills and enjoy the summer. We cover accommodation, travel…
Pushing static type checking in Python one step further
Type annotations can help catch tricky bugs in your Python code. In this article, you’ll find how you can do the extra push over the cliff up to eleven. Note: although there are multiple static type…
Kiwi.com’s Women in Tech inspires women to pursue career in tech
Last weekend I attended the forum on Women in Tech hosted by Kiwi.com in Brno. I’m still fresh on memories from the forum because it was a unique opportunity to meet some of the world’s most…
Join the Forum on Women in Tech 2019
Learn from speakers working for Netflix, Google, and Twitch! The Forum on Women in Tech is back, this time we’re meeting on May 18 in Impact Hub Brno. Join us! This year, you can look forward to two…
mDevCamp is coming, get yourself a free ticket!
Are you a mobile enthusiast? Are you itching to join us for mDevCamp? Great! We’re offering you one free ticket and reimbursement for all your travel expenses (if you travel from Europe). mDevCamp is…
Relay and GraphQL best practices
Check the videos from our internal, one-day workshop to learn more about proper usage and best practices around GraphQL and Relay. Sharing is caring, that’s what triggered our internal one-day…
Join the Central Europe Tech Week
Learn from the most talented tech people from all around the world that we invited to Prague, Brno and Bratislava. Find the final list of events below and learn more at techweek.cz. MONDAY, 8 April…
Kiwi.com to kick off its own university
This is not a 100 % April Fools’ Day prank. Of course, we won’t be providing an official degree but the scope of our educational events can definitely help you to get your coding skills to a higher…
Say goodbye to loops with ‘reduce’
If you’re starting with functional programming and don’t know where to continue after `map` and `filter`, go with `reduce`. It’s the holy grail of versatility when processing objects and lists.
A pre-talk checklist for the stressed presenter’s peace of mind
A quick little checklist our Software Platform Lead Bence Nagy wants to share with you. He uses it to make sure everything goes smoothly during his presentations.
Forget the tape measure, use your phone instead
Kiwi.com launched an augmented reality app on both iOS and Android to measure the size of your bags. It can tell if they’re too large for airline requirements and may require an extra payment
Solve our challenge and get a free ticket for ML Prague
We're partnering with Machine Learning Prague again! Thanks to that you can get a free ticket to this biggest European practical conference about ML, AI and Deep Learning applications.
Events in 2019
Check the list of all of the events we are organising, partnering or supporting. Follow the links that will provide you with more information.
Wrap-up: code.kiwi.com events in 2018
The number 166 stands for all the events we put our hands on and includes conferences, meetups, workshops and educational weekends that we organised, co-organised, provided speakers to, and…
Merry Christmas and a Happy New Year
Have a great Christmas, enjoy some fun with Python and see you all in 2019! “Merry Christmas and a Happy New Year” is published by Barbora Hanousková in code.kiwi.com
Travelling Salesman Challenge 2.0 wrap-up
We’ve already known the winners of the Travelling Salesman Challenge 2.0 for some time now, but there are still some things we’d like to share with you. In this wrap-up we are bringing you: Since the…
PyCon2018, the BLKN style
Over the weekend of 16-18 November, the first ever PyCon conference took place in the Balkans! To be more exact, it was held in Belgrade, Serbia. A few colleagues of mine and I were quite excited…
Win a trip around the world based on an algorithm you write!
This time we’re asking teams of two or three to find the cheapest route between pre-defined areas. If your algorithm can do that, you’ll have the chance to travel around the world for free.
Testable code: making the (testing) world better
It can be tough to make code testable, especially in a large, legacy codebase, but I'd like to tell you some approaches and tips, that could help you make your code more maintainable & understandable.
Takeaways from EuroPython 2018 in Edinburgh
We couldn't miss this year's EuroPython in Edinburgh, and we'd like to share some highlights with you. Read on to discover some of our key learnings and how we enjoyed the entire conference. Below…
Solve our coding challenge and get free ticket for WebExpo
Today is your lucky day because we are giving away a ticket to WebExpo! However, we don't just want to give it to the fastest clicker or do a random raffle, so we’ve prepared a color mixing challenge…
Coding at the Kiwi.com Summer Camp in Barcelona
To share what it's like to code for Kiwi.com, we organised a Summer Camp for Senior Devs. We invited nine non-Kiwi devs to Barcelona to work on some projects with us, get to know our offices.
mDevCamp connected mobile developers from all around the globe
June 15 was the day that all mobile enthusiasts had circled in their calendars. On this day, everyone had the same goal - get to the Prague Congress Centre for mDevCamp on time.
The Forum on Women in Tech was not your ordinary conference
Before you dig in, note that this is my very own opinion and sometimes opinions vary. If you don't agree with something, just breathe and move on. :) If you do, I send you virtual high five, sista'…
Kiwi.com Mobile Team is going to mDev Camp, win a ticket & go too
Heads up all you mobile enthusiasts! Kiwi.com Mobile Team has come up with a contest to challenge your programming skills. As a reward, you can get tickets for mDev Camp happening in Prague on June…
Join our Forum on Women in Tech
Come learn from women who’ve successfully broken the glass ceiling. We are bringing to Brno top women from the tech industry. On June 16, they will share their expertise and know-how on leading…
20 Things To Do After Returning From PyCon 2018
As always, this year's PyCon was full of interesting technologies and ideas. I took notes diligently and thought hey, why not just share them with all of you?
Kiwi.com Summer Camp for Senior Devs
What are your plans for the summer? If you’re free from July 14–28, join us for the Kiwi.com Summer camp for senior devs! It's a unique opportunity to enjoy the summer from the island of Hvar in…
How ARKit could save you at the airport
With ARKit, we created an app to measure your bags and tell you if they'll cost you extra at the airport. Learn about every step of the development process.
Kiwi.com’s Internal IoT Hackathon
One of the Kiwi.com Slack channels is dedicated to crazy ad hoc ideas where anyone within the company can share a project they’d like to see implemented. Based on those ideas we organised an IoT hack.
Relay Modern data flow visualized
When you start working with Relay Modern it is really important to understand the data flow concept first. I will explain this with some cute diagrams from my recent BarcelonaJS talk. I hope you fall…