vbsteven
Joined 14 years ago
Joined 14 years ago
I'm not sure about the android/desktop apps. I might keep them commercial for a bit to experiment with an open-core monetization strategy.
Give me a couple weeks to iron out architecture details and write some design docs and then I'll publish the project on GitHub. Shoot me an email if you're interested.
By dropping iOS as a requirement, Kotlin/JVM is feasable again for all my personal target platforms and I've decided to use that as the main language for my system.
This turns out to be very hard to do based on CalDAV/WebDAV protocols because many clients and services implement the spec differently or only parts of it.
That's why I switched my approach and I'm writing my own backend storage layer that has my desired event system builtin on that layer (Using Kotlin/JVM for the backend, postgres for storage and MQTT for pub-sub to events). On top of that storage/api layer I'm building CalDAV/WebDAV support so external clients can connect to it.
Having my own HTTP+MQTT API makes it a lot easier to build modern clients as well. In fact because I chose Kotlin/JVM as my baseline and have already written a pure Kotlin client library I'm making a lot of progress on both desktop, android and cli tools to interact with the system.
It's 2021 and there are 3 major desktop and 2 major mobile platforms, plus some smaller ones on each side. And then there is the Web, which is both mobile and desktop focused.
If you're going to write a new library that you want to use on all of these platforms, you need a programming language that works on all of these. For iOS Java is a non starter because as far as I know there is no proper JVM that can be used in App Store apps. C can target all these platforms (including the web using WebAssembly) but it is a major pain to setup the tooling for every platform, especially if your library needs complex dependencies for things like SSL.
I am not a Rust zealot that advocates rewriting everything in Rust. I only mentioned Rust once in the whole article so your "obviously" comment doesn't really hold. The reason I mentioned Rust as a language for my project is because it is one of the modern languages that have cross-platform building and dependency management builtin from the start. It is a lot less work to write an SSL-enabled library in Rust that can be used on all these platforms than it is to write one in C.
But I want to move away from it because I want to 1) gain control over my data and 2) extend the system with automations.
Thats why I started researching open source and self hosted alternatives.
This post was written several months ago and in the meantime I have given up on trying to cobble something together using existing solutions because they don't provide the extensibility that I want.
I'm building my own replacement from scratch focussing on tasks/projects/calendars first. The architecture is a postgres db exposing CRUD API endpoints and all changes are broadcasted over MQTT so I can easily hook into everything for automation and extension.
I have a desktop application in JavaFX and a mobile Android app so I can use Kotlin as one language across all clients and backend. Lots of code sharing going on for things like API models.
I don’t know if there is a term for this concept. I’ve always seen it as some form of Dependency Injection/IoC but at the method level instead of object creation.
IIRC the Actix web framework in Rust does something similar for handler functions.
As long as the app doesn’t rely on Play Services it shouldn’t be a problem. By “degoogled” phone I mostly mean taking Google out of the critical (privileged) path in the OS for software and app updates.
Is there a specific device you would recommend for long-term CalyxOS support?
I don’t care too much for on wrist calls or anything like that. I just want to use the Fitbit app to sync stats and mostly display notifications from WhatsApp and my personal apps.
* Spotify needs to work over Bluetooth in my car
* WhatsApp needs to work (preferably with push notifications)
* I need the Fitbit app to work so my watch can show push notifications from my personal apps
* a network-based location provider to be consumed by my personal apps (I’m working on a personal data and automation suite that relies on frequent smartphone location updates)
Is this something that can be done with CalyxOS on a Pixel? Can other Android flavours like GrapheneOS or LineageOS do this?
And aside from Android, how far along are other “mobile linux” smartphones for use as a daily driver with regards to the above points?
That sounds like a fair deal to me. Although it’s pure speculation. I haven’t checked if that is actually the case.
Although I’m not sure if the screen refresh and cpu are fast enough for comfortable typing. I already get frustrated using the onscreen keyboard for typing a 10 character notebook name.
I'm always interested in talking to people about autism/adhd/burnout issues in tech.
Email me at (hn username without vb prefix) @ quantus.io