Hacker News new | ask | show | jobs
by sigtstp 1458 days ago
Side-note on digital calendars: What I'd really like is a continuously scrolling calendar to help with long-ish term planning (3-4 months). Most apps are stuck in the single-month page view analogy to physical calendars, which for me keeps breaking my mental flow of stringing activities across the boundary/long distances. And I get why (standard behavior/components and user expectations) but it just seems like a missed opportunity. Not sure how many want this but I suspect more would do if they were exposed to it.

A few calendar apps allow a stretch of >4 weeks and there's this POC web version: https://madebyevan.com/calendar/app/ but all I can do for now is constantly switch from a Gantt app to my calendar app (Thunderbird or Google Calendar).

23 comments

One of the most compact alternative calendar styles I've seen is like this:

  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T
    
                 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
              1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
                    1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
        1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
              1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
           1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
                 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 29
           1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Months are offset so weekdays of columns are matching row to row. Looks nicer and more understandable also with weekend columns colored differently.

I have a super simple HTML/JS/CSS variant of it on Gist here: https://gist.github.com/erkiesken/54bdbc069ba7df21eab6e4e480...

The one problem then is with that style of calendar compared to the traditional month view is I need to calculate for e.g. "what is the date of Thursday in 3 weeks?"
Also, which line is June? What day of the week is the 4th of July on this year?
There's 12 rows, so I believe the top row of numbers is January, the second one is February, and so on. So the 4th of July is Monday.

This is different from the OP in that it only works for one specific year, it needs to be generated anew for every single year.

I do think that having to "count rows" is a bit too much minimalism and probably we could have spared 3 characters per line in order to put month names:

    2022 M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T  W  T  F  S  S  M  T

    Jan                 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Feb     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
    Mar     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Apr              1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    May                    1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Jun        1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    Jul              1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Aug  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Sep           1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
    Oct                 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
    Nov     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 29
    Dec           1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
I hacked up my own little bash script[1] to show the next 3 months with ncal like this:

  $ mcal
          June 2022          
   w| Mo Tu We Th Fr Sa Su   
  22|        1  2  3  4  5   
  23|  6  7  8  9 10 11 12   
  24| 13 14 15 16 17 18 19   
  25| 20 21 22 23 24 25 26   
  26| 27 28 29 30            
                           
          July 2022          
   w| Mo Tu We Th Fr Sa Su   
  26|              1  2  3   
  27|  4  5  6  7  8  9 10   
  28| 11 12 13 14 15 16 17   
  29| 18 19 20 21 22 23 24   
  30| 25 26 27 28 29 30 31   
                           
         August 2022         
   w| Mo Tu We Th Fr Sa Su   
  31|  1  2  3  4  5  6  7   
  32|  8  9 10 11 12 13 14   
  33| 15 16 17 18 19 20 21   
  34| 22 23 24 25 26 27 28   
  35| 29 30 31
[1] https://pastebin.com/BNWynUZT
there's also `cal`, in the util-linux package.

    cal -3



     May 2022              June 2022             July 2022     
  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
   1  2  3  4  5  6  7            1  2  3  4                  1  2
   8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9
  15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16
  22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23
  29 30 31              26 27 28 29 30        24 25 26 27 28 29 30
                                              31
`cal -n 3` to be precise, since ginko said "next three months"
I remember, in School, our professor asked us to write "cal" command in C in early CS classes. I was a good exercise for us to build interest in programming.
Not being aware of ncal, but based on long experience of bash, I anticipated a fiendish and impenetrable 300 line monster full of arcana to crank this out from first principles. So this was a very elegant surprise :)
`ncal -A2` will do the same, but show the months horizontally.
I see there's a -v flag for vertical layout which matches horizontal listing better.
The -v flag didn't work in my WSL.

This worked:

   $ ncal -b -M -A2
       June 2022             July 2022            August 2022
   Mo Tu We Th Fr Sa Su  Mo Tu We Th Fr Sa Su  Mo Tu We Th Fr Sa Su
          1  2  3  4  5               1  2  3   1  2  3  4  5  6  7
    6  7  8  9 10 11 12   4  5  6  7  8  9 10   8  9 10 11 12 13 14
   13 14 15 16 17 18 19  11 12 13 14 15 16 17  15 16 17 18 19 20 21
   20 21 22 23 24 25 26  18 19 20 21 22 23 24  22 23 24 25 26 27 28
   27 28 29 30           25 26 27 28 29 30 31  29 30 31
-v didn't work on 12.1.7+nmu3ubuntu1 and -M does nothing seemingly. `ncal -b -A2` looks very good.
-M sets the first day of the week to Monday. If in your locale the weeks already begin on Monday you are not going to see much difference on the output.
Ah, my bad. I'm on Arch and it packages cal, not ncal. Wasn't familiar with it and it looks like the flags are different. Because why not...
Using cal from util-linux; if you are okay with horizontal:

    cal -w -n3
If you must have vertical:

    cal  -w today; cal -w '+1 month'; cal -w '+2 month'
