Categories
Web

The most critical feature of Instagram

Instagram is a simple and fun application. The simplicity of the application is what led to its success. It is extremely addictive.

However, its most important feature or lack thereof, is the regram functionality. Instagram doesn’t allow users to just repost the same image from another user natively. The absence of this functionality is just wonderful. Users can definitely install third party apps that support this functionality, but, Instagram doesn’t support it natively.

As a user, your feed is usually pretty clean. There’re no non-sensical memes or random images showing up in your feed. You definitely can subscribe to them, but, you don’t see them unless you specifically subscribe to them.

Personally, I think this is great. It keeps the app very focused and clean.

Categories
Programming Side Projects

Dashboard

A while ago, I wanted to build a data aggregation service that’d allow its users to fetch data from a set of data sources defined by them. I wanted to allow the users to configure the data fetch interval for each source. This led to the birth of the Dashboard project.

Dashboard is a data aggregating web application that provides a way to customize and display the aggregated data. It’s an open source project. The code is hosted on GitHub.

Dashboard UI

Features

  • Webhook support to receive data
  • Fetch data from various sources at different intervals
  • Plugin support to enable extensibility

Use Cases

Dashboard can be used to display any arbitrary updates from various sources. Some specific use cases of Dashboard can be –

  • Keeping track of health of endpoints
  • Display data received from Git hooks
  • Monitor blogs for updates

The possibilities are endless.

Stack

The application backend is written in Go. For this use case, Go fits perfectly well and I really like Go. The current implementation of frontend is in vanilla JS (I feel primitive just saying that 😜). However, I do plan on using Vue or Preact.

For details regarding the future of the project and more, please check out the README file of the project.

Focus

Before I started working on this project, I made sure I focused on 3 things:

  1. Simplicity
  2. Extensibility
  3. Data parsing/display

Every time I took a decision around a particular feature implementation, I went through this list to ensure none of these aspects were sacrificed.

Simplicity: I wanted to make the app very simple to setup, configure, and use. I put in a lot of emphasis on the simplicity of the application. There is no database. The installation is pretty straight forward. Just download the binary file and run it. Thank you, Go!

Extensibility: I made sure to allow users to write their own plugins. These plugins are shareable. Users can display data from whichever source they want to via these plugins.

Data parsing/display: Once we fetch the data from a source, we need to have control over which parts of it we want to display in the UI. The user should be able to display only the data that matters. Right now, this is static. But, I’m working on a solution to allow users to map data.

Development

The project is under development and is still in Alpha stage. I plan on working on it in my free time. Any contribution to the project is welcome.

License

As always, I’ve open sourced the project under the standard MIT license. GitHub: https://github.com/mohnish/dashboard.

Hope you like my project. Feel free to contribute to the project. Cheers! 🍺

Categories
Meta

WordPress 5.3

After, what seemed like a long wait, WordPress 5.3 is finally here. Right on time. Congratulations to the WordPress team. I just finished upgrading my blog to the latest version of WordPress. I’ve been waiting to try out the final version of the brand new TwentyTwenty theme that ships with the latest version of WordPress.

My blog is currently running the TwentyTwenty theme. There are a few noticeable UI glitches, but, I’m OK with them. I definitely don’t want to switch back to the old theme because of these bugs. I’m sure these will be fixed soon. I haven’t investigated these bugs yet. These could even be caused by any of the plugins I’m using.

Besides the new theme, there are a few UI changes to the Admin side of the site. I’m excited to try out the new features of the updated Block Editor that ships with WordPress 5.3.

If I find anything more interesting about this release, I’ll definitely update this post. Until then, here’s the official release notes for this release https://wordpress.org/news/2019/11/kirk/

Categories
Technology

Apple Watch Series 5

Before continuing to read this post, I would like to clarify that this is not an in-depth review of the Series 5 (S5) nor is an actual comparison of Series 5 against a Series 4 (S4). This is more of an observation based on the specs mentioned on Apple Watch’s website.

Most of Apple’s products are amazing. I love my Apple Watch. I watch all of Apple’s product announcements with a great deal of enthusiasm. Naturally, I was really looking forward to yesterday’s Apple event. The introduction video is really impressive.

During the event, the only product I was looking forward to was the Apple Watch. I like my iPhone, but, after Face ID™, I haven’t been impressed by anything that Apple has done with the iPhone.

The S5 specs didn’t seem too different from the S4. The new hardware additions to S5 are the Always-on Display and the Compass. I checked out Apple’s website to compare. I noticed that Apple removed S4 from their website. Now, you can only compare the S5 with S3.

Luckily, Wayback Machine came to the rescue. I used the same URL that Apple had with a comparison of S4 with S3.

Here’s the comparison of Apple Watch S5 with S3: https://www.apple.com/watch/compare/

Here’s the comparison of Apple Watch S4 with S3:
https://web.archive.org/web/20190910175523/https://www.apple.com/watch/compare/

Conclusion

