Around IT in 256 seconds

Around IT in 256 seconds

By Tomasz Nurkiewicz

Podcast for developers, testers, SREs... and their managers. I explain complex and convoluted technologies in a clear way, avoiding buzzwords and hype. Never longer than 4 minutes and 16 seconds. Because software development does not require hours of lectures, dev advocates' slide decks and hand waving. For those of you, who want to combat FOMO, while brushing your teeth. 256 seconds is plenty of time. If I can't explain something within this time frame, it's either too complex, or I don't understand it myself.

By Tomasz Nurkiewicz. Java Champion, CTO, trainer, O'Reilly author, blogger
Available on
Apple Podcasts Logo
Overcast Logo
RadioPublic Logo
Spotify Logo
Currently playing episode

#75: 12th Factor App: portable and resilient services start here. Part 1-7/12

Around IT in 256 secondsMay 31, 2022
00:00
04:14
#97: Ruby: help every programmer to be productive and to be happy

#97: Ruby: help every programmer to be productive and to be happy

Yukihiro Matsumoto, the creator of Ruby programming language, famously said: “I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy.” Honestly, not many programming languages were built with developer’s happines in mind. And to be honest, Ruby is a joy to work with. It’s fairly easy to learn, easy to read, yet, very powerful. Also, with the appearance of Ruby on Rails, it became insanely productive. But first things first. Read more: https://nurkiewicz.com/97 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Feb 13, 202304:10
#96: Border Gateway Protocol: the duct tape that makes the Internet work

#96: Border Gateway Protocol: the duct tape that makes the Internet work

Border Gateway Protocol, BGP for short, is probably the most important protocols you might have never heard of. Well, you did at least once, in October 2021. When Facebook, WhatsApp, Instagram and Messenger all went down because of BGP misconfiguration. Or that one day back in 2008 when all YouTube traffic was accidentally routed to Pakistan. Because of BGP… misconfiguration. So what’s the big deal with BGP? First we must understand how the Internet works. Read more: https://nurkiewicz.com/96 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Feb 06, 202304:13
#95: SQLite: the most ubiquitus database on the planet. And beyond!

#95: SQLite: the most ubiquitus database on the planet. And beyond!

SQLite is by far the most common SQL database ever deployed. Are you lsitening to this on iPhone or Android device? It runs SQLite. Or maybe through a web browser? Chrome, Safari, Firefox, Opera and Android Browser all use SQLite underneath. Are you running MacOS or Windows? It’s built-in. Most Linux distributions have it as well. “But I’m listening to your podcast while driving a car”, you say. Well, most automotive systems use SQLite internally. If you happen to listen to my podcast while coding in PHP or Python, they include SQLite out-of-the box. Oh, and it’s the default choice for Ruby on Rails as well. I’m pretty sure SQLite is used somewhere on the International Space Station and it maybe even landed on other planets? So, what makes this unsung hero so popular to run at least one trillion databases worldwide? Read more: https://nurkiewicz.com/95 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 23, 202304:16
#94: Scala: language with academic background and huge industry adoption

#94: Scala: language with academic background and huge industry adoption

Scala is a programming language running on the Java Virtual Machine. It’s statically typed, and you can use it both as functional and object-oriented language. Even at the same time. The functional side of Scala supports higher-order (and higher-kinded) types. For those of you know what it means. On the other hand, object-relational features of Scala are equally strong. Including powerful trait composition, that you can somewhat compare to multiple inheritance. Combine than with great Java interoperability and no wonder why Scala became a go to language for many ex-Java developers. Read more: https://nurkiewicz.com/94 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 16, 202304:16
#93: K-means clustering: machine learning algorithm to easily split observations into multiple buckets

#93: K-means clustering: machine learning algorithm to easily split observations into multiple buckets

K-means clustering is an algorithm for partitioning data into multiple, non-overlapping buckets. For example, if you have a bunch of points in two-dimensional space, this algorithm can easily find concentrated clusters of points. To be honest, that’s quite a simple task for humans. Just plot all the points on a piece of paper and find areas with higher density. For example, most of the points are located on the top-left of the plane, some at the bottom and a few at the centre-right. However, this is not that straightforward once you can no longer rely on graphical representation. For instance, when your data points live 3-, 4- or 100-dimensional space. Turns out, this is not that uncommon. Let me clarify. Read more: https://nurkiewicz.com/93 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 11, 202304:16
#92: Clojure: a languages that will change the way you think about programming

