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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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
Nghe Sau
Nghe Sau
Danh sách
Thích
Đã thích
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