Tomasz Nurkiewicz public
[search 0]
More
Download the App!
show episodes
 
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 u ...
  continue reading
 
Loading …
show series
 
Yukihiro Matsumoto, the creator of Ruby programming language,famously said: “I hope to see Ruby help every programmer in theworld to be productive, and to enjoy programming, and to be happy.”Honestly, not many programming languages were built with developer’shappines in mind. And to be honest, Ruby is a joy to work with. It’sfairly easy to learn, e…
  continue reading
 
Border Gateway Protocol, BGP for short, is probably the mostimportant protocols you might have never heard of. Well, you did atleast once, in October 2021. When Facebook, WhatsApp, Instagram andMessenger all went down because of BGP misconfiguration. Or that one dayback in 2008 when all YouTube traffic was accidentally routed toPakistan. Because of…
  continue reading
 
SQLite is by far the most common SQL database ever deployed. Are youlsitening to this on iPhone or Android device? It runs SQLite. Or maybethrough a web browser? Chrome, Safari, Firefox, Opera and AndroidBrowser all use SQLite underneath. Are you running MacOS or Windows?It’s built-in. Most Linux distributions have it as well. “But I’mlistening to …
  continue reading
 
Scala is a programming language running on the Java Virtual Machine.It’s statically typed, and you can use it both as functional andobject-oriented language. Even at the same time. The functional side ofScala supports higher-order (and higher-kinded) types. For those of youknow what it means. On the other hand, object-relational features ofScala ar…
  continue reading
 
K-means clustering is an algorithm for partitioning data intomultiple, non-overlapping buckets. For example, if you have a bunch ofpoints in two-dimensional space, this algorithm can easily findconcentrated clusters of points. To be honest, that’s quite a simpletask for humans. Just plot all the points on a piece of paper and findareas with higher …
  continue reading
 
Clojure is a dynamically, strongly typed programming language. It’s adialect of Lisp running on the Java Virtual Machine. Lisp is 6decades old and has a really weird syntax. That weird syntax is calledPolish prefix notation. Basically, in every other languageyou’ve used math operators like plus or minus are infix. It means theyare placed between op…
  continue reading
 
There are two main ways to communicate between components in yourdistributed system: synchronous and asynchronous. Synchronouscommunication is like making a phone call. The system on the other sidemust be present and you actively wait for a response to your everyquestion. Examples of this style include REST, SOAP and GraphQL. Read more: https://nur…
  continue reading
 
After many dramatic events around Twitter lately, many people,including myself, began experimenting with Mastodon. Superficially it’san open-source clone of the former that anyone can deploy and host.However, once you look deeper, it’s actually a completely differentphilosophy and architecture. Let’s focus on how Mastodon federatednetwork is built.…
  continue reading
 
RabbitMQ is a message broker, allowing asynchronous communication indistrubuted systems. The key advantages of RabbitMQ include: 15 years ofopen source history, battle proven Erlang implementation and support forindustry standard protocols. RabbitMQ is among the most popularimplementations of message brokers. Others include ActiveMQ for Java, celer…
  continue reading
 
Many people, when asked about SLA, simply shout 99%. The correctanswer to that question is probably a long, boring PDF, written bylawyers. Yes, SLA is a legal obligation. Not a metric or a number. Youprobably meant SLI or SLO. Read more: https://nurkiewicz.com/88 Get the new episode straight to your mailbox: https://nurkiewicz.com/newsletter…
  continue reading
 
An artificial neural network is a computer algorithm somewhatinspired by our brains. Superficially, our brain is a network of neuronsconnected with each other and communicating via electrical impulses.Artificial intelligence experts implemented a similar concept purely insoftware. An artificial neuron is basically a function that takes a setof inpu…
  continue reading
 
p>A few weeks ago Ethereum blockchain moved from proof-of-work to aproof-of-stake algorithm. This step alone reduced global energyconsumption by 0.2%. It’s as much as an energy usage of Austria. At thispoint, Ethereum, the second largest blockchain after Bitcoin, is usingbarely as much electricity as a few hundred households. How is thatpossible? H…
  continue reading
 
A genetic algorithm is a heuristic approach to solving complexcomputational problems. This includes various optimizations, especiallyaround scheduling and design. For example, NASA designed a radio antennafor their spacecraft using a genetic algorithm. Its shape is quitecomplicated, like nothing that could be designed by hand. So how dogenetic algo…
  continue reading
 
Non-fungible tokens, NFTs for short, are financial instrumentsimplemented on top of the blockchain. They can be bought and sold, justlike cryptocurrencies. However, unlike bitcoins, each NFT is unique andtraded individually. Whereas Bitcoins or ether are interchangeable, justlike hundred-dollar bills. So what makes each NFT unique? Why would youpur…
  continue reading
 