Output:

           June 2022       
       Mo Tu We Th Fr Sa Su
    22        1  2  3  4  5
    23  6  7  8  9 10 11 12
    24 13 14 15 16 17 18 19
    25 20 21 22 23 24 25 26
    26 27 28 29 30         
                           
           July 2022       
       Mo Tu We Th Fr Sa Su
    26              1  2  3
    27  4  5  6  7  8  9 10
    28 11 12 13 14 15 16 17
    29 18 19 20 21 22 23 24
    30 25 26 27 28 29 30 31
                           
          August 2022      
       Mo Tu We Th Fr Sa Su
    31  1  2  3  4  5  6  7
    32  8  9 10 11 12 13 14
    33 15 16 17 18 19 20 21
    34 22 23 24 25 26 27 28
    35 29 30 31
Every year, I use `cal` to generate the calendar like this for the year, paste that into word and do some minor formatting (dim weekends and holidays, bold paydays) and print it and put it on my office wall. I reference it all the time just to re-orient myself to where I am in the month/year, etc.
On MacOS:

   $ LANG=C cal -3
      May 2022             June 2022             July 2022        
    Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  
     1  2  3  4  5  6  7            1  2  3  4                  1  2  
     8  9 10 11 12 13 14   5  6  7  8  9 10 11   3  4  5  6  7  8  9  
    15 16 17 18 19 20 21  12 13 14 15 16 17 18  10 11 12 13 14 15 16  
    22 23 24 25 26 27 28  19 20 21 22 23 24 25  17 18 19 20 21 22 23  
    29 30 31              26 27 28 29 30        24 25 26 27 28 29 30  
                                                31
Well, cal -3 shows the previous and next month, but I wanted this month and the next two months. I also wanted them arranged vertically and with week numbers. (And with weeks starting on Monday)
Neat! I was thinking of hacking something for org-mode (to support creating events and gcal sync) but this is definitely good for quick lookup.
If you're interested, I can share my khal config with you. It also displays 3 months, and syncs (via vdirsyncer) with Nextcloud to show my personal and work calendar events, all right there in the terminal.
Not the person you replied to, but I'm interested and would like more info on your setup.
In general, I use vdirsync to sync my contacts and calendars locally, keeping the remote system's values to resolve conflicts as I intend to only read the values from the CLI. Vdirsync uses an application-agnostic format, so I could in theory read from any application that supports standard file formats:

    $ cat ~/.vdirsyncer/config

    [general]
    status_path = "~/.vdirsyncer/status/"

    # Contacts

    [storage contacts_personal_local]
    type = "filesystem"
    path = "~/.vdirsyncer/contacts/"
    fileext = ".vcf"

    [storage contacts_personal_remote]
    type = "carddav"
    url = "https://example.com/remote.php/carddav/"
    username = "bloodninja"
    password = "hunter2"

    [pair contacts_personal]
    a = "contacts_personal_local"
    b = "contacts_personal_remote"
    collections = ["from a", "from b"]
    conflict_resolution = "b wins"

    # Calendars

    [storage calendar_personal_local]
    type = "filesystem"
    path = "~/.vdirsyncer/calendars/"
    fileext = ".ics"

    [storage calendar_personal_remote]
    type = "caldav"
    url = "https://example.com/remote.php/caldav/"
    username = "bloodninja"
    password = "hunter2"

    [pair calendars_personal]
    a = "calendar_personal_local"
    b = "calendar_personal_remote"
    collections = ["from a", "from b"]
    conflict_resolution = "b wins"
    metadata = ["color"]