As you can see, there is not a lot of difference. Apple says S5 is 2x more performant than S3. Apple’s spec comparison website says that S4 is 2x more performant than S3. This basically confirms that S5 is almost similar to S4 in terms of performance.

Categories
Meta

Goodbye, Google Analytics

Google Analytics

I decided to switch back to using WordPress as my blogging platform this May. At the same time, I also took the decision of removing Google Analytics (GA) from my blog. I wasn’t sure if it was a good idea. So, I thought I’d remove GA for a few months and see if I miss its value.

I used GA primarily to identify which posts attracted the most readers and calculate the bounce rates. After a while, I felt like I didn’t really need this information, since, I wasn’t really doing anything with it. I just wrote about things that I thought were interesting. I was never motivated by my blog’s user engagement, to write about topics I wasn’t interested in.

As it turned out, I only needed some basic analytics on how my posts were performing. For instance, the number of views on a particular post is information that I find interesting. Using GA to track this information is unnecessary. GA is way more complicated. Using it to just track page views didn’t make sense.

Don’t get me wrong, I love data. I find graphs and statistics around data very interesting. I like extracting patterns out of data. But, I didn’t really want to do it with my blog. WordPress ships with a basic analytics dashboard that displays information such as number of views per post, number of comments, the day that recorded the highest number of views etc. These data points are enough for me with respect to my blog.

Hence, as of today, I’ve decided to get rid of GA on my blog for good.

Categories
IoT

Raspberry Pi 4

A few hours ago, the Raspberry Pi Foundation announced the latest version of their awesome single board computer, Raspberry Pi 4 Model B. I am stoked.

Raspberry Pi 4 with dual monitor support at 4K

As shown in the above image, it has dual monitor support at 4K. They switched the power supply to use USB-C and has Bluetooth 5.0 connectivity.

Raspberry Pi 4 Model B board

The new version comes with support for 1GB, 2GB, and 4GB of RAM. That makes it a powerful desktop computer that’s smaller than my phone.

I cannot wait to try this out and work on something fun.

Categories
IoT Side Projects

Building a Coffee Pot Monitor using Raspberry Pi

I love coffee and side projects. I wanted to solve a coffee related annoyance that I faced on a regular basis. This post is about how I built a Coffee Pot Monitor, to track the coffee level in a coffee pot, remotely, using a Load Cell, HX711 amplifier, and a Raspberry Pi.

The Annoyance

Imagine yourself being busy with something important. You take a quick break to grab some coffee and walk over to the break room only to find an empty coffee pot.

Oh, the horror

There’s no way for me to know the amount of coffee left in the pot, without walking over to the break room and checking it out. The coffee pots we have at work are opaque. So, it’s not possible to know the amount of coffee left in the pot by looking at it.

Initial Solution

I came up with a solution to my problem. A camera mounted near the coffee pot would stream the video data to a Raspberry Pi. Using Computer Vision on this stream, I can identify when someone uses the coffee pot. When someone pumps the coffee from the pot, my algorithm decreases the coffee level in the coffee pot by a static value (one cup). A dashboard, which can be accessed via a URL, displays this data in realtime.

There’re several drawbacks to this approach. For starters, my algorithm assumes that every person pumps exactly one cup of coffee. Now, consider the case of an empty, opaque coffee pot. A person tries to pump coffee and realizes there’s no coffee left. In this case, my algorithm still decreases the coffee level by a cup even though no coffee is pumped.

To say the least, it is a convoluted approach.

I knew it was a convoluted idea. I wanted to build it anyway.

One fine day, I shared the idea with a friend from work, Rajesh. He liked the thought behind the project and suggested an improvement.

Improved Solution

Rajesh suggested using the coffee pot’s weight to calculate the coffee level. That was it. Suddenly, it became obvious. It’s a great way to track the volume of the coffee in a coffee pot.

The potential of the project got us both excited. We submitted the idea to the quarterly Hackathon at work. Long story short, we won the first prize for our implementation of this idea.

Tools

After some research, it became clear that we needed a Load Cell along with a Hx711 load cell amplifier. I immediately ordered it from Amazon along with the Raspberry Pi 3 B+.

Setup

First, hook up the Load Cell to the HX711 as shown in the image below:

Connecting a Load Cell to a HX711 amplifier

Next, connect the HX711 amplifier to Raspberry Pi as follows:

  • VCC to Raspberry Pi Pin 2 (5V)
  • GND to Raspberry Pi Pin 6 (GND)
  • DT to Raspberry Pi Pin 29 (GPIO 5)
  • SCK to Raspberry Pi Pin 31 (GPIO 6)
Connecting a HX711 to a Raspberry Pi

That finishes our hardware setup. Let’s move on to the software side.

We use the HX711 python library in Raspberry Pi to read the Load Cell data from the Hx711 amplifier. Every three seconds, the Raspberry Pi posts the data to Firebase. A simple static HTML page serves as the dashboard by displaying the realtime data from Firebase.

The build