We all know this feeling. You search for a hotel in Paris and youkeep getting ads for hotels and flights for weeks to come. Or somethingeven scarier. You visit a blog post highlighting the first symptoms of apregnancy. An hour later every single website on the planet advertisesdiapers and baby formulas. How is that possible? How do they know? Andho…
  continue reading
 
MongoDB is a NoSQL database. Precisey speaking, it’s adocument-oriented database. It stores arbitrarily complex key-valueobjects. For example, in a single Car object you can storeas much information as you want. Not only license plate or manufacturingyear. But also information about each individual part, history ofrepairs, insurance and all owners.…
  continue reading
 
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 re…
  continue reading
 
Ethereum is a network of computers with no central trusted authority.They achieve consensus by running computation-intensive algorithm, knownas proof-of-work. The agreed state is added to an append only ledger,known as blockchain. Yes, Ethereum is yet another blockchain. And it’sused to track transactions in a cryptocurrency, known as Ether. Howeve…
  continue reading
 
QUIC can be thought of as the third fundamental protocol of theInternet. Next to UDP and TCP/IP. Let’s talk a little bit about thesetwo. They both build upon IP, Internet Protocol. IP supports exchangingpackets of data between two machines having… IP addresses. UDP addsports. Port is a logical concept. It’s simply a number within onemachine that id…
  continue reading
 
Stuxnet was probably one of the most sophisticated pieces of softwareever built. I can easily imagine a Hollywood movie about it. A computerprogram that could change the course of history. Ironically, Stuxnet wasa computer virus. A virus that infected 200 thousand machines. Butactivated and damaged only on a fraction of that. Read more: https://nur…
  continue reading
 
Denial-of-service attack tries to take down a server by sendingspecially-crafted requests. The simplest form of this attack is justsending a lot of requests in a short period of time. But moresophisticated methods are possible. For example, sending a singleunusual request that overwhelms the server. One such example is a ZIPbomb, that I’ll explain …
  continue reading
 
In part 2 of the Twelve-Factor App, we’ll explore the second half ofthe principles. Be sure to listen to the previous episode as well. Westill 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
  continue reading
 
Twelve-Factor App is a set of design guidelines defined by Heroku.These guidelines are best suited for cloud-native, portable andresilient services. In this episode, I’ll explain the first sevenprinciples. 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…
  continue reading
 
SOAP, formerly known as Simple Object Access Protocol, is a messagingstandard. SOAP is very broad and general. Technically, it can supportrequest-response, as well as fire-and-forget communication. Theunderlying protocol is typically HTTP, but there’s nothing against usingmessage brokers. Or even good old SMTP. You know, the one for exchanginge-mai…
  continue reading
 
Neo4j is a NoSQL database engine. What makes it different is theunusual data model. In Neo4j everything is modelled as a graph. A graphis a collection of nodes connected with edges. A typical example is agraph of friends on a social media website. Or a network of movies andactors. But it turns out many problems can be efficiently modelled asgraphs.…
  continue reading
 
React.js is a JavaScript library for building dynamic userinterfaces. React applications are built on top of reusable components.Components encapsulate look and feel, logic and state. Also, React hasquite an advanced state propagation mechanism. In simple words, it meansthat the user interface is very responsive and consistent. To improvedeveloper …
  continue reading
 
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 …
  continue reading
 
Hello everyone! My name is Martin Kleppmann. I’m a researcher at theUniversity of Cambridge. And I would like to tell you briefly about thetechnology called CRDTs. So, CRDT stands for Conflict-free ReplicatedData Type. It’s a type of data structure that you can use to buildcollaboration software. So think software like Google Docs for example.Or Fi…
  continue reading
 
DevOps is a movement to bridge the gap between developers andoperations teams. Traditionally, these two groups were separate andrarely interacted with each other. Developers didn’t quite understandhow software is deployed and managed. Operation teams, on the otherhand, treated software as a black box. DevOps encourages synergy betweenthese two role…
  continue reading
 
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 othe…
  continue reading
 
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, …
  continue reading
 
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 tra…
  continue reading
 
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.…
  continue reading
 
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 an…
  continue reading
 
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 n…
  continue reading
 
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…
  continue reading
 
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 w…
  continue reading
 
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:…
  continue reading
 
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 inte…
  continue reading
 
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. Wi…
  continue reading
 
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…
  continue reading
 
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…
  continue reading
 
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 ne…
  continue reading
 
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. A…
  continue reading
 
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.…
  continue reading
 
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 …
  continue reading
 
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 pr…
  continue reading
 
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 inpu…
  continue reading
 
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 t…
  continue reading
 
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’s fairly easy to prof…
  continue reading
 
Loading …

Quick Reference Guide