#92: Clojure: a languages that will change the way you think about programming

Clojure is a dynamically, strongly typed programming language. It’s a dialect of Lisp running on the Java Virtual Machine. Lisp is 6 decades old and has a really weird syntax. That weird syntax is called Polish prefix notation. Basically, in every other language you’ve used math operators like plus or minus are infix. It means they are placed between operands. For example, 1 + 2. In Clojure, you always put the operator (or any other function for that matter) in front. So simple addition becomes… + 1 2. Read more: https://nurkiewicz.com/92 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 28, 202204:16
#91: Asynchronous communication: loose coupling in distributed systems

#91: Asynchronous communication: loose coupling in distributed systems

There are two main ways to communicate between components in your distributed system: synchronous and asynchronous. Synchronous communication is like making a phone call. The system on the other side must be present and you actively wait for a response to your every question. Examples of this style include REST, SOAP and GraphQL. Read more: https://nurkiewicz.com/91 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 21, 202204:12
#90: Mastodon: next-generation, open source social network

#90: Mastodon: next-generation, open source social network

After many dramatic events around Twitter lately, many people, including myself, began experimenting with Mastodon. Superficially it’s an open-source clone of the former that anyone can deploy and host. However, once you look deeper, it’s actually a completely different philosophy and architecture. Let’s focus on how Mastodon federated network is built. To understand the difference, we’ll start from scratch. Read more: https://nurkiewicz.com/90 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 15, 202204:16
#89: RabbitMQ: A proven message broker for asynchronous communication

#89: RabbitMQ: A proven message broker for asynchronous communication

RabbitMQ is a message broker, allowing asynchronous communication in distrubuted systems. The key advantages of RabbitMQ include: 15 years of open source history, battle proven Erlang implementation and support for industry standard protocols. RabbitMQ is among the most popular implementations of message brokers. Others include ActiveMQ for Java, celery for Python and Kafka - if you consider it a message broker. Also, pretty much all cloud providers have their proprietary implementations, like, Google Pub/Sub, Amazon Kinesis, Azure Service Bus and so on. RabbitMQ at its core implements AMQP, a standard protocol for information interchange. So not only it’s open source, it’s also built on top of open standards. Read more: https://nurkiewicz.com/89 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 12, 202203:46
#88: SLI, SLO and SLA: a number, a threshold and a legal document respectively

#88: SLI, SLO and SLA: a number, a threshold and a legal document respectively

Many people, when asked about SLA, simply shout 99%. The correct answer to that question is probably a long, boring PDF, written by lawyers. Yes, SLA is a legal obligation. Not a metric or a number. You probably meant SLI or SLO. Read more: https://nurkiewicz.com/88 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 03, 202204:12
#87: Artificial neural networks: imitating human brain to solve problems like humans

#87: Artificial neural networks: imitating human brain to solve problems like humans

An artificial neural network is a computer algorithm somewhat inspired by our brains. Superficially, our brain is a network of neurons connected with each other and communicating via electrical impulses. Artificial intelligence experts implemented a similar concept purely in software. An artificial neuron is basically a function that takes a set of inputs and has an output. Just like the biological one. By connecting hundreds of such neurons in a network, we can observe quite intelligent behaviours. For example, artificial neural networks can recognize what’s in the image. Or quite the opposite - generate images from text. Read more: https://nurkiewicz.com/87 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 27, 202204:15
#86: Proof of stake: how to cut global energy usage by 0.2%

#86: Proof of stake: how to cut global energy usage by 0.2%

p>A few weeks ago Ethereum blockchain moved from proof-of-work to a proof-of-stake algorithm. This step alone reduced global energy consumption by 0.2%. It’s as much as an energy usage of Austria. At this point, Ethereum, the second largest blockchain after Bitcoin, is using barely as much electricity as a few hundred households. How is that possible? How does the proof-of-stake algorithm work, avoiding catastrophic energy waste? Read more: https://nurkiewicz.com/86 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 19, 202204:16
#85: Genetic algorithm: natural selection helps to solve coding problems

#85: Genetic algorithm: natural selection helps to solve coding problems

