It is very rare nowadays to find code that uses IP address to connect to servers — especially with the popularity of cloud based infrastructure and microservices. It is convenient to have human-friendly host names than a few random numbers put together. “mydatabase.company.com” is much easier to comprehend than “10.202.17.5”. It wouldn’t be an understatement if I said, host name resolution is one of the most overlooked and taken for granted functionality in software applications.
One of the great advantages of microservices is that, when there is an issue, you already have a pretty good idea of where it is happening and which microservice is responsible for it. And if it is a performance issue, you have a manageable amount of code or libraries to investigate, rather than dealing with the monolith as a whole.
There are a lot of performance measurement tools that come as part of JDK itself — JConsole, VisualVM, HPROF, etc. Most of them profile the application as a whole and it would take some effort to get to class or…
When it comes to key-value stores that provide low-latency, high-throughput access to data, Redis is the first thing that comes to mind. It is widely used in an amplitude of use cases — session store, application cache and even as a key-value database. Redis ticks a lot of these boxes as it is memory based and is able to provide crazy fast access to data and perform operations on the data in a fraction of time taken by disk-based data stores. See this page in Redis’s website to understand what I mean by crazy fast.
Once you move past session…
Update 21-Mar-2021 — A lot has changed since I wrote this article and while the method described here still works, there appears to be an easier way. Raspberry Pi team has released Raspberry Pi Imager which can be used to burn OS images to SD cards and it provides options to enable SSH and setup WiFi using a simple interface. Since the imager can do all of what this article describes, there is no reason why you should be following the method described here, but read on if you must. Thank you!
I was working on a visualization library last year where I had the opportunity to work on some interesting charts created using D3.js. The library had around 30+ charts and supported a plethora of configurations and features. One of our challenges was to make the widgets responsive and make them available for our clients on desktops, tablets and mobile devices.
We considered these two approaches for making the charts responsive.
As a developer, I use a lot of libraries and tools developed by the community in my day to day work. Most of the time, I am not interested in how they actually work as long as they get the job done. There are a lot of tools like these — code linters, module bundlers and sourcemaps to name a few. I sure do understand them at a high-level, but I don’t know their internals. If I were to write my own version of a module bundler I wouldn’t know where to start. …