As I had written in my previous blog, I don’t believe a true AI can be a computer program. The question that arises is why not? And if not, what can it be? As I have said, I find that computers are just that, a system that does mathematical computations and nothing more. While we claim that our computers are ...
Read More »
Comparison of language features between Java, Kotlin, Dart and TypeScript
Some time ago I blogged about language features in TypeScript and Dart which I miss in Java. In this blog post, due to my new expertise in Kotlin, I would like to consider Kotlin too. Every programming language has a main focus where it is used. Java is primarily used in backend, Kotlin in backend + frontend (Android) and Dart, ...
Read More »Kernel – Message Formatting and Template Expansions
Kernel – Message Formatting and Template Expansions The module kivakit-kernel supports a simple variable substitution syntax. This syntax can be used when formatting messages, or when substituting variables into templates. Formatting a Message Basic message formatting is achieved with the Message.format() method: var formatted = Message.format("Hello my name is $", name); The symbol $ is an expansion marker, and ...
Read More »Java: Why a Set Can Contain Duplicate Elements
In low-latency applications, the creation of unnecessary objects is often avoided by reusing mutable objects to reduce memory pressure and thus the load on the garbage collector. This makes the application run much more deterministically and with much less jitter. However, care must be taken as to how these reused objects are used or else unexpected results might manifest themselves, ...
Read More »Java: Creating Terabyte Sized Queues with Low-Latency
Queues are often fundamental components in software design patterns. But, what if there are millions of messages received every second and multi-process consumers need to be able to read the complete ledger of all messages? Java can only hold so much information before the heap becomes a limiting factor with high-impacting garbage collections as a result, potentially preventing us from ...
Read More »Service to Service call pattern – Using Anthos Service Mesh
Anthos Service Mesh makes it very simple for a service in one cluster to call service in another cluster. Not just calling the service but also doing so securely, with fault tolerance and observability built-in. This is a fourth in a series of posts on service to service call patterns in Google Cloud. The first post explored Service to Service ...
Read More »The 2022 Javascript Developer Bootcamp Certification Bundle
Build Your Coding Expertise from the Ground Up with 121 Hours of Content on JavaScript, from the Basics to Building Your Own Project Hey fellow geeks, This week, on our JCG Deals store, we have another extreme offer. We are offering a massive 99% off on The 2022 Javascript Developer Bootcamp Certification Bundle. Get it now with only $20 instead ...
Read More »Log4j RCE 0-day vulnerability (CVE-2021-44228) mitigation actions
I had an update from my very good friend and excellent consultant Stella Varvarigou in which she explained me that setting com.sun.jndi.rmi.object.trustURLCodebase and com.sun.jndi.cosnaming.object.trustURLCodebase to false does not fully mitigate the threat as it is possible to send the exploit code with the request.[2] Introduction Apache Log4j, the most popular logging system, has announced a zero-day exploit CVE-2021-44228 on December 9, 2021 that results ...
Read More »Golang – First look at generics
This post is part of a series where I do my best to organize my thoughts around Go: its paradigms and usability as a programming language. I write this as a Java programmer that respects the principles of Elegant Objects. Go 1.18 Beta 1 was just released. These are my initial impressions of the main feature to be delivered in this release: generics. ...
Read More »