7 ms·
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
by vbsteven 5y 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.
- 0xCMP 5y agoI 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 5y agoThis 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.
- ByteWelder 5y agoWill it be open source? I'd consider helping with that. (Android/Kotlin dev with API/backend experience)
- vbsteven 5y agoThe 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.
- scns 5y agoNice, 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 5y agoCurrently 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.
- asymmetric 5y ago> You always end up building some kind of CRUD/RPC thing that works via HTTP Isn't that what WebDAV is?
- mch82 5y agoHave you noticed if any of the calendar protocols allow for recording an appointment without specifying a date? Consider a haircut that will take 45 minutes & will invite two people (me & the barber), but the day/time is still undecided. Perhaps that sort of appointment can park at a placeholder date with infinite capacity until the real date is scheduled?
- JoBrad 5y agoI think that’s called a draft :)
- brongondwana 5y agoThere's a draft that's been floating around and renewed multiple times over the years called VPOLL which is supposed to do basically this, but it's very tricky to get the edge cases sensible, so it's still not totally done. Generally one party offers appointment times and the other party books one, which simplifies it considerably.
- hammyhavoc 5y agoI really like the idea of free-floating scheduling.
- PostThisTooFast 5y agoIt's a good write-up on a topic I've studied on and off as well. Currently I'd consider hassling with a switchover because of Apple's hideously defective calendar, which insists on changing the times of your appointments when you cross time zones. If you go on a trip to the east, you're going to miss your flight home because Apple has changed the time of it in your calendar to LATER. Monumental stupidity, and there's no way to prevent it. Apple gives you no way to simply set up an appointment and say, "When the clock on this phone says 3:30 p.m., no matter where I am in the world, alert me." NOPE! says Apple.
- foresto 5y agoThanks 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?
- deleted 5y ago[deleted]
- vbsteven 5y agoIt 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.
- Const-me 5y agoMS 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).
- Godel_unicode 5y agoOneNote is worth it by itself, it's so good. It also works on mobile really well, the search is awesome,I just wish the sync was slightly less opaque for large notebooks with multiple authors.
- ubermonkey 5y agoOneNote would appeal to me if it had the sort of "go find all my todos across this notebook" feature that OrgMode provides via the org-agenda. AS is, I've never found it super useful. j
- Godel_unicode 5y agoViewing tagged notes has been in OneNote since 2010, not sure what you mean. ToDos are a built-in tag type, but you can also create arbitrary other ones and filter based off of those. https://support.microsoft.com/en-us/office/search-for-tagged-notes-in-onenote-7077a645-65ed-498f-ad94-61d6274efe79 https://support.microsoft.com/en-us/office/search-for-tagged...
- ubermonkey 5y agoI mean individual items within a note, not entire notes. I'd want to a collated set of all the items marked as "to do", ideally with due dates, in a "virtual" page or view of the data.
- 5y ago
- donohoe 5y agohttps://xkcd.com/927/ https://xkcd.com/927/
- 3np 5y agoRadicale supports WebDAV and has built-in authentication. Also, it could be worth to add Calendso to the list. Quite new project with a bit bigger scope than Sabre/Radicale. WebUI, recently added CalDAV. https://github.com/calendso/calendso https://github.com/calendso/calendso