We need two pieces of wood. One of the pieces, acts as a base to place the coffee pot. The other acts as a stand for the Load Cell. These are placed on either sides of the Load Cell. In my case, a colleague of mine, Vijay, helped with cutting out these two pieces of wood.

  • Top view of the equipment
  • Side view from an angle
  • Load Cell positioned between two wooden planks
  • Load Cell zoomed in
  • Load Cell connected to the HX711 amplifier and Raspberry Pi
  • Another view of the Load Cell

Architecture

Data flow from Load Cell to the user’s browser
  1. The Load Cell reads the weight of the coffee pot
  2. HX711 module amplifies the Load Cell data and sends it to Raspberry Pi
  3. Raspberry Pi posts the data to Firebase
  4. Firebase publishes this data to all the clients
  5. The browser displays the updates

How it works

There is a one time setup process. First, weigh the empty pot on the Load Cell. Let this weight be w1 (min). Next, weigh the coffee filled pot on the Load Cell. Let this weight be w2 (max). At any given point of time, the weight of the coffee pot ranges from w1 to w2.

Every time someone pumps (or pours) coffee from the pot, the weight of the coffee pot decreases. This data is published to all the clients using Firebase. It’s as simple as that.

Here’s the final product:

Coffee Pot placed on the wooden platform
Coffee Pot placed on the wooden platform

Here’s an animation of the dashboard getting updated in realtime:

Conclusion

The entire cost of setting this up is approx. $45. It’d be great if we could build this at a much lower price. That way, it can be more affordable and practical. I’ll soon open source the code behind the project and provide the GitHub link to the repository.

Featured image courtesy: https://unsplash.com/photos/KixfBEdyp64

Categories
Reviews

Google Fi Review (2019)

Google Fi

After ten years of using AT&T, I switched to Google Fi and here are my thoughts. Before I start my review, here’re some details you might be interested in. I use Google Fi on an unlocked iPhone XS. I knew very well about the limitations before I signed up for the service. So, here is my review of Google Fi on iPhone.

Application

I’ve been a Google Voice (GV) user since the past ten years. I love the service. I’ve used it for my voicemail and for making international calls to India. I liked the voicemail transcription feature too. This is a pretty common feature now, but, GV pioneered it.

Anyway, I was able to sign up for Google Fi online from this page here https://fi.google.com/signup and apply for the SIM card installation kit.

During the application process, you’re presented with the following 3 options:

Google Fi Sign up form

If you select Use another number you own and use your current phone number, you’ll lose your GV number for good. I didn’t want to lose my GV number. So, I canceled the sign up process and logged in to my GV account and transferred my GV phone number to another Google account of mine. Once I did that, I restarted my Google Fi sign up process. Now, the form looked like this:

Google Fi Sign up form without the Google Voice option

Everything else was pretty straight forward. The SIM card itself is free. It ships in a week or so. Since, I wanted the SIM card ASAP, I chose to go with the $15 expedited shipping option. I got it the very next day.

Activation

Once I got hold of the Google Fi SIM card, I installed the Google Fi app from the iOS App Store. I placed the SIM in my iPhone and opened the app. I was able to follow through the steps and have the service activated within 5 mins. Yep, it was that quick and simple. The app guides you through the process of setting up SMS/MMS/Voicemail on iPhone.

Caveats

In order to check voicemail, you need to check the Google Fi app. The native iOS Phone app doesn’t have access to the voicemails. Personally, this wasn’t a big deal. I never really used AT&T’s voicemail on my iPhone anyway. I always used the GV app to check my voicemail. The only difference now is that I need to check my voicemail in the Google Fi app.

Billing

I am all praise for Google in this section. Google nailed it with the UI. Honestly, I didn’t expect anything less from Google. It is extremely minimalistic and easy to understand your Fi plan. AT&T on the other hand, I had to watch this video to prepare myself before I opened my AT&T account.

Rocky Balboa Inspirational Speech

I had to tap through 5-7 different screens to get any information that made sense to me.

See how clean the UI is? Good job, Google.

International Calling

I absolutely love how Google Fi supports international calling from the United States. This basically renders my GV account useless. All the features of GV that I loved are baked into Google Fi. General information about international calling can be found here: https://fi.google.com/about/international-rates/

Speed Test

I performed a speed test on fast.com and here’re the results for Google Fi LTE

Google Fi LTE speed test results from Fast.com

The results are pretty good. I tried streaming videos (YouTube) and audio (Apple Music) with positive results.

Conclusion

While I’m missing out on the automatic carrier switching feature of Google Fi by using it on an iPhone, I still like the service. So far, the signal reception hasn’t been bad. The data speeds are pretty good. I just hope Google comes up with a solution to make automatic carrier switching work with the iPhones soon.

Categories
Personal

Working on Side Projects

Working on Side Projects can be really fun. But, you know what’s not fun and sucks? Not finishing the project and abandoning it (also, Global Warming). This is a very common problem and most of us struggle with it.

It gets trickier. Once you lose interest in the project and abandon it, guilt kicks in, as if we don’t have enough issues to deal with already. At this point it becomes really annoying having to fight with your conscience about the abandoned project. You don’t feel like working on it and at the same time you can’t really leave it. It’s just pure bliss at this point. 😇