A genetic algorithm is a heuristic approach to solving complex computational problems. This includes various optimizations, especially around scheduling and design. For example, NASA designed a radio antenna for their spacecraft using a genetic algorithm. Its shape is quite complicated, like nothing that could be designed by hand. So how do genetic algorithms work their way to the solution? Well, they are inspired by the natural selection process in living creatures (!) Read more: https://nurkiewicz.com/85 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 13, 202204:16
#84: Non-fungible token (NFT): digital, decentralized art market

#84: Non-fungible token (NFT): digital, decentralized art market

Non-fungible tokens, NFTs for short, are financial instruments implemented on top of the blockchain. They can be bought and sold, just like cryptocurrencies. However, unlike bitcoins, each NFT is unique and traded individually. Whereas Bitcoins or ether are interchangeable, just like hundred-dollar bills. So what makes each NFT unique? Why would you purchase this particular NFT rather than the other one? Well, an NFT has an associated piece of data. That data is typically a hyperlink to a digital piece of art. What you actually purchase is… well… that link? Read more: https://nurkiewicz.com/84 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Aug 29, 202204:06
#83: Real-time bidding: how online tracking helps serving ads

#83: Real-time bidding: how online tracking helps serving ads

We all know this feeling. You search for a hotel in Paris and you keep getting ads for hotels and flights for weeks to come. Or something even scarier. You visit a blog post highlighting the first symptoms of a pregnancy. An hour later every single website on the planet advertises diapers and baby formulas. How is that possible? How do they know? And how did we get into this dystopia? All of this became possible with real-time bidding. The billion-dollar industry that tracks our every movement. Read more: https://nurkiewicz.com/83 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Aug 23, 202204:16
#82: MongoDB: the most popular NoSQL database

#82: MongoDB: the most popular NoSQL database

MongoDB is a NoSQL database. Precisey speaking, it’s a document-oriented database. It stores arbitrarily complex key-value objects. For example, in a single Car object you can store as much information as you want. Not only license plate or manufacturing year. But also information about each individual part, history of repairs, insurance and all owners. No matter how much information you want to keep, you just put that in a single, easily accessible document. Contrast that to relational databases, where each relationship has to be modelled as a separate table. So the same Car would have been spread across tens of tables. Imagine all these SQL JOINs! No wonder why MongoDB is one of the most popular databases. Read more: https://nurkiewicz.com/82 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Aug 16, 202204:15
#81: Quarkus: supersonic, subatomic Java (guest: Holly Cummins)

#81: Quarkus: supersonic, subatomic Java (guest: Holly Cummins)

Quarkus is supersonic, subatomic Java. What does that mean? It means it’s Java, but really, really small. And really, really fast. Quarkus is a runtime framework which gives you access to programming models you’re probably familiar with. Like Microprofile, JAX-RS, CDI dependency injection. And also access you’re probably less familiar with, like reactive programming. Author: Holly Cummins Read more: https://nurkiewicz.com/81 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Aug 05, 202204:07
#80: Ethereum: a distributed virtual machine for exchanging money and bored apes

#80: Ethereum: a distributed virtual machine for exchanging money and bored apes

Ethereum is a network of computers with no central trusted authority. They achieve consensus by running computation-intensive algorithm, known as proof-of-work. The agreed state is added to an append only ledger, known as blockchain. Yes, Ethereum is yet another blockchain. And it’s used to track transactions in a cryptocurrency, known as Ether. However, unlike Bitcoin, it’s much more than a simple log. Bitcoin accounts simply hold currency. Ethereum accounts can run programs as well. Ethereum network is actually one, huge computer! Read more: https://nurkiewicz.com/80 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jul 04, 202204:16
#79: QUIC: what makes HTTP/3 faster

#79: QUIC: what makes HTTP/3 faster

QUIC can be thought of as the third fundamental protocol of the Internet. Next to UDP and TCP/IP. Let’s talk a little bit about these two. They both build upon IP, Internet Protocol. IP supports exchanging packets of data between two machines having… IP addresses. UDP adds ports. Port is a logical concept. It’s simply a number within one machine that identifies a certain process. Thanks to ports, many different processes on the same machine can exchange data. Read more: https://nurkiewicz.com/79 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jun 30, 202204:04
#78: Stuxnet: computer virus that you can admire

#78: Stuxnet: computer virus that you can admire

