WhenFS: Calendar Is Now a File System
github.com
github.com
> I used this project as an opportunity to learn about Rust and FUSE file systems. I also think it's hilarious.
> Visitors interested in the code should note that this is an irredeemably messy codebase—it's full of hacks, unidiomatic code, and wildly poor design decisions.
> However, visitors should also note that that's okay. The best way to learn something new is to try it out for yourself—and creating a mess is a vital part of that process.
I absolutely love this sentiment. Why do this? Because it’s fun. And messy. And sometimes, that’s okay. Not everything needs to be a product… sometimes it’s enough to do something because you can… or want to… or because $RANDOM reason. I’m very grateful to the author and whoever decided to submit it today.
> The page you're on right now is my mess. Now go create yours!
While my career has found a balance between impact and financial sustainability, I have a special place in my heart for projects that are otherwise unnecessary but happen just because it brings the creator joy.
Profit doesn't inherently mean you've made the median experience of individual humans better, and is just as often to effect significant degradation. My biz was slightly on the positive, but I could have pegged an extra zero in profit if I had forgone scruples.
You classifications are good but it's a bit simplistic. Generally across the spectrum people is looking for breakthrough (e.g. deep learning) and/or game changing (e.g. transformer) contributions regardless if you're in academia, industry, non-profit, government labs, etc. But for pure joy, it can be from any simple creative projects as you've mentioned or it can be giving up seats for the elderly in a crowded metro trains.
$ cat /cal/2024/08/04/events
Something like:
4h sun: 1500 dentist's appointment, 1800 dinner with friends
Where a=jan, b=feb, c=marc, ... l=dec.The initial file was autogenerated with a 10-line Python script.
You can have variations on this, like allowing multiple rows per day, one row per event.
I also used to keep an unstructured "journal.txt" file, where notes were separated by two blank lines, and you could reference topics (like #toRead) and dates (like #4h24) with #, like social media hashtags.
$ cat /cal/nexttues<TAB>
$ cat /cal/2024/08/13/
$ cat /cal/nextweek<TAB>
$ cat /cal/2024/w32/
I seem to recall that I had lunch with somebody last July: $ grep -ir somebody /cal/2023/07/
/cal/2023/07/12/events:13:00-14:00 Lunch with somebodyA couple of weeks ago I was surprised and annoyed that adding an event with description "10:30-11:00 Pointless Meeting" no longer scheduled my Pointless Meeting. Tried again very carefully. Wasn't working. Worked again the next day. Did anyone else experience this?
I can't wait for them to feed my description to an LLM to generate the event. "Schedule drinks at 7 at the bar behind the office next Tuesday. Invite my favourite colleagues and their teammates. Make them curious but not suspicious."
Because I want it!
I reckon, yeah.
From this article[1] writing a FUSE filesystem doesn't look that hard.
I might give it a go this weekend. Assuming I remember!
[1] https://blog.trieoflogs.com/2021-05-25-fuse-filesystem-go/
$ ls /cal/2024/08/04
Or perhaps $ cat /cal/2024/08/04/*
;)Explain how it is better vs having a simple cli that parse args and store that into SQLite.
access - for discovery and poking around you won't need a dedicated tool, just `cat` or `less` or `vim`
It would be cool to see a filesystem layer present a tree of ICS files where editing one also updated your various API-based web calendars.
Could one use the txtai python libe to be told to train on the temporal relationships between events that pass through it as an fastAPI endpoint to a calender... then as the events head to whatever is holding them in the calendar - txtai is training and indexing, first on temporal notes, then on context. so you ould easly as it to give you a
"Show all the social events that happen on wednesdays with a dress code"
(but it learns the nature of certain events, when they occur and social clues around what /who /wheres are typically occuring...
"This venue typically holds events on W F S and the clientelle is typicalaly this, attendance that, rsvps x, cost ~$$"
I don't have more than 10 entries per week. Partly because I prefer real work over meetings, so I work at a place that does not have a lot of meetings. And once you don't have many, it's easier to remember other appointments, no need to use a calendar for everything. So even if this had been a useful mapping of calendar entries into a directory tree, I would not have felt an urge to use it.
At the time, Flickr and Google Picasa (now Photos) gave you like 1T of image storage for free, so I thought it'd be a dope backend. It worked really really well actually... And it was nice to see your data as images. Though since the files were packed and encrypted, it just looked like static.
Here's the plugin if anyone's interested: https://github.com/syncany/syncany-plugin-flickr/tree/develo...
Wow. That's 10 years old. Time flies.
Edit: This PNG encoder is the meat: https://github.com/syncany/syncany-plugin-flickr/blob/develo...
This is probably considered abuse under the ToS since you're using more storage than any typical user, and they can't use it for whatever they normally sell customer data for
Bottom line, you don't want to mess with their bottom line.
Maybe they did see impact, but I still would have rewarded non-abusive loyal customers for using the product—maybe restrict access based on resource-usage rather than hitting people with TOS violations. Instead this attitude (plus their generally very poor track record at supporting and improving their own products) has caused me to abandon all google products outside of work.
https://github.com/lvkv/whenfs/commit/618d6c343b2660567256fa...
(Not a mistake the github page makes)
Essentially time passing is a common thing for anything, all of the rest quickly became dirty or at least have some dirty dump of information here and there. Long story short it's a nice potential continuation of the experiment start taking notes in timeline, storing files in timeline and figure out how to make "dynamic hierarchies" that works well in this model.
I've done something myself with Emacs/org-mode/org-roam notes, with kind-of daily notes and file attachments, it's not perfect nor general but scale a bit. A filesystem approach it's uncharted but seems to be equally possible.