One fine Sunday afternoon, you gather your thoughts and try to focus on your project and trim it from an ambitious project to a simpler project. You feel good about yourself for having found a way to deal with the problem. That’s when you notice a cool new tool. BAM! Suddenly, you notice all of your efforts and the interest you managed to build up, going down the drain. Can you stop it? No. What do you do instead? Go ahead and try out the cool new tool that’s going to make your life so much more awesome. What about your project? That can wait. You’re confident that you will be able to come back later and finish your project using the cool new tool.

Three months go by and you are finally at a point in your life where you feel confident and comfortable to say goodbye to your project and move on to a new one.

Moving Fast and Breaking Things

In the past, I’ve started a lot of projects and miserably failed to finish them. I even thought of moving fast and breaking things. In reality, that didn’t really work. It’s definitely not because the philosophy is flawed. It’s because my perception of the philosophy was flawed. I’ve realized what I was doing wrong and corrected it over the past few years. I’ve tried a lot of things and didn’t really find anything helpful.

Reasons for Abandoning Projects

After spending a lot of time thinking about why I kept abandoning my projects, I noticed a common theme and was able to compile a list of reasons that made me abandon my side projects.

Lack of Prioritization

Imagine working on a project where you have tasks that are not prioritized. You have no idea which task you’d work on after you finish the current task. It’s hard to continue working on something while not knowing what needs to be worked on next. Also, give yourself enough time. Make sure your deadlines are reasonable. Be extremely honest with yourself when setting up deadlines.

Unfamiliar Tooling/Technology

If you use tools that you’re not familiar with, you spend a lot of time learning to use them. After a few days, you find yourself working on an entirely different project – Learning to use the New Tools. Understand what’s important to you, learning the new tools, or completing the project. I know that these don’t have to be mutually exclusive, but, that’s how it is most of the time. If picking up a new tool is fairly quick, that’s absolutely fine. It’s unlikely that it’d distract you. Or, at least try to minimize introducing too much of new tooling into the project.

Not knowing the value

If you ever try to work on something that you’re not interested in and just think that it might be useful for others, chances are that you might never finish the project. If you truly understand how a project might be of value to you, it’s likely that you’ll stay interested in finishing the project. Your project doesn’t even have to be brand new. It could be something that has been implemented over a hundred times by others. When in doubt, just ask yourself, “Why am I doing this?”.

Perfection

Yep, perfection. Perfection is a major distraction. If it’s a side project and you’re the only one who’s going to be using it initially, don’t aim for perfection early on. This can work against you. Instead, make it an iterative process. This reminds me of the following quote:

If you’re not embarrassed when you ship your first version, you waited too long.

Matt Mullenweg, CEO of WordPress

Also, this is a perfect segue to the next reason for abandoning projects.

Lack of Iterations

If you think of a project as a whole, the project scope becomes too much to handle. Instead, you can build it in several iterations. Ship the Minimum Viable Product (MVP) first. Iterate on it later. Shipping the first version is very important. I do it with all of my projects and it has been very effective.

Lack of context

There have been times when I started a project, worked on it for a few days and stayed away from it for a week or two. When I came back to the project, it felt like I was missing the context from where I left off. So, I started journaling my thoughts regarding the project right after I stopped working on it. The next time I got back to the project, I’d read through my thoughts and pick up from right where I left off, with very little effort. This technique made me stay consistent with my projects.

I’ve struggled staying focused on side projects and abandoned a lot them in the past. Identifying these bottlenecks helped me optimize my process of working on side projects. Before publishing this post, I had all of these reasons as a checklist that I’d go through before starting any side project, as a reminder to be careful with these bottlenecks.

What bottlenecks do you face when working on side projects? Let me know in the comments section below.

Categories
Quotes

Jay-Z

Something ’bout the struggle so divine
This sort of love is hard to define

Jay-Z (Nickels and Dimes)
Categories
Personal

Game of Thrones

Game of Thrones
Image from the iconic Game of Thrones title sequence

I just finished watching the series finale of Game of Thrones (GoT) and it feels like the end of an era.

I grew up watching the show these past 8 years. I still remember the day my ex-roommate, Gopi, suggested it to me for the very first time. I had just graduated and was actively looking for jobs at the time and wanted to start watching something to take my mind off of my job hunt.

I watched the very first episode of the show and immediately got hooked. It was extremely captivating. It wasn’t like anything I had seen before on TV. The quality of the show was unprecedented.

I started watching the show knowing nothing about the books. I loved it. It instantly became my favorite TV series. I binge-watched the rest of the episodes of the first season and waited for the season finale and watched it with even more excitement. Ever since the first season, whenever the show aired, I waited every Sunday eagerly for HBO to drop a new GoT episode and watched it immediately to avoid the risk of spoilers all over the internet.

I, like many of the others who watched the show, rooted for all the main characters, not knowing their fate. I felt bad every time a character that I rooted for died. I obsessively followed all the fan theories on Reddit and many other sources. This was the first time I had seen such a response to a TV show.

