David Majda Software engineer and engineering manager with a passion for programming languages, web technologies, software craftsmanship, and sustainability. https://speakerdeck.com/dmajda 2013-04-19 06:20:15 -0400 Rust for Python People You’ve probably heard about Rust — a modern take on a systems programming language. Today, we’ll explore it from the perspective of a Python developer. We’ll cover its most important ideas and concepts, see why it’s almost always a better choice than C/C++, and walk through plenty of code examples to get a sense of what programming in Rust feels like. Finally, we’ll discuss when it makes sense to use Rust in a Python project and learn how to get started (it’s surprisingly easy!). Presented at Pražské Pyvo #172. Details: https://pyvo.cz/praha-pyvo/2025-09/ https://www.meetup.com/pyvo-prague-python-meetup/events/311004663/ You’ve probably heard about Rust — a modern take on a systems programming language. Today, we’ll explore it from the perspective of a Python developer. We’ll cover its most important ideas and concepts, see why it’s almost always a better choice than C/C++, and walk through plenty of code examples to get a sense of what programming in Rust feels like. Finally, we’ll discuss when it makes sense to use Rust in a Python project and learn how to get started (it’s surprisingly easy!). Presented at Pražské Pyvo #172. Details: https://pyvo.cz/praha-pyvo/2025-09/ https://www.meetup.com/pyvo-prague-python-meetup/events/311004663/ Wed, 17 Sep 2025 00:00:00 -0400 https://speakerdeck.com/dmajda/rust-for-python-people https://speakerdeck.com/dmajda/rust-for-python-people Making Remote Teams Work Every development team is at least partially remote these days, which presents a unique set of challenges. How do you set up a collaboration workflow? How do you manage communication and maintain team cohesion without seeing each other in person? How do you deal with the lack of social interaction and serendipity? How do you accommodate people with wildly different work and communication styles, emotional needs, and ideas about work-life balance? And what about hiring and onboarding? Having led a remote team in a small company for six years, I've experienced these challenges first-hand. In the talk, we’ll go through them (plus a few more), and I’ll describe solutions and guidelines we’ve come up with in our team (including a few that <em>didn’t</em> work). The goal is to provide useful advice you can apply in your work, both as a team leader and as a team member. I would also love to use the talk as an opportunity to start a discussion and learn how others solve similar problems. Presented at PyCon CZ 23. Video: https://youtu.be/uYugrTCN5rc Details: https://cz.pycon.org/2023/program/talks/95/ Every development team is at least partially remote these days, which presents a unique set of challenges. How do you set up a collaboration workflow? How do you manage communication and maintain team cohesion without seeing each other in person? How do you deal with the lack of social interaction and serendipity? How do you accommodate people with wildly different work and communication styles, emotional needs, and ideas about work-life balance? And what about hiring and onboarding? Having led a remote team in a small company for six years, I've experienced these challenges first-hand. In the talk, we’ll go through them (plus a few more), and I’ll describe solutions and guidelines we’ve come up with in our team (including a few that <em>didn’t</em> work). The goal is to provide useful advice you can apply in your work, both as a team leader and as a team member. I would also love to use the talk as an opportunity to start a discussion and learn how others solve similar problems. Presented at PyCon CZ 23. Video: https://youtu.be/uYugrTCN5rc Details: https://cz.pycon.org/2023/program/talks/95/ Sat, 16 Sep 2023 00:00:00 -0400 https://speakerdeck.com/dmajda/making-remote-teams-work https://speakerdeck.com/dmajda/making-remote-teams-work Jak postavit IoT datovou pipeline a nezbláznit se z toho V Energomonitoru přijímáme v reálném čase data z tisíců různorodých zařízení po celém světě a zpracováváme je. Klíčovým prvkem přitom je naše datová pipeline. V přednášce popíšu, jak jsme ji během let postupně vystavěli, jak dnes funguje a kam ji chceme ještě posunout. Představím přitom technologie a nástroje, které používáme, a především ukážu, jak přemýšlet nad streamovým zpracováním dat, které dnes nabývá na stále větší důležitosti i v jiných oblastech než IoT. Předneseno na TechMeetup Ostrava Konference 2018. Video: https://youtu.be/2n_CC-75MZg V Energomonitoru přijímáme v reálném čase data z tisíců různorodých zařízení po celém světě a zpracováváme je. Klíčovým prvkem přitom je naše datová pipeline. V přednášce popíšu, jak jsme ji během let postupně vystavěli, jak dnes funguje a kam ji chceme ještě posunout. Představím přitom technologie a nástroje, které používáme, a především ukážu, jak přemýšlet nad streamovým zpracováním dat, které dnes nabývá na stále větší důležitosti i v jiných oblastech než IoT. Předneseno na TechMeetup Ostrava Konference 2018. Video: https://youtu.be/2n_CC-75MZg Thu, 01 Nov 2018 00:00:00 -0400 https://speakerdeck.com/dmajda/jak-postavit-iot-datovou-pipeline-a-nezblaznit-se-z-toho https://speakerdeck.com/dmajda/jak-postavit-iot-datovou-pipeline-a-nezblaznit-se-z-toho Building an IoT platform with Go and Python Go and Python are very different languages, but do they complement each other? At Energomonitor, we think so, and we used both to build an IoT platform that processes and analyzes data from our devices in real-time. Where did we use Go? Where did we use Python? Why? What are the strong points of each language? And what are the weak ones? How do the ecosystems compare? And what about the daily operational experience? Finally, what would we do differently knowing what we know today? These are all questions I will attempt to answer, based on our multi-year experience. Presented at Golang Prague #3. Details: https://www.meetup.com/Prague-Golang-Meetup/events/251802529/ Go and Python are very different languages, but do they complement each other? At Energomonitor, we think so, and we used both to build an IoT platform that processes and analyzes data from our devices in real-time. Where did we use Go? Where did we use Python? Why? What are the strong points of each language? And what are the weak ones? How do the ecosystems compare? And what about the daily operational experience? Finally, what would we do differently knowing what we know today? These are all questions I will attempt to answer, based on our multi-year experience. Presented at Golang Prague #3. Details: https://www.meetup.com/Prague-Golang-Meetup/events/251802529/ Thu, 13 Sep 2018 00:00:00 -0400 https://speakerdeck.com/dmajda/building-an-iot-platform-with-go-and-python https://speakerdeck.com/dmajda/building-an-iot-platform-with-go-and-python Autoformátování kódu V Energomonitoru jsme ukončili hádky o formátování kódu a kde to jde, formátujeme ho automaticky. Jak jsme k tomu dospěli, co za konkrétní nástroje pro které jazyky používáme, a jaké jsou naše zkušenosti s tímto přístupem? Předneseno na Devel.cz 2018. Video: https://slideslive.com/38908630/autoformatovani-kodu V Energomonitoru jsme ukončili hádky o formátování kódu a kde to jde, formátujeme ho automaticky. Jak jsme k tomu dospěli, co za konkrétní nástroje pro které jazyky používáme, a jaké jsou naše zkušenosti s tímto přístupem? Předneseno na Devel.cz 2018. Video: https://slideslive.com/38908630/autoformatovani-kodu Sat, 16 Jun 2018 00:00:00 -0400 https://speakerdeck.com/dmajda/autoformatovani-kodu https://speakerdeck.com/dmajda/autoformatovani-kodu Přijímací pohovor jako konverzeace Přijímací pohovory jsou věčné téma. V Energomonitoru jsme je pojali trochu netradičně a myslíme, že se nám to osvědčilo. V přednášce se mimo jiné dozvíte: • Jak pohovory vedeme? • Na co u zájemců koukáme? • Jak se liší výběr lidí pro remote firmu od té běžné? • Co prozradí oběd s týmem? • Proč u nás při technické části zájemci nepíší kód na whiteboard? • Jak poznat perspektivního absolventa, i když nemá žádné zkušenosti? Prozradím také některé své oblíbené otázky a co mi řeknou odpovědi na ně. Jako bonus poodhalím, jak k sobě lákáme ty správné lidi a jak to děláme, aby po nástupu rychle zapadli a pokud možno nám obratem neutekli :-) Předneseno na Plzeňském Barcampu 2018. Video: https://youtu.be/iSMvvk8RNAs Detaily: https://www.plzenskybarcamp.cz/2018/prednasky/adad2713 Přijímací pohovory jsou věčné téma. V Energomonitoru jsme je pojali trochu netradičně a myslíme, že se nám to osvědčilo. V přednášce se mimo jiné dozvíte: • Jak pohovory vedeme? • Na co u zájemců koukáme? • Jak se liší výběr lidí pro remote firmu od té běžné? • Co prozradí oběd s týmem? • Proč u nás při technické části zájemci nepíší kód na whiteboard? • Jak poznat perspektivního absolventa, i když nemá žádné zkušenosti? Prozradím také některé své oblíbené otázky a co mi řeknou odpovědi na ně. Jako bonus poodhalím, jak k sobě lákáme ty správné lidi a jak to děláme, aby po nástupu rychle zapadli a pokud možno nám obratem neutekli :-) Předneseno na Plzeňském Barcampu 2018. Video: https://youtu.be/iSMvvk8RNAs Detaily: https://www.plzenskybarcamp.cz/2018/prednasky/adad2713 Sat, 07 Apr 2018 00:00:00 -0400 https://speakerdeck.com/dmajda/prijimaci-pohovor-jako-konverzeace https://speakerdeck.com/dmajda/prijimaci-pohovor-jako-konverzeace Budoucnost bez uhlíku Německo se přes noc stalo rájem větrných elektráren. Na stále více střechách se objevují solární panely. V Norsku chtějí od roku 2025 zakázat auta se spalovacími motory. Co se to děje? Zřejmě jsme na začátku radikální transformace energetiky a dopravy, ale proč k ní vůbec dochází a proč právě teď? Odpověď zní: globální oteplování. V přednášce se na toto téma podíváme analytickým pohledem. Kde jsou příčiny? Co se stane, pokud bude na Zemi o 2, 4, nebo 6 °C tepleji? Je možné tomu předejít? Jak přesně? Za jakou cenu? Nebylo by jednodušší se prostě jen adaptovat? A jak s tím souvisí změny popsané výše? Mým cílem je nabídnout vhled do problematiky, která – ač se o ní u nás příliš nemluví – výrazně ovlivní životy mnoha následujících generací. Předneseno na Jihočeském Barcampu 2017. Detaily: http://www.barcampjc.cz/prednaska/2-budoucnost-bez-uhliku Německo se přes noc stalo rájem větrných elektráren. Na stále více střechách se objevují solární panely. V Norsku chtějí od roku 2025 zakázat auta se spalovacími motory. Co se to děje? Zřejmě jsme na začátku radikální transformace energetiky a dopravy, ale proč k ní vůbec dochází a proč právě teď? Odpověď zní: globální oteplování. V přednášce se na toto téma podíváme analytickým pohledem. Kde jsou příčiny? Co se stane, pokud bude na Zemi o 2, 4, nebo 6 °C tepleji? Je možné tomu předejít? Jak přesně? Za jakou cenu? Nebylo by jednodušší se prostě jen adaptovat? A jak s tím souvisí změny popsané výše? Mým cílem je nabídnout vhled do problematiky, která – ač se o ní u nás příliš nemluví – výrazně ovlivní životy mnoha následujících generací. Předneseno na Jihočeském Barcampu 2017. Detaily: http://www.barcampjc.cz/prednaska/2-budoucnost-bez-uhliku Sat, 25 Feb 2017 00:00:00 -0500 https://speakerdeck.com/dmajda/budoucnost-bez-uhliku-1 https://speakerdeck.com/dmajda/budoucnost-bez-uhliku-1 Budoucnost bez uhlíku? Přemýšleli jste někdy nad tím, jak velký problém je globální oteplování? Co se stane, pokud bude na Zemi o 2, 4, nebo 6 °C tepleji? A zda a jak je možné tomu předejít? V přednášce se na toto téma podíváme analytickým pohledem. Vysvětlíme si, proč je vůbec oteplování problém, jaké jsou jeho důsledky, a především jakými cestami mu zamezit. Zaměříme se přitom zejména na radikální technologickou transformaci energetiky a dopravy, která nás nejspíš čeká. Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/6904 https://www.facebook.com/events/276729229394370/ Přemýšleli jste někdy nad tím, jak velký problém je globální oteplování? Co se stane, pokud bude na Zemi o 2, 4, nebo 6 °C tepleji? A zda a jak je možné tomu předejít? V přednášce se na toto téma podíváme analytickým pohledem. Vysvětlíme si, proč je vůbec oteplování problém, jaké jsou jeho důsledky, a především jakými cestami mu zamezit. Zaměříme se přitom zejména na radikální technologickou transformaci energetiky a dopravy, která nás nejspíš čeká. Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/6904 https://www.facebook.com/events/276729229394370/ Wed, 02 Nov 2016 00:00:00 -0400 https://speakerdeck.com/dmajda/budoucnost-bez-uhliku https://speakerdeck.com/dmajda/budoucnost-bez-uhliku Juttle jako nástroj BI Stručné představení Juttle, nástroje pro analýzu, transformaci a vizualizaci dat, jehož jádrem je stejnojmenný dataflow programovací jazyk. Od konvenčních BI nástrojů se liší hlavně svými možnostmi a flexibilitou. Předneseno na Prague Data Management Meetup (Self-service BI: Street Battle). Detaily: http://www.meetup.com/Prague-Data-Management-Meetup/events/226568103/ Stručné představení Juttle, nástroje pro analýzu, transformaci a vizualizaci dat, jehož jádrem je stejnojmenný dataflow programovací jazyk. Od konvenčních BI nástrojů se liší hlavně svými možnostmi a flexibilitou. Předneseno na Prague Data Management Meetup (Self-service BI: Street Battle). Detaily: http://www.meetup.com/Prague-Data-Management-Meetup/events/226568103/ Wed, 23 Mar 2016 00:00:00 -0400 https://speakerdeck.com/dmajda/juttle-jako-nastroj-bi https://speakerdeck.com/dmajda/juttle-jako-nastroj-bi Mathematics, Surprisingly Do programmers need advanced mathematics? And what if they are designing and implementing a programming language? In the talk I will show where I needed mathematics in my work at Jut and how bad job I would have done without understanding it. You can think of this as a small contribution to a discussion about education of programmers and the role of mathematics and other theoretical subjects in it. Presented at Rubyslava #52 (Data Science Edition). Video: https://youtu.be/7cThtM6Yk1A Details: http://lanyrd.com/2015/rubyslava-october/sdxdgc/ https://www.facebook.com/events/862212323886828/ Do programmers need advanced mathematics? And what if they are designing and implementing a programming language? In the talk I will show where I needed mathematics in my work at Jut and how bad job I would have done without understanding it. You can think of this as a small contribution to a discussion about education of programmers and the role of mathematics and other theoretical subjects in it. Presented at Rubyslava #52 (Data Science Edition). Video: https://youtu.be/7cThtM6Yk1A Details: http://lanyrd.com/2015/rubyslava-october/sdxdgc/ https://www.facebook.com/events/862212323886828/ Thu, 22 Oct 2015 00:00:00 -0400 https://speakerdeck.com/dmajda/mathematics-surprisingly https://speakerdeck.com/dmajda/mathematics-surprisingly Jak na mě vyskočila matematika Potřebuje programátor vysokoškolskou matematiku? Když jsem nastupoval do Jutu jako návrhář a implementátor programovacího jazyka, myslel jsem si, že ji využiji zhruba stejně jako ve své předchozí práci – vůbec. Rychle se ale ukázalo, že jsem se mýlil. Matematika na mě vyskočila hned na několika místech a já si rychle osvěžoval pojmy jako neutrální prvek, afinní prostor nebo dimenzionální analýza. V přednášce bych rád ukázal, kde všude jsem na matematiku při své práci nečekaně narazil a co všechno bych udělal špatně, kdybych jí nerozuměl. Přednášku je možno chápat jako malý příspěvek do diskuze na témata „Potřebují programátoři vysokou školu?“ a „Kolik matematiky a další teorie by se na programátorských VŠ mělo učit?“ Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/5420 https://www.facebook.com/events/1618055091803470/ Potřebuje programátor vysokoškolskou matematiku? Když jsem nastupoval do Jutu jako návrhář a implementátor programovacího jazyka, myslel jsem si, že ji využiji zhruba stejně jako ve své předchozí práci – vůbec. Rychle se ale ukázalo, že jsem se mýlil. Matematika na mě vyskočila hned na několika místech a já si rychle osvěžoval pojmy jako neutrální prvek, afinní prostor nebo dimenzionální analýza. V přednášce bych rád ukázal, kde všude jsem na matematiku při své práci nečekaně narazil a co všechno bych udělal špatně, kdybych jí nerozuměl. Přednášku je možno chápat jako malý příspěvek do diskuze na témata „Potřebují programátoři vysokou školu?“ a „Kolik matematiky a další teorie by se na programátorských VŠ mělo učit?“ Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/5420 https://www.facebook.com/events/1618055091803470/ Wed, 06 May 2015 00:00:00 -0400 https://speakerdeck.com/dmajda/jak-na-me-vyskocila-matematika https://speakerdeck.com/dmajda/jak-na-me-vyskocila-matematika Code Reviews We’ll look at code reviews both from the author’s and reviewer’s side. How to prepare a pull request that gets reviewed quickly and whose review is pleasant? And how to perform reviews that are both efficient and useful? Along the way we'll discuss some common anti-patterns in Jut’s code which good reviews can prevent. Presented at internal Brews & Clues session at Jut. We’ll look at code reviews both from the author’s and reviewer’s side. How to prepare a pull request that gets reviewed quickly and whose review is pleasant? And how to perform reviews that are both efficient and useful? Along the way we'll discuss some common anti-patterns in Jut’s code which good reviews can prevent. Presented at internal Brews & Clues session at Jut. Fri, 20 Feb 2015 00:00:00 -0500 https://speakerdeck.com/dmajda/code-reviews-4 https://speakerdeck.com/dmajda/code-reviews-4 TDD by Example Introduction to TDD using an example in Ruby & RSpec. Presented at internal Lunch & Learn session at SUSE. Video: https://youtu.be/bQYxESZ1Z48 Introduction to TDD using an example in Ruby & RSpec. Presented at internal Lunch & Learn session at SUSE. Video: https://youtu.be/bQYxESZ1Z48 Thu, 05 Jun 2014 00:00:00 -0400 https://speakerdeck.com/dmajda/tdd-by-example https://speakerdeck.com/dmajda/tdd-by-example PEG.js – generátor parserů pro JavaScript Stručné představení PEG.js s ukázkou, doplněné tipy na podobné nástroje pro Ruby a Python. Předneseno na Brněnské Pyvo + BRUG: Překladačové. Detaily: http://lanyrd.com/2014/brnenske-pyvo-brug-dubnove/scyxgp/ https://www.facebook.com/events/641004872639622/ Stručné představení PEG.js s ukázkou, doplněné tipy na podobné nástroje pro Ruby a Python. Předneseno na Brněnské Pyvo + BRUG: Překladačové. Detaily: http://lanyrd.com/2014/brnenske-pyvo-brug-dubnove/scyxgp/ https://www.facebook.com/events/641004872639622/ Thu, 24 Apr 2014 00:00:00 -0400 https://speakerdeck.com/dmajda/peg-dot-js-generator-parseru-pro-javascript https://speakerdeck.com/dmajda/peg-dot-js-generator-parseru-pro-javascript Jak jsme přeložili 594 680 řádků kódu z YCP do Ruby Parsery, generátory kódu a podobné hračky člověk nepíše každý den. V SUSE jsme s jejich pomocí za 6 měsíců zkonvertovali konfigurační a instalační nástroj YaST z nevyhovujícího jazyka YCP do Ruby. V přednášce si povíme, proč jsme projekt spustili, jak probíhal a co nás během něj příjmeně i nepříjemně překvapilo. Dojde samozřejmě i na technické detaily. Na závěr naznačíme naše plány s architekturou YaSTu do budoucna. Předneseno na LinuxDays 2013. Detaily: http://bit.ly/15T2oNe Parsery, generátory kódu a podobné hračky člověk nepíše každý den. V SUSE jsme s jejich pomocí za 6 měsíců zkonvertovali konfigurační a instalační nástroj YaST z nevyhovujícího jazyka YCP do Ruby. V přednášce si povíme, proč jsme projekt spustili, jak probíhal a co nás během něj příjmeně i nepříjemně překvapilo. Dojde samozřejmě i na technické detaily. Na závěr naznačíme naše plány s architekturou YaSTu do budoucna. Předneseno na LinuxDays 2013. Detaily: http://bit.ly/15T2oNe Sun, 06 Oct 2013 00:00:00 -0400 https://speakerdeck.com/dmajda/jak-jsme-prelozili-594-680-radku-kodu-z-ycp-do-ruby-1 https://speakerdeck.com/dmajda/jak-jsme-prelozili-594-680-radku-kodu-z-ycp-do-ruby-1 Jak jsme přeložili 594 680 řádků kódu z YCP do Ruby Parsery, generátory kódu a podobné hračky člověk nepíše každý den. V SUSE jsme s jejich pomocí za 6 měsíců zkonvertovali konfigurační a instalační nástroj YaST z nevyhovujícího jazyka YCP do Ruby. V přednášce si povíme, jak takový překladač vypadá a jak jsme propojili svět Ruby a YaSTu. Součástí bude živá ukázka překladu jednotlivých konstrukcí. Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/3907 https://www.facebook.com/events/525876690830912/ Parsery, generátory kódu a podobné hračky člověk nepíše každý den. V SUSE jsme s jejich pomocí za 6 měsíců zkonvertovali konfigurační a instalační nástroj YaST z nevyhovujícího jazyka YCP do Ruby. V přednášce si povíme, jak takový překladač vypadá a jak jsme propojili svět Ruby a YaSTu. Součástí bude živá ukázka překladu jednotlivých konstrukcí. Předneseno na pražském Ruby srazu. Detaily: http://srazy.info/prvni-streda-ruby-on-rails/3907 https://www.facebook.com/events/525876690830912/ Wed, 02 Oct 2013 00:00:00 -0400 https://speakerdeck.com/dmajda/jak-jsme-prelozili-594-680-radku-kodu-z-ycp-do-ruby https://speakerdeck.com/dmajda/jak-jsme-prelozili-594-680-radku-kodu-z-ycp-do-ruby Code Reviews FTW! About a year and half ago, we started to use code reviews in several teams in SUSE. What experience did we gain and what benefits do we see? How does a good review look like? What should a reviewer focus at and what should he/she avoid? And do code reviews make sense for you? We will try to answer all these questions. Presented at WebExpo Prague 2013. Details & video: http://webexpo.net/prague2013/talk/code-reviews-ftw/ About a year and half ago, we started to use code reviews in several teams in SUSE. What experience did we gain and what benefits do we see? How does a good review look like? What should a reviewer focus at and what should he/she avoid? And do code reviews make sense for you? We will try to answer all these questions. Presented at WebExpo Prague 2013. Details & video: http://webexpo.net/prague2013/talk/code-reviews-ftw/ Sat, 21 Sep 2013 00:00:00 -0400 https://speakerdeck.com/dmajda/code-reviews-ftw-3 https://speakerdeck.com/dmajda/code-reviews-ftw-3 Code Reviews FTW! V SUSE jsme v některých týmech cca před rokem začali používat code reviews. Jaké jsou naše zkušenosti a jaké vidíme výhody? Jak vlastně vypadá správné code review? Na co by se měl reviewer zaměřit a čemu se naopak vyhnout? A mají code reviews smysl i pro vás? Na tyto otázky zkusíme dát odpověď. Předneseno na Pražské PyVo #25. Video: http://youtu.be/0Gd16Pumo6c Detaily: http://lanyrd.com/2013/praha-pyvo-april/scftwg/ V SUSE jsme v některých týmech cca před rokem začali používat code reviews. Jaké jsou naše zkušenosti a jaké vidíme výhody? Jak vlastně vypadá správné code review? Na co by se měl reviewer zaměřit a čemu se naopak vyhnout? A mají code reviews smysl i pro vás? Na tyto otázky zkusíme dát odpověď. Předneseno na Pražské PyVo #25. Video: http://youtu.be/0Gd16Pumo6c Detaily: http://lanyrd.com/2013/praha-pyvo-april/scftwg/ Wed, 17 Apr 2013 00:00:00 -0400 https://speakerdeck.com/dmajda/code-reviews-ftw-2 https://speakerdeck.com/dmajda/code-reviews-ftw-2