Stuxnet was probably one of the most sophisticated pieces of software ever built. I can easily imagine a Hollywood movie about it. A computer program that could change the course of history. Ironically, Stuxnet was a computer virus. A virus that infected 200 thousand machines. But activated and damaged only on a fraction of that. Read more: https://nurkiewicz.com/78 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jun 20, 202204:16
#77: DDoS: take down a server, one request at a time

#77: DDoS: take down a server, one request at a time

Denial-of-service attack tries to take down a server by sending specially-crafted requests. The simplest form of this attack is just sending a lot of requests in a short period of time. But more sophisticated methods are possible. For example, sending a single unusual request that overwhelms the server. One such example is a ZIP bomb, that I’ll explain later. But the most widespread technique requires a large number of attacking servers. Also known as distributed denial-of-service. DDoS for short. Read more: https://nurkiewicz.com/77 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jun 13, 202204:14
#76: 12th Factor App: portable and resilient services start here. Part 8-12/12

#76: 12th Factor App: portable and resilient services start here. Part 8-12/12

In part 2 of the Twelve-Factor App, we’ll explore the second half of the principles. Be sure to listen to the previous episode as well. We still have only four minutes, so let’s go! Read more: https://nurkiewicz.com/76 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jun 06, 202204:16
#75: 12th Factor App: portable and resilient services start here. Part 1-7/12

#75: 12th Factor App: portable and resilient services start here. Part 1-7/12

Twelve-Factor App is a set of design guidelines defined by Heroku. These guidelines are best suited for cloud-native, portable and resilient services. In this episode, I’ll explain the first seven principles. I have four minutes left, so let’s go! Read more: https://nurkiewicz.com/75 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
May 31, 202204:14
#74: SOAP: (not really) Simple Object Access Protocol

#74: SOAP: (not really) Simple Object Access Protocol

SOAP, formerly known as Simple Object Access Protocol, is a messaging standard. SOAP is very broad and general. Technically, it can support request-response, as well as fire-and-forget communication. The underlying protocol is typically HTTP, but there’s nothing against using message brokers. Or even good old SMTP. You know, the one for exchanging e-mails. The communication happens through XML messages. These messages are well-defined and structured. XML schema is agreed upon before any communication. Read more: https://nurkiewicz.com/74 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
May 16, 202204:14
#73: Neo4j: all your data as a graph?

#73: Neo4j: all your data as a graph?

Neo4j is a NoSQL database engine. What makes it different is the unusual data model. In Neo4j everything is modelled as a graph. A graph is a collection of nodes connected with edges. A typical example is a graph of friends on a social media website. Or a network of movies and actors. But it turns out many problems can be efficiently modelled as graphs. Like a customer having orders, each order has items. Or insurance, connected to a certain car and an accident. So what makes Neo4j special? Read more: https://nurkiewicz.com/73 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
May 10, 202204:16
#72: React.js: library that won frontends?

#72: React.js: library that won frontends?

React.js is a JavaScript library for building dynamic user interfaces. React applications are built on top of reusable components. Components encapsulate look and feel, logic and state. Also, React has quite an advanced state propagation mechanism. In simple words, it means that the user interface is very responsive and consistent. To improve developer experience, React typically uses JSX. An extension to JavaScript language. Let’s dive deeper into why React.js became the most popular web framework. Or library. Or both. Depends who you ask. Read more: https://nurkiewicz.com/72 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
May 06, 202204:12
#71: Erlang: let it crash!

#71: Erlang: let it crash!

Erlang is a programming language designed for highly scalable, fault-tolerant systems. Its primary use case used to be telecommunication. But these days it powers some of the biggest distributed systems. For example, half-billion WhatsApp users. The unique features of Erlang allow it to achieve amazing availability. A typical enterprise system may be unavailable for, let's say, a few hours per year. This means 99.9% availability. Systems written in Erlang may even reach so-called nine nines. Or 99.9999999%. It means the system is unavailable for less than 31 milliseconds. Per year. How is that possible? Read more: https://nurkiewicz.com/71 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Apr 26, 202204:16
#70: CRDT: Conflict-free Replicated Data Type (guest: Martin Kleppmann)

#70: CRDT: Conflict-free Replicated Data Type (guest: Martin Kleppmann)

