Readit News logoReadit News
vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
scns · 4 years ago
Nice, good choice IMSO. Kotlin Native Multiplatform Mobile would make an iOs app less porting work. Only the UI/Views would differ, ViewModels, http client and DB can be shared via Ktor and SQLDelight.
vbsteven · 4 years ago
Currently I'm doing JVM only using Retrofit and Jackson instead of Ktor. Mostly because I know the JVM ecosystem best and supports all my target platforms. It's delightful to work in a big monorepo that shares API models all the way from the backend to the clients.
vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
ByteWelder · 4 years ago
Will it be open source? I'd consider helping with that. (Android/Kotlin dev with API/backend experience)
vbsteven · 4 years ago
The backend and client libraries will be fully open source. That's the only way a self-hosted project like this can work.

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.

vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
bschwindHN · 4 years ago
Does anyone ship Java on iOS? That's maybe what is holding the author back, not sure.
vbsteven · 4 years ago
I did not succeed yet and iOS was indeed holding me back to use Java (or Kotlin, my preferred JVM language). Since a few weeks I've ditched my iPhone because of to the upcoming CSAM scanning changes and I'm back on Android.

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.

vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
0xCMP · 4 years ago
I planned to comment on the conclusion as well. I think these protocols often do not handle things well enough and in the end the apps out there do not implement them properly anyways. You always end up building some kind of CRUD/RPC thing that works via HTTP/WebSocket which is why things like Todoist and etc work well and are able to add the features everyone wants in the end.
vbsteven · 4 years ago
This is what I concluded as well. The end goal for my desired system is to make it straightforward to hook into events so I can add automation.

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.

vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
foresto · 4 years ago
Thanks for dropping in. Can you explain this comment about Radicale?

> Does not handle authentication by default, needs to be handled by the reverse proxy

My Radicale instance validates users on its own, using credentials in an htpasswd file with bcrypt hashes. Doesn't that count as authentication?

vbsteven · 4 years ago
It looks like I missed the option to set an htpasswd file directly on the radicale server. After a second look at the Radicale documentation it looks like it supports both, htpasswd directly on the server or configured on the reverse proxy.
vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
AshamedCaptain · 4 years ago
This is ridiculous. The guy just goes around bashing everything that's not Rust as "old". He even claims Java & C "is not very suitable for cross-platform world". So obviously his conclusion is "I'll have to write something in Rust!".

Huge world of "groupware" software around. Think Zimbra. Owncloud is hardly the only choice here...

vbsteven · 4 years ago
Author here, let me nuance a little bit what I mean with "cross-platform world".

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.

vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
Const-me · 4 years ago
MS Exchange server for tasks and calendar, OneNote for notes, SharePoint to sync these notes.

Closed source, expensive, designed to be supported by professionals, you might need more than 1 server/VM to run them all, requires AMD64 processors.

Well tested (used by millions of people every day), relatively secure, not terribly hard to setup (follow installation guide / best practices documents carefully, and you should be fine).

vbsteven · 4 years ago
Actually my business email is currently setup like this. I have a business o365 account and use Outlook on Windows/MacOS/android/iphone and Thunderbird on Linux.

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.

vbsteven commented on The open calendar, task and note space is a mess   stevenvanbael.com/open-ca... · Posted by u/quaintdev
vbsteven · 4 years ago
I'm the author of the article, it's always fun to see your own articles pop up on HN unexpectedly.

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.

vbsteven commented on Framework Patterns (2019)   blog.startifact.com/posts... · Posted by u/rbanffy
simonw · 4 years ago
Under "convention over configuration" is this bit:

> pytest also goes further and inspects the arguments to functions to figure out more things.

I think this pattern deserves its own category. I think of it as the Python world's variation on "dependency injection" and I really like it.

In pytest you can use argument names to request that specific test fixtures be made available to your test function: https://docs.pytest.org/en/6.2.x/fixture.html

I use it in Datasette to allow plugins to define their own view functions, which will be passed the specific objects that they declare a need for in order to process an incoming HTTP request: https://docs.datasette.io/en/stable/plugin_hooks.html#regist...

vbsteven · 4 years ago
The Spring framework (Java) does the same thing for controller methods. If you need an authenticated user, or a model object, or a path variable, just add it to the method signature and the framework will provide it.

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.

vbsteven commented on CalyxOS – De-Googled Android Alternative   calyxos.org/... · Posted by u/ssklash
_1 · 4 years ago
I don't know how the app works under the hood, but Google owns Fitbit
vbsteven · 4 years ago
I should have know that. Now I understand what you meant in your first comment.

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.

u/vbsteven

KarmaCake day1971January 24, 2012
About
Freelance software development and cloud infrastructure.

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

View Original