Author: bharatkalluri

  • Experiment: Running a home server on a chrome box

    Status: Running

    I’m new to the self hosting server game. And in retrospect, this is kind of embarrassing to not foresee that this would not work TBH. Let’s start with the story.

    My friend has a old Mini PC lying around which was unused. Since I was currently running Tipi on my Thinkpad & kind of abusing it. I wanted to move to a more sustainable solution. So, I asked for it temporarily to see if I can use it as a home server while I figure out what hardware to buy. Or if it really fits the bill, probably buy it.

    On arrival I realized it was a chrome box. Damn it.

    Chrome box’s and chrome books are meant to be usually starter level compute boxes. Initially built for Students & Teaching organizations. Hence the doubts. But then this comes with an i5 4th gen or something along that lines. That’s a powerful enough CPU. So I kept my hopes high and kept going.

    First mistake: Deciding to run fedora workstation

    On my thinkpad, I run tipi on fedora. seems to work alright. So, I thought why not. I was lazy and did not want to experiment.

    A non-server OS comes with a couple of problems. Starting with a full graphical install. Power saving modes. By default, disabled SSH. sleep and suspend, login on boot, etc..

    Although all of these were manageable, it made more sense to just move to a server based operating system.

    So I moved to fedora server instead.

    The weird issue of needing a functional display to boot up

    SSH was setup on install, the os was pretty good. Everything was sorted on the software front. But interestingly, the system would not boot on power if the HDMI cable was not connected to a display.

    This was very weird, because the power was on and the system just did not start. After a lot of googling and some AI assistance, I realised that chrome boxes might have a setting to prevent stale starts, so they had this feature of not switching on the system if the display was not connected. I would have to deep dive into the bios settings to figure out if I could turn this off, but I thought I can live with this for a while and start using the server by manually switching it on every time it switches off.

    This was also okay because I had power back up at my place, so once it was on, it rarely switches off.

    Heating issues

    After installing the server and installing immich. I observed that the server randomly just goes down.

    This was unanticipated, after which I installed net data and started looking at temperatures. To see if it was a potential heating issue.

    As expected, the CPU was running around 10 3°C. Which is pretty high and naturally, the system was just shutting down.

    Chromebooks are not designed for servers. They don’t have great cooling systems. This is obvious, but for some reason, I was optimistic and thought I could wing it.

    I could add more cooling into the picture, probably add a fan, et cetera, but I still need to figure out the bios set up.

    Conclusion

    This is just the beginning of the set up. I have just installed image hosting application. I’m not yet installed Jellyfin, which is my media streaming service of choice. That would be more CPU intensive and probably even GPU intensive if it is present.

    If with one application, the system is just heating up and shutting down, there is not a lot of hope in deploying the entire stack.

    I have now returned the CPU. Time to be on a lookout for probably a better mini PC.

    Learnt about setting up

    • Server operating systems
    • Started looking into network attached storage
    • Learnt a lot about cooling and temperature monitoring, et cetera
    • Learnt about the limitations of using tipi and customs volumes

    All in all an interesting experiment of around 5 hours. Need to be on the lookout for the next server now.

    The journey continues…

  • On the power of communities

    A bit of a story, I recently wanted to buy a mini pc for my home server. That’s a 20+k investment, even if I buy it in second hand. While taking to a friend, I realized that one more common friend had a pc lying around which was unused. After asking him about it, he quickly offered to give it to me since it was lying unused.

    A couple of interesting things happened here. I saved a significant amount of money and time, which would have gone into researching and purchasing the pc. My friend got rid of some old unused hardware which was lying around. We effectively contained the carbon footprint of the community too since I did not purchase yet one another pc. I potentially prevented a computer from entering the landfill. That’s a pretty damn good outcome!

    On communities

    We are social animals, we thrive in communities/tribes. Each and every one of us is potentially part of multiple communities. Family community, workplace community, your friends who you play football with etc..

    There are resources scattered in these communities which are wildly under utilised..

    Economics of scale is a very powerful fact of life. With volume, almost always price comes down. If communities are formed, a lot of things organically start working out.

    Use cases

    • Sharing subscriptions like iCloud, google one, YouTube, prime video etc..
    • Car pooling across groups like apartment groups & office groups
    • Collation of community media and resources like videos, music etc.. For example, uploading pics of an event, sharing videos after an event. Uploading performances for everyone in the community to check out etc..
    • Communication like posting events & updates, requesting referrals etc.
    • Listings for leasing for or for not money and managing exchanges. For example, I have a raspberry pi at home which I’m not using which I’ll happily lend to a junior at office if he wants to experiment on IoT.

    Types

    Communities in my opinion are of multiple types by the nature of entry

    • By property: you’ll be a part of a community by property of being a part of a family. Or by property of being employed at a place.
    • By trust: you and your friends will be a part of the community

    Dynamics are quite different in these communities. For example, you might comfortably give away your bike to a friend for a week, but will think twice to give the same bike to a coworker in your office.

    Some financially profitable use cases to experiment with

    • Backups: backblaze seems to offer a terabyte worth of data storage on hot s3 compatible medium for around 7 dollars a month. For one person, this might be overkill, but for a family of four it makes sense.
    • YouTube and iCloud has family plans which could be shared and are fairly cheap per member.

    Closeknit: an experiment

    Looks like discovery is one of the most important bottleneck. Closeknit aims to be a discovery and management platform for items and subscriptions.

    With Closeknit, you can join communities and discover under utilized resources.

    Let’s see how this goes.

  • Review – Tipi for self hosting

    What it gets right?

    • Install is very smooth
    • auto HTTPs for all public domains using let’s encrypt & traefik
    • local domains for self hosting out of the box
    • great UI for installing and managing apps
    • app level backups on the UI. Really big deal since not a lot of products in this space have it out of the box including CasaOS.

    What it does not get right?

    • No UI for automated app backups & No Maintenance window setups for complete server backups

    Observations

    Once I get used to the tool, I lose the advantage of having a fresh eye. Hence documenting observations here if I find anything weird.

    • Uninstall is not obvious. The expectation is to stop the app & then uninstall. Although that makes perfect sense, it would be nice to just have a button for uninstall.
    • tipi.local does not work as advertised. Not sure why too.
      • there was documentation here, did not stumble into it cause it said “Local SSL certs” but I read it as “documentation on enabling https://tipi.local”, not how to setup tipi.local. but anyways, the docs were fantastic and folks over at discord were super helpful. Made it work after following the docs.
    • connecting between services is not intuitive.
      • You just use your IP:port, it would be nice if there was a button to copy the URL from the service on the dashboard
    • mounting volumes is do-able, but no UI
      • nitpick, user-config does exist. But it should be done via code. UI around adding volumes would be really nice.
  • Project notes – Citadel

    For context, read the self hosting dream post

    The philosophy / idea is to provide an interface to self hosting applications similar to phones. Just run the OS, hit install and you’re ready to start using the app.


    Literature review

    I do not want to re-invent the wheel. If something along these lines already exists, I want to use it.

    Caprover / Dokku & friends

    Aim to be solving for developers interested in self hosting. Serve as an alternative to companies like vercel. Although there is significant overlap in scope, do not really solve for a simple day to day customer who is interested in hosting some services.

    Umbrel & CasaOS

    Solves for hosting at home. Does not intend to be on the public internet, although you can achieve that by cloudflare tunnels. Extremely well thought out systems IMO. If they solve for backups & domain management as a part of their stack. Citadel might not be needed.

    Tipi

    longer review here

    Apart from minor nitpics on UI, bang on on what I planned. unfortunately I found this after phase one, if not I would have just jumped on discord and asked questions on how I can just help.


    Phases

    Phase one

    A CLI to setup a single node on something like a raspberry pi, old laptop or desktop or a server rented online. We’ll start by supporting Ubuntu for now. It should allow for

    • Setup: user creation, installing docker if it already does not exist. Setup firewall if it doesn’t exist. Configure to open only required ports. docker network creation. App Store setup.
    • List: list all available apps
    • Install: install an app. run pre install and post install hooks if needed. pre populate app data if needed. Spin up the docker compose project.
    • Update: update the docker compose file. Re start the docker compose stack with the new version.
    • Remove: spin down the docker compose stack. Delete app data if specified. Delete the installed app.
    • Domain add: add another base domain to the application.
    • Domain remove: remove a domain mapping

    Problems and Design decisions

    with corresponding considered solutions & solution picked

    User Authentication & Default passwords

    Both google & iOS thrive on using their own authentication stack (google sign in & apple sign in). Also, apps on the phone do not have to worry about others accessing it since they are protected by the phone lock itself.

    Potential solutions:

    1. maybe block the UI behind a simple HTTP auth? Horrible idea, apps can chose to have complex multiple user management. This will either be two layers or one half implemented layer.
    2. Have only apps which have sign in with say apple, firefox or some auth provider in the auth store? Adoption will be next to impossible. Not a good idea.
    3. during on boarding, let the user give a really long default password and use that as the default password for everything. meanwhile clearly calling out that the password needs to be changed post log in? Sucks UX wise, but works and is a good middle ground. The password has to be stored in plain text somewhere in the env variables. Security wise probably a bad idea.
    4. How does umbrel solve it? maybe borrow that solution? It seems to have default passwords in the codebase. Also umbrel is not trying to be a public facing server. It’s more a personal server.

    right now, going with option 3

    User input for setup (like domain names etc..)

    If I’m hosting a WordPress website, I should get to choose the domain it lives in. How to get this information during app install smoothly?

    During setup, ask as little questions as possible.

    Domain management

    how to make this seamless?

    For example

    • the user is setting up their wordpress blog, I want to ask what the subdomain should be. should it be blog.citadel.bharatkalluri.com or notes.citadel.bharatkalluri.com?
    • what if the user wants to add another domain along with the default one?

    File permission management

    To run docker at user level (`1000`), all the app data folders must be created to run at `1000`. Which means that, the app data folders need to be created upfront, permissions need to be set in the app data folder so that when the container actually executes, it has the privileges to actually add/edit/delete files in the folder.

    That means that before running the container, we’ll have to first set up folders in app data with the right owner. Which means that app data needs to actually be pre-populated.

    Solution: every app will also come with a folder for app_data. the contents of this folder will be copied into the `$CITADEL_APP_DATA` folder as it is & then docker compose up is run. this “seed” app data folders will already have the right permissions setup. This is sorted now.


    Apps I would like on citadel

    All the apps which a phone has built in like

    • File manager
    • App Store

    These will be un-installable. Basically the default apps.

    and some more like

    • WordPress
    • Memos note taking
    • pihole
    • Jellyfin: auto discovery might or might not work
    • Tailscale on the host system: setup during onboarding
    • Duplicati
    • Transmission
    • A monitoring tool
    • Statping
    • Arrr stack & Jellyseerr

  • Review – Umbrel for self hosting

    Checkout the self hosting dream post for more context

    Verdict: The closest to ideal solution right now on the market.

    Pros

    • Stunning UI & UX
    • Great visuals
    • Seamless installs & updates. dependencies just work.
    • Authentication for all apps using a proxy in front of all services
    • Vision: these folks also do hardware. seem to be playing the long game. excited to see where they’ll take it.

    Cons

    • No WordPress support (blocker for me personally)
      • Umbrel operates in a single user, single app install territory. which means by philosophy multiple wordpress instances won’t work. Multi-site would work though. Which is good enough if they happen to deliver. Maybe I can make a PR.
    • No systematic & scheduled backups – as of yet at least (blocker again)
    • They seem to stress on crypto. Not a big fan.
    • No multiple user support
  • Remembering life through photos and videos

    Inspired by Johnny Harris’s video on remembering life

    We tend to remember the big events. The marriages, first bike ride, first job offer, college festival’s etc.. but there is a lot of beauty in the day to day too. The short visit to cafés, jokes at get togethers, sunsets with friends are worth being nostalgic about in their own right.

    Here’s how I go about remembering life.

    Volume

    Take a lot of pictures, you can always delete them later.

    Every once in a while, I sit and start deleting cruft from my photos. Delete ruthlessly though since you don’t want to be having 10 TB of random junk.

    iPhone also comes with a decent duplicate photo delete functionality.

    Metadata

    Metadata is key, every snap on my iPhone comes with

    • Date
    • Location
    • People recognised from contacts
    • Self added caption

    This is actually a ton of data.

    With this, a couple of queries become possible. For example

    • What is the name of the cafe we visited in allepy last April? A lookup for a picture on that date and then look up on the location of the photo will get you that data
    • When did I last visit Goa? Just go to the maps view and click on pictures from Goa.

    Some minor notes, WhatsApp seems to trim metadata off pictures. So prefer something like local send, airdrop or iMessage.

    Backup

    iCloud is pretty good , but just in case. Also see if you can do a monthly or quarterly backup of all your pictures.

  • The self hosting dream

    If mobile apps have gotten so good with local sqlite databases, why can’t we hold ourselves to the same standards for servers?

    Families or individuals should be able to self host their own software under a sub-domain, give limited access to its some folks and run the show from their servers.

    A man can dream, So let’s dream for a bit..

    In an ideal world, a customer orders a box with storage of say, a TB and a domain for a year as well.. Should have a small screen which boots up.

    Something like Umbrel home.

    On power on, the screen boots up. Post startup asks you to connect Ethernet and once done asks you to scan a QR code which will open a url for onboarding. Where it’ll ask

    • Admin username & password
    • Base domain or maybe tailscale setup for networking.

    At this point , an authentication solution like authentik is setup which all the services will use going forward.

    At this point a vpn, something like Tailscale should also be setup so that secure access is shared cross devices.

    Now the installer suggests installing some apps like Jellyfin, omnivore, vaultwarden, WordPress etc.. & guides the user to start using that website on their other devices. The App Store clearly highlights which apps support SSO and which apps don’t.

    Apps should not ask for any input from the user, similar to how mobile apps don’t ask anything from the customer while installing. Similarly during uninstalling, the app will ask if it wants to delete data along with it or not.

    App Store listings should also come with companion app information along with QR codes for installing them on other devices. The App Store should also have feedback/reviews similar to Apple App Store.

    If an app requests for file permissions, they should just pop up stating that they require access to a certain directory similar to how phones do it.

    Stuff like backups are sorted so that if the device happens to be corrupted or non functional for some reason, you should be able to connect the phone & hit restore to the latest functional version. Even backups at a app level are sorted so that restoring to a particular checkpoint is seamless & can be done through admin panel.

    Upgrading storage should be a breeze, similar to how you would plug in a 512 GB SD card and move data into it.

    Support should be always at reach, maybe with a cost per consultation. So that if an elderly person is not able to log into her Jellyfin account, someone can take control & fix it seamlessly.

    Autoscaling should be possible, the user should be able to purchase a new node and during onboarding select that this is a non leader node. The leader will be responsible for managing load.

    Status

    Settled on using Tipi running on a chromebox.

    I’ve currently explored CasaOS, Umbrel, RunTipi and settled on Tipi. I’m also working on a tool to simplify all of this, a project I call Citadel.

  • Stack

    The tools I use to run my day to day life.

    Phone

    Currently I use a iPhone 16.

    Apps on my phone

    Communication & Social Media

    • WhatsApp
    • Telegram
    • Instagram
    • X (formerly Twitter)
    • Slack

    Productivity & Organization

    • Google Calendar
    • Apple Notes
    • TickTick
    • Sheets
    • Docs
    • Drive

    Finance & Banking

    • HDFC Bank
    • DBS
    • Paytm
    • Cred
    • Fi
    • OneCard
    • Zerodha Coin
    • Zerodha Kite

    Entertainment & Media

    • YouTube
    • Apple Music
    • Audible
    • Booksplayer
    • Jellyfin

    Travel & Transportation

    • Google Maps
    • Uber
    • Ola
    • Rapido
    • Namma Yatri

    Food & Delivery

    • Swiggy

    Health & Fitness

    • Strava

    Shopping & E-commerce

    • Amazon

    Reading & Information

    • Goodreads
    • Hoarder

    Security & Privacy

    • Bitwarden

    Utilities & Tools

    • LocalSend
    • Tailscale
    • Jetpack
    • Shazam
    • Bitwarden authenticator

    Email & Cloud Storage

    • Gmail
    • Protonmail

    Movie & Event Booking

    • Book My Show
    • PVR

    Coding & Development

    • GitHub

    Podcasts

    • Apple Podcasts

    AI & Chat

    • ChatGPT
    • Claude

    Expense Sharing

    • Splitwise

    TV & Movie Tracking

    • Trakt

    Work Management

    • Zenduty

    PC

    I run Fedora on my Thinkpad.

    • Zen Browser
    • Libre office
    • Pycharm
    • Libation
    • VLC
    • Foliate
    • VS code
    • Zed editor
    • Steam

    Server

    I run Tipi on a chromebox & run it at home. Runs the following.

    • Jellyfin: For movies, TV shows & Audiobooks streaming. I use it with jellyfin on iOS for movies & TV show streaming & Plappa.
    • Deluge
    • Immich: Beautifully done photo management solution. Syncs well with all devices, has clients everywhere.
    • Duplicati: For backing up photos mainly
    • Beszel for monitoring
    • Flowise AI for building AI tools
    • OpenWeb UI for GPT
    • Uptime Kuma for uptime monitoring
  • Practical self hosting

    Self hosting absolutely everything I feel is not practical as of today. Hopefully it will be possible one day, but currently is not. In that case, what can we actually self host? Maybe the question to ask is, why do we self host?

    Why do we self host?

    Privacy : Placing all our personal data in the hands of large multi national companies which in-turn sell our data or use it to train their large scale AI models is unfortunately the world we live in today. With self hosting, privacy is protected.

    Cost : Sometimes the storage costs of certain services mean that the subscription cost of services tend to be prohibitive. Self hosting that service means that we don’t have to incur that cost.

    Why don’t we already self host everything?

    Although this sounds like a stupid question, its very important to think through this one. The reasons I specifically do not self host for the longest time is

    • Deployment complexity: A non issue with projects like Caprover
    • Opportunity cost of failures: sometimes the opportunity cost of an action failing is higher than the subscription cost itself. For example, the opportunity cost of an email send or receive failure could mean a lot. During some ops work or because of some other random reason, what if the disk gets corrupted or data gets partially deleted. Can I just hit a button and restore my stack back what it was today morning? This seemingly simple ask is surprisingly complex.
    • Missing Network effect: Cannot move people from Instagram or Whatsapp. With the current setup, meta knows everything and there is nothing we can do about it if we want to live normally in this society unfortunately.

    With this information, what is that I use day to day but can’t self host (for context, look into the stack post)

    • Finance apps : PayTM, Fi bank etc.. obviously
    • Social media & distribution channel apps: Instagram, Whatsapp etc.. cannot ask people to move to matrix suddenly. Similarly Uber, Youtube, Prime video cannot be a self hosted solution since the moat is the network.
    • Critical communication apps: gmail, google calendar. The cost of missing an email or an invite is super high and not worth it. Better to switch to more secure apps like proton mail etc..

    So what can we self host then?

    App picks

    Library streaming solution – Jellyfin

    Libraries tend to be irrationally large after a while, hosting jellyfin on a old PC at home & using that as a base and streaming media to your TV / mobile across your family members & yourself is extremely cost effective. Going the subscription route will be extremely expensive.

    Password management – Vaultwarden

    Bitwarden is a beautifully done software to manage passwords across all kinds of devices. Vaultwarden is the rust implementation of Bitwarden.

    Bookmarks management – Omnivore

    Looking forward for omnivore to wrap up their self hosting setup so that I can start self hosting. Right now it does not exist.

    Status monitoring – Statping

    Simple, straight to the point and solid. Recommended!

    Missing apps in the ecosystem

    • A great to do app similar to TickTick with solid reminders, good apps on mobile & collaboration.
    • Sync solutions for photos & files. Automatically backing up photos, videos & documents so that information is not lost. An alternative for iCloud.
    • A great note taking / voice notes app with solid mobile apps and collaboration. Alternative for iCloud notes, simplenote etc..
    • Health tracking, ideally with hardware.

    Also, checkout The self hosting dream

  • My digital garden workflow

    I’ve been searching for long on how to get this right. I think I have simple enough requirements, but have been complicating it without a reason.

    Here is what I want

    • WYSIWYG editor for easy writing
    • Drafts
    • Writing on mobile / tab / laptop
    • Light website which loads decently fast
    • Good search

    The idea is that, If something comes to mind. Converting it to text & putting it out in the garden should be friction less.

    Current setup

    WordPress happens to tick all the boxes. Now I run wordpress on a 7$ instance on Digital Ocean.

    It has

    • A fantastic editor
    • Support for drafts
    • Insane collection of themes
    • Great app to write & manage the website on the go (WordPress Jetpack)
    • Good search
    • Light website with cloudflare caching
  • Command line tools

    I use many CLI tools for my day to day job.

    The emphasis on compatibility means that tools can be stitched together to accomplish a lot of things. I use a combination of saw, choose, jq & grep to parse production JSON logs all the time, and it is possible because each of them does one thing and does it well & most importantly is designed to allow data to be piped in and results to be piped out.

    Some of my favorites

    • FZF: A command line fuzzy finder. In my opinion, one of the smartest and well-made tools which just does one thing, but does it impeccably. I use this to replace ctrl + R to fuzzy search through history every day.
    • saw: A AWS cloudwatch tool
    • choose: alternative to cut
    • jq: command line JSON processor
    • aws cli: the official AWS command line application
    • zoxide: A smarter cd alternative
  • Minimalism

    “We buy things we don’t need with money we don’t have to impress people we don’t like.” ― Chuck Palahniuk, Fight Club

    There is a principle from extreme programming called YAGNI, stands for “you ain’t gonna need it”. I think this applies very well to possessions in life too. We own a lot of things we do not need and carry no emotional value. If an item does not provide value, get rid of it.

    Experiment to see what it takes to travel with less & experience more: One bag

  • One bag

    A man is rich in proportion to the things he can live without – Henry David Thoreau

    Philosophy

    Life would be much more simpler and high quality if all we need fits in a 50lt bag.

    List

    • 50 liter Backpack
    • Smaller backpack for travel

    Wear

    • 6 T shirts (mostly march tees)
    • 4 pairs of sweat pants
    • 1 Hoodie (march coffee hoodie or white hoodie. iff weather is cold)
    • 6 pairs of socks
    • Travel under garments
    • 4 gym pants
    • 4 gym shirts
    • Travel towel
    • Sun glasses
    • Head cover for while wearing helmet
    • Neck pillow

    Electronics

    • Phone with a good camera (iphone SE)
    • Earphones (Airpods)
    • Type C charger
    • Apple Watch charger
    • Kindle with at least 5 books ready to go
    • Laptop
    • Smart watch
    • USB thumb drive
    • Type C to HDMI cable
    • Power bank (ideally compatible with both laptop and phone)
    • Wireless Mouse
    • Bluetooth speaker

    Wallet

    • Proof of Identity
      • Aadhaar card
      • PAN
      • Passport
      • Driving License
    • 1 Credit card
    • 1 Debit card
    • Some cash. If international, some cash in dollars.
    • Prints of visa and other tickets if needed

    Toiletries

    • Sunscreen
    • Shampoo
    • Razor
    • Soap
    • Deo
    • Toothbrush & tongue cleaner

    Miscellaneous

    • Medicines
  • Quotes

    A compilation of my favorites

    And those who were seen dancing were thought to be insane by those who could not hear the music – Nietzsche

    If someone says it’s raining and another person says it’s dry, it’s not your job to quote them both. Your job is to look out of the window and find out which is true – Jonathan Foster on journalists

    We buy things we don’t need with money we don’t have to impress people we don’t like – Chuck Palahniuk, Fight Club

    Yeah, seems like we’re all trying to climb a ladder. It’s crazy what we’ll do to climb it faster. It’s like we throw away the things in life that really matter. Just so we can make it to the top and wonder what we’re even climbing after – NF in 10 Feet Down

    Ships are safe at the harbour, but that’s not what they are built for

    If someone could only see your actions but not hear your words, what would they say your priorities are?

    Hard times create strong men. Strong men create good times. Good times create weak men. And, weak men create hard times. – G. Michael Hopf, Those Who Remain

  • Welcome to my digital garden

    This is my personal wiki where I share everything I know & learn. Think of this more to be public note taking.

    I try to dive into a lot of fields. Next time the same path is traversed by someone else, It should be significantly easier and faster. Hence, this is an effort to document my explorations of various rabbit holes & notes on opinions.

    Who am I?

    Hi, I’m Bharat Kalluri, I lead banking engineering team @ Refyne. I’ve been lucky enough to be a founding member and have witnessed the company scale from scratch.

    I love trekking, writing & teaching. You can mostly find me reading a book or listening to podcasts.

    Some interesting starting points

  • Gripes with reality

    Things which need fixing. Consider picking up one of these if you want to start a new project.

    I’m always available to talk if you want to work on one of these. Most of these piss me off so much that I’ll spend a very good amount of time fixing them. So happy to work together!

    • No central, privacy focused repository of bio markers / health markers
    • Scattered contact information with no system of keeping in touch
    • Difficulty in tracking money flow from income to expense patterns
    • Battery life on Linux is horrible. Compared to windows, I seem to get significantly lesser battery life on Linux.
    • Lack of credit score equivalent to establish credibility in the NGO world
    • We keep collectively wasting time for writing request types, response types and HTTP clients for rest APIs. There needs to be a better way. Why can’t I directly call a function from a server directly, why deal with api endpoints, error codes with no obvious documentation etc..
    • Why can’t a family simply share images of a event like marriage, engagement etc.. at bulk at once and get done with it without involving a multi national corp like Facebook or Google? Even if we do involve them, what’s a quick way to follow up and share pictures?
    • Lack of public data sources for maps. Open street maps is good, but is no where as exhaustive as google maps. And possibly will never be because google has the infra to tour around with 360 degree cameras, high accuracy GPS devices and AI & ML setups to gather data automatically.

    Things I solved for

    • Cleaning up your email is hard. Why? and why are tools around this paid & expensive?
      • Built CleanMail for this. Works great for a v1. Is perfectly functional, UX could be better though.
  • Ideapad

    Personal finance manager & tracker

    • Solving for: visibility into finances for course correction & planning
    • Sources to snapshot personal finance data from
      • zerodha coin for MF
      • zerodha kite for stock markets
      • HDFC FD for FD
      • HDFC savings for savings

    Dump notes and retrieve on demand

    • Solving for: The paralysis of organization
    • Two modes: input / search
    • Input mode
      • no distractions, command k to search existing files and quickly jump in and write
      • opens up a new note with heading & notes
      • tags on demand, command+p and add tags
      • metadata will be captured as you type, auto suggest tags on demand using chatGPT
    • Grep mode
      • Search by tags, synonyms, plain text, image metadata, URLs
  • Watches

    This is what you need to know to understand & appreciate how watches are made. This is a basic 101 to introduce the ideas behind watch making.

    Watches & watch collecting can be an expensive hobby, But it does not have to be. The best place to be is to have watches tied up to significant memories so that the thing on the wrist reminds you of something that makes you happy.

    Watch movements

    There are broadly speaking three types

    • Quartz / Digital
    • Mechanical hand wound
    • Mechanical Automatic

    Quartz

    Quartz are technically the advanced, but much more simpler to make in bulk. A quartz crystal vibrates at a particular rate when current is passed. This vibration in turn drives the seconds hand & therefore the time in the watch.

    Although this is technically more advanced, since the number of moving parts are very less. This type is much easier to make in bulk. Thus also driving the price down. Most of the cheaper watches are running quartz.

    Since this is simply battery driven, accuracy of these watches is also very high.

    Mechanical hand wound

    In the beginning of watch making, there was no electricity or batteries. Hence people used a loaded spring as a store of energy. And this spring would continuously release power, which would be then directed towards moving gears. This is how mechanical watches work. These are complicated to make and involve a lot of moving parts.

    Also, since this is relying on a loaded spring. Depending on the spring, the charge reserve is also variable. Charge reserves usually are anywhere around ~ 30 hours – 80 hours. And after that, they would need to be manually wound and “recharged”.

    Since they are mechanical in nature, the time drift is also a problem. These watches could be off by a second or often times by a couple of seconds every day. So, recalibrating the watch once in a while is also important.

    Mechanical automatic

    Mechanical watches require to be wound manually every once in a while, automatics get rid of this problem by having a loaded weight at the back of the watch. Since the watch will be moved around when its worn, the loaded weight will move back and forth. Which in turn generates potential energy to charge the spring.

    The automatic & mechanical watches have definite downsides, but the reason people buy them is in appreciation of the craftsmanship & engineering which goes in making them. My father has a HMT mechanical watch which was bought during his childhood, which still runs like a charm. The fact that these watches are built to last forever is very appealing to a lot of watch enthusiasts.

    Watch glass

    Broadly classified into a three categories

    • Resin: very basic, easily scratched. Very cheap to manufacture.
    • Mineral glass: slightly better, scratch resistant to a good extent. Slightly more expensive.
    • Sapphire crystal: Extremely scratch resistant & transparent. Try to go for this if your budget permits. Obviously more expensive to maintain. Apparently only diamonds can scratch a sapphire crystal.

    Other important notes

    • Case diameter & thickness: These tend to be deciding factors when buying a watch. Watch makers usually have a couple of options here. Try them before buying to understand what size fits your wrist size.
    • Water resistance: Unless you plan on swimming with your watch, most of the times this is not a massive deal breaker and most watches come with decent water resistance by default. There is a class of watches called the divers watch’s, these are meant to be worn by divers and have a very high water resistance (usually around 200m). If you plan on swimming then get a watch which is certified to be 100m/10 bar/10 ATM.

    Respected brands in the industry

    Not all brands of the conglomerate are listed, these are just some of my favorites

    • Swatch group
      • Tissot
      • Hamilton
      • Omega
      • Rado
    • Seiko
      • Seiko
      • Orient
      • Grand Seiko
    • Citizen
      • Citizen
      • Bulova
      • Miyota
    • Rolex & Tudor
    • Casio
    • Timex

    A lot of the fashion brands like tommy hilfiger, Giorgio Armani etc.. actually source their machinery from Fossil usually. And just have a markup in price because of the branding. If that’s something you enjoy, then it makes sense. Otherwise, it usually makes sense to go for the titans of the industry.

    My wish list

    I would want to have one of each:

    • Dress watch: An open heart automatic for me. Something to wear for formal or special occasions. It needs to look classy and clean.
    • Daily driver: Something that is possibly not very expensive & something which looks good when you dress up & dress down.
    • Beater: Something along the lines of a G-Shock or a Casio duro. A watch you would wear for sports, treks, etc..

    Watches I own or plan on owning:

    • Fossil machine
      • The first serious watch I ever bought, bought it after my first job.
      • This has been my daily driver for the longest time.
    • Seiko presage automatic watch: blue open heart
      • My dress watch of choice.
      • My first mechanical automatic, bought it as a sign of reaching a particular milestone in my career and life.
      • Always wanted an open heart automatic. When I got to know that a friend was on vacation in Japan, I asked them to get it from there. It happens to be about half the cost in Japan.
    • Seiko 5 sports SBSA053
      • Looking forward to add this into the collection. Will be the preferred watch for daily wear if I happen to get this.
    • Timex weekender
    • Casio Duro
  • Protocols – Personal Finance

    This is work in progress! Feel free to reach out to me @bharatkalluri for suggestions and feedback.

    One of the first things I think people should be taught when they start earning is managing personal finances. There are some fundamentals on how to manage personal finances. Once these are sorted, you can resort to more niche investment instruments if needed.

    Understanding the baseline

    Answer these questions for yourselves. No need to justify any of these numbers, just be aware.

    • How much are you spending per month on average?
    • If for some reason, the company you have shuts down. What’s your runway?
    • God forbid, if something happens to you. Is your family financially secure? Similarly if there is an accident and someone in the family needs an immediate operation. Do you have the capacity to handle it with composure financially? These answers are extremely important. Please make a note of these either on paper or mentally.


    Long term view

    Basics

    Emergency fund

    Keep 2 * (monthly spend) separately in an FD or an account. The idea is not to get returns on this amount. The idea is to just have a safe backup of cash in case something urgent comes up. Do not touch this fund until & unless an absolute emergency comes up. Once its dealt with, immediately work on replenishing the fund. Once the basics are taken care of, work towards making this 6 * (monthly spend) and eventually 12 * (monthly spend).

    Health insurance

    Make sure your family & yourself is insured. Take as much cover as possible: 15L, 30L or higher if you can. The younger you are, the cheaper the cost of the monthly premium. The idea of top-ups exist, utilize them if possible. An employer usually gives out a health insurance, make sure to check on that & understand details around it too. Also, make sure to cover your dependents (parents / spouse).

    Term life insurance

    This is relevant if you have dependents. If something unfortunate happens, your dependents should not be worried about financials. Make sure you get a term insurance of 15-20x the family’s total annual expenses.

    Clear debts or have a plan for clearing debts.

    Debts come with an interest and the longer the debt, the more it affects your peace of mind. Make sure you have a highly disciplined plan & a clear timeline for clearing debt.

    Wealth growth: Level one

    Once the basics are covered, now we can discuss how to accumulate left over wealth. Before starting out on this journey, make sure you understand

    • inflation
    • compounding
    • interest calculations (IRPA)

    Grow your income stream

    Growing income through financial instruments is a low probability game, the much more high return/high impact game is to grow in your career. Optimize for this for longer term gains.

    Mutual funds

    The left over income which is unspent, start investing. This is for long term wealth growth. You do not want your money to stay in an instrument which grows less then inflation since its reducing in value. The safest option in mutual funds would be an index fund. There are numerous videos on the internet explaining what these funds are. But basically the growth of the fund is directly proportional to the top 50 or 100 companies of the country. Which means that the growth of wealth is tied up to the growth of the country. Historically index funds have yielded around 12-15% returns.

  • Self quantification

    The idea is of collecting data points about thyself, in hope of drawing constructive inferences and use that to make positive changes to lifestyle.

    Here are some data points I would like to collate and analyze

    Data sources

    • Movies watched: Trakt
    • Books read: Goodreads
    • Song listening history: Last.fm
    • Run tracking: Strava
    • Habits
    • Programs used on the computer
    • Travel data
    • Caffeine intake
    • Food and corresponding calories
    • Financial Transactions
    • Podcasts
    • Chat history
    • Videos watched
    • Videos linked
    • Articles read
    • Articles liked
    • Websites visited
    • Articles I would want to refer later
    • Notes from books
    • Sleep tracking
    • Purchasing history
    • What do I ask alexa?
    • EMail data
    • Keystrokes
    • Calendar events
    • Phone calls
    • Investments
    • Apps used on phone
    • Mood tracking