The fool’s life is empty….

The fool’s life is empty of gratitude and full of fears; its course lies wholly toward the futureEpicurus

Most of us these days are obsessed with our future. In future we want to be our own boss, we want to run our own company, travel the world, become a millionaire, and so on. We are being sold the dream that life will become meaningful if we become our own boss. What this usually leads to is unsatisfied today. Our blind desires stop us from contributing to our current work in the most complete form. We make compromises in terms of quality and focus in our current jobs. This means we loose out on the training for the better future tomorrow. I think this trend is making us incompetent and we will never be better prepared to make a real difference in future. We should show gratitude and contentment in our existing job. This will give us internal peace and help us prepare for better future tomorrow.

Configuring Spring Cache Manager with AWS ElastiCache Redis (cluster mode disabled) and Lettuce

We have Spring Boot 2 application that uses Redis as the cache manager. We deploy our application on Amazon AWS where we use AWS ElastiCache Redis service in cluster mode disabled. Our setup includes a Redis master with two Redis slaves. The default Java client for Redis with spring-boot-starter-data-redis dependency is lettuce-core. When you are working with single Redis node with no slaves, using AWS Elastic Cache Redis is as simple as providing the spring.redis.url with the value of AWS ElastiCache Redis instance URL. This was the set up that we were using till a month back. As the load on the system increased we decided to use ElastiCache Redis in replicated setup to scale our reads. In AWS, Redis implements replication in two ways:

  1. With a single shard that contains all of the cluster’s data in each node – Redis (cluster mode disabled)
  2. With data partitioned across up to 15 shards — Redis (cluster mode enabled)

In our case, cached data is less than 1 GB so it fits in RAM of single node. This made us choose cluster mode disabled setup.

Read More »

One day is equal to every day

One day is equal to every day.

I came across this quote while reading a random article on the web. Since then I am thinking what could it possibly mean.  One meaning of the quote could be that all days are equal in terms of number of hours. So, in effect every day is equal in number of hours to every other day. But, this meaning does not satisfy my inner self. I believe the quote has much more profound meaning. The meaning that I derive from the quote is that the way we live one day of our life determines rest of our days as well. As I wrote in an earlier post, a single day is like a mini-life. Each day we are born (wake up in morning), live life (do daily job), and die (sleep). To understand the value system of a person, you don’t have to spend years with them. Their one day actions are enough to give you idea how they behave every other day. Most people don’t drastically change over time unless they do regular self-introspection.

 

Issue #9: 10 Reads, A Handcrafted Weekly Newsletter for Humans

Hey y’all,
Here are 10 reads I thought were worth sharing this week. The total time to read this newsletter is 155 minutes.
I have always imagined that Paradise will be a kind of library. – Jorge Luis Borges
  1. How I use Wireshark: 15 mins read. This is a quick tutorial that will help you understand how you can use Wireshark for debugging network related problems. Wireshark is a powerful tool but its user interface can be intimidating for the first time user. Julia Evans,  author of the post does a good job documenting how she uses Wireshark in her day to day job. I, myself, used Wireshark a month back to figure out why I am unable to connect to a VPN server. Wireshark helped me move in the right direction.
  2. The Facebook Nevers: 5 min read. And yet, the tectonic plates are shifting. But they’re shifting under Facebook, as tectonic plates do. The fall of Facebook was never going to be people quitting the service en masse — it’s too interwoven into the fabric of the way many of us use the web these days — it was always going to be the people who never really use the service in the first place. Kids.
  3. YAML: probably not so great after all: 15 mins read. A good post talking about shortcomings of YAML as the language for configuration files. I was not aware of most of the issues with YAML. The author points out that YAML is insecure by default, hard to edit when files are large, has complex specification, not portable across programming languages, and has surprising behaviours. I personally have not used YAML much so was unaware of most of the issues.
  4. React Native at Airbnb: 30 mins read. This is a 5 post series talking about Reactive Native usage at Airbnb. Airbnb is considered poster child for React Native. Airbnb has decided to stop using React Native for any new project and they will be migrating their highly used screens to Android and iOS native screens. Airbnb team faced technical and organisational challenges while building their hybrid applications. React Native for the most part fulfil the promise of write once and run on multiple mobile platforms but you start hitting limitations when you are a big company like Airbnb trying to push React Native to its limits.
  5. The War on Developer Productivity: 10 mins read. A couple of weeks back I gave a talk and touched upon the same point. I personally don’t use Slack even when Slack is the preferred tool in our organisation. As outlined in the post, tools like Slack forces you to give immediate reply. They make others feel that you are always available to answer or entertain them. I think tools like Slack are our servants and they should not drive us like they are our masters. We should use them wisely else our productivity will suffer.
  6. PostgreSQL Features You May Not Have Tried But Should: 15 mins read. A good list of PostgreSQL features that one can use in their work. I personally like Pub/Sub Notifications feature the most. I am thinking of using this feature to update the cache as soon as my database is updated by another process.
  7. Introversion as an Excuse: 20 mins read. Author writes In the last several years, these once common currents of thought have been undergoing a silent sea change. While the extrovert remains the ideal culturally, on the individual level, seemingly more and more people are identifying themselves — quite proudly — as introverts.
  8. How Pusher Channels has delivered 10,000,000,000,000 messages: 5 mins read. I used Pusher 4 years back when I was working with Red Hat. Pusher is a publish subscribe channel that you can use to build real-time applications. Few days back they processed 1 trillion messages. In this post which lack details, they give a 10,000 feet view of how Pusher Channels work. The main workhorse in their architecture is Redis.
  9. The Machine Fired Me: 15 mins read. Amazing read. Once the order for employee termination is put in, the system takes over. All the necessary orders are sent automatically and each order completion triggers another order. For example, when the order for disabling my key card is sent, there is no way of it to be re-enabled. Once it is disabled, an email is sent to security about recently dismissed employees. Scanning the key card is a red flag. The order to disable my Windows account is also sent. There is also one for my JIRA account. And on and on. There is no way to stop the multi-day long process. I had to be rehired as a new employee. Meaning I had to fill up paperwork, set up direct deposit, wait for Fedex to ship a new key card.
  10. Pinterest Founder Ben Silbermann’s Lessons on Decision Making, Values, and Taking Time for Yourself: 15 mins read. The best point for me in this post was Write down decisions you make — and your rationale at the time — into a “decision journal.”