Hello everyone! My name is Martin Kleppmann. I’m a researcher at the University of Cambridge. And I would like to tell you briefly about the technology called CRDTs. So, CRDT stands for Conflict-free Replicated Data Type. It’s a type of data structure that you can use to build collaboration software. So think software like Google Docs for example. Or Figma. Or Trello. Or a TODO list that syncs between your computer and your phone. You can build this type of software using CRDTs. Read more: https://nurkiewicz.com/70 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Apr 12, 202204:09
#69: DevOps: not a job position, but culture and mindset

#69: DevOps: not a job position, but culture and mindset

DevOps is a movement to bridge the gap between developers and operations teams. Traditionally, these two groups were separate and rarely interacted with each other. Developers didn’t quite understand how software is deployed and managed. Operation teams, on the other hand, treated software as a black box. DevOps encourages synergy between these two roles. Developers should take responsibility for their software. Including how it runs and behaves on production. Ops should understand the software they run. But more importantly, they should adopt well-established software engineering principles. For example, automation, auditing, testing, and fast feedback. Ideally, devs and ops should work together in a single team, toward a common goal. Read more: https://nurkiewicz.com/69 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Feb 14, 202204:05
#68: ACID transactions: don't corrupt your data

#68: ACID transactions: don't corrupt your data

Transactions in SQL databases are rock-solid. By reading and modifying data within a transaction we limit the risk of data corruption. Actually, there’s an acronym describing transactions: ACID. Which stands for: atomicity, consistency, isolation and durability. A good database engine follows these properties religiously. NoSQL engines, on the other hand, trade ACID properties for availability or speed. Of course, this is a gross simplification. Anyways, NoSQL crowd coined another acronym: BASE. Which stands for: basically available, soft state and eventually consistent. We’ll leave BASE for another episode. Read more: https://nurkiewicz.com/68 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Feb 01, 202204:16
#67: Version control systems: auditing source code, tracking bugs and experimenting

#67: Version control systems: auditing source code, tracking bugs and experimenting

Version control systems, like git, serve two purposes. First of all, they allow collaborating on the same code by multiple developers. Collaboration is needed for any non-trivial project. Secondly, they keep the history of changes. Modification history allows tracking bug fixes and regressions. That, and many other applications of version control, will become obvious in a second. Read more: https://nurkiewicz.com/67 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 25, 202204:13
#66: Aspect-oriented programming: another level of code modularization

#66: Aspect-oriented programming: another level of code modularization

DRY, or don’t repeat yourself is a common principle in pSpring AOP riddlerogramming. That’s why we invented functions and objects. But some sources of duplication are really hard to get rid of. Well, sometimes it’s even hard to realize there’s duplication in the first place! Common examples are logging, validation, checking security, starting a transaction. Often, these are one-liners that are too simple to extract. Too mundane too bother. And too ubiquitous to forget. Read more: https://nurkiewicz.com/66 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 18, 202204:14
#65: Zero Downtime deployment: If it hurts, do it more often

#65: Zero Downtime deployment: If it hurts, do it more often

Remember the days when deploying a new version of your application required downtime? If your application is particularly important, you might have had to schedule a maintenance window. Or perform the deployment in the middle of the night to avoid disruption. Today’s tools and DevOps practices allow deploying tens or even hundreds of times per day. With no downtime, and no noticeable disruption. Sometimes every commit is deployed automatically to production within minutes. How’s all this possible? Read more: https://nurkiewicz.com/65 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 10, 202204:04
#64: TypeScript: will it entirely replace JavaScript?

#64: TypeScript: will it entirely replace JavaScript?

TypeScript is a programming language, a superset of JavaScript. This means any valid JavaScript program is also valid TypeScript. But not vice-versa! TypeScript adds a ton of features, addressing the shortcomings of JavaScript. The most important one is optional static typing, including null-safety. The fact that you can take any JavaScript code and turn it into TypeScript by simply changing a file extension is crucial. It means you can gradually start using TypeScript’s features without rewriting your whole application. Read more: https://nurkiewicz.com/64 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Jan 03, 202204:16
#63: Logging libraries: auditing and troubleshooting your application

#63: Logging libraries: auditing and troubleshooting your application

You can’t look at your application all the time. Instead, it should leave some sort of persistent trace. Such an audit log can be examined later on. However, it’s the responsibility of the application itself to log appropriately. But more importantly, the data it logs for later must be well-structured. Simply printing random words to a console is no longer sufficient. Read more: https://nurkiewicz.com/63 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Dec 27, 202104:16
#62: Object-relational mapping: hiding vs. introducing complexity