I do agree that there has been a quality drop since the part where the story from the books ended, nevertheless, it’s a great TV show.

George R. R. Martin (GRRM) is a genius for coming up with such great content and HBO did a great job by turning it into a TV series.

Thank you, GRRM & HBO for such a brilliant experience.

Categories
Technology

Gutenberg

The UX around composing a blog post has changed significantly over the years. It has moved from pure text based posts to having image embeds, galleries, videos and cards from various websites such as Twitter, Facebook, YouTube etc. The text editors are responsible for good UX and it’s great that they are evolving. This evolution lets users focus on the content and makes it really easy for them to express their ideas.

Medium’s Text Editor

Over the past few years, one of the biggest innovations around text editing has been Medium’s Text Editor. It’s a wonderful editor that looks great. Here’s a couple of screenshots of the editor while editing a story on Medium.com:

Medium’s Text Editor showing text styling options
Medium’s Text Editor showing media embedding options

As you can see, the UI looks clean, minimalistic, beautiful and lets the user focus on what’s truly important – Content.

Now, all of this is great, but, there’s one key thing missing here – Extensibility. Being able to extend the functionality of this editor using plugins makes it so much more powerful.

Gutenberg

WordPress’s new text editor is called Gutenberg. It is fantastic. Imagine having the beauty and functionality of Medium’s text editor, along with support for plugins. That’s Gutenberg.

First off, Gutenberg’s UI/UX is amazing. Composing a blog post in Gutenberg feels really fun. It makes you want to write more. It uses this concept of Blocks. Each Block can be an entity in your content. This basically means that a paragraph, image, image gallery, embedded video, embedded audio etc are all Blocks. Here’s how editing a Block looks like in Gutenberg:

Composing this blog post in Gutenberg

The UI looks great and editing Blocks is really simple. Also, the editor comes with a handy shortcut to insert new Blocks. This is activated by typing in “/” anywhere in the compose region of the editor. Here’s how it looks like:

Gutenberg’s shortcut to access various Blocks

The default editor ships with a lot of Blocks. But, there’s a huge community of developers building awesome new Blocks that can be integrated into the editor by installing them as WordPress plugins.

Conclusion

I’m very satisfied with WordPress’s direction to improve the compose experience. I think this is only going to get better and I can’t wait to see what the community comes up with. If you want to give Gutenberg a try, here’s the live link: https://wordpress.org/gutenberg/

Categories
Meta

The Reverse Switch

After 7 years, I’m back on WordPress. Lot of things have changed in 7 years. For starters, the prices have significantly gone down for hosting your server. Also, the UX of the WP mobile app is now so much better. The new blocks based text editor is very interesting.

One of the primary reasons for me to switch back to WP from Jekyll is to be able to compose blog posts even from my phone.

Lately, my workflow for blogging has been something like the following:

  1. Compose an initial draft in the Notes.app
  2. Once the draft is 80-90% done, convert it to Markdown and iterate over the draft until I find the content satisfactory
  3. Push to GitHub to publish the post

As you can see, steps 2 and 3 require me to be on the computer. Those steps can’t really be done from my phone in a simple way. As a result, I’ve seen myself slacking away from finalizing posts more often.

This switch back to WP should make it more easier for me to post more often. I already notice the difference, since, I’m composing this post on my phone. Now, I can focus on writing more.

Indeed, I did.

Categories
Meta

10 years

Being busy with travel, work and some other personal things, I totally forgot that on March 20th 2019, my blog completed its 10 years of existence. Personally, that’s a huge milestone for me.

It feels good to have had my blog for 10 years. A lot has changed in the past 10 years and my blog helps me see and understand how I’ve evolved over the past decade. I started my blog as a personal project. It started off as an outlet for my interest in writing about things happening in my life. As I grew older, my interests changed and so did the things I was blogging about. Right now, most of my blog posts I write are technical at some level, which seems obvious given my love for technology.

This isn’t my first blog though. I used to have another blog around 2005, named “Stealth Factory” (cut me some slack, I was a kid ), where I’d blog about “tips & tricks” to improve Windows Operating System. I had the blog till 2008. At some point, I wanted to write about things that were more personal to me and that’s how I started my current blog.

The frequency at which I blog has definitely improved over the years.

I’m planning on revamping my blog to make it more simpler and yet, functional. I plan on redesigning my blog with a huge emphasis on typography this time around.

I have a few ideas that I’d like to implement. I have some topics that I want to write about this year. I have a lot of unorganized writing that I need to organize into proper blog posts. Overall, I’m excited about the future of my blog.

If you’ve been a follower of my blog, then, thanks for being a reader. I hope to write more interesting content in the future.

Here’s to another 10 years!

Categories
Personal

Happy New Year 2019

Happy New Year! 🎉

2018 has been a great year for me. Both, professionally and personally. I’ve managed to be very productive in 2018 and it has been a very humbling experience.

