<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on code.kiwi.com</title><link>https://code.kiwi.com/tag/engineering/</link><description>Recent content in Engineering on code.kiwi.com</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 28 Nov 2023 08:54:13 +0000</lastBuildDate><atom:link href="https://code.kiwi.com/tag/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>The Relevance Of Tech Conferences In A Post Pandemic World</title><link>https://code.kiwi.com/articles/the-relevance-of-tech-conferences-in-a-post-pandemic-world/</link><pubDate>Tue, 28 Nov 2023 08:54:02 +0000</pubDate><guid>https://code.kiwi.com/articles/the-relevance-of-tech-conferences-in-a-post-pandemic-world/</guid><description>&lt;p&gt;This September, I wrapped up this year speaker tour in Prague at PyCON CZ. The conference hit an all time record of 596 attendees. I was fortunate enough that my talk &lt;a href="https://www.linkedin.com/pulse/codename-tulip-making-async-alvaro-duran-barata"&gt;Codename Tulip: The Making of Async&lt;/a&gt; was accepted for the event, and based on the feedback, it was very well received.&lt;/p&gt;</description></item><item><title>Airflow Summit 2023: A Snapshot of the Technical Feast in Toronto</title><link>https://code.kiwi.com/articles/airflow-summit-2023-a-snapshot-of-the-technical-feast-in-toronto/</link><pubDate>Tue, 10 Oct 2023 12:59:40 +0000</pubDate><guid>https://code.kiwi.com/articles/airflow-summit-2023-a-snapshot-of-the-technical-feast-in-toronto/</guid><description>&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/8cb754cc0e5e7e996385f8d67a94fbfff988763cb47bb27ce4f2675a0c35f464.webp" alt=""&gt;&lt;/p&gt;
&lt;h2 id="the-open-source-community-atmosphere"&gt;The Open Source Community Atmosphere&lt;/h2&gt;&lt;p&gt;One of the first things that struck us was the remarkable open source community atmosphere at the Airflow Summit. Giant tech players such as AWS, Google, and IBM took the stage, proudly discussing their collaborative contributions to the open-source world, particularly in the context of Apache Airflow. It was refreshing to witness these industry giants set aside competition and focus on the common goal of advancing open-source technology. This spirit of cooperation benefits everyone involved, although achieving such harmony can be challenging, especially in profit-oriented companies.&lt;/p&gt;</description></item><item><title>Codename Tulip: The Making of Async</title><link>https://code.kiwi.com/articles/codename-tulip-the-making-of-async/</link><pubDate>Mon, 25 Sep 2023 07:59:49 +0000</pubDate><guid>https://code.kiwi.com/articles/codename-tulip-the-making-of-async/</guid><description>&lt;p&gt;Here's a loose transcript of the talk, with the slides.&lt;/p&gt;
&lt;div class="embed"&gt;&lt;iframe src="https://www.youtube.com/embed/_oNgyUAEv0Q?feature=oembed" title="your scientists were so preoccupied" loading="lazy" allow="fullscreen; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Today I’m going to talk about asynchronous programming. I promise you that after this talk, you’ll be able to write software under this paradigm much more effectively, thanks to a better intuition about it.&lt;/p&gt;</description></item><item><title>Why Trust is More than Agility</title><link>https://code.kiwi.com/articles/why-trust-is-more-than-agility/</link><pubDate>Fri, 22 Sep 2023 09:12:18 +0000</pubDate><guid>https://code.kiwi.com/articles/why-trust-is-more-than-agility/</guid><description>&lt;h2 id="on-trust-between-engineering-and-management"&gt;On trust between engineering and management&lt;/h2&gt;&lt;p&gt;If management requires teams to adhere to a common agile standard, they likely don’t trust the teams. Instead of fixing their relationship with the teams, management slaps a process on top, creating a &lt;strong&gt;sense of control&lt;/strong&gt;. This will seemingly work for a scaling company sitting on a revenue stream because money still flows. However, from then on, the company will rely on the value created in the past and a vast marketing/sales spend. A breaking point will come when they hold all the meetings they are supposed to, all the sprints have 100% committed delivery, and the company is bleeding money. Damnit agile! We are supposed to be making it right according to our KPIs, OKRs, MBOs, CSFs, ROIs, …!&lt;/p&gt;</description></item><item><title>Pentesting, part 1: What is pentesting?</title><link>https://code.kiwi.com/articles/pentesting-part-1-what-is-pentesting/</link><pubDate>Mon, 10 Oct 2022 20:27:00 +0000</pubDate><guid>https://code.kiwi.com/articles/pentesting-part-1-what-is-pentesting/</guid><description>&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/fd64bea30d0de55373c66bf91d1f24555f831e54c1f55420f828fc7aa24e70d6.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;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 activities? Want to hear all about it with a bit of a snarky attitude and in “human” language?&lt;/p&gt;</description></item><item><title>Type-safe arguments in Jetpack Navigation Compose</title><link>https://code.kiwi.com/articles/type-safe-arguments-in-jetpack-navigation-compose/</link><pubDate>Sun, 02 Oct 2022 20:07:00 +0000</pubDate><guid>https://code.kiwi.com/articles/type-safe-arguments-in-jetpack-navigation-compose/</guid><description>&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/5d148e7ef2f4eb230a0ff66b9bf4293331ee6e32df53ef43b93d1a9cb879117d.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;NavigationComposeTyped in action&lt;/p&gt;
&lt;p&gt;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 importantly, there are no SafeArgs — a type-safe compile time solution for passing arguments between destinations. Navigation for Compose uses a simple URL pattern — &lt;strong&gt;arguments have to be converted to a string as a query parameter/path segment&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Feature flag and A/B test management in the iOS app</title><link>https://code.kiwi.com/articles/feature-flag-and-a-b-test-management-in-the-ios-app/</link><pubDate>Wed, 31 Aug 2022 20:10:00 +0000</pubDate><guid>https://code.kiwi.com/articles/feature-flag-and-a-b-test-management-in-the-ios-app/</guid><description>&lt;p&gt;In bigger apps, there is often a need for using &lt;a href="https://en.wikipedia.org/wiki/Feature_toggle"&gt;feature flags&lt;/a&gt;. 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 data provider. The one we were using wasn't up to the task, so we set out to create a better one.&lt;/p&gt;</description></item><item><title>Rewriting Android App’s Back-Handling Logic</title><link>https://code.kiwi.com/articles/rewriting-android-apps-back-handling-logic/</link><pubDate>Tue, 29 Mar 2022 20:04:00 +0000</pubDate><guid>https://code.kiwi.com/articles/rewriting-android-apps-back-handling-logic/</guid><description>&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>Page Objects for E2E Android UI testing</title><link>https://code.kiwi.com/articles/page-objects-for-e2e-android-ui-testing/</link><pubDate>Mon, 14 Mar 2022 20:22:00 +0000</pubDate><guid>https://code.kiwi.com/articles/page-objects-for-e2e-android-ui-testing/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;“Page Object” is a design pattern abstraction over a particular screen: it provides access to read the screen’s data and provides an API to interact with the screen. You may read the &lt;a href="https://martinfowler.com/bliki/PageObject.html"&gt;pattern description on Martin Fowler’s site&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Marking it up ???? — Overview of web app rendering techniques</title><link>https://code.kiwi.com/articles/marking-it-up-%F0%9F%92%85-overview-of-web-app-rendering-techniques/</link><pubDate>Tue, 08 Mar 2022 20:19:00 +0000</pubDate><guid>https://code.kiwi.com/articles/marking-it-up-%F0%9F%92%85-overview-of-web-app-rendering-techniques/</guid><description>&lt;p&gt;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 &lt;strong&gt;SEO&lt;/strong&gt; and &lt;strong&gt;performance&lt;/strong&gt;, so brew yourself a nice cup of tea and pay attention.&lt;/p&gt;</description></item><item><title>Kiwi's Google Data Catalogue Adoption Journey</title><link>https://code.kiwi.com/articles/kiwis-google-data-catalogue-adoption-journey/</link><pubDate>Tue, 24 Aug 2021 19:49:00 +0000</pubDate><guid>https://code.kiwi.com/articles/kiwis-google-data-catalogue-adoption-journey/</guid><description>&lt;p&gt;Production experience with Google Data Catalogue at Kiwi.com&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/cb7b36ab60d50664c523494b21acad21313b869b7ffd3ad07fca8f460bf194b7.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@chuttersnap?utm_source=medium&amp;amp;utm_medium=referral"&gt;CHUTTERSNAP&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=medium&amp;amp;utm_medium=referral"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;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 hand with the right usage of a tool and with understanding its limitations.&lt;/p&gt;</description></item><item><title>CatBoost C++ library</title><link>https://code.kiwi.com/articles/catboost-c-library/</link><pubDate>Tue, 20 Apr 2021 19:51:00 +0000</pubDate><guid>https://code.kiwi.com/articles/catboost-c-library/</guid><description>&lt;p&gt;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 vectorization instructions.&lt;/p&gt;
&lt;p&gt;Kiwi.com open sourced a new &lt;a href="https://github.com/kiwicom/catboost-cxx"&gt;CatBoost applying library&lt;/a&gt; written in C++ with reasonably good optimizations and without dependencies. It means you can use this library in your projects to apply CatBoost models without huge catboost official library dependency. Moreover, it is possible to integrate this library into your build process.&lt;/p&gt;</description></item><item><title>Nonstop Operations with Scylla Even Through the OVHcloud Fire</title><link>https://code.kiwi.com/articles/nonstop-operations-with-scylla-even-through-the-ovhcloud-fire/</link><pubDate>Tue, 23 Mar 2021 19:53:00 +0000</pubDate><guid>https://code.kiwi.com/articles/nonstop-operations-with-scylla-even-through-the-ovhcloud-fire/</guid><description>&lt;blockquote&gt;
&lt;p&gt;This article was originally published on &lt;a href="https://www.scylladb.com/2021/03/23/kiwi-com-nonstop-operations-with-scylla-even-through-the-ovhcloud-fire/"&gt;ScyllaDB blog&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;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 initial report of our company's resiliency in the face of that disaster.&lt;/p&gt;</description></item><item><title>How to Download a Brain with Pair Documenting</title><link>https://code.kiwi.com/articles/how-to-download-a-brain-with-pair-documenting/</link><pubDate>Thu, 11 Mar 2021 20:01:00 +0000</pubDate><guid>https://code.kiwi.com/articles/how-to-download-a-brain-with-pair-documenting/</guid><description>&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href="https://www.robincussol.com/download-a-brain-with-pair-documenting/"&gt;&lt;em&gt;https://www.robincussol.com&lt;/em&gt;&lt;/a&gt; &lt;em&gt;on March 11, 2021.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/9da09b3abb29ba89aab6398a0996c5c22ea3cef173d3fc27d7ecf15cee54a81a.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;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 during exit interviews to make up for it.&lt;/p&gt;</description></item><item><title>Cypress.io quick tip: Put elements in the context</title><link>https://code.kiwi.com/articles/cypress-io-quick-tip-put-elements-in-the-context/</link><pubDate>Thu, 11 Mar 2021 19:46:00 +0000</pubDate><guid>https://code.kiwi.com/articles/cypress-io-quick-tip-put-elements-in-the-context/</guid><description>&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/901a6d2783205128db08f1e8fe50efd1584951e203b61887cba3473123a07309.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Let’s take a page with multiple elements that have the same unique attribute and you want to interact with each of them separately.&lt;/p&gt;
&lt;p&gt;In our case, we want to book a flight for a family of three passengers — male, female, and an infant, so we need to fill in three forms.&lt;/p&gt;</description></item><item><title>Skip the UI using API calls</title><link>https://code.kiwi.com/articles/skip-the-ui-using-api-calls/</link><pubDate>Thu, 11 Feb 2021 19:27:00 +0000</pubDate><guid>https://code.kiwi.com/articles/skip-the-ui-using-api-calls/</guid><description>&lt;p&gt;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 path, you may fall into the trap of automating all the actions in your automated tests only through the user interface (UI).&lt;/p&gt;</description></item><item><title>Kiwi.com Nomad — the synergy between science, technology, and creativity.</title><link>https://code.kiwi.com/articles/kiwi-com-nomad-the-synergy-between-science-technology-and-creativity/</link><pubDate>Thu, 10 Dec 2020 19:22:00 +0000</pubDate><guid>https://code.kiwi.com/articles/kiwi-com-nomad-the-synergy-between-science-technology-and-creativity/</guid><description>&lt;p&gt;&lt;em&gt;Interview with Jan Plhák, Kiwi.com Principal Enginee&lt;/em&gt;r&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/c85f817f87b71714fa9399597db1b6490344c75d5e5a83eba9a893c2241deeb1.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;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 centuries, however, technology has allowed improving search capabilities leading to a better customer experience. We met with Jan Plhák, Kiwi.com Principal Engineer, to discuss how the synergy between science and modern technology has allowed creating Nomad — a product that brought a new perspective to a standard Multi City search.&lt;/p&gt;</description></item><item><title>Pytest Cassettes: Forget about mocks or live requests</title><link>https://code.kiwi.com/articles/pytest-cassettes-forget-about-mocks-or-live-requests/</link><pubDate>Tue, 24 Nov 2020 19:12:00 +0000</pubDate><guid>https://code.kiwi.com/articles/pytest-cassettes-forget-about-mocks-or-live-requests/</guid><description>&lt;p&gt;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 communication? Priceless!&lt;/p&gt;</description></item><item><title>Covid-19 and its impact on Engineering work at Kiwi.com</title><link>https://code.kiwi.com/articles/covid-19-and-its-impact-on-engineering-work-at-kiwi-com/</link><pubDate>Fri, 16 Oct 2020 19:10:00 +0000</pubDate><guid>https://code.kiwi.com/articles/covid-19-and-its-impact-on-engineering-work-at-kiwi-com/</guid><description>&lt;p&gt;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 there is more room for error. We chatted with our VP of Engineering, Stanislav Komanec to learn more about the tricks used in Engineering to fight-back against the situation.&lt;/p&gt;</description></item><item><title>From coding the first Kiwi.com algorithms to “But does it scale”?</title><link>https://code.kiwi.com/articles/from-coding-the-first-kiwi-com-algorithms-to-but-does-it-scale/</link><pubDate>Mon, 31 Aug 2020 18:50:00 +0000</pubDate><guid>https://code.kiwi.com/articles/from-coding-the-first-kiwi-com-algorithms-to-but-does-it-scale/</guid><description>&lt;p&gt;&lt;em&gt;An interview with Kiwi.com’s CTO, Jozef Képesi&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;JK, as everyone in the company calls him, is 8 years wiser but when speaking to him, you still feel the startup vibe.&lt;/p&gt;
&lt;p&gt;Learn more about him and his approach to leading the engineering team of one of the fastest-growing Czech startups.&lt;/p&gt;</description></item><item><title>Kiwi.com to offer a clear career path to every engineer</title><link>https://code.kiwi.com/articles/kiwi-com-to-offer-a-clear-career-path-to-every-engineer/</link><pubDate>Wed, 05 Aug 2020 18:55:00 +0000</pubDate><guid>https://code.kiwi.com/articles/kiwi-com-to-offer-a-clear-career-path-to-every-engineer/</guid><description>&lt;p&gt;In the past years, our engineers in Kiwi.com felt that they lack proper support in career growth. &lt;strong&gt;Many of them felt stuck&lt;/strong&gt; and they did not know how to move forward with their careers.&lt;/p&gt;
&lt;p&gt;This was part of a &lt;strong&gt;bigger problem&lt;/strong&gt;: We were missing comprehensive processes and mechanisms around performance evaluation, promotions, compensation, and general career growth. This was still a legacy of &lt;a href="https://www.kiwi.com/"&gt;Kiwi.com&lt;/a&gt;’s early start-up times when everything, including compensation and promotions, was rather chaotic and organic.&lt;/p&gt;</description></item><item><title>Kubernetes goodies for your local workspace</title><link>https://code.kiwi.com/articles/kubernetes-goodies-for-your-local-workspace/</link><pubDate>Tue, 22 Oct 2019 18:06:00 +0000</pubDate><guid>https://code.kiwi.com/articles/kubernetes-goodies-for-your-local-workspace/</guid><description>&lt;p&gt;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 who are trying to get the most out of Kubernetes. We use this setup at &lt;a href="https://kiwi.com/"&gt;kiwi.com&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How I learned to stop worrying and love test-driven development</title><link>https://code.kiwi.com/articles/how-i-learned-to-stop-worrying-and-love-test-driven-development/</link><pubDate>Fri, 09 Aug 2019 17:55:00 +0000</pubDate><guid>https://code.kiwi.com/articles/how-i-learned-to-stop-worrying-and-love-test-driven-development/</guid><description>&lt;p&gt;Test-driven development (TDD) is not a new technique, but it is still not very widespread — neither is it well understood. Many people are only discovering it now, and many of them give up because the way they implement it doesn’t work for them.&lt;/p&gt;</description></item><item><title>Engineering adventure in Brno</title><link>https://code.kiwi.com/articles/engineering-adventure-in-brno/</link><pubDate>Mon, 18 Sep 2017 22:13:00 +0000</pubDate><guid>https://code.kiwi.com/articles/engineering-adventure-in-brno/</guid><description>&lt;p&gt;Brno hosted the final round of &lt;a href="https://ebec.best.eu.org/"&gt;EBEC 2017&lt;/a&gt; — Europe’s biggest engineering competition.&lt;/p&gt;
&lt;p&gt;More than one hundred tech students from all over Europe descended on Brno in early August. Their mission was to find creative solutions for engineering tasks and compete for the coveted title of &lt;strong&gt;“European Champions of Technology”.&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>