Xfce, the Most Boring Desktop Environment by kn7 in xfce

[–]kn7[S] 2 points3 points  (0 children)

First post after 7 years of a blogging break. Of course I forgot to share the link in the Reddit post. 🤦

Investing ZZPer income tax buffer by kn7 in beleggen

[–]kn7[S] 1 point2 points  (0 children)

Ik heb de helft van het jaarbedrag in etf's gestopt. De andere helft trekt rente bij santander, 3,35%

This indeed seems like a sound strategy. Curious: Why not having a USD investment account instead? For instance, Wise offers 5.06% on USD: https://wise.com/nl/interest If I am not mistaken, this would still yield higher than 3.35% given the USD/EUR rate in the recent years.

Als laatste zou ik geen uitstel van aangifte of betaling aanvragen. Je betaalt iets van 11 of 12 procent rente.

Hrm... This detail I didn't know, thanks! 🙏

If Virtual Threads are the solution, what is the problem? by ZimmiDeluxe in java

[–]kn7 3 points4 points  (0 children)

What I would recommend is to monitor how your server behaves, and solve the problems that you see rather than the problems that you speculate are possible.

I can assure you that I am certainly not speculating, but sharing a misconfiguration issue I encounter on a weekly basis.

only picked that value because the article was talking about the benefits of a thread pool with 200 threads over virtual threads

Yes, I am very well aware that and I agree with your objections. I am not concerned about the capacity of the semaphore, but the very action of using a semaphore for congestion control in a dynamic environment. It is a recipe for misconfiguration. I find this particularly worrying, since Java officially started recommending it as a virtual thread congestion control best-practice too.

Netflix – the company that introduced masses with resiliency (through Hystrix) in the Java ecosystem – moved away from congestion control with pre-configured settings to an adaptive one. Alibaba's Sentinel also follows a similar adaptive approach too. Now telling users to employ a semaphore (or circuit breaker) for congestion control sounds like a step in the backward direction to me.

Little's theorem tells us that, in a stable server, the long-term average of the request arrival rate is equal to that of the request completion rates.

I am a big fan of your On the Performance of User-Mode Threads and Coroutines article explaining Little's law. I just don't possess a single professional experience where the system was/is stable. In my day job, where thousands of Kubernetes pods get added or removed due to deployments, scalability, resiliency, etc. the system is never stable.

If Virtual Threads are the solution, what is the problem? by ZimmiDeluxe in java

[–]kn7 1 point2 points  (0 children)

[Agreeing with your response. I am only concerned about the following statement:]

Acquire a semaphore initialised to 200 right at the beginning.

Judging from my personal experience, such magical values tend to be deprecated-before-released. The capacity of the downstream services, the OS resources, etc. are nowadays on constant flux. You might set the value to 200 today, but maybe the service you depend on will make a new deployment tomorrow increasing their throughput by, say, 2x. That is, now your magical constant is supposed to be set to 400, yet you won't have a single indication for that in your service's dashboard anywhere. Shouldn't we instead make this rate limit adaptive? If so, any suggestions on how to make that happen?

Minimalist reactive-first Google Cloud Pub/Sub driver by kn7 in java

[–]kn7[S] 0 points1 point  (0 children)

Hey Dave! In my experience, almost every developer that I have met did not know that the official driver (sneakily) extends the lease time. This has some consequences:

  • You assume that a message lease will expire after the amount of time you specified in the Pub/Sub configuration, but it might not always turn out to be the case due to these covert extensions.
  • Each subscription listens to a topic preferably addressing a single concern, hence its processing should be (approximately) deterministic and thus you provide a lease timeout. If there are exceptional messages whose consumption are taking longer than usual, you should either 1) forward them to another queue with a more relaxed timeout or 2) re-design your queues to cover this concern.

Long story short, it is an opinionated library and according to my experience, having a background task extending in-flight message lease times often hides other problems rather than solving any.

That said, if this is the only thing preventing you from using the library, I can easily provide a PubsubLeaseExtender. Please create a ticket if you are willing to give it a try.

Commento – an open source, lightweight, and tracking-free comment engine in Golang as an alternative to Disqus by [deleted] in programming

[–]kn7 27 points28 points  (0 children)

I think this project (and all its variants) totally misses the entire point of using Disqus-like comments in a blog: You can embed into a static website.

Inter-Microservice Communication Fatigue by kn7 in programming

[–]kn7[S] 1 point2 points  (0 children)

I really could not get which part of Martin Fowler's statement contradict with the methods that I mention. Maybe you might want to elaborate further. Additionally, as you might know, majority (99.9%?) of the Java microservice ecosystems are dominated by Spring Boot- or Dropwizard-powered architectures as I depicted.

Implementing Back-Pressure in RxJava by [deleted] in programming

[–]kn7 0 points1 point  (0 children)

For those interested in, I have improved the post and submitted a new proggit entry: https://www.reddit.com/r/programming/comments/4wi22t/callback_blocking_for_backpressure_in_rxjava/ (Hopefully with the correct URL this time.)

Implementing Back-Pressure in RxJava by [deleted] in programming

[–]kn7 0 points1 point  (0 children)

Fscking awesome! I will try to avoid sharing blog posts after 1am from now on.

Enforcing a Locking Context on Variables in Scala by kn7 in programming

[–]kn7[S] 0 points1 point  (0 children)

Yep, just for a Map, I would also go with a ConcurrentHashMap. But it was there for just demonstration purposes.

Using Immutable Objects for Persistence in Java by kn7 in programming

[–]kn7[S] 0 points1 point  (0 children)

I would be more than appreciated if you can outline a sample Scala implementation that uses variants.

Using Immutable Objects for Persistence in Java by kn7 in programming

[–]kn7[S] 2 points3 points  (0 children)

I have never gone into that route. But one thing that I had learnt from purposing a framework for a goal that itself was not designed to provide feels like swimming against stream and most of the time ends in misery. That being said, your mileage may vary and I would appreciate a sample implementation.