Join the club and receive an email when I post a new article! No spam ever, no worries.

Learnings from using Kafka Connect - Debezium - PostgreSQL

Using Debezium to ensure consistency between PostgreSQL and Kafka is nice, but what at what cost? Here is what we learned.

CQRS: Why? And All The Things To Consider

CQRS is a useful pattern to reason about the activities of a specific domain. But it definitely comes with a steep learning curve. Reads, Writes, DDD, Event Sourcing, Eventual Consistency, why should we care?

Kafka Streams: Topology and Optimizations

Kafka Streams has a high-level DSL to work with, but offers more power with its low-level DSL. In the latest versions, we can enable automatic optimizations: they can greatly help you, but we should understand at what cost.

Using vavr to write more robust Java code

Exceptions are ubiquitous in Java, but they have many downsides. We'll see how to deal with errors in a functional way, using vavr datatypes.

Are Scala Futures the past?

We all started with Scala Futures. They offer so much power and their syntax is simple. But they also bring their own troubles, fixed by better abstractions.

Types: Never commit too early - Part 3: Stacking Monad Transformers without stack

It's common to have to stack monads to provide several effect at once: Monad Transformers are here to help us. But they bring their own issues. Hopefully, typeclasses can help us again.

Types: Never commit too early - Part 2: How typeclasses save us

Typeclasses allow us to not commit too early to an implementation and simplify the scope of what a function can do. Even better, it's easy to provide a better (faster) implementation without hassle.

Types: Never commit too early - Part 1: The Free Theorems

We can learn a lot from functions just by looking at their signatures. The simpler the types, the easiest it is to understand it. Polymorphism and Pure Functional Programming help us.

A simple way to write parsers: using the State monad

Who said parsers had to be complicated to write? We'll see how we can use the State monad to write mini-parsers (to recognize letters, digits), combine them (to recognize words, numbers), then finally parser a complete language.

An ode to the kind-projector and to the partial-unification of Scala

The kind-projector sbt plugin is quite ubiquitous in the Scala world. It introduces new keywords to provide some syntactic sugar for advanced type-related usage. It's also depends on the partial-unification done by scalac, which has some caveats.

The murmur3 hash function: hashtables, bloom filters, hyperloglog

A hash function is any algorithm or subroutine that maps large data sets of variable length, called keys, to smaller data sets of a fixed length.

Looking at Kafka's consumers' offsets

The consuming model of Kafka is very powerful, can greatly scale, and is quite simple. It's useful to understand how the internals work, like the topic __consumer_offsets, and see how to use Kafka Streams Druid to display its content.

Serializing data efficiently with Apache Avro and dealing with a Schema Registry

Apache Avro is a must nowadays, but it's rarely used alone. For the sake of schema evolution (any business have requirements changes), it's often associated with a Schema Registry. This also has a performance impact because every message has to be checked.

All the things we can do with JMX

JMX is an API used to expose data from any Java program to the outside. It's used by tons of softwares and libraries because you can then gather the data in any other system.

HTCBMS — Part 3 — Circuit-breakers

A circuit-breaker avoids useless call retries if it already knows the call will fail. It can provide a fallback instead. Multiple libraries exist to hide this complexity and provide observability.

HTCBMS — Part 2 — Retryers

When a service call fails, the simplest pattern to ensure a basic resilience is to try again. Multiple libraries exist to hide this complexity.

How to communicate between micro-services — Part 1

A global overview of the micro-services strategy. It must deal with failures, how to communicate between them, sync/async, performances, observability, consistency and much more.

Comparing Blog Hosting Services—For developers

Basically, Gatsby on Netlify is so good, and free.

Are you up to date ?

Our jobs don't stop to evolve: continuous learning is mandatory. There are so many sources of knowledge out there. Focus.

JNA—Java Native Access: enjoy the native functions

After JNI, it's JNA. We can depends on third-party APIs in C/C++ in a simple way.

Demystifying openssl

I always saw openssl as a complicated beast. I don't anymore. It's just math.

From Flume to Avro to Impala Parquet

As a Data Engineer, moving data from one point to another, while being resilient IS the job. We'll do that with Flume, HDFS, and Impala.

How to not remember any password ?

Never ssh with a password: use asymmetric cryptography to never type them again.

Java CLI, GC, memory, and tools overview

Java and the JVM is a humongous world with tons of tools, options, and behaviors to be aware of (GC). It's always useful to have an overview.

How to improve our code quality?

Integrating ESLint into webpack: that can save your time and find bugs.

Webpack Hot Reloading and React

As a React Front-end Developer, you're probably using Hot Reloading every day. But do you know how it's working?

HBase merge and split impact in HDFS

Understanding the HBase split and merge operations on HDFS.

ReactJS inline styles VS CSS : benchmark

ReactJS: using inline styles VS stylesheets. What are the differences?

Générer des classes CSS avec un nom unique

Des classes CSS dédiés à leur composant ReactJS uniquement.

Docker sous Windows 8.1

boot2docker sous Windows 8.1: quelques subtilités et erreurs rencontrées.

Using react-hot-loader with webpack

Stop refreshing the page when you just changed some background-color. Hot Reloading is a must to gain productivity.

The comfort zone is evil

If you're stay in your confort zone, you'll be stuck later and will regret it. Challenge yourself!

How to avoid website jank: a lot of performance tips

Performance matters. A website should not be optimized right away, but it must neither be under-performant.

ReactJS and ES2015/JSX transpilation

This was written when React was in version 0.13.0rc1. Gimme a break.

Why Gulp is so fast?

Gulp is a popular build system. Popular because it's fast thanks to its streams usage.

Browserify in-depth

Browserify was a popular Javascript bundler, simpler than Webpack.

How to communicate between ReactJS components

There are multiple patterns for components to talk to each others, according to their bond (parent, child, other). We'll see all of them!

Understand the concepts of ownership and children in ReactJS

What can we find in this.props.children, and how to use it?

ReactJS tips and tricks

Thinking in ReactJS is another mindset to build. Components must be thought decoupled and that's for the best!

Creating an API with NodeJS, expressjs, NeDB and MongoDB

The experience of building a complete back-end in NodeJS.

ReactJS: A new way to build a website

How ReactJS works, what are the famous components we must write? What are the principal features?

Atom, Alt-GR, and Windows walk into a bar

Alt-GR is a bit delicate to handle with Atom on Windows

Join the club and receive an email when I post a new article! No spam ever, no worries.

Ready to work with me?

Tell me everything!
© Copyright 2018-2022 · Stéphane Derosiaux · All Rights Reserved.