#62: Object-relational mapping: hiding vs. introducing complexity

Object-relational mapping, ORM for short, simplifies access to relational databases. Such frameworks help with developing applications without writing SQL. SQL was supposed to be easy to use for non-programmers. That’s part of the reason why SQL is so verbose. However, writing complex joins by hand is hard. Also, typically, once you fetch data from your database, you immediately translate it to objects. So why not build a universal framework for such mapping? Like, object-relational mapping? Read more: https://nurkiewicz.com/62 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Dec 20, 202104:16
#61: Spring framework: 2 decades of building Java applications

#61: Spring framework: 2 decades of building Java applications

Spring framework is probably the most popular and most successful application framework for Java. Writing a server or a web application before Spring was cumbersome. And it required an insane amount of boilerplate. Even in already bloated Java language. This framework was created sort of as a by-product for a book by Rod Johnson, back in 2003. He wanted to build an alternative to heavyweight Enterprise Java Beans standard. What was just an idea sparked to be one of the largest ecosystems for Java. Read more: https://nurkiewicz.com/61 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Dec 15, 202104:16
#60: Haskell: purely functional and statically typed programming language

#60: Haskell: purely functional and statically typed programming language

Haskell is a purely-functional programming language. It is also statically and strongly typed. Haskell takes these characteristics to the extreme. For example, doing any input/output is considered impure from a functional programming point of view. So in some books, a simple “Hello, world” example appears as late as in chapter… 9. Read more: https://nurkiewicz.com/60 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Dec 07, 202104:11
#59: How compilers work: from source to execution

#59: How compilers work: from source to execution

A compiler is an application that turns text into an executable program. It’s quite extraordinary how much work these complex pieces of software are doing. Pretty much every compiler works by executing several phases. Each phase takes the input of the previous ones to finally produce the runnable code. Let’s take a journey through the compiler internals. Read more: https://nurkiewicz.com/59 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 29, 202104:14
#58: Consumer-driven Contracts: TDD between services

#58: Consumer-driven Contracts: TDD between services

Consumer-driven Contracts is an approach to testing integration between services. In a distributed system, many components talk to each other. Typically via request/response protocols or message queues. The client must know and understand the API provided by the server. What kind of endpoints are available, what formats, request/response schema. Without consumer-driven contracts (CDC for short), we are often reckless when it comes to testing. Maybe we have a bunch of smoke tests against a mocked server. Maybe we copy-paste typical responses from the server’s documentation. But both client and server can evolve, breaking the integration in unexpected ways. CDC attempts to codify the API without explicit schema and coordination. Read more: https://nurkiewicz.com/58 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 22, 202104:14
#57: Kotlin: Much more than 'better Java'

#57: Kotlin: Much more than 'better Java'

Kotlin is a programming language that runs mainly on Java Virtual Machine. This means it’s fully interoperable with Java and even other JVM languages. Developers can gradually rewrite their applications from Java to Kotlin. Or use Java libraries and frameworks inside Kotlin. But why bother with a new language? Kotlin has plenty of improvements over good old Java. Sometimes it’s placed between Java and Scala in terms of capabilities. It seems more modern, agile, and powerful. Read more: https://nurkiewicz.com/57 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 16, 202103:54
#56: Test-driven development: It's not about testing

#56: Test-driven development: It's not about testing

Test-driven development (TDD for short) means developing software by writing tests first. I hope you all write unit and integration tests. But do you write them before the actual production code? This approach to software development is just that. You must write a failing test first. And you are not allowed to write even a single line of production code without a failing test. Think about it. If all your tests are green, it is forbidden to write production code. Everything must start from a red test. Read more: https://nurkiewicz.com/56 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Nov 02, 202104:15
#55: Percentages, percentage points and basis points: understand your metrics

#55: Percentages, percentage points and basis points: understand your metrics

You might find this topic weird, but understanding percentages is crucial not only in banking. What does it mean when disk space decreased by 10 percent? How to scientificly measure relative system load? And how to sound smart when applying for mortgage? You’ll learn all that in the next four minutes. Read more: https://nurkiewicz.com/55 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 25, 202104:16
#54: Immutability: from data structures to data centers

#54: Immutability: from data structures to data centers