Then I set up khal to read from the directory that vdirsync stores data in, and display three months with events and use the ISO-8601 date format:

    $ cat ~/.config/khal/config
    [calendars]

    [[personal]]
    path = ~/.vdirsyncer/calendars/*
    type = discover



    [default]
    default_calendar = personal
    highlight_event_days = True
    timedelta = 45d

    [locale]
    firstweekday = 6
    timeformat = %H:%M
    dateformat = %Y-%m-%d
    longdateformat = %Y-%m-%d
    datetimeformat = %Y-%m-%d %H:%M
    longdatetimeformat = %Y-%m-%d %H:%M
    default_timezone = Asia/Jerusalem
    unicode_symbols = False

    [highlight_days]
    color = light green
    method = fg
If you have any questions or suggestions I'll be watching this thread.
My favorite paper calendar shows the whole year in one sheet:

https://davidseah.com/node/compact-calendar/

It has wide margin on the right for notes; gives you long-term-planning potential ;)

At least german office culture knows of a quite popular 3-month format in a physical printed wall calendar, usually highlighting the current month and showing the preciding and following months with less contrast. They are distributed for free or very low cost as promotional product for any type of business.

From my understanding Bürokalender as in office calendar is often used synonymously for this format in Germany, which can be seen as an indicator to it's ubiquity.

The format seems not to be that popular, elsewhere but at least in the UK it's marketed as shipping calendar, which was the use case for what it was invented for in 1937 by B. C. Heye & Co., now terminic GmbH

https://www.terminic-uk.eu/company

There are even versions showing 4 to 6 Months in a vertical layout.

https://www.printas.com/en/4-month-calendar/

going up to eight months:

https://www.terminic.eu/monatskalender

Really ubiquitous in German offices, in any industry. Thanks for letting me know where it came from.
didn't know either, just found the history it by accident on the companies site. A bit more from Bremen:

https://www.wfb-bremen.de/de/page/stories/bremer-erfolgsgesc...

I find this layot very useful, especially with the little red square to see what day it is.
*layout

    cal -3
The horizontal layout of cal doesn't have the same benefits.
Fastmail’s calendar does exactly this - infinite continuous scroll - and I love it. I also find it constricting when I use another calendar (Google Calendar, for instance) that paginates by month.

Edit: An image of the Fastmail calendar: https://www.fastmail.com/images/features/cal-1.png

Changing months in GCal is so disorienting. Scroll a pixel too far while planning, and the month you were looking at just... vanishes?
I am a big fan of Dsri Seah's Compact Calendar with its "candy bar of time" layout. Should not be too hard to make a script for that format. https://davidseah.com/node/compact-calendar/
> What I'd really like is a continuously scrolling calendar to help with long-ish term planning (3-4 months).

The iOS calendar works this way (if I understand your use case properly).

At the top right is a back arrow, which, if you're in a more granular view (say, for a day or a week), will take you a view where you can scroll through all months, and if you go back one more time, scroll through all years. From one of these "zoomed out" views, you can dive back into any more detailed view.

Yes, but unfortunately this view does not show any of your appointments.
If you're on MacOS/iOS, "Fantastical" is ... fantastic in this way.
Not a fan of the subscription model. Features that don't incur ongoing costs (e.g. server costs) to the developers should not be locked behind a subscription IMO.
Agreed, it's too bad that it's subscription only now. I bought Fantastical for Mac ages ago, and when they added the subscription model, I didn't lose any features.
Another vote here for Fantastical. I don't think I'm using it in any novel ways, or really pushing it's power, but wow is it a nice calendar. My only gripe, and probably something I can change in a setting, is sometimes when I have a drought of events, it can be confusing what's next, because it will show me something a month or so out but not in a clear way that the event it is showing me isn't tomorrow. Probably a "me" problem, but one of my few gripes about the app - the other being a desire for better Watch complications.
Google Calendar has a setting to enable a 3-4 week forward view from any date. Not quite infinite scrolling, but it is what I use as my default view.
Hey, you may like my Just a Calendar: https://cal.sharats.me

Months are laid out in clean no-nonsense way, and it's a very lightweight app. You can click on dates to mark them to get some bearings while planning things on a Calendar, kinda like pointing a pen at a date. Drag to mark multiple dates too!

No logins, no extra engagement features, and nothing much.

Previously on HN: https://news.ycombinator.com/item?id=30851174

I'm using a aCalendar+ on Android and the monthly view has continuous scrolling, though given the constraints of a phone screen I only get 6 weeks displayed at once.
I wrote about something similar a few years ago! [1] I'd be interested in hacking something together one day. I imagine it would display your Google Calendar events, in a format reminiscent of Google Calendar, but where the smallest cell is a week.

1: https://jameshfisher.com/2017/06/06/long-calendar/

FWIW the built-in calendar function on the Windows Taskbar for a while has this continuously scrolling functionality. Click the current time on the taskbar and it'll open a calendar view. Scroll on the calendar and it'll scroll by the week. Click on a day and if you've connected a calendar to your Windows account it'll show events on that day.
I tried to build this once but found myself basically rebuilding Google calendar for visual changes which iCal mostly did quite well. And front end is not my expertise so it was a grind.

I wanted both infinite scrolling with no month breaks, as well as the ability to fluidly zoom out to see multiple months worth.

Someday. I'd be willing to put the work in if a front end expert wants to help!

Yep, I want the next 6-8 weeks, with no month breaks, in a block. Calendar.app on the desktop in Big Sur is almost there, but there's no way to keep the current week on the top, as it defaults to the current month. On iOS, there'a a gap week.

I used to do these by hand when in school, because I didn't want assignments hiding on the next page.

Vacation Days for Android by Ingmania had the best year view I have seen on mobile.
I hate this as well, it's one of the reasons I am clinging on to using Outlook in Windows. It seems like they are going to remove this eventually as the Outlook client for Mac and web does not allow calendar scrolling. :(
the Mac and web clients have always had wildly divergent feature-sets, I wouldn't take them as harbingers of the future of Outlook at large.
I wrote something like that https://github.com/tingletech/tingcal
show hn: we are doing this at @sundialcalendar, with whole-life activity forecasting
This is one of those brilliant little things that I just want to see everywhere.
are there any continuous calendars like the linked one that allow sync or import from google cal?
Cron does this - cron.com