2017 was a particularly tough year for me. I was really sad, went through a lot and I wanted to pull myself back together. It was a tough phase of my life. I realized that and I wanted to get a hold of myself. I knew that I needed a ton of discipline in order to do that.

I wanted to set some resolutions for myself. Unlike previous years, this time I was serious. I wanted to make sure I stuck to them and so, I came up with a few challenges for myself for 2018. Some are personal to me and I can’t share them. However, the others that I can share publicly are below.

Blogging ✍️

I tend to procrastinate a lot when it comes to blogging. I, typically, start of a blog by gathering my thoughts and then organizing them into something that makes sense. This process of organizing is not really complicated. But I make it complicated. I keep trying to achieve perfection around tiny details and I never really end up finish my posts. So, in 2018, I wanted to stop doing that and write 12 blog posts.

I’ve successfully managed to write 9. I don’t see it as me failing to write the remaining 3 posts. Instead, I’m happy knowing the fact that I came up with a framework to stop procrastinating and writing more posts. It is now, a much more streamlined process, allowing me to just focus on the content of the post.

Travel 📍

I travelled a decent amount in 2018. I visited the following places:

  • Virginia
  • Las Vegas
  • Salt Lake City
  • Antelope Canyon
  • Denver
  • Los Angeles
  • Newark
  • New York City
  • Boston

Weight Loss 🏋️‍♂️

After almost a decade of being overweight, I finally chose to prioritize my health. I’ve always had trouble staying disciplined and being consistent with my diet and exercise. I wanted to change that.

I put in a lot of effort and successfully lost weight. I’ve lost 20+ lbs. I’m no longer overweight. My clothes are all now a size smaller. Even though I’ve lost a decent amount of weight, what gives me more happiness is knowing that I’m capable of staying disciplined.

Learning ✨

I learned to swim. I suck at it, but, it counts for something. Also, I learned a new programming language, Go.

Books 📚

I didn’t read many books last year. Here’s my Goodreads for 2018.

Good luck 🍀

I haven’t come up with any resolutions for 2019, yet. I’ll probably post about them if I come up with any.

With that being said, I hope you all have a fantastic 2019. All the best with your resolutions and I wish you all a wonderful and prosperous New Year. Cheers! 🍻

Categories
Meta

Geotagging Blog Posts

I was checking out some photos on my iPhone the other day and I really liked how the Photos app organized my photos by location. It really adds a lot of context to my photos. In the past, I’ve used the map view to see where a particular photo was taken a ton of times, but, I never really appreciated the value of Geotagging the photos.

Context is quite important when you’re trying to express an opinion or trying to state something. I think location adds a little bit of context, if not a lot, to a blog post. I don’t see it being done on any of the personal blogs I follow. I think it’s an interesting piece of information to add to the metadata of a blog post.

I’ve spent some time to retroactively add the location tag to all of my previous blog posts too. I will probably add a filter in the archive page later to filter posts by location. I may even add a map view similar to the one found in the Photos app.

Update: Now that I’ve moved to WordPress, I am yet to figure out how to set this up with WordPress Mobile App, since, it doesn’t seem to be possible to location tag from the Web UI.

Categories
Technology

Wearable Tech

I love Wearable Tech™.

My love for wearable tech started off in May 2012 with the launch of Nike+ Fuel Band. It was an amazing product. I absolutely loved everything about it. The design, the display, the battery, the style and of course, the UX.

View this post on Instagram

#GOAL #nike #nikeplus #fuelband

A post shared by Mohnish Thallavajhula (@thallavajhula) on

The next year, Fitbit came up with a competing product – Fitbit Flex. So, obviously, I bought that too. I really liked it.

A year later, the company that I used to work at, gave all of its employees a brand new Fitbit Charge (the one without the heart-rate sensor), as a holiday gift. I used it for a few months and gave it away to a friend and bought myself the Fitbit Charge HR (the one with the heart-rate sensor). It felt amazing to be able to check my heart-rate without having to wear a chest band.

View this post on Instagram

#HolidayGift #FitBitCharge

A post shared by Mohnish Thallavajhula (@thallavajhula) on

The next year, I bought Moov. I used it for a very brief period and lost interest in the product due to its minimal feature set. I switched back to using my Fitbit Charge HR.

Soon, Apple entered the game with the launch of the original Apple Watch. I didn’t really like it due to lack of any new features and the unreasonable price.

A couple of years later, in 2016, Apple announced the Apple Watch Series 2. It was water proof and had a built-in GPS. So, I pre-ordered it. The hardware design was fantastic. I loved it and wore it every single day. I used it for two full years.

Apple recently released the Apple Watch Series 4. I really liked the ECG feature and so, I got the new watch. So far, I like it.

A few months ago, a buddy of mine asked me what I use my smart watch for. It was surprising because I couldn’t think of anything other than “checking time”. After giving it a decent amount of thought, I came up with a list of things I typically use my Apple Watch for:

  1. Check time (duh?)
  2. Track my fitness
  3. Keep track of meetings (calendar events)
  4. Create and check reminders
  5. Check notifications
  6. Check Weather and weather conditions
  7. Keep track of UVI & Air Quality (you need to keep track of these especially when you live in the Bay Area)
  8. Check sports scores
  9. Control music
  10. Make payments at stores that support Apple Pay (especially at Gas Stations)
  11. Ignore/Decline calls. I use my phone to answer calls.
  12. Meditate with Breathe