Immutability means that when something was once created, it can’t be changed. This concept is tremendously important across our whole industry. Probably you’ve heard about immutable data structures. Let’s take an immutable list as an example. If you create such a list with a few items, you can’t add more items to that list. It’s written in stone. Any action attempting to modify that list returns a modified copy. The original instance is left intact. Modifying a single item, adding or removing, sorting - each of these operations return a copy. Read more: https://nurkiewicz.com/54 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 19, 202104:16
#53: CDN: Content Delivery Network: global scale caching

#53: CDN: Content Delivery Network: global scale caching

CDN is a set of geographically distributed servers for fast content delivery. Without CDN all requests are routed to your own server, located somewhere in the world. For example, in San Francisco. If your visitor lives in Australia, the experience is rather poor. But now imagine the traffic to your website is proxied through a global caching layer. Your visitor in Australia downloads data from an edge server nearby. A different visitor in Cape Town, Africa, will be routed to a completely different CDN server. The routing is done by the CDN itself, typically via DNS. It’s transparent to your visitors. Of course, all CDN servers contain the same data. Moreover, pretty much no-one contacts your own server in San Francisco. Only the CDN network itself. Technically, visitors don’t even know the address of your origin server! They use domain name like example.com and DNS routes to appropriate cache server. Read more: https://nurkiewicz.com/53 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 11, 202104:16
#52: How computers work: from electrons to Electron

#52: How computers work: from electrons to Electron

Today I’d like to explain how computers work. From the ground up, grossly simplifying. It all starts with an electric field. It’s a place where charged particles, like electrons, are attracted or repelled. The electricity flows through a piece of wire because of the difference in electric field potential on wire’s ends. This difference is known as voltage. Read more: https://nurkiewicz.com/52 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Oct 04, 202104:16
#51: Cloud computing: more than renting servers per minute

#51: Cloud computing: more than renting servers per minute

Cloud computing is a broad term. In general, it refers to using hardware and software managed by someone else. Typically with very flexible pricing: we only pay for what we use and for the time we use it. We don’t build data centers ourselves. We don’t buy large servers and provision them. We simply rent a server on a per-minute basis. The cloud provider has a pool of servers and they are reused and recycled. Once we are done, we no longer pay and some other customer can use that same server. Just like we don’t own a taxi. We barely pay for kilometers and minutes. When the server breaks for some reason, the provider takes care of repairs and replacements. We simply, almost transparently, get a new machine. Read more: https://nurkiewicz.com/51 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 27, 202104:13
#50: Property-based testing: find bugs automatically by generating thousands of test cases

#50: Property-based testing: find bugs automatically by generating thousands of test cases

Property-based testing is an approach to automatically test software against well-defined rules. We don’t specify desired output for a few inputs. Instead, we barely define properties that should always hold. It’s best explained with an example. How do you make sure that your compression algorithm works? Ordinary unit tests verify a handful of inputs that you came up with. If you are experienced developer, you will include edge cases. I mean, the weirdest inputs, like an empty string or a long sequence of the same character. And what are the properties of a good compression algorithm? Its output should takes less space, obviously. But even more importantly, lossless algorithm should be capable of decompression. What if I told you, there is software that can check these properties automatically? With thousands of randomized tests? Read more: https://nurkiewicz.com/50 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 21, 202104:16
#49: Functional programming: academic research or new hope for the industry?

#49: Functional programming: academic research or new hope for the industry?

Functional programming means programming using functions. See, I need much less than 256 seconds for that! Unfortunately, this definition is as useful as saying that object-oriented programming means programming with objects. So let’s dive deeper. First of all, I mean pure functions as defined by mathematicians. In math, a function always returns the same output for a given input. A length of a string is a function. A form validator is typically a function as well. For the same form inputs it always returns the same result: valid or invalid. On the other hand, returning the current date for a given location is not a function. Or reading a file. Read more: https://nurkiewicz.com/49 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 13, 202104:13
#48: Distributed tracing: find bottlenecks in complex systems

#48: Distributed tracing: find bottlenecks in complex systems

Life used to be simple. In a traditional monolithic application, when a failure occurred, you could easily find the problem. When an exception bubbles up, it appears throughout all stack frames. You can easily examine which methods or functions were invoked from each other. You can see application layers involved. Moreover, it\u2019s fairly easy to profile performance bottlenecks. Answering these questions becomes much harder when there are multiple systems involved. Read more: https://nurkiewicz.com/48 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter
Sep 07, 202104:16