Episodes
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...
Published 02/13/23
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:...
Published 02/06/23
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...
Published 01/23/23
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...
Published 01/16/23
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,...
Published 01/11/23
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...
Published 11/28/22
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
Published 11/21/22
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:...
Published 11/15/22
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,...
Published 10/12/22
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
Published 10/03/22
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...
Published 09/27/22
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...
Published 09/19/22
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:...
Published 09/13/22
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...
Published 08/29/22
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...
Published 08/23/22
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...
Published 08/16/22
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:...
Published 08/05/22
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...
Published 07/04/22
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:...
Published 06/30/22
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
Published 06/20/22
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...
Published 06/13/22
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
Published 06/06/22
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
Published 05/31/22
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...
Published 05/16/22