I have seen some video reviews of the Samsung Gear S3 and it seems like a solid watch. There’s no way I am going to switch to it now, but, it’s good that Samsung is working hard to keep Apple on their toes. I would really like to see Google enter the competition with their own hardware.

Categories
Books

It Doesn’t Have To Be Crazy At Work

I like David Heinemeier Hansson (DHH) and Jason Fried’s style of writing. It’s very casual and often times funny. I’ve enjoyed reading Getting Real and Rework. I never felt motivated enough to read their other book, Remote.

Getting Real changed the way I think about projects and even my side projects. It didn’t have a similar impact on me as Getting Real had, but, it’s still a good book. All of these books tend to follow a similar narrative, busting the myths of common work practices.

DHH and Jason recently published their new book called It Doesn’t Have To Be Crazy At Work. I immediately pre-ordered the book. I got really excited once I received the book and started reading it.

"It

Here are my takeaways from the book:

  • Sustained exhaustion is not a badge of honor
  • Being comfortable in your zone is essential to being calm
  • JOMO (Joy of Missing Out)
  • An hour can be spent with one focused 60 min block or fractured into multiple blocks of 15 min or so on. Achieve for the 60 min block
  • If you want your employees to take a vacation, take one yourself. If you don’t want your employees to come in when they’re sick, stay home when you’re sick. This will help the employees to not feel guilty for doing so
  • Trust Battery
  • Sleep is very important
  • Balance your Work and Personal time
  • No fakecations (fake vacations). Go off the grid when on a vacation
  • Deadlines are fixed. Not the scope
  • Give enough time for an idea to settle in. No knee-jerk reactions
  • “Disagree and commit” can be a thing. Letting the team know you disagree and you are still committing to the idea/project is always better than not letting the team know
  • Spend the first week or two of the project to clarify unknowns and validate assumptions
  • Doing nothing should always be an option in a project
  • Embrace calm

Now, obviously, I didn’t want to steal the essence of the book and so, I am purposefully vague in the above points.

The book is pretty good. Reading through the first few chapters might feel like the book is challenging reality. But, later on, the authors talk about the problems in the current work environments and offer solutions to avoid/fix those problems.

My rating of the book: ⭐️⭐️⭐️⭐️ (out of 5)

If you’re interested in following the books I read, here’s my goodreads profile.

Comparison is the death of joy

Mark Twain
Categories
Fitness Personal

Weight Loss

Up until mid 2008, I had always been underweight. I used to be extremely lean and my focus back then was to gain weight. I wanted to look decent when I wore shirts and not look like someone hung a shirt on a coat hanger. To get a mental picture, I’m a little over 5’9” and weighed 120 lbs. With the focus to get bigger and look more muscular, I joined a gym. Every single day, besides the weekends, I put in my best effort and exercised sincerely. I knew I had to gain weight and so, I ate a lot of food. I didn’t really care about which foods to eat or if a particular food was healthy or not. My focus was purely on gaining weight and building muscle. Within 6 months, these changes started showing. I gained a decent amount of weight and by August 2009, I weighed 154 lbs. Mission accomplished.

Becoming Overweight

In the Summer of 2010, I decided to look for an internship to get some industry experience. However, I failed to find an internship and so, I spent the entire summer learning iOS application development and built an iOS app. I basically ended up all day staying home, watching football, learning iOS programming and doing nothing else. As a result, I gained a lot of weight due to my sedentary lifestyle. I ended up weighing 174 lbs by the end of that summer. That was the first time I became overweight. The ideal weight for a male of my height lies in the range of 125 lbs to 168 lbs.

Ever since that summer, I stopped caring about my health. Way too many things became higher priority. For a few years, I had “hit the gym regularly and stay healthy” as one of my New Year resolutions. I could never really do it as I hit the gym only a few times a year. I became really lazy. Fast forward to January 2018, I weighed 187 lbs.

Road to Improvement

Upon my wife’s recommendation (and enough motivation), I booked an appointment for my annual physical with my Doctor. On June 8th, as per my doctor’s suggestion, I started using MyFitnessPal and started keeping track of my weight using my Withings Smart Body Analyzer. I’ve used MyFitnessPal in the past, but, never consistently. This time, I knew I would use it religiously since my doctor suggested it. I have my Withings Smart Body Analyzer setup such that it pushes my weight data to MyFitnessPal every time I step on the scale. I cannot recommend this enough! This is such a useful feature.

Current State

As of September 13th, I weigh 165.8 lbs. That means, I’ve lost 21.2 lbs since January 1st and 18.5 lbs since June 8th, the date my doctor suggested that I get my shit together. :tada: This puts me back in the healthy weight range for my height and age. For the first time in a little over 8 years, I am in the healthy weight range.

