🌙 ☀️

DaySquish

Alpha

It squishes your day.

DaySquish is a calendar app that squishes events when you run late, and moves them up when you're early.

Try the Demo Jeffrey’s Sign In*

*only my dad can use the cloud syncing feature right now. sorry

The Problem

When I was in college, my calendar looked like this, and it was awesome.

A densely packed Google Calendar week from college

It’s wonderful now to be able to look back on these weeks and read my calendar like a journal. I have all these funny little notes in the description field. I can see how relationships that ended up meaning very much to me got started, and blossomed.

And I remember in the moment, it was so helpful to be able to look back at the end of a week and see how it unfolded, exactly what I was doing, who I was being, and how I might order my week ahead. It was my most academically successful semester in college, and also my most socially interesting. It was so worth it to me to produce this record of events, and begin each day with a clear plan of how I wanted it to go. I let my calendar be a perfectly honest reflection of how I had spent each day, to hold me accountable to my own values and interests, and stay focused.

The problem was, I had to abuse Google Calendar to get it to do this. It’s just not set up for this kind of use case. And it was a pain to have to manually readjust my day when an event happened 5 minutes earlier or 5 minutes later than I had planned—which it always did!

The Squishing Algorithm

My first-pass solution was to have a button, and when I pressed that button, it changed the end time of the current or most recent event to “now,” and the start time of the next event to “now.”

Demo of the squishing transition

This worked almost perfectly for micro-adjustments throughout the day! And it made my whole calendaring experience way less tedious. But it introduced more questions: what if the next event was 15 minutes, and now you’re 30 minutes over? Should that 15 minute event just get deleted? When a day is fully packed, and an event runs 30 minutes longer than planned, where should those 30 minutes come from?

These are the problems that the “squishing algorithm” attempts to solve.

Philosophical Foundations

What would it look like for a calendar app to be based on Aristotelian principles?

This section is being written. Here are the threads I’m pulling on:

Recommended Reading

Design Principles

The Paradox of User Input

As a core principle, my goal is to create an app that both a) minimizes user input, and b) still fundamentally relies on user input.

It’s important to minimize user input because user input is tedious! If I have to manually input a million things to make my calendar accurately reflect my day, I just won’t use the calendar.

However, it’s important to me that the system fundamentally relies on human input, because it has to be the user choosing what to do, and not the user being told what to do. The user is still in control.

Mirror, Not Manager

I generally don’t like being told what to do. I definitely would not like an AI telling me what to do.

It’s very important to me that the adjustments that happen “automatically” happen as a result of a predictable system given your own input. There’s not some large language model trying to make guesses about how it should arrange your day. The core of the app is very deliberately a “squishing algorithm,” and not a “squishing AI.” That algorithm is simply a set of rules that re-adjust your day. You can see those rules on my Github here. Given the events in this range, and their pre-defined properties (which ones can squish? which ones can move? when and where does each one need to take place?), what is the best way to arrange them, that’s the least disruptive to your day? It is sophisticated. At this stage, it’s still buggy and incomplete. But it’s definitely not a blackbox. And I hope it’s intuitive with use.

This is what I mean when I say the app is a mirror, not a manager. You set up your day, and it shows you, in real time, what’s happening, and what the downstream consequences of adjustments in your schedule amount to.

A bathroom scale does not tell you what to eat. It shows you a number. The number is honest. What you do with it is your business. But people who weigh themselves regularly lose more weight than people who don’t. That’s not because the scale is managing them, but because the feedback loop changes their relationship to the decision.*

*this is Claude

Planner, Not Stalker

On one level, the goal of this app is to produce a record of your events. Could you more easily do that by setting up an AI agent to stalk you, and note your activities from minute to minute?

That would actually be a fundamentally different thing than the tool I’m trying to build here. The record produced by DaySquish is not merely supposed to be a perfect record of your activities, but in a real sense, a record of your will. What are you intending and making a good faith effort to do from minute to minute? That is far more interesting to me, and more valuable (to me, anyway), than what might be produced by an AI stalker agent.

How DaySquish Works

The Basics

DaySquish is a calendar app that squishes events when you run late, and moves them up when you're early.

Squishing

Every event has a duration range: a planned duration and a minimum duration. When your day gets tight, events can squish down to their minimum. A 60-minute workout that’s squishable to 30 means you’d still get a workout in, even if something runs long.

Movable vs. Immovable

Some events can slide around in time (movable), and some are anchored (immovable). A dentist appointment at 2:00 PM is immovable. Your afternoon reading block can shift. The algorithm respects this when rearranging your day.

Transition, Skip, Swap

Parents & Sequences

Parents are templates that generate recurring events. Define a parent once, and it instantiates events across your schedule according to its rules.

Sequences define ordered chains of events. When you transition out of one event in a sequence, the next one in the chain starts automatically.

Possibilities

Not sure if you’ll do something? Create it as a possibility. Possibilities live in their own view and can be promoted to real events when you decide to commit.

Keyboard shortcuts

DaySquish has full keyboard support. Tab to transition, Q to swap, W to skip, N to toggle create/select mode, E to edit, +/- to adjust duration, and standard Cmd+Z/Cmd+C/Cmd+V for undo, copy, paste.

Development

I’m a philosophy major, not a software engineer. Most of this is vibecoded with Claude.

In the beginning, I learned enough Python to put together an early prototype in Kivy, which was helpful as a proof-of-concept and got me excited about all the possibilities that followed from a “Transition” button, but I could never succeed in actually getting it from my MacBook to my phone, so it never went anywhere beyond my IDE and my GitHub. A couple times a year I’d sit down and waste a weekend or two trying to get it to launch on my phone, but I guess I could never figure out buildozer on my own. A few weeks ago I thought I’d finally see if ChatGPT could walk me through it, and after an otherwise frustrating Saturday morning, it worked!

Thank you for your interest. This is very much a work in progress. I would love to hear your feedback or ideas.

Get in touch