<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Development on code.kiwi.com</title><link>https://code.kiwi.com/tag/development/</link><description>Recent content in Development on code.kiwi.com</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 15 May 2024 12:15:25 +0000</lastBuildDate><atom:link href="https://code.kiwi.com/tag/development/index.xml" rel="self" type="application/rss+xml"/><item><title>Swift 5.10 Concurrency Survival Guide</title><link>https://code.kiwi.com/articles/swift-5-10-concurrency-survival-guide/</link><pubDate>Wed, 27 Mar 2024 12:54:34 +0000</pubDate><guid>https://code.kiwi.com/articles/swift-5-10-concurrency-survival-guide/</guid><description>&lt;p&gt;This pattern was broken a few years ago when new versions of Swift started coming out in point updates. Xcode 15.3 includes Swift 5.10. Reading through the &lt;a href="https://developer.apple.com/documentation/xcode-release-notes/xcode-15_3-release-notes"&gt;release notes&lt;/a&gt;, one can find a few mentions of concurrency, such as:&lt;/p&gt;</description></item><item><title>Generating SwiftUI snapshot tests with Swift macros</title><link>https://code.kiwi.com/articles/generating-swiftui-snapshot-tests-with-swift-macros/</link><pubDate>Thu, 15 Feb 2024 11:38:09 +0000</pubDate><guid>https://code.kiwi.com/articles/generating-swiftui-snapshot-tests-with-swift-macros/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Note: Xcode currently does not offer native support for snapshot testing. This can be remedied by using third party library, such as &lt;a href="https://github.com/pointfreeco/swift-snapshot-testing"&gt;swift-snapshot-testing&lt;/a&gt;. This library is being used in following code examples.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="problem"&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;SwiftUI preview and snapshot test code live in different targets and often in different packages, especially when dealing with modular architecture.&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>Working in Units</title><link>https://code.kiwi.com/articles/working-in-units/</link><pubDate>Tue, 01 Aug 2023 10:38:24 +0000</pubDate><guid>https://code.kiwi.com/articles/working-in-units/</guid><description>&lt;div class="embed"&gt;&lt;iframe src="https://www.youtube-nocookie.com/embed/nLQoxqENbgg" title="Video" loading="lazy" allow="fullscreen; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;See the whole talk on YouTube!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/fbbd1efb81534d8cd03070715770fd5427e2bfa639fe202390f15ffc744c5e1a.webp" alt="No alt text provided for this image"&gt;&lt;/p&gt;
&lt;p&gt;Do you deal with &lt;strong&gt;Data&lt;/strong&gt; problems at work, or with &lt;strong&gt;CPU&lt;/strong&gt; problems? It's an absurd question. But engineers used to raise the most hands at the second question, not the first.&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>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>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>It’s Hacktoberfest time!</title><link>https://code.kiwi.com/articles/its-hacktoberfest-time/</link><pubDate>Thu, 01 Oct 2020 19:09:00 +0000</pubDate><guid>https://code.kiwi.com/articles/its-hacktoberfest-time/</guid><description>&lt;p&gt;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 community. We are very excited to be again part of it for the second year. ????&lt;/p&gt;</description></item><item><title>Hacking Node.js legacy URL API</title><link>https://code.kiwi.com/articles/hacking-node-js-legacy-url-api/</link><pubDate>Mon, 07 Sep 2020 19:53:00 +0000</pubDate><guid>https://code.kiwi.com/articles/hacking-node-js-legacy-url-api/</guid><description>&lt;blockquote&gt;
&lt;p&gt;How to bypass hostname verification to exploit allowlist functions&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&lt;p&gt;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 loss of customers’ trust.&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>Towards secure by default Google Cloud: Default service accounts</title><link>https://code.kiwi.com/articles/towards-secure-by-default-google-cloud-default-service-accounts/</link><pubDate>Mon, 24 Aug 2020 18:51:00 +0000</pubDate><guid>https://code.kiwi.com/articles/towards-secure-by-default-google-cloud-default-service-accounts/</guid><description>&lt;p&gt;Have you heard that Cloud XYZ is secure because smart engineers in XYZ have made it that way? Unfortunately, as with many other products, &lt;strong&gt;this isn’t exactly true when you rely on the defaults&lt;/strong&gt;. In this article, I’ll give you one specific example from Google Cloud Platform, along with a recommendation on how you can address it.&lt;/p&gt;</description></item><item><title>Developing a travel-related game in 6 days using Flutter</title><link>https://code.kiwi.com/articles/developing-a-travel-related-game-in-6-days-using-flutter/</link><pubDate>Mon, 17 Aug 2020 18:57:00 +0000</pubDate><guid>https://code.kiwi.com/articles/developing-a-travel-related-game-in-6-days-using-flutter/</guid><description>&lt;h2 id="how-to-develop-an-application-for-android-ios-and-web-with-the-same-code"&gt;How to develop an application for Android, iOS, and web with the same code.&lt;/h2&gt;&lt;p&gt;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 Airline Manager, you can manage your airline — buy &amp;amp; sell airplanes, claim flight offers, earn coins and XP levels. Try the alfa-version by yourself on &lt;a href="https://play.google.com/store/apps/details?id=com.krcek.matej.airlinemanager"&gt;Google Play&lt;/a&gt;.&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>GraphQL 101 Challenge</title><link>https://code.kiwi.com/articles/graphql-101-challenge/</link><pubDate>Wed, 15 Jul 2020 18:47:00 +0000</pubDate><guid>https://code.kiwi.com/articles/graphql-101-challenge/</guid><description>&lt;h2 id="a-practical-introduction-to-graphql-not-only-for-qa-engineers"&gt;A practical introduction to GraphQL (not only) for QA engineers&lt;/h2&gt;&lt;p&gt;REST was born in 2000 as Roy Fielding wanted to define the standardized way of API communication. In 2015 Facebook internally developed GraphQL as a modern and scalable way of communication between client and server. &lt;a href="http://kiwi.com/"&gt;Kiwi.com&lt;/a&gt; adopted it for some products as well and in this article, you’ll understand in a practical way, what GraphQL is all about. You’ll learn:&lt;/p&gt;</description></item><item><title>Inbox Zero and Message Throttling in Slack</title><link>https://code.kiwi.com/articles/inbox-zero-and-message-throttling-in-slack/</link><pubDate>Tue, 23 Jun 2020 18:46:00 +0000</pubDate><guid>https://code.kiwi.com/articles/inbox-zero-and-message-throttling-in-slack/</guid><description>&lt;p&gt;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, &lt;strong&gt;if you feel overwhelmed by the constant influx of Slack messages and your mind gets anxiety attacks from the endless list of unread channels&lt;/strong&gt;, then I may have a little trick for you.&lt;/p&gt;</description></item><item><title>Find a flight using Kiwi.com and Postman</title><link>https://code.kiwi.com/articles/find-a-flight-using-kiwi-com-and-postman/</link><pubDate>Mon, 15 Jun 2020 18:42:00 +0000</pubDate><guid>https://code.kiwi.com/articles/find-a-flight-using-kiwi-com-and-postman/</guid><description>&lt;p&gt;✈️ How long does it take Kiwi.com to find you a flight from Iceland to Mongolia?&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/27a964b8ad71900ceee45c2db34fac90c2c1df3d26092b7f96963a0514571a03.webp" alt=""&gt;&lt;/p&gt;
&lt;h2 id="-prerequisites"&gt;???? Prerequisites&lt;/h2&gt;&lt;p&gt;As preparation, follow these &lt;strong&gt;2 simple steps&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;✅ &lt;a href="https://www.postman.com/downloads/"&gt;download, install &amp;amp; register at Postman&lt;/a&gt; (5 minutes )&lt;/p&gt;
&lt;p&gt;✅ open &lt;a href="https://airportcod.es/"&gt;this site&lt;/a&gt; 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)&lt;/p&gt;</description></item><item><title>5 Reasons to Write a Document Before Writing Code</title><link>https://code.kiwi.com/articles/5-reasons-to-write-a-document-before-writing-code/</link><pubDate>Wed, 22 Apr 2020 18:39:00 +0000</pubDate><guid>https://code.kiwi.com/articles/5-reasons-to-write-a-document-before-writing-code/</guid><description>&lt;p&gt;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:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ain’t nobody got time for that. We need to write code.&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>Readability counts even in code reviews</title><link>https://code.kiwi.com/articles/readability-counts-even-in-code-reviews/</link><pubDate>Fri, 23 Aug 2019 17:58:00 +0000</pubDate><guid>https://code.kiwi.com/articles/readability-counts-even-in-code-reviews/</guid><description>&lt;p&gt;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 (maximum time spent on a code review or a number of lines read at a time, creating checklists, etc.), or which tools can help you speed up your code reviews (like automated coding standard checks in pipelines).&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>Pushing static type checking in Python one step further</title><link>https://code.kiwi.com/articles/pushing-static-type-checking-in-python-one-step-further/</link><pubDate>Mon, 27 May 2019 21:41:30 +0000</pubDate><guid>https://code.kiwi.com/articles/pushing-static-type-checking-in-python-one-step-further/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: although there are multiple static type checkers for Python available nowadays (such as&lt;/em&gt; &lt;a href="https://github.com/facebook/pyre-check"&gt;&lt;em&gt;pyre&lt;/em&gt;&lt;/a&gt; &lt;em&gt;and&lt;/em&gt; &lt;a href="https://github.com/Microsoft/pyright"&gt;&lt;em&gt;pyright&lt;/em&gt;&lt;/a&gt;&lt;em&gt;), this article assumes the usage of&lt;/em&gt; &lt;a href="https://github.com/python/mypy"&gt;&lt;em&gt;mypy&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Relay and GraphQL best practices</title><link>https://code.kiwi.com/articles/relay-and-graphql-best-practices/</link><pubDate>Wed, 10 Apr 2019 21:21:00 +0000</pubDate><guid>https://code.kiwi.com/articles/relay-and-graphql-best-practices/</guid><description>&lt;p&gt;&lt;em&gt;Check the videos from our internal, one-day workshop to learn more about proper usage and best practices around GraphQL and Relay.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/6b623cdcaeeb17361a6c3c70f467652f230ffd937b8763a17f2e4e7221abbb1f.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Sharing is caring, that’s what triggered our internal one-day workshop which aim was to share knowledge between our JS developers. The goal of the first round was to show proper usage and best practices around GraphQL and Relay as we expect these technologies to be used more and more shortly.&lt;/p&gt;</description></item><item><title>Say goodbye to loops with ‘reduce’ ????</title><link>https://code.kiwi.com/articles/say-goodbye-to-loops-with-reduce-%F0%9F%91%8B/</link><pubDate>Thu, 28 Mar 2019 21:18:00 +0000</pubDate><guid>https://code.kiwi.com/articles/say-goodbye-to-loops-with-reduce-%F0%9F%91%8B/</guid><description>&lt;p&gt;If you’re starting with functional programming and don’t know where to continue after &lt;code&gt;map&lt;/code&gt; and &lt;code&gt;filter&lt;/code&gt;, go with &lt;code&gt;reduce&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/b2901aab410d7ff2d493f31831acb3ff9d5f0b41ab490ef0533c8151153f3e89.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;–Do you insist on using the image of the cat? –Yes, I do. Reflects the essence of functional programming. Source: &lt;a href="https://farm6.staticflickr.com/5185/5619954191_565779cf5d_b.jpg"&gt;https://farm6.staticflickr.com/5185/5619954191_565779cf5d_b.jpg&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Forget the tape measure, use your phone instead</title><link>https://code.kiwi.com/articles/forget-the-tape-measure-use-your-phone-instead/</link><pubDate>Thu, 14 Feb 2019 21:10:00 +0000</pubDate><guid>https://code.kiwi.com/articles/forget-the-tape-measure-use-your-phone-instead/</guid><description>&lt;p&gt;&lt;em&gt;How we developed an AR feature that measures your bags with an iOS or Android smartphone&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Recently, 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 at the airport.&lt;/p&gt;</description></item><item><title>Events in 2019</title><link>https://code.kiwi.com/articles/events-in-2019/</link><pubDate>Thu, 17 Jan 2019 21:04:00 +0000</pubDate><guid>https://code.kiwi.com/articles/events-in-2019/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;To see more IT-related events, check this &lt;a href="https://calendar.google.com/calendar/embed?src=skypicker.com_dq9oupgj7ngbo0j41b0smoc0dk%40group.calendar.google.com&amp;amp;ctz=Europe/Prague"&gt;IT calendar&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Travelling Salesman Challenge 2.0 wrap-up</title><link>https://code.kiwi.com/articles/travelling-salesman-challenge-2-0-wrap-up/</link><pubDate>Fri, 30 Nov 2018 12:04:00 +0000</pubDate><guid>https://code.kiwi.com/articles/travelling-salesman-challenge-2-0-wrap-up/</guid><description>&lt;p&gt;&lt;em&gt;How we found the winners of a trip around the world based on an algorithm they wrote&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/041139f5dfd465a251f624e43c65c804ac249abdba69812eb353bcd5aa48770e.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;</description></item><item><title>Win a trip around the world based on an algorithm you write!</title><link>https://code.kiwi.com/articles/win-a-trip-around-the-world-based-on-an-algorithm-you-write/</link><pubDate>Tue, 09 Oct 2018 12:02:00 +0000</pubDate><guid>https://code.kiwi.com/articles/win-a-trip-around-the-world-based-on-an-algorithm-you-write/</guid><description>&lt;p&gt;Do you love a challenge? Good news, our &lt;a href="http://travellingsalesman.kiwi.com/"&gt;Travelling Salesman Challenge&lt;/a&gt; is back! 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.&lt;/p&gt;</description></item><item><title>Testable code: making the (testing) world better</title><link>https://code.kiwi.com/articles/testable-code-making-the-testing-world-better/</link><pubDate>Thu, 23 Aug 2018 11:34:00 +0000</pubDate><guid>https://code.kiwi.com/articles/testable-code-making-the-testing-world-better/</guid><description>&lt;h2 id="testable-code-making-the-testing-world-better"&gt;Testable code: making the (testing) world better&lt;/h2&gt;&lt;p&gt;What does it mean to have testable code? In general, it means, that the code is easy to test and it’s easy to set up a testing environment. Sometimes it’s 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, and reliable.&lt;/p&gt;</description></item><item><title>Solve our coding challenge and get a free ticket for WebExpo</title><link>https://code.kiwi.com/articles/solve-our-coding-challenge-and-get-a-free-ticket-for-webexpo-2/</link><pubDate>Fri, 17 Aug 2018 20:49:00 +0000</pubDate><guid>https://code.kiwi.com/articles/solve-our-coding-challenge-and-get-a-free-ticket-for-webexpo-2/</guid><description>&lt;p&gt;Today’s your lucky day because we’re giving away a ticket to &lt;a href="https://www.webexpo.net/"&gt;WebExpo&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;But we don't just want to award it to the fastest clicker or through a random raffle, so we’ve prepared a colour mixing challenge for you.&lt;/p&gt;</description></item><item><title>Solve our coding challenge and get a free ticket for WebExpo</title><link>https://code.kiwi.com/articles/solve-our-coding-challenge-and-get-a-free-ticket-for-webexpo/</link><pubDate>Tue, 14 Aug 2018 11:44:00 +0000</pubDate><guid>https://code.kiwi.com/articles/solve-our-coding-challenge-and-get-a-free-ticket-for-webexpo/</guid><description>&lt;p&gt;Today’s your lucky day because we’re giving away a ticket to &lt;a href="https://www.webexpo.net/"&gt;WebExpo&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;But we don't just want to award it to the fastest clicker or through a random raffle, so we’ve prepared a colour mixing challenge for you.&lt;/p&gt;</description></item><item><title>ZuriHac 2018: getting to know the Haskell community</title><link>https://code.kiwi.com/articles/zurihac-2018-getting-to-know-the-haskell-community/</link><pubDate>Wed, 11 Jul 2018 11:27:00 +0000</pubDate><guid>https://code.kiwi.com/articles/zurihac-2018-getting-to-know-the-haskell-community/</guid><description>&lt;p&gt;&lt;em&gt;Kiwi.com’s Backend Developer Dimitri Herrero sums up a Haskell event that he attended in June. He describes the unique atmosphere of this untraditional hackathon and provides tips on how to start using Haskell.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Since I’m a huge Haskell fan, I couldn’t miss ZuriHac 2018, one of the biggest Haskell events around. It defines itself as a “collaborative coding festival whose goal is to expand the community and to build and improve Haskell libraries, tools, and infrastructure”.&lt;/p&gt;</description></item><item><title>How ARKit could save you at the airport</title><link>https://code.kiwi.com/articles/how-arkit-could-save-you-at-the-airport/</link><pubDate>Wed, 09 May 2018 11:11:00 +0000</pubDate><guid>https://code.kiwi.com/articles/how-arkit-could-save-you-at-the-airport/</guid><description>&lt;p&gt;Back in the summer of 2017 when ARKit was all the rage, Kiwi.com’s Mobile Team was on board the hype train too. We were trying to think of a cool new feature to create and I was tasked with developing it.&lt;/p&gt;</description></item><item><title>Relay Modern data flow visualized</title><link>https://code.kiwi.com/articles/relay-modern-data-flow-visualized/</link><pubDate>Mon, 19 Mar 2018 11:04:00 +0000</pubDate><guid>https://code.kiwi.com/articles/relay-modern-data-flow-visualized/</guid><description>&lt;p&gt;When you start working with &lt;strong&gt;Relay Modern&lt;/strong&gt; it is really important to understand the &lt;strong&gt;data flow&lt;/strong&gt; concept first. I will explain this with some cute diagrams from my recent &lt;a href="https://www.meetup.com/BarcelonaJS/events/247277405/"&gt;BarcelonaJS&lt;/a&gt; talk. I hope you fall in love with Relay Modern after wrapping your head around its main idea.&lt;/p&gt;</description></item><item><title>Announcing Crane — a GitLab CI-ready image for deploying to Rancher</title><link>https://code.kiwi.com/articles/announcing-crane-a-gitlab-ci-ready-image-for-deploying-to-rancher/</link><pubDate>Mon, 26 Feb 2018 10:54:00 +0000</pubDate><guid>https://code.kiwi.com/articles/announcing-crane-a-gitlab-ci-ready-image-for-deploying-to-rancher/</guid><description>&lt;p&gt;We’re happy to finally write about our latest larger-scale open source project: &lt;a href="https://github.com/kiwicom/crane"&gt;Crane&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We use &lt;a href="https://rancher.com/"&gt;Rancher&lt;/a&gt; for container orchestration extensively at &lt;a href="https://www.kiwi.com/"&gt;Kiwi.com&lt;/a&gt;, and saw a need to streamline our release process. Even though Rancher’s sweet web UI makes the manual upgrade procedure at least &lt;em&gt;bearable&lt;/em&gt;, there’s still plenty of things to manage around announcing and recording deployments. Crane is our attempt at automating as much of this as possible.&lt;/p&gt;</description></item><item><title>IDX + GraphQL = ❤️</title><link>https://code.kiwi.com/articles/idx-graphql-%E2%9D%A4%EF%B8%8F/</link><pubDate>Fri, 23 Feb 2018 10:57:00 +0000</pubDate><guid>https://code.kiwi.com/articles/idx-graphql-%E2%9D%A4%EF%B8%8F/</guid><description>&lt;p&gt;&lt;a href="https://github.com/facebookincubator/idx"&gt;IDX&lt;/a&gt; is a library for accessing arbitrarily nested, possibly nullable properties on a JavaScript object. At least this is how it is described in the documentation. What does this mean in reality and why is it such a big problem in JavaScript? And why is it so important when working with GraphQL?&lt;/p&gt;</description></item><item><title>Our Comprehensive Guide to Python Dependencies</title><link>https://code.kiwi.com/articles/our-comprehensive-guide-to-python-dependencies/</link><pubDate>Thu, 15 Feb 2018 10:52:00 +0000</pubDate><guid>https://code.kiwi.com/articles/our-comprehensive-guide-to-python-dependencies/</guid><description>&lt;p&gt;&lt;em&gt;The following article is from Kiwi.com’s internal engineering handbook. We thought it could come in handy for others as well, so we decided to share it with the world here, like&lt;/em&gt; &lt;a href="https://code.kiwi.com/code-design-principles-for-public-apis-of-modules-6a43aaf26624"&gt;&lt;em&gt;we’ve done before&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="a-refresher-on-the-basics"&gt;A refresher on the basics&lt;/h2&gt;&lt;h3 id="what-are-requirements"&gt;What are requirements?&lt;/h3&gt;&lt;p&gt;They are usually stored in &lt;code&gt;requirements.txt&lt;/code&gt; as a list of 3rd party apps which your project depends on. An example of a requirements file:&lt;/p&gt;</description></item><item><title>GraphQL pitfalls</title><link>https://code.kiwi.com/articles/graphql-pitfalls/</link><pubDate>Tue, 30 Jan 2018 10:31:00 +0000</pubDate><guid>https://code.kiwi.com/articles/graphql-pitfalls/</guid><description>&lt;p&gt;First of all, I love GraphQL and none of these pitfalls forced me to stop using it. Actually, I am trying hard to overcome these pitfalls by using it even more in order to find the best solutions and practices. But still, I’ve been faced with these challenging questions almost every day for more than a year and it makes me think.&lt;/p&gt;</description></item><item><title>GraphQL: Server-side Subscriptions</title><link>https://code.kiwi.com/articles/graphql-server-side-subscriptions/</link><pubDate>Mon, 15 Jan 2018 10:36:00 +0000</pubDate><guid>https://code.kiwi.com/articles/graphql-server-side-subscriptions/</guid><description>&lt;p&gt;OK, it’s 2k18 and everyone has already heard about GraphQL at least once. Maybe from your colleagues or even from some gopnik guys from the unfavourable areas of your city. GraphQL hype is everywhere.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/11583a6cd915ccb0e79c91a276f36f459a832e2ba8559b7e2a2be0505315167b.webp" alt=""&gt;&lt;/p&gt;</description></item><item><title>Highlights from the React Day Conference</title><link>https://code.kiwi.com/articles/highlights-from-the-react-day-conference/</link><pubDate>Wed, 03 Jan 2018 10:49:00 +0000</pubDate><guid>https://code.kiwi.com/articles/highlights-from-the-react-day-conference/</guid><description>&lt;p&gt;The ecosystem around React itself is quite stable at the moment compared to the turbulent shifts that we’ve seen in recent years. &lt;em&gt;Declarativeness&lt;/em&gt; rules the code and GraphQL is a real game changer.&lt;/p&gt;
&lt;p&gt;In this article I’ve included some top picks to summarize the &lt;a href="http://reactday.berlin/"&gt;React Day Conference&lt;/a&gt; which took place in Berlin on December 2, 2017.&lt;/p&gt;</description></item><item><title>Machine Learning Weekend: entry task review</title><link>https://code.kiwi.com/articles/machine-learning-weekend-entry-task-review/</link><pubDate>Fri, 27 Oct 2017 22:21:00 +0000</pubDate><guid>https://code.kiwi.com/articles/machine-learning-weekend-entry-task-review/</guid><description>&lt;p&gt;The idea to organise a machine learning weekend began to grow organically last year. But a few events actually pushed us into action: &lt;a href="https://twitter.com/JiriMaterna/status/869141416739471360"&gt;Jirka left Seznam.cz&lt;/a&gt; and the &lt;a href="https://pythonvikend.kiwi.com/"&gt;Python Weekend&lt;/a&gt; concept proved itself as a useful means of gathering intermediate-level developers together and helping them to grow further.&lt;/p&gt;</description></item><item><title>Code Design Principles for Public APIs of Modules</title><link>https://code.kiwi.com/articles/code-design-principles-for-public-apis-of-modules/</link><pubDate>Fri, 13 Oct 2017 22:17:00 +0000</pubDate><guid>https://code.kiwi.com/articles/code-design-principles-for-public-apis-of-modules/</guid><description>&lt;p&gt;&lt;em&gt;The following article is from Kiwi.com’s internal engineering handbook. We thought it could come in handy for others as well, so we decided to share it with the world here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This document should leave you with some idea on how to approach problems where you have to create a new module from scratch, or come up with a way to completely redesign an existing one.&lt;/p&gt;</description></item><item><title>Helping the Python community grow</title><link>https://code.kiwi.com/articles/helping-the-python-community-grow/</link><pubDate>Wed, 02 Aug 2017 22:00:00 +0000</pubDate><guid>https://code.kiwi.com/articles/helping-the-python-community-grow/</guid><description>&lt;p&gt;It must be at least 30 degrees outside but in the center of Brno with all the concrete and stone, it feels like 50. However, this is nothing for the two dozen programmers and tech enthusiasts who gathered in Nest, a cozy design studio with a beautiful view of the roofs and church towers of Brno. They don’t mind the temperature, they don’t care about the view. The only thing occupying their mind is code. They came to gain new Python skills and meet new people at code.kiwi.com’s Python weekend.&lt;/p&gt;</description></item><item><title>Travel Hackathon — Prague 2017</title><link>https://code.kiwi.com/articles/travel-hackathon-prague-2017/</link><pubDate>Mon, 05 Jun 2017 21:41:00 +0000</pubDate><guid>https://code.kiwi.com/articles/travel-hackathon-prague-2017/</guid><description>&lt;p&gt;This year’s &lt;a href="https://travelhackathon.cz/"&gt;Travel Hackathon&lt;/a&gt; will be held in Prague, the diamond of Europe.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you’ve got a great idea for a travel app, this is your chance to make it a reality!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Everything you create is yours and you’ll have the help of team members as well as mentors from Kiwi.com and &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Lesser Known Tools We Love at Kiwi.com, Part 2 of 3: Mac and Web</title><link>https://code.kiwi.com/articles/lesser-known-tools-we-love-at-kiwi-com-part-2-of-3-mac-and-web/</link><pubDate>Fri, 27 Jan 2017 21:00:00 +0000</pubDate><guid>https://code.kiwi.com/articles/lesser-known-tools-we-love-at-kiwi-com-part-2-of-3-mac-and-web/</guid><description>&lt;p&gt;As promised last November in an &lt;a href="https://code.kiwi.com/lesser-known-tools-we-love-at-kiwi-com-part-1-of-3-cli-79eb6d67a065"&gt;article about our favorite CLI tools&lt;/a&gt;, we’re continuing the list with our favorite macOS and web apps, as developers. Since the whole point of this is to become more efficient, let’s not waste time on more filler. Here comes the list!&lt;/p&gt;</description></item><item><title>Testing and How it Actually Saves Time ????</title><link>https://code.kiwi.com/articles/testing-and-how-it-actually-saves-time-%F0%9F%A4%94/</link><pubDate>Tue, 24 Jan 2017 20:43:00 +0000</pubDate><guid>https://code.kiwi.com/articles/testing-and-how-it-actually-saves-time-%F0%9F%A4%94/</guid><description>&lt;hr&gt;
&lt;p&gt;In November 2016, I had the great opportunity of travelling to Amsterdam and attending &lt;a href="https://www.djangounderthehood.com/"&gt;&lt;strong&gt;Django: Under the Hood&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;✨&lt;/strong&gt; for the first time. This is an important conference for Django developers and provides deep and detailed talks. It’s a great opportunity to find out what is happening, learn about the future plans for Django and to meet a lot of people from the Django community—most of them from the Django Core Team. ❤&lt;/p&gt;</description></item><item><title>Django Under The Hood 2016: Performance Debugging</title><link>https://code.kiwi.com/articles/django-under-the-hood-2016-performance-debugging/</link><pubDate>Thu, 12 Jan 2017 21:06:00 +0000</pubDate><guid>https://code.kiwi.com/articles/django-under-the-hood-2016-performance-debugging/</guid><description>&lt;p&gt;After &lt;a href="https://code.kiwi.com/django-under-the-hood-2016-validation-68cc635a07c4#.uca1pfz64"&gt;Django validation&lt;/a&gt;, debugging was another interesting presentation from the &lt;a href="https://www.djangounderthehood.com/"&gt;Django Under the Hood&lt;/a&gt; conference by &lt;a href="https://myks.org/en/"&gt;Aymeric Augustin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The introduction covered the Browser Console and the Django Debug Toolbar: both show the &lt;strong&gt;Page load time&lt;/strong&gt; of a website, split into multiple stages. We use the Django Debug Toolbar pretty often, however mostly for inspecting SQL queries. It is easy to get too many SQL queries without the proper use of &lt;code&gt;select_related&lt;/code&gt; and &lt;code&gt;prefetch_related&lt;/code&gt;, which are very popular and almost necessary Django methods on Querysets. At this point, we have no need to improve our Page load time but the detailed stages description and DOM loading in Django were useful concepts to learn about.&lt;/p&gt;</description></item><item><title>The top 5 of effective React</title><link>https://code.kiwi.com/articles/the-top-5-of-effective-react/</link><pubDate>Sun, 04 Dec 2016 20:35:00 +0000</pubDate><guid>https://code.kiwi.com/articles/the-top-5-of-effective-react/</guid><description>&lt;p&gt;I never thought that writing efficient React code required so little effort. In essence, it’s basically just a bunch of functions and classes spitting out markup, and occasionally interacting with each other.&lt;/p&gt;
&lt;p&gt;Going from a small, pet project to a big-ass application is almost seamless — you build medium things from small things, and big things from medium things. Voilà, you have yourself an app!&lt;/p&gt;</description></item><item><title>Lesser Known Tools We Love at Kiwi.com, Part 1 of 3: CLI</title><link>https://code.kiwi.com/articles/lesser-known-tools-we-love-at-kiwi-com-part-1-of-3-cli/</link><pubDate>Thu, 24 Nov 2016 20:07:00 +0000</pubDate><guid>https://code.kiwi.com/articles/lesser-known-tools-we-love-at-kiwi-com-part-1-of-3-cli/</guid><description>&lt;p&gt;We’re all trying to save the time we spend on repetitive tasks, but as &lt;a href="https://xkcd.com/1205/"&gt;xkcd illustrates&lt;/a&gt;, often it’s just not worth wasting your time seeking out new tools and ways to be more productive. We developers at Kiwi.com thought it would be nice to share an easily digestible, no-nonsense, rapid-fire list of tools that make our everyday work better and easier — so, here we go!&lt;/p&gt;</description></item><item><title>How to Find a “Silent” Bug</title><link>https://code.kiwi.com/articles/how-to-find-a-silent-bug/</link><pubDate>Tue, 25 Oct 2016 19:32:00 +0000</pubDate><guid>https://code.kiwi.com/articles/how-to-find-a-silent-bug/</guid><description>&lt;p&gt;Now and again, some very weird bugs occur.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://code.kiwi.com/images/media/51625b72f3c060100005bad08a6783a078b2c1caefae731051dfd7653fd56ee4.webp" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Photo by &lt;a href="https://unsplash.com/photos/iZJTmZAff8w?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;David Clode&lt;/a&gt; on &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the case of &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt;, and out internal Kiwibase project, I spent half a day fighting with a particularly weird bug.&lt;/p&gt;
&lt;h2 id="what-happened"&gt;What Happened&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;A colleague had prepared a branch for our shiny new feature&lt;/li&gt;
&lt;li&gt;Tests were passed (okay, I’m lying slightly; there was one minor bug in the HTML content which was not related to this issue)&lt;/li&gt;
&lt;li&gt;I was able to successfully run it on my computer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I tried to deploy it on the server and it didn’t work. The only screen I could see was this:&lt;/p&gt;</description></item></channel></rss>