Here’s an (updated 10/14/18) image showing where I currently stand on the BMI scale:

How Did I do it?

If you want to lose weight, you need to understand 2 things:

  1. The science behind weight loss
  2. How to keep yourself motivated and maintain consistency

The science behind weight loss

Weight loss ultimately boils down to simple science. At least for the most part.

Caloric Deficit leads to weight loss

You need to burn 3,500 calories in order to burn 1 pound of fat. What it means is that you lose 1 pound of fat over a period of 1 week, by consuming 500 fewer calories than your BMR (Basal Metabolic Rate), everyday.

500 cals (caloric deficit per day) x 7 (days of the week) = 3,500 cals (caloric deficit over a week) = 1 pound (weight lost by the end of the week).

Motivation and Consistency

There’s only so much understanding the science behind weight loss can do to your weight loss journey. Motivation is extremely important. Discipline and Consistency, even more. Staying motivated through out the period is really hard. The following helped me stay motivated throughout the process:

  • Not over-thinking about the process
  • Focussing on the result of no more than 1 week at a time
  • Being sincere and respecting the process, since, perspective drives performance

Every week, I’d check my weight and watching my weight drop really motivated me.

What’s next

I still need to lose some more weight. My goal weight is 163.2 lbs. Here’s a live tracker of the progress of my weight loss.

Update (10/14/18): I’ve hit my goal! and here’s a screenshot of the tracker.

Conclusion

There’re so many people out there, who’ve lost way more than 20 lbs of weight. I’ve always believed that if they can do it, I can too. Now you just need to believe that if I can do it, you sure can too!

I want to inspire at least a few people and help them achieve their weight loss goals.

Categories
Technology

Personal Blog

A blog is a great place to post interesting, insightful and fun things. Or even boring things. It doesn’t really matter as long as you like doing it. I really enjoy reading my friends’ blogs. It has a different feel to it as opposed to reading a generalized feed on a social network. Typically, I tend to sift through the updates in my feed. I don’t really pay much attention to the items in my feed. That is not really a great experience. This wouldn’t be the case if everyone had their own personal blog.

The biggest thing that social networks fail to capture is the essence of a person. Even if, say, Facebook, allowed its users to customize their profiles completely, it’d still fail to display a person’s uniqueness, since, they all reside on the same domain.

Customizability

Several factors such as a domain name, page layout, typography, design etc contribute to portraying the uniqueness of an individual. It’d be amazing if there was a social network that allowed its users to customize their domain names, page layout and design. That would enable the users to show off their unique tastes and creativity. It’d be way more interesting to checkout the “profiles” of your friends then.

Currently, WordPress does something like that. As part of their paid subscription, WordPress allows its users to customize their domain name, blog themes etc. But, the problem with WordPress is that it doesn’t really do a good job of providing a decent personalized blog feed. The “My Likes” tab for a logged-in user just doesn’t cut it.

Medium has solved the personalized blog feed problem. But, it doesn’t completely allow its users to customize their blogs. It lets you pick from few blog post layouts, but, that’s not enough. In an ideal world, every blogging platform would support feeds from every other blogging platform. This removes the dependency on a particular blogging platform. Currently, no active social network or a blogging platform does that.

I think the following are absolutely necessary for complete user satisfaction:

  1. Blog customizability
  2. Subscribe and read subscribed feed from other platforms
  3. Discover blogs based on a user’s interests

This calls for an Open Standard and would be the ideal direction to head in, if the blogging platforms or the social networks really care about their users. All of this is in an ideal world. For now, in the real world, I strongly suggest every one to start their own personal blog if they don’t already have one, on whichever platform they want.

One might immediately come up with the following questions:

Who will read my blog?

When I first started blogging, I did it for myself. I didn’t expect anyone to actually care about what I write. I just wanted to write about things I thought were interesting or funny and went ahead and wrote about them. I’ve been blogging since the past 9 years now and I get a decent amount of traffic on a monthly
basis. Here’s a screenshot from my Google Analytics dashboard.

This includes my family, friends, people who use and appreciate (or not) my projects etc. So, don’t worry about who will read your blog. Just start writing and people with similar tastes will find, follow and read your blog.

What do I blog about?

Your blog could be anything. It really depends on you. Personally, I like writing about random things. I have a few posts queued up in my drafts directory, which are highly technical and computer science-y. I write about the projects that I’ve worked on, tools I use, things that I find interesting, ideas and opinions. You could even use your blog as a portfolio to showcase and promote your work.

Where do I start?

There are lots of good blogging applications such as WordPress, Tumblr, Blogger, Medium etc. Each have their own pros and cons. I’ll leave it up to you to pick the one that fits your needs. I use Jekyll for my blog and host it on GitHub Pages. I think the simplest one to get started with, is Tumblr. It’s easy to configure and easy to pick a theme from the huge library of themes available.
It also allows you to customize your domain name for free.

Conclusion

If you think I’ve successfully managed to convince you to start a blog, then let me know via Twitter @thallavajhula. I’d love to read about what you’ve written.