Gunnar Morling 🌍 Profile Banner
Gunnar Morling 🌍 Profile
Gunnar Morling 🌍

@gunnarmorling

51,184
Followers
302
Following
1,857
Media
28,224
Statuses

Software engineer @Decodableco · Ex-lead of Debezium · Spec lead of Bean Validation 2.0 · Creator of JfrUnit, kcctl and MapStruct · Java Champion · 🚴

Hamburg, Germany
Joined February 2014
Don't wanna be here? Send us removal request.
Pinned Tweet
@gunnarmorling
Gunnar Morling 🌍
5 months
📝 Public change event streams (think #Debezium ) should be evolved with forward compatibility in mind. Find out why, and how to do so with the help of data contracts created via #ApacheFlink , in my latest blog post 👇.
Tweet media one
@Decodableco
Decodable
5 months
"Change Data Capture Breaks Encapsulation". Does it, though? 🤔 New post on the blog: Learn how to create data contracts for your change event streams and evolve them with compatibility in mind. By @gunnarmorling .
Tweet media one
2
16
58
2
21
124
@gunnarmorling
Gunnar Morling 🌍
1 year
I knew it 🤣.
Tweet media one
42
643
5K
@gunnarmorling
Gunnar Morling 🌍
6 months
Ha, I knew it ;)
Tweet media one
@ChiefScientist
Alexy 🤍💙🤍
6 months
TIL that a “data lake” is just an S3 bucket stuffed choke full o’ good ol’ csv files
95
133
2K
35
397
4K
@gunnarmorling
Gunnar Morling 🌍
2 years
What to focus on during a code review? Don't waste your time with automatable formalities like code style. Rather spend your review budget on those aspects which will be hard/expensive to change later on. The "Code Review Pyramid" provides some guidance on what to look for.
Tweet media one
30
716
2K
@gunnarmorling
Gunnar Morling 🌍
2 years
"Good code documents itself" is one of the most damaging takes in software engineering. Code itself won't tell you about the decisions and rationale behind it, nor about about higher-level structures and abstractions. All this needs elaboration in documentation.
86
262
2K
@gunnarmorling
Gunnar Morling 🌍
4 months
📢 "The One Billion Row Challenge" How fast can YOU aggregate 1B rows using modern #Java ? Grab your threads, flex your SIMD, and kick off 2024 true coder style by joining this friendly little competition. Submissions accepted until Jan 31. 👉
Tweet media one
68
234
1K
@gunnarmorling
Gunnar Morling 🌍
3 years
⏱️ Just ten more days until the release of @java 17, the next version with long-term support! To shorten the waiting time a bit, I'll do one tweet per day on a cool feature added since 11 (previous LTS), introducing just some of the changes making worth the upgrade. Let's go 🚀!
7
221
871
@gunnarmorling
Gunnar Morling 🌍
2 years
Happy to share some cool personal news: I've been promoted! Yours truly is a Senior Principal Software Engineer now 🥳.
95
12
837
@gunnarmorling
Gunnar Morling 🌍
2 years
🗣️ "Distill years of Java experience down to a set of best practices that help developers build high-quality Java applications and libraries" Lots of good advice for #Java developers on this site by @JonathanGiles 👍.
Tweet media one
17
210
830
@gunnarmorling
Gunnar Morling 🌍
2 years
"Google Best Practices for @java Libraries" Lots of great advice in these docs for library authors, e.g. to have a well-defined minimal public interface, avoid split packages, and much more. That's a really useful resource 👍!
Tweet media one
9
211
826
@gunnarmorling
Gunnar Morling 🌍
1 year
"Transactions in distributed systems" Nice read on the challenges of distributed transactions and Sagas as a possible alternative, by Nader Medhat.
4
181
815
@gunnarmorling
Gunnar Morling 🌍
3 years
"Why Kafka Is so Fast" Sequential I/O, zero-copy, async disk flushes, and other design choices of #ApacheKafka , very well explained in this post by Emil Koutanov ( @IsTheArchitect ). Excellent read if you want to dive a bit into the details of Kafka 👍.
Tweet media one
6
213
776
@gunnarmorling
Gunnar Morling 🌍
2 years
If you have a #Maven parent POM for your org or project, here's an enforcer rule to put into it which will ban any current of future usage of vulnerable #log4j2 versions.
Tweet media one
5
199
670
@gunnarmorling
Gunnar Morling 🌍
2 years
📢 Some personal news: after ten years, it's my last week at @RedHat ! Feeling blessed to have had the opportunity to work with and learn from this world-class team, help to build amazing open-source projects and communities, and travel the world. Thanks for everything!
Tweet media one
109
11
665
@gunnarmorling
Gunnar Morling 🌍
2 years
If there's one thing I dislike about our industry, it's its tendency to dogmatism: "100% TDD", "ORM sucks!", "That's not truly RESTful", etc. Reality is always nuanced, and believing into simple "truths" won't get you very far.
33
85
585
@gunnarmorling
Gunnar Morling 🌍
2 years
I wish more library maintainers would follow a (close to) zero dependencies policy. Libs should never depend on stuff like Guava, kotlin-stdlib, or logger implementations. Yes, it means less comfort for yourself, but your users will be grateful.
52
79
577
@gunnarmorling
Gunnar Morling 🌍
5 months
"pgroll: zero-downtime, reversible, schema migrations for #Postgres " Wow, very refreshing take on schema updates: using updatable views to expose old and new schema in parallel, until all app instances have been migrated. Great idea!
Tweet media one
7
95
569
@gunnarmorling
Gunnar Morling 🌍
1 year
"SQLite: Past, Present, and Future" Excellent paper by Kevin P. Gaffney, D. Richard Hipp et al., touching on history and design and #SQLite , some perf benchmarks, its suitability for OLAP workloads, etc.
Tweet media one
4
120
537
@gunnarmorling
Gunnar Morling 🌍
7 days
Breaking: IBM/Red Hat to announce a merger of Terraform and Ansible named, wait for it, Terrible 🥳.
17
83
550
@gunnarmorling
Gunnar Morling 🌍
2 years
"Distributed transaction patterns for microservices compared" Excellent in-depth write-up on approaches for coordinating data changes across multiple services, also touching on the outbox pattern with #Debezium , by @bibryam . Great stuff!
Tweet media one
2
146
541
@gunnarmorling
Gunnar Morling 🌍
1 year
Splitting a monolith into microservices with their own data stores means giving up on foreign keys for ensuring referential integrity. Readworthy post on this problem and possible solution strategies, by @stephennimmo .
Tweet media one
6
99
513
@gunnarmorling
Gunnar Morling 🌍
2 years
When I'm interrupted during some coding work (lunch break, etc), I usually add some quick code which won't compile. I found that's the quickest reminder for where I left off when getting back. Anyone else doing that?
107
26
508
@gunnarmorling
Gunnar Morling 🌍
1 year
As a software engineer, there's no way to understand 100% of everything; you need to identify key areas where you build up deep expertise while having good enough knowledge of the rest. Being conscious about this becomes only ever more important as you progress in your career.
16
91
494
@gunnarmorling
Gunnar Morling 🌍
1 year
🗣️ "There’s no magic behind CQRS and Event Sourcing. Before starting your journey it is crucial to understand the many impacts of the two patterns" Nice read about employing ES and CQRS in the domain of air traffic management, by @teivah .
Tweet media one
10
103
485
@gunnarmorling
Gunnar Morling 🌍
7 months
👇 And here's another one which should be on every data engineer's bookshelf. While I may be biased a teeny-tiny bit, I highly recommend it to folks looking for a pragmatic hands-on guide on building realtime analytics systems, with tech like Kafka, Debezium, and Pinot.
Tweet media one
@gunnarmorling
Gunnar Morling 🌍
7 months
Not buying too many IT books on paper these days, but when I do, it is about building data systems 🤓! It's also one of the benefits here at #Decodable : anyone has their generous yearly betterment budget, so you just can buy things that help doing the job, no questions asked 💯.
Tweet media one
9
27
311
1
70
489
@gunnarmorling
Gunnar Morling 🌍
1 year
"Real-time Data Infrastructure at Uber" Apache Kafka for streaming storage, Flink for stream processing, Pinot for OLAP, HDFS for archival storage, Presto for interactive queries -- Nice rundown of @UberEng 's data infra, by Yupeng Fu and @ChinmaySoman .
Tweet media one
8
120
480
@gunnarmorling
Gunnar Morling 🌍
2 years
Meeting was cancelled.
@digitalocean
DigitalOcean
2 years
Make a developer happy in 3 words: 🤩
1K
55
937
6
46
470
@gunnarmorling
Gunnar Morling 🌍
1 year
🧵 "How does Apache Flink compare to Kafka Streams?" Both do stream processing, but differ in some important aspects. A few folks asked me about this recently, so I thought I'd share some thoughts. This is from a user's perspective, not touching on implementation details. 1/10
17
90
474
@gunnarmorling
Gunnar Morling 🌍
5 years
Just realizing that @java 13 text blocks also work in annotations. Comes in very handy for #Hibernate / #JPA named queries.
Tweet media one
13
136
455
@gunnarmorling
Gunnar Morling 🌍
1 year
🗣️ "This article focuses on how we leveraged open source technology to build Uber's first 'near real-time' exactly-once events processing system" Nice write-up about @ApacheFlink , @apachekafka , and @ApachePinot at work at @UberEng 👍.
Tweet media one
6
102
446
@gunnarmorling
Gunnar Morling 🌍
1 year
🎉 Living the stream -- I am thrilled to share that I've joined @Decodableco as a software engineer! The world is real-time, and so should be your data. Beyond excited to help building the real-time data platform for everyone 🚀!
Tweet media one
85
13
440
@gunnarmorling
Gunnar Morling 🌍
2 years
📝 Blogged: "The JDK Flight Recorder File Format" Spent some time with a debugger and a hex editor for exploring the format of #JFR recordings, and how it efficiently stores large numbers of events. #Java (link to SVG version of the image inside)
Tweet media one
19
128
430
@gunnarmorling
Gunnar Morling 🌍
1 year
"6 Event-Driven Architecture Patterns" A two-part series by @NSilnitsky about some patterns that proved useful for building robust distributed systems at @WixEng .
Tweet media one
3
93
425
@gunnarmorling
Gunnar Morling 🌍
11 months
My favourite feature in #Java : the generally small amount of drama in the community.
37
47
430
@gunnarmorling
Gunnar Morling 🌍
2 years
Looks like #PostgreSQL (and its wire protocol, metadata, etc.) is becoming the one true SQL standard after all.
9
37
426
@gunnarmorling
Gunnar Morling 🌍
3 years
📢 Thrilled to share my article "Saga Orchestration for #Microservices Using the Outbox Pattern" is up on @InfoQ ! Discussing how to implement Sagas safe and reliably using change data capture and #Debezium , with services connected via #ApacheKafka .
Tweet media one
8
134
422
@gunnarmorling
Gunnar Morling 🌍
2 years
Before trash-talking someone else's code, always keep in mind they probably tried to do the best they could given their specific knowledge and context of the situation back then.
19
71
408
@gunnarmorling
Gunnar Morling 🌍
1 year
Got asked how stream processing platforms (e.g. Apache Flink, Kafka Streams, Spark Structured Streaming) compare to streaming databases (e.g. RisingWave, Materialize, PranaDB). There's some overlap and similarities, but also differences. Here's some aspects which may help 1/10
9
79
404
@gunnarmorling
Gunnar Morling 🌍
2 years
Quick 🧵 on what's "Head-of-Line Blocking" in @apachekafka , why it is a problem, and what some mitigation strategies are. Context: Records in Kafka are written to topic partitions, which are read sequentially by consumers. To parallelize processing, consumers can be organized in
Tweet media one
9
102
405
@gunnarmorling
Gunnar Morling 🌍
3 years
🔟 Ambigous null pointer exceptions were a true annoyance in the past. Not a problem any longer since Java 14: Helpful NPEs (JEP 358, ) now exactly show which variable is null. A very nice improvement to #OpenJDK , previously available only in SAP's JVM.
Tweet media one
11
66
391
@gunnarmorling
Gunnar Morling 🌍
1 year
SQL is the low-code technology hiding in plain sight.
23
39
391
@gunnarmorling
Gunnar Morling 🌍
2 years
🧵 If you run @apachekafka in production, creating clusters, topics, connectors etc. by hand is tedious and error-prone. Better rely on declarative configuration which you put into revision control and apply in an automated way, #GitOps -style. Some tools which help with that:
7
61
388
@gunnarmorling
Gunnar Morling 🌍
3 years
Whenever I see folks complaining about the #Java language copying things that "other languages had years ago", I think there's a misunderstanding. Picking up approaches that worked elsewhere (and leaving out those that didn't!) is a core idea and key part to Java's success.
17
63
385
@gunnarmorling
Gunnar Morling 🌍
1 year
#Java coding tip: when you catch an exception, either log it, *or* re-throw it, but don't do both at once. Only the final handler of an exception (ultimately, the uncaught exception handler) should log it, in order to avoid duplicated log entries.
14
46
379
@gunnarmorling
Gunnar Morling 🌍
4 years
Woot, the latest @OpenJDK 14 early-access build brings the long-awaited @java Records (JEP 359) as a preview feature 🎉! Couldn't wait to give it a try, and first impression is great. Liking the compact constructor style.
6
151
366
@gunnarmorling
Gunnar Morling 🌍
3 months
📢 #1BRC —The Results Are In! Oh what a ride it was. A big congrats to the winners 🥇 @thomaswue / @quananh1999 / @TheMukel 🥈 Artsiom Korzun 🥉 @jerrinot and everyone else on the leaderboard! What a great experience. Complete results and some stats: 👉
Tweet media one
Tweet media two
13
88
363
@gunnarmorling
Gunnar Morling 🌍
5 months
"How to (and how not to) design #REST APIs" Some of these rules are probably more agreeable than others (e.g. not quite buying into using strings for all ids), but overall a very reasonable set of guidelines, by @jeffschnitzer .
Tweet media one
16
58
355
@gunnarmorling
Gunnar Morling 🌍
2 years
When looking for ways for documenting your software architecture, check out the excellent arc42 template by Gernot Starke and Peter Hruschka; licensed under CC BY-SA 4.0, it touches on many critical aspects like general goals and constraints, ADRs, etc.
Tweet media one
1
73
351
@gunnarmorling
Gunnar Morling 🌍
1 year
A fair share of software design is professional procrastination: keeping options on the table, doors open for as long as you can, in order to avoid locking yourself into a corner by committing too early to abstractions which turn out poor later on.
13
52
345
@gunnarmorling
Gunnar Morling 🌍
3 months
"Understanding Request Latency with Profiling" Absolute must-read post by @richardstartin about the differences of CPU vs. wall time profiling, applying both to find the performance bottleneck in a practical example.
Tweet media one
2
70
334
@gunnarmorling
Gunnar Morling 🌍
11 months
String templates in @java 21 (JEP 430) are going to be a game changer. Not only can you embed any kind of Java expression within templates, you also can define your own template processors, e.g. to return a JSON object node or a query object. Noice!
Tweet media one
22
59
333
@gunnarmorling
Gunnar Morling 🌍
3 years
Regular reminder: when it comes to persistent state, think about scaling up before scaling out. Set up an RDBMS on a decently sized machine, have someone make sure the queries you run aren't too bad, and you'll get quite far without the headaches of distributed state.
13
55
328
@gunnarmorling
Gunnar Morling 🌍
1 year
📢 Blogged: "Getting Started With Java Development in 2023" An opinionated guide for folks new to #Java , with recommendations on which version to use, what's the right build tool and IDE, etc. Happy Java programming 🚀!
Tweet media one
13
89
326
@gunnarmorling
Gunnar Morling 🌍
2 years
"How to Share Data Between Microservices on High Scale" Nice overview on microservices data exchange approaches by Shiran Metsuyanim of @fiverr , also discussing how publishing events via Kafka decouples their services.
Tweet media one
3
54
317
@gunnarmorling
Gunnar Morling 🌍
2 years
Most @java record examples center around their usage as named tuples with multiple attributes. But records are also great f. representing domain-specific types with just one value. Always guaranteed to be valid, more type-safe application logic, easy identification of any usages.
Tweet media one
14
50
311
@gunnarmorling
Gunnar Morling 🌍
7 months
Not buying too many IT books on paper these days, but when I do, it is about building data systems 🤓! It's also one of the benefits here at #Decodable : anyone has their generous yearly betterment budget, so you just can buy things that help doing the job, no questions asked 💯.
Tweet media one
9
27
311
@gunnarmorling
Gunnar Morling 🌍
2 years
Avoid calling Thread::sleep() in tests to account for some async activity as much as you can. It's brittle and needlessly extends duration of tests. Rather use tools like Awaitility () to explicitly wait until some specific condition has been met.
13
55
308
@gunnarmorling
Gunnar Morling 🌍
2 years
Hey conference organizers: could you please *always* have unique descriptive URLs for each talk on the agenda?! No JavaScript, no pop-ups, no UUIDs. Let folks share links to the talks they're excited about 🙏!
7
61
303
@gunnarmorling
Gunnar Morling 🌍
3 years
"Let's Build a Simple Database -- Writing a #sqlite clone from scratch in C" Haven't read the whole thing yet, but this looks super-interesting 👀.
Tweet media one
5
75
301
@gunnarmorling
Gunnar Morling 🌍
3 years
🧑‍⚕️ Upgrading your @java version is like going to the dentist: skip for too long, and the next encounter may be painful and unpleasant. Do it every six months and you'll hardly notice.
16
64
297
@gunnarmorling
Gunnar Morling 🌍
1 year
"How Query Engines Work" Ever wanted to build your own query engine? Then check out this guide by @andygrove_io , touching on all the relevant parts like query parsing, planning, optimizing, etc.
Tweet media one
3
61
298
@gunnarmorling
Gunnar Morling 🌍
2 years
📢 Just blogged: "Ten Tips to Make Conference Talks Suck Less" Some thoughts on things which are easy to get wrong during a talk but which can make a huge difference for how its received.
Tweet media one
12
74
298
@gunnarmorling
Gunnar Morling 🌍
4 years
Woot, support for helpful NullPointerExceptions (JEP 358, ) has landed in the @java 14 early access builds! Opt-in for now (-XX:+ShowCodeDetailsInExceptionMessages), planned to be enabled by default in JDK 15. Loving this, great improvement 🤩! #OpenJDK
7
128
293
@gunnarmorling
Gunnar Morling 🌍
1 year
Might be unpopular (or not?), but I still prefer Docker Compose over K8s by far for most demos or examples which folks should run on their local machines. Much easier to get started with, allowing to focus on the things you actually want to show and teach.
36
15
287
@gunnarmorling
Gunnar Morling 🌍
4 months
@DarrenBaldwin03 Oooh, one of my favorite topics ;) The purpose of ORM isn't to abstract SQL. Rather it's mapping result sets to objects, and (for some) dirty checking of managed object graphs and synchronizing changes efficiently to the database.
9
4
285
@gunnarmorling
Gunnar Morling 🌍
3 years
Always wanna cry when reading such comments. The primary purpose of Hibernate ORM is not to "do SQL for you", but to map result sets to object graphs, track changes, and efficiently sync those changes back to the DB. You can, and absolutely must, stay in control of emitted SQL.
Tweet media one
17
39
280
@gunnarmorling
Gunnar Morling 🌍
2 years
📢 Blogged: " #Loom and Thread Fairness" Taking @java 19's Project Loom for a spin, I learned about an interesting aspect to the scheduling of CPU-bound workloads on virtual threads.
Tweet media one
18
60
277
@gunnarmorling
Gunnar Morling 🌍
4 months
🥳 ZOMG, #1BRC made it to #1 on Hacker News 🍊! Had hit the front page before, but that's a first 🥳.
Tweet media one
11
28
281
@gunnarmorling
Gunnar Morling 🌍
1 year
Parquet: more than just "Turbo CSV" Nice write-up about the Parquet file format, by Cal Paterson.
Tweet media one
7
52
276
@gunnarmorling
Gunnar Morling 🌍
3 years
🎉 Very nice, JEP 413 ("Code Snippets in Java API Documentation", ) has landed in @java 18 EA! This going to be a huge improvement for API authors and users. Some first impressions after a quick test with the #JavaDoc of the Bean Validation API. 1/4
Tweet media one
Tweet media two
7
64
278
@gunnarmorling
Gunnar Morling 🌍
4 months
After working for a year now with code using Java's `var` keyword, it's just not clicking for me. Sure, in my IDE the compiler will infer the type, but for instance when reviewing code on GitHub, I feel it often makes things harder to grok.
61
14
277
@gunnarmorling
Gunnar Morling 🌍
4 months
One common techniques used by many #1BRC solutions is SWAR ("SIMD within a register"). It may look like magic at first, but with a bit of time, it's actually not too difficult to understand. Great post by @lemire which explains the idea. 👉
Tweet media one
2
34
278
@gunnarmorling
Gunnar Morling 🌍
5 years
On microservices🆚monoliths, it's not that one always beats the other. You can build tightly coupled, intermingled microservices and well modularized, maintainable monoliths -- and the other way around. Understand implications of both + choose what make most sense for your case.
4
102
275
@gunnarmorling
Gunnar Morling 🌍
4 years
When struggling to get the brackets right in List<Map<String, List<String>>>, it's not a problem with generics or the language, but rather a hint for weak modelling. Those lists and maps are concepts of your domain waiting to be expressed as classes encapsulating state and logic.
8
76
274
@gunnarmorling
Gunnar Morling 🌍
6 years
The "--release" compiler option new in @java 9 is super-useful: finally you can safely compile for older versions (6, 7, 8) without accidentally referencing newer APIs. No external tools or separate JDKs needed, as the compiler has full signatures of the earlier platform APIs.
4
147
267
@gunnarmorling
Gunnar Morling 🌍
2 years
A truly senior engineer will be eager to learn something new from a junior any day.
11
27
265
@gunnarmorling
Gunnar Morling 🌍
4 years
Working on a new blog post about custom @Java Flight Recorder events and feeding them to Prometheus/Grafana using the new JFR Event Streaming API (). Having both, live monitoring/alerting and recording files for offline analysis, is a really powerful combo.
Tweet media one
5
60
266
@gunnarmorling
Gunnar Morling 🌍
2 years
"1,133 changed files with 95,870 additions and 8,270 deletions" That's the commit which integrates #Loom into #OpenJDK . Deepest respect not only to those involved creating it, but also to those who reviewed these 104k changed lines 🤯.
14
30
257
@gunnarmorling
Gunnar Morling 🌍
2 years
When designing an API, start with writing up fake client code against it, then incrementally define those methods in the API. This helps you to think from the user's perspective and make sure they can achieve their goals with the API, rather than coming up with an API in vacuum.
20
27
260
@gunnarmorling
Gunnar Morling 🌍
3 years
📢 Starting your journey with #ApacheKafka and looking for some orientation? Then we ( @hpgrahsl and I) got something for you: "A Great Day Out With... Apache Kafka", a curated collection of related resources. Enjoy, and save travels in streaming land! 🔗
Tweet media one
10
75
256
@gunnarmorling
Gunnar Morling 🌍
1 year
As I'm just seeing this bizarre take again: don't let anyone shame you for using a debugger, it's one of the most powerful tools in the box to understand the runtime behavior of programs. Use what gets the job done, not what someone on the internet finds aesthetically pleasing.
33
16
249
@gunnarmorling
Gunnar Morling 🌍
2 years
"Keep your cache always fresh with #Debezium !" 📢 The slides and demo from my #Current22 talk are online now. Video recording should follow in a bit. 🖥️ 🤖
Tweet media one
6
51
250
@gunnarmorling
Gunnar Morling 🌍
11 months
Unused #ApacheKafka topics can become a real problem on production clusters, causing network, CPU, and memory overhead. Nice write-up from @LinkedInEng about their tooling for identifying and removing empty topics. Anyone aware of something OSS for this?
Tweet media one
2
58
248
@gunnarmorling
Gunnar Morling 🌍
4 years
If you're using @java in your job, I highly recommend to spend some time poking around a bit in the Java Language Specification. It is written in a really comprehensible way, and it'll widen your understanding of the language for sure.
7
58
247
@gunnarmorling
Gunnar Morling 🌍
3 years
"Improving #JVM Warm-up on #Kubernetes " Vikas Kumar explains why you should not run your #Java applications with a fixed quota of a single CPU core. Instead, use Burstable QoS to allow for increased CPU usage during start-up.
13
77
248
@gunnarmorling
Gunnar Morling 🌍
22 days
Java and the JVM, 💯.
@manishtyagi__
Manish Tyagi
22 days
Which language is this?
Tweet media one
2K
49
2K
4
29
246
@gunnarmorling
Gunnar Morling 🌍
1 year
@unclebobmartin Sad to see you on this downwards spiral of increasingly provocative hot-takes, Bob. Remember, you don't have to go down this path. You can stop at any time and use your reach to be the catalyst for a positive change.
4
2
242
@gunnarmorling
Gunnar Morling 🌍
2 years
📺 "Monitoring Kafka without instrumentation using eBPF" Great presentation and demo about @apachekafka observability, by @antonmry .
Tweet media one
2
50
239
@gunnarmorling
Gunnar Morling 🌍
7 months
If you have been away from #Java for a while, check out the Java Playground. It's the simplest way to explore recent language additions like records, text blocks, or switch expressions--right from within your browser ☕.
Tweet media one
2
47
229
@gunnarmorling
Gunnar Morling 🌍
5 years
Very honoured and grateful for being named a Java Champion! #Java is a center piece of my professional life, and I can't begin to express how thankful I am for being part of its outstanding community and getting to know and being inspired by so many fantastic people!
@Java_Champions
Java Champions
5 years
Please join us in welcoming newly confirmed Java Champions @struberg @gunnarmorling @VictorRentea Thank you for your invaluable contributions to the @java community
Tweet media one
64
62
294
39
16
230
@gunnarmorling
Gunnar Morling 🌍
11 months
Wow, that's a really cool experiment by @ozangunalp : #ApacheKafka compiled to native binary via #Quarkus and #GraalVM . A single broker node up and running on my Mac M1 in ~130ms w/ 60MB RSS. This should come in really handy e.g. for testing Kafka apps!
Tweet media one
11
45
231
@gunnarmorling
Gunnar Morling 🌍
4 months
🐘 For CDC users, one of the most exciting features in #Postgres version 16 is the support for logical replication from stand-by servers (a.k.a. read replicas). I wrote a two-part series about this: Part 1⃣ 👉 Part 2⃣ 👉 1/4
Tweet media one
4
54
229
@gunnarmorling
Gunnar Morling 🌍
3 years
🤓 What's your @java API secret tip? I.e. a type or method from the JDK, which isn't widely known yet very useful, and which you think more people should be aware of? My vote goes for Desktop.moveToTrash(). What's yours?
41
51
228
@gunnarmorling
Gunnar Morling 🌍
2 years
"Events: Fat or Thin" Enjoyed reading this discussion of event design philosophies: fully self-contained, only containing delta information, only containing a reference for retrieving more context out of bands, etc 👍. By Satjinder Bath.
2
43
223
@gunnarmorling
Gunnar Morling 🌍
3 years
"Normalize as much as possible, denormalize as much as necessary". Got this advice on data modelling from a senior developer in my first job, and I'm still thankful to them for that.
6
48
223
@gunnarmorling
Gunnar Morling 🌍
3 years
A nice little gem was added in #Java 16 b27: Stream.toList(). It's not only more concise compared to collect(Collectors.toList()), but also more efficient -- in particular with parallel() -- as it avoids result copying. Benchmark is a few simple ops on 100K elem stream of Long.
Tweet media one
Tweet media two
Tweet media three
4
49
224
@gunnarmorling
Gunnar Morling 🌍
3 months
As it came up more than once in #1BRC entries, I just had to get my own copy of "Hacker's Delight". Kudos to the betterment budget we have at work, making this an easy decision. Let the bit fiddling begin 🤓!
Tweet media one
Tweet media two
7
21
222
@gunnarmorling
Gunnar Morling 🌍
3 years
If you have even the vaguest interest in JVM performance topics, check out @richardstartin 's blog. It's a gold mine of deep and insightful posts on that topic 👇.
3
64
222
@gunnarmorling
Gunnar Morling 🌍
1 year
One data architecture I expect we'll see more in 2023 is #SQLite / #DuckDB deployed as caches at the edge, updated via change feeds from system-of-record: stellar read performance due to close local proximity to users and fully queryable data models tailored for specific use cases.
14
26
220
@gunnarmorling
Gunnar Morling 🌍
2 months
As for Java build systems, Maven is the right default choice for most teams. Gradle lets you go way further and has many advantages, e.g. around build avoidance, but in absence of someone who truly groks how Gradle works (which takes time!), it's too easy to shoot your own foot.
25
27
220
@gunnarmorling
Gunnar Morling 🌍
3 years
LOL, saw Apache Kafka being referred to as "legacy platform" today in a start-up's Series A announcement. By all means, be ambitious; improve, innovate, invent. But let's also keep things somewhat real. Such hyperbole messaging doesn't speak in your favour.
17
18
217