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
1
#97: Ruby: help every programmer to be productive and to be happy
4:09
4:09
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:09
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
1
#96: Border Gateway Protocol: the duct tape that makes the Internet work
4:12
4:12
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:12
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
1
#95: SQLite: the most ubiquitus database on the planet. And beyond!
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#94: Scala: language with academic background and huge industry adoption
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#93: K-means clustering: machine learning algorithm to easily split observations into multiple buckets
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#92: Clojure: a languages that will change the way you think about programming
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#91: Asynchronous communication: loose coupling in distributed systems
4:12
4:12
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:12
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
1
#90: Mastodon: next-generation, open source social network
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#89: RabbitMQ: A proven message broker for asynchronous communication
3:45
3:45
Mais Tarde
Mais Tarde
Listas
Like
Curtido
3:45
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
1
#88: SLI, SLO and SLA: a number, a threshold and a legal document respectively
4:12
4:12
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:12
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
1
#87: Artificial neural networks: imitating human brain to solve problems like humans
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#86: Proof of stake: how to cut global energy usage by 0.2%
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#85: Genetic algorithm: natural selection helps to solve coding problems
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#84: Non-fungible token (NFT): digital, decentralized art market
4:05
4:05
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:05
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
1
#83: Real-time bidding: how online tracking helps serving ads
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#82: MongoDB: the most popular NoSQL database
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#81: Quarkus: supersonic, subatomic Java (guest: Holly Cummins)
4:07
4:07
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:07
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
1
#80: Ethereum: a distributed virtual machine for exchanging money and bored apes
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#78: Stuxnet: computer virus that you can admire
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#77: DDoS: take down a server, one request at a time
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#76: 12th Factor App: portable and resilient services start here. Part 8-12/12
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#75: 12th Factor App: portable and resilient services start here. Part 1-7/12
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#74: SOAP: (not really) Simple Object Access Protocol
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#72: React.js: library that won frontends?
4:12
4:12
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:12
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
1
#70: CRDT: Conflict-free Replicated Data Type (guest: Martin Kleppmann)
4:09
4:09
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:09
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
1
#69: DevOps: not a job position, but culture and mindset
4:04
4:04
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:04
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
1
#68: ACID transactions: don't corrupt your data
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#67: Version control systems: auditing source code, tracking bugs and experimenting
4:13
4:13
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:13
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
1
#66: Aspect-oriented programming: another level of code modularization
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#65: Zero Downtime deployment: If it hurts, do it more often
4:04
4:04
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:04
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
1
#64: TypeScript: will it entirely replace JavaScript?
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#63: Logging libraries: auditing and troubleshooting your application
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#62: Object-relational mapping: hiding vs. introducing complexity
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#61: Spring framework: 2 decades of building Java applications
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#60: Haskell: purely functional and statically typed programming language
4:10
4:10
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:10
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
1
#59: How compilers work: from source to execution
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#58: Consumer-driven Contracts: TDD between services
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#57: Kotlin: Much more than 'better Java'
3:53
3:53
Mais Tarde
Mais Tarde
Listas
Like
Curtido
3:53
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
1
#56: Test-driven development: It's not about testing
4:14
4:14
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:14
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
1
#55: Percentages, percentage points and basis points: understand your metrics
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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
1
#54: Immutability: from data structures to data centers
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#53: CDN: Content Delivery Network: global scale caching
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#52: How computers work: from electrons to Electron
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#51: Cloud computing: more than renting servers per minute
4:12
4:12
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:12
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
1
#50: Property-based testing: find bugs automatically by generating thousands of test cases
4:15
4:15
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:15
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
1
#49: Functional programming: academic research or new hope for the industry?
4:13
4:13
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:13
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
1
#48: Distributed tracing: find bottlenecks in complex systems
4:16
4:16
Mais Tarde
Mais Tarde
Listas
Like
Curtido
4:16
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