Tag: review

  • Review – Open Street Maps

    FYI, When I say OSM here, I mean the ecosystem of apps along with the core project. Not just open street maps website.

    Let me start off by saying that Open Street Maps is a fantastic project helping a lot of people & organizations day in and day out. There is no doubt about that at all.

    This is intended to be a review as a normal user & viewed from an angle of it replacing google maps eventually. I do understand OSM is a database first, but for the ecosystem to mature we’ll need a lively data source.

    I’ve also been contributing to OpenStreetMaps, all the while pondering over how useful my contributions are (very similar thoughts to this post). As a contributor, to drive contributions it would be great to see a wall of fame for OSM.

    But anyways, here are my thoughts on the ecosystem of OSM as a consumer looking for an alternative to google maps which uses OSM

    If you are an iOS user, I would recommend using Organic Maps. Other alternatives include OsmAnd & Maps.me. If you are into editing the maps, I would recommend EveryDoor or Go maps!!

    Extremely sparse Point of Interest data

    The primary use-case as a maps user for me is to look up places like cafes, restaurants, pharmacies, ATMs, hospitals, parks etc..

    Depending on where you are, this data is drastically out of date. Even popular places & parks are completely missing. This is mainly because OSM is community driven & there is not a lot of community in a particular place. This sucks from an end user perspective because this is the whole point of a maps for them. Roadways are also equally, if not more important but OSM seems to have good data around this.

    Search needs a lot of improvement

    This is probably the Achilles’ heel of OSM. In no app did I see a nice search bar with autocomplete ordered by relative distance popping up.

    For example, from Andhra pradesh. If I’m searching for Catamaran (A cafe in allepy, because I just want to check open hours and call them up for some questions)

    • Organic maps: first result is Catamarca in Argentina
    • OsmAnd: no results
    • Maps.me : first result is Catamarca
    • Nominatim (the search powering openstreetmap.org) : One hit, the cafe. Bingo!

    Some more examples, everyone is used to searching for “Cafes near me” or “ATMs near me”. None of the above apps show any ATMs around me if I run the same query.

    This right here is what drives me nuts, consumer apps rely on search. Having a bad search engine is the single worst problem to have.

    Missing user reviews, ratings with photos

    This is not currently in OSM’s purview, understandably so. But there should be some integrations for apps like Organic Maps so that the quality of the place is evident. Say for example for restaurants, cafes etc..

    A good web UI

    A lot of times, I plan for trips and look up places on web. There is no good web UI for browsing OSM as far as I know.

    Conclusion

    I really want OSM to take off, I ran into OSM after knowing that Namma Yatri uses it extensively. Open data is core infrastructure and I strongly believe this should be open source.

    But if someone in the ecosystem does not solve for this, we’ll never see the full potential of open mapping systems.

    Talk is cheap, solutions?

    Thanks for reading this far, I hope you see all this in good faith. I have a membership for OSM and now have a recurring donation. That’s my contribution on the financial side. Now let’s talk about the data side of things.

    I believe more POI data is extremely important for more OSM adoption. I’ll start tackling that set of problems. Once the POI is setup, apps like every door, street complete and many others will start showing it on the app and people can start populating more granular data.

    Here are some things I’m planning to work on or started working on

    • OSMRocket (alpha): a small app to take in plain text info on lat long, open hours, amenity from people and convert it to OSM tags setup. I’ve used this to add more than 50 places in my city. I found it pretty useful.
    • Scrape places with more than 100 reviews from google maps and make sure they are present on OSM. I have a script for this already, will furnish this as a project soon.
    • A good self host able search engine with proximity for OSM. Similar to OSM nomination. something which supports plain text also so that atms near me has results and is lightweight. Maybe host it and give it as a free service to organic maps etc..
    • An expo app which lets people click locate, speak into the mic and generate a osm card for poi using AI assistance. When pressed okay, adds it to a stack. Which will be later committed as a change set into OSM. A natural extension of OSM rocket.

    What would be really be beneficial to the project. Most of the ideas here need funding, but solving anything at scale requires some capital investment

    • Google’s exhaustiveness comes from the vehicles which go around with high accuracy gps attached to 360 degree cameras and LIDAR for depth sensing. This data is later used to track roads, point of interest data and many other things. This is probably the only way to add seed data at scale. Once this exercise is done, people can later enrich data further. This is a high capital investment, but once data is in place it’ll prove to be very useful
  • Review – Self hosted photo management apps

    There are only two options, in my opinion, that absolutely stand out right now. One is called PhotoPrism, and the other is called Immich.

    As I mentioned before, I run a modest Chrome Box as a home server. I’ve always wanted to move away from iCloud because it becomes expensive rather quickly, but I couldn’t find a solution that also offered a great user experience.

    I initially started with Immich, ran it once, and it crashed my server. I then migrated to PhotoPrism, which was more efficient, but the UI wasn’t great.

    After a few days, I switched back to Immich. I hoped I could make it work by disabling many options, and I was right. After completely disabling machine learning and video transcoding, Immich seems to be okay, although it still consumes a significant amount of CPU and heats the server.

    But as of now, there’s nothing else like it on the market, and this is the best we have. I hope they optimize the performance and eventually provide tips on disabling heavy features during installation, which would make the onboarding process easier. To be fair, Immich isn’t even at version 1.0 yet—it’s still considered beta software. For a beta, it’s extremely well-polished, so kudos for that.

    My recommendation would be to go with Immich, but carefully go through the settings to ensure you’re disabling any unnecessary or resource-intensive features.

    The rest of the article is a more formal analysis of the pros and cons.

    PhotoPrism

    Pros:

    • Does not disturb the external library, making it very easy to migrate and maintain.
    • Machine learning for face detection.

    Cons:

    • No Android or iOS app.
    • The UI could be more polished.
    • User management UI is not included in the free version.

    Immich

    Pros:

    • Excellent Android and iOS apps.
    • Beautiful UI.
    • Machine learning for face detection, etc.
    • Implementation of configuration for custom use cases.
    • Great administration UI, including views on jobs running, active, waiting, etc.

    Cons:

    • If you run a lighter home server and forget to disable machine learning and video transcoding features, it will push the CPU to 100% consistently. Some feature flag management at the setup level would be helpful to prevent this.
  • Review – CasaOS for self hosting

    CasaOS is yet another project to assist people into self hosting. But this one gets a whole lot of things right.

    What it gets right

    • The setup process is smooth, with a machine running tailscale & CasaOS. Most of the heavylifting for self hosting a home sever is done. The UI for apps is beautifully done.
    • Gets the UI right for volume management. Adding and removing volumes is beautifully done. Assumes you understand docker compose though. Nice balance of power and flexibility.
    • Minimal but well curated app store
    • Support for third party app stores
    • Very well made file manager
    • Supports network shares with samba inherently. Very powerful.
    • Can cap ram usage and cpu usage per application. A very useful feature since some applications like Jellyfin, photoprism can potentially take over the entire ram.

    What it does not get right

    • Entire backups are not obvious, duplicati is recommended. But that only backs up selected folders. I would prefer something along the lines of time machine in MacOS. This is actually a deal-breaker, but I don’t think there is any project out there which figured this out either.
    • Hosting to public domains is not inherently obvious. It would be nice if it supports
    • Communicating between apps is non – intutive. I’ve still not figured out how to get sonarr to talk to transmission. Or how I can configure Homarr & make it talk to jellyfin etc..
    • Network shares is great, but need polishing. Currently its without auth and no way to tweak permissions. Probably advanced and might be potentially out of scope for the project, but it does have the idea of making a folder network share-able. Would be nice if there is an app just to interface with samba, so that CasaOS just interfaces with the app for network sharing capabilities.

    Verdict – Recommended

    If you are starting out on your self hosting journey, definitely recommend checking out CasaOS. Among Umbrel, Tipi & CasaOS, CasaOS definitely gets most things right.

  • 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
  • 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.