[HN Gopher] WhenFS: Calendar Is Now a File System
___________________________________________________________________
WhenFS: Calendar Is Now a File System
Author : 3ul3r
Score : 333 points
Date : 2024-08-04 16:35 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| ChocolateGod wrote:
| The question beckons, who's going to bundle this into their
| initramfs and boot Linux from it.
| diggan wrote:
| That's all fun and games until Google bans and deletes your
| Google-account/initramfs-calendar because you liked the wrong
| comment on YouTube.
| Trekker666 wrote:
| this is so cool
| andrewflnr wrote:
| Aw, that's not what I hoped it would be. An actual file-based
| calendar UI is a neat idea, where you can (for instance) echo
| into a file to create a calendar event on the command line.
| dudus wrote:
| Same here. I think that would be a terrific idea.
|
| $ cat /cal/2024/08/04/events
| ravetcofx wrote:
| This would be fantastic and very in line with Unix
| philosophy.
| filterfish wrote:
| More Plan9 but yeah, I was thinking the same thing.
| miki123211 wrote:
| Not this exactly, but I used to keep a calendar as a text
| file, where each day was a single line containing the date,
| week day and possibly some 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.
| dmos62 wrote:
| I was thinking about this and came to the conclusion that I'd
| want to define some events per date, like you illustrated
| (`"12:30 dentist" > /cal/2024/08/04`), but others I'd like to
| define per event, like `2024-08-23 12:30 > /cal/massage`,
| which seemed messy. I didn't really resolve this question for
| myself.
| dudus wrote:
| Why not enable both modes? It's a virtual filesystem after
| all. You don't need a single path per event.
| thanatos519 wrote:
| Good tab expansion in a very virtual filesystem would work
| wonders: $ 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 somebody
| fragmede wrote:
| the most amazing feature of the Google calendar web UI that
| has since been dropped was a way to schedule events with a
| human message - "30 meeting with Bob next Tuesday at 10",
| rather than clicking a bunch of buttons in a UI.
| thanatos519 wrote:
| I remember that! I think they have just collapsed to
| handling what most people try, evidently '[time]
| description'.
|
| A 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."
| 9dev wrote:
| Try Mac/iOS calendar - it has allowed to do just that for
| ages.
| mejutoco wrote:
| Todoist as well. Plus every second tue of the month for 4
| months, and queries like that.
| netsharc wrote:
| With Google Assistant you can still do this, but you need
| to speak it, with the prefix "Add calendar
| event..."(well, Google Assistant on the phone also
| accepts keyboard input). I find it much faster than the
| button clicking.
| ramses0 wrote:
| Similarly in iOS there's some surprising: "Move my 3pm
| meeting from today to tomorrow 10am", and a clutch tip:
| "Hey Siri, Delete All My Alarms", b/c there's no UI to
| delete and confirm the 100 alarms that accrue of "7:00am,
| 7:05am, 7:07am, 7:15am, ...etc..." ;-)
| h00dinberry wrote:
| Not sure I follow, but how is this more convenient than
| pressing the UI buttons? Genuinely curious.
| throw-the-towel wrote:
| Maybe the UI was slow? Then this has the same advantage
| of speed that CLIs tend to have over graphical
| interfaces.
| h00dinberry wrote:
| Well in a CLI you're not writing full English sentences.
| You don't say "make a directory called xyz in the current
| directory," you're saying "mkdir xyz". I'd rather just
| use a GUI than type out a full natural-language sentence.
| 3np wrote:
| You do you. Dozens of people do prefer text-based over
| the context-switching involved in reaching for pointer
| interface and clicking that button.
| adrianmonk wrote:
| If I gzip my meetings, will they get shorter? If so, I'm on
| board.
| filterfish wrote:
| This is going to be my new, and probably overused phrase:
| "Can we gzip this meeting, I've shit to do"!
| filterfish wrote:
| So the question begs: how hard would this be to write.
|
| Because I want it!
| magicalhippo wrote:
| This is essentially just CalDAV[1], no? So a FUSE CalDAV
| client. Surely not that difficult in Go, Rust or something
| similar with ready libraries.
|
| [1]: https://en.wikipedia.org/wiki/CalDAV
| filterfish wrote:
| > This is essentially just CalDAV[1], no?
|
| 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/
| andrewflnr wrote:
| I think you mean $ ls /cal/2024/08/04
|
| Or perhaps $ cat /cal/2024/08/04/*
|
| ;)
| amelius wrote:
| Will all users on the system have to share the same calendar?
| Thaxll wrote:
| I don't see where it's remotely useful, the idea sounds fun but
| it's not praticle.
|
| Explain how it is better vs having a simple cli that parse args
| and store that into SQLite.
| H8crilA wrote:
| The point of such fake filesystems (like /proc or /sys) is
| that everyone immediately understands them. Yes, you could
| have a syscall for /proc, but it is more complicated.
| Thaxll wrote:
| Understand how? You still need to understand the path
| layout, something is still parsing that path so it needs to
| be valid.
| pfix wrote:
| discoverability - but then proc is not the best example
| for that - a lot of proc seems to be inpenetrable without
| documentation
|
| access - for discovery and poking around you won't need a
| dedicated tool, just `cat` or `less` or `vim`
| andrewflnr wrote:
| Explain how it's worse than what's in OP. Look, sometimes you
| just want to see a fun idea turn into reality, right?
| Lammy wrote:
| There's a standard file type for this already:
| https://en.wikipedia.org/wiki/ICalendar
|
| 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.
| samstave wrote:
| This is completely me talking out my but:
|
| 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
| ~$$"
| charles_f wrote:
| That's what I hoped this would be!
| usr1106 wrote:
| Not sure I hoped, but from the title I expected.
|
| 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.
| folmar wrote:
| Get close by mounting your CalDAV server directory with the
| usual WebDAV tooling.
| mbreese wrote:
| _> Why Did You Do This?
|
| > 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.
| lvkv wrote:
| Author here. Those are kind words! I'd like to add the last
| part of that quote:
|
| > The page you're on right now is my mess. Now go create yours!
| phamilton wrote:
| As a college student trying to figure out where I wanted to go
| next (industry vs academia) I had an epiphany that there was
| intrinsic value in doing things. Even things that were neither
| novel (academia), profitable (industry), nor impactful
| (nonprofits).
|
| 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.
| xwolfi wrote:
| But there is no greater pleasure than to finish something,
| deliver it, get users in front of it, and get feedback you
| never expected from either grumpy or happy users. I think
| it's way more rewarding to try to work for profit, because
| while money is nice, profit also means it's so useful someone
| is ready to give you credit for future work (money) for what
| you did.
| HeatrayEnjoyer wrote:
| Not a universal experience. I receive little joy in money,
| beyond the basic needs it relieves. Shutting down a
| business that cleared $800M profit annul. was the best
| decision I ever made.
|
| 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.
| roeles wrote:
| Even if it makes just you happy, it's impactful. You are the
| person others have to put up with. Making yourself happy
| improves the world for those around you.
| teleforce wrote:
| >Even things that were neither novel (academia), profitable
| (industry), nor impactful (nonprofits).
|
| 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.
| j45 wrote:
| Right on. Making a mess and learning to clean it up, and
| prevent it a little more each time is the way.
| ecjhdnc2025 wrote:
| Calend _a_ r.
|
| (Not a mistake the github page makes)
| dang wrote:
| Ouch. Fixed belatedly. Thanks!
| issafram wrote:
| I don't think it was mentioned in the repo readme, but this will
| most likely get your account banned. Be careful
| s3arch wrote:
| can you help me understand more.
| 01HNNWZ0MV43FF wrote:
| It stores file data as calendar events, sort of like that
| YouTube FS from a while back
|
| 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
| exe34 wrote:
| > 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.
| darby_nine wrote:
| I seriously doubt this kind of stuff has ever messed with
| their bottom line. I think they just really resent users
| trying to do more with their service than they intended.
| exe34 wrote:
| they would prefer that you pay them for storage rather
| than store white noise on YouTube from which they can't
| earn ad money.
| 01HNNWZ0MV43FF wrote:
| If they didn't crack down, people would start pushing it
| harder, until some company relied on this for cloud
| storage
| darby_nine wrote:
| I think this is a ridiculous sentiment, but I understand
| why it's so common. Proactively trying to head-off any
| and all possible problems before they cause measurable
| impact is not a great way to manage a product.
|
| 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.
| exe34 wrote:
| exponentially slower access and start corrupting them by
| flipping cases.
| lvkv wrote:
| Yeah, I'll update the README to be more specific about this.
| This is also why I didn't provide instructions on how to use
| the tool :)
| issafram wrote:
| This isn't exactly clear about the dangers of using the tool
|
| https://github.com/lvkv/whenfs/commit/618d6c343b2660567256fa.
| ..
| silasdavis wrote:
| WhenFFS feels like a missed opportunity here.
| zeckalpha wrote:
| Now make a WebDAV and CalDAV wrapper around that!
| zcw100 wrote:
| ...and an LLM agent.
| binwiederhier wrote:
| That reminds me of a just for fun plugin I wrote for my (long
| dead) Dropbox-like file sync solution Syncany that would store
| the shared files as PNG images on Flickr.
|
| 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...
| gazby wrote:
| Ah Syncany. Good times <3
| kkfx wrote:
| In exploration terms I suggest considering typical _serious_
| desktop users file taxonomy, most after at certain amount of time
| choose a timeline taxonomy of some kind simply there is no much
| easy way with files and folder to collect and access data, even
| with {sym,hard}links.
|
| 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.
| robertlagrant wrote:
| I appreciate that they made the calender system pluggable. Don't
| want to get locked into a single calendar vendor with something
| as important as your file system!
| archmaster wrote:
| :)))
| quasarj wrote:
| Anyone have a write-up for doing this with a Remarkable 2?
| slashink wrote:
| This is unhinged and I love every part of it! Apart from the repo
| having an attitude I often miss from the modern internet I also
| learnt something reading the code on how FUSE works!
| XiS wrote:
| But how does it handle (indefinite) recurring events :)
| daniel-grigg wrote:
| FUSE is cool. Can't believe it's been a decade since I played
| with it here to make a 'weather file system'
|
| https://github.com/danielgrigg/city_weather_fs
| lou1306 wrote:
| Sometimes I wish someone would write a FUSE driver for
| IMAP/Exchange (and yeah I know Exchange is especially unlikely to
| happen). All attempts I could find on the Web seem abandoned,
| unfinished, or both.
| ForOldHack wrote:
| But is it Turing complete?
| bionhoward wrote:
| lol I thought this was a calendar in the file system like
| files/folders for days/months, but it is in fact the opposite,
| thank you for the goofy surprise, you got me
___________________________________________________________________
(page generated 2024-08-05 23:01 UTC)