teeth care
I sent this message to a few close friends two days ago.
I was today years old when I tried flossing for the first time.
My first visit to the dental clinic in Australia last weekend, my dentist recommended that I include flossing in my daily routine. Everyone in the office I spoke to about this was surprised that flossing was not part of my routine. Just not a popular topic of discussion back home or something a dentist has told me about before.
This is your today’s reminder to floss and take care of your teeth.
planning well before starting
I remember having this discussion when initially building the last software project. We would start thinking about tasks to make the project and add them to the board. The list kept growing, and everyone in the team looked at the tasks as things which had to be done.
I wish we had taken a step back though or added a step after coming up with the list of tasks. A planning stage, where we looked at the project from 10000 foot view and spent more time thinking about different modules which needed to be part of the project. Tasks which needed to get done would then be part of these modules.
Abstraction, not just a programming concept is quite helpful when thinking about project management. A few days spent thinking of the different abstraction layers is all time well spent.
hard to ignore
You were once popular and had a lot of people wanting to keep up. Every new version you released, every blog post about the improvements you made to the framework were well received by hundreds of people worldwide. There was no stopping, from the next milestone being as well received and if not better than the previous one.
When someone else joined the community of frameworks, slowly and steadily, the attention started to shift. Week after week, people gradually stopped paying attention to what you had to offer and moved to check the new framework. They were making progress faster, adoption never way of language and package internals better than you did and the community started to notice. More people began to adopt the new framework as the default choice for their next project.
It’s hard to ignore when the competition gets all the attention which you once had. Its tough to stay motivated and continue making progress when making progress involves many changes to how you built what you built. But making progress for the few that stuck with you, is what you need to focus on—gradual improvements. A few people have left suggestions on how to make small strides forward. A few that kept coming back to check on your progress.
this above is my version of comparing codeigniter vs laravel. I am so happy to see CodeIgniter make progress with version 4. Can’t wait to try it out for my next project.
something better
You have been thinking about it in the back of your mind. the current thing you are working on, doing, trying out is just not bringing as much joy as before.
There was a reason you got started with your current routine. There was a plan. Plan to get started. How long you wanted to do it for and an agenda for what comes next after the current agreed period between you and your brain was over.
Things don’t always go as per plan, though, and adjustments had to be made. Something else came in between the things you had planned. That’s life. Change is the only constant. But now it feels like you are stuck. You are stuck in this routine of doing the same things over and over again. There are small deviations but not the big ones you had planned.
I hope you don’t stop looking. Looking forward to the next significant change. After all, change is the only constant. Something better is just around the corner.
deep work
I remember reading parts of this book a few years back. My takeaway from the book was to have dedicated time allocated to get a demanding task done or make good progress. I remember being very excited to try out this way of working, and I did manage to spend the next few weeks having dedicated chunks of time to make progress on the tasks in my list.
A few weeks later, though, I was back to my old habits. This email just got in, let me quickly reply and jump back to my task: a new slack message, a new WhatsApp message. Deep work took a backseat, and I did not think much about it until today.
A colleague at work spoke about the importance of deep work and with a few examples demonstrated how tasks take twice or three times as much to complete if you keep context switching. He spoke about this in terms of developers assigned tasks, but the same could hold for anyone trying to do any job. Context switching is not good. I am going to try deep work for the next month or two and report back.
clubhouse
I have been hearing about clubhouse since a month now. Not having an invite meant that I could install the app but could do nothing else. I am not sure how Apple was ok with this.
I finally got the invite two weeks ago(Thanks Sanat 🙌🏻) and was eager to see what the buzz around the app was all about.
An audio app with topics based rooms where a few people are having conversations and others get to listen in and participate from time to time. My first reaction was “that’s interesting”. Suggestions around which room to join based on people I follow on Twitter was a nice touch.
I have not been much into listening to podcasts for over two months now. Listening to people discuss specific topics live has been good though. Thanks, clubhouse for getting me back into audio chats.
missing home
It is sometimes the smallest of things. Seeing my niece dance on WhatsApp while we have our weekly catchup calls and sometimes a casual conversation with a friend or family back home.
A conversation with a really good friend (Happy Birthday Nikki 🎉❤️🥳) reminded me of one of my favourite restaurants to eat at in Bombay.
Hi, Australia 👋 When does international travel start again?
there is always competition
A new cafe opened its door where I currently live. There are already three cafes in the same street, and with the fourth cafe joining the list, people in the neighbourhood now have a lot of choices. Every new cafe gets attention the first few weeks after the opening day. Everyone is eager to try a new place.
The other cafes in the street though, feel the pinch during this time. How do I know this? Cause I asked them and they all tell me that the customers walking in have reduced by half, they notice a queue of people waiting to get a table at the new place.
What do you do as a cafe owner to get people coming back to your place? Do you think of this as quite time and come to terms that people are curious to try out a new experience and some of those people will eventually return to get coffee or food from your place. Or do you take this quiet time to analyse what’s working well for the new business? What unique food/experience do they have to offer that you can incorporate into your place?
A mix of both would be my choice. There is always competition. It would be best to focus on improving and providing the best service.
make the first experience memorable
I enjoy trying out new apps on the web and the iPhone. As a developer, I am quite eager to see new apps, their design, user experience, and features the app has to offer. I know what is involved in shipping a 1.0 and the joy of having your app being used by someone other than people in your team.
I installed a gym training this week, thanks to browsing the web looking for a gym training planner. This app spoke about how they use AI to help you work out smarter.
Step 1. Install app.
As soon as I launched the app for the first time, I was asked to choose a yearly or monthly subscription. I tried to look for a close button to hide the subscription modal. I wanted to see what the app had to offer before I decided to go with a subscription, but there was no option to close. I ended up uninstalling the app without clicking any of the buttons.
I understand that subscriptions are essential to help pay for the app and its development. As an end-user, though, giving the end-user a few days to try the app is almost equally crucial if you choose to go with a subscription model.
As an app developer and someone who has spent a lot of time marketing the app, I cannot stress hard enough how important it is to give the users a good experience in the first few days/weeks of them trying out your app.
no one got fired for choosing react
I Almost Got Fired for Choosing React in Our Enterprise App
I just realized that React is not Java or .NET developer-friendly. Angular would have been a better choice in this case because of similar design patterns.
So we spend another three weeks making those decisions. I can feel you screaming at me, “Come on, man! There is no way it takes three weeks to pick those libraries!” Well… welcome to enterprise projects.
After nine months, we have more than 50 pages created. The developers notice that function components are as good as class components and start using them.
The post above and it’s reddit thread makes for an interesting post to read.
learning something new
I have been smiling ear to ear since yesterday evening. The reason? I can finally swim on my back. 🎉
I never took swimming lessons till two weeks ago. I have been swimming for as long as I can remember. From swimming for fun at the beach to swimming in the pool, until I can hold my breath, making sure that I am never in the deep end of the pool. Had to be in a place where I could stand in the pool. 🙈
I would watch videos on Youtube for hours on how to swim well. I would learn breathing techniques and go back to the pool to practise the next day. I slowly started to improve. A few weeks later I could be in the deep end of the pool and not worry as much.
My swimming technique was never as good, though. I would watch other people swim, and as I went from one end to the other, I would notice how I would struggle. Improving my swimming technique was on my list of things to do. This year I decided it was time.
The last two weeks, I have learnt so much. My swimming technique I have been told is improving, and I can finally swim on my back 🎉
avoid SQL joins
I was a regular user of JOINs in SQL until I heard a podcast where the podcast people were discussing why SQL JOINs were not a good idea. I had never thought about this before. JOINs felt like the best way to combine data from multiple tables and get the result set desired.
JOINs is one of the foundations of RDBMS. If you use an RDBMS solution, you must be using JOINs. You store data using foreign keys in multiple tables and use JOINs to combine them to get the result desired.
Why were a lot of people writing about avoiding JOINS? I kept asking myself this question the first few weeks after I heard the suggestion.
After a year of launching the product, I realised why SQL joins should be avoided. Digging through the APM stats, almost all slow queries used had JOINs across two or more tables. Using JOINs over a large dataset turns out is expensive. Unless you are ready to throw a lot of hardware at the server hosting the database. As an upcoming startup, this was not an option.
I slowly started removing all JOINs from all the slow queries reported and porting them over to scripting solution used and used caching solutions to speed up transactions. Customers were happy, and so were the APM stats.
SQL joins on small datasets are great. One query to get data across multiple tables 👍️ . Just avoid using them over large datasets.
whats up
I was chatting with a good friend today ( Hi Ram 👋), and he asked me what I was up to in life. I would usually reply with many updates on whatsapp.
This time, I tried something different. I shared the link to one of the posts I wrote recently. I have been writing here regularly, and usually, it is about things happening in my day to day life, what I have been reading and what I have been thinking—a snapshot of things happening around me.
I am not so active on social media. I do love writing, though. So this blog is now my means of answering “what’s up”.
I should start tagging things much better.
work from home
Most of us were forced to work from home last year. Very few had the opportunity to ease into this new way of working. If you worked from the office all your life, working from home can be daunting.
Before working in Mumbai at my previous work, I had always worked from the office. Working from home felt a bit different in the first few weeks. There was just so much freedom and time saved from the daily commute. I could watch Netflix, youtube and listen to music on my speakers without disturbing others around me and working the way which made me more productive. The first few weeks were not productive, though. Ok. It was months and not weeks. The new way of working took a while for me to settle into. After the second month, though, I knew I had to be strict about my working hours and playtime. There was work waiting to get done, and unless I spent dedicated hours on it, it would not get done.
I would imagine everyone went through a similar phase last year—a few months of unproductive time and then getting good with day and time management. Most of us now are used to the new way of working. Being able to work from anywhere.
I spoke to a few people I know, and they tell me they don’t like working from home, even though they are now used to it. When questioned about which part they dislike, almost everyone said the same thing. They miss being around people and don’t mind going back to the office once things went back to normal.
A right balance I feel would be the best way forward. A few days in a week, where you get to meet people, interact, share ideas and have meetings and the rest of the days when you put you head down and work on tasks that need to get done as a result of discussions that week. That’s what worked best for me the last ten years before I moved to Australia.
regular improvements
Software architecture decisions need to be reviewed from time to time. As your customer base increases and as the data you handle grows, it’s a good idea to look at how individual pages read data.
Does the reporting page still work as good when the data it is trying to read grows from 1000 rows from 100000 rows?
here are a few fixes that I have looked into before when pages fail to load due to an increase in data the page is trying to process:
- if you are reading from a Relational Database, have you added indexes to the columns used as part of the JOIN?
- is the database configuration optimised? A few times my.cnf file has improved the database performance for MySQL and ensured that it is using adequate memory available for its usage on the server.
- can you throw more hardware at the problem? Usually, a quick fix, while you continue to make improvements under the hood.
- can you avoid using multiple JOINS on the page? JOIN usually are the cause of slow queries bring the page to a halt.
Code refactoring should be a monthly exercise. Regular improvements to the code base are essential to ensure that your code stays clean as your system grows with new features and more data.
performance monitoring
Besides building software and usability engineering aspects of computer science if I had to pick another segment I enjoyed spending time on, performance monitoring has to be it.
I am obsessed with monitoring transaction performance, and the impact transactions have on the database, CPU usage, and the various errors returned. Its all in the service of ensuring that the end-user has a great experience using the software you spend so much time building.
I would assume before that the user would let us know when the software was too slow or when it crashes. As I started to look through my habits, I realised that I hardly do this myself. If the software is too slow, I slowly stop using it. If it crashes, I will let the support team know, but unless the software is an integral part of my workflow, I will switch to an alternative.
I like being proactive about software performance and enjoy making small tweaks to improve performance and fix errors before they become a significant customer issue.
signal
As of today signal has been down for more than a day.
New users signing up to use your service is always exciting. A product you have been building for a few years now gets in the spotlight. I am happy for signal and the movement they are working towards—privacy matters.
If I had to choose between a gradual increase in traffic and sudden user growth, I would always prefer the gradual increase. As a software developer and someone who has spent a lot of time learning about servers, load balancers, databases and provisioning servers, handling large user traffic require a lot of rework in building the software architecture. A team of engineers working to ensure that traffic and data are split/read from multiple channels is a project worth spending a few months/years on.
It’s disappointing for the users though, a service they were looking forward to using is suddenly unavailable vs a service they have been relying on which continues to be available. Do you switch back to the original service or continue to wait for the new service to be available? When it comes to the instant messaging platform, I would assume very few would choose to stay.
I hope that signal gets back online soon and is ready for the next wave of traffic, coming their way. It’s a good service from a nonprofit organisation. I like the UI and their focus on privacy. I, for one, will continue to move more conversations to signal slowly.
hardly training
I have been quite regular with my gym visits for the last five months. I don’t remember the last time I so regular with my exercise routine. It’s a good feeling. I don’t plan on stopping; I don’t want to stop. I am going extra hard with my exercises this year.
I joined a second gym this week to spend more time on weight training after office hours. As much as I enjoy functional training, I have been missing spending more time weight training. I have also been wanting to get back to swimming. All this starts next week: functional training plus weight training plus swimming.
It is going to be tiring. I have never put my body through so much before. But I am looking forward to it.
I talked with a trainer at the second gym this week and asked me what I wanted to focus on. I had not thought about this question for a long time. “Improving my stamina”.
I am looking forward to my training schedule for the next few weeks/months.
code quality
There is so much to write and talk about when it comes to code quality. If there was one topic I could go on and on about it has to be this. Maybe that should be what I should write about whenever I am stuck for writing here.
I read this article yesterday. Facebook’s code quality problem.
The Facebook iOS app has over 18,000 Objective-C classes, and in a single week 429 people contributing to it. That’s 429 people working, in some way, on the Facebook iOS app. Rather than take the obvious lesson that there are too many people working on this application, the presentation goes on to blame everything from git to Xcode for those 18,000 classes.
Reading through the article reminded me of how important it is to have a good architecture in place for your software. As your application grows, the time spent on architecture discussion will pay off ten folds.