Vaig arreglar el meu horari de son amb codi

Fa poc vaig haver de canviar el meu horari de son per despertar-me més d’hora. En el passat, havia fet el canvi de manera sobtada (i vaig patir-ne les conseqüències).

La ciència del son recomana ajustar l’horari de manera gradual. Com que tenia una data límit per adoptar el nou horari, vaig crear nemui, una app per planificar una transició progressiva.

La interfície i l’experiència d’usuari

Programo el meu son a través de l’app Salut d’iOS. Em permet establir una meta de son (les hores que necessito dormir), l’hora d’anar a dormir i l’hora de despertar-me.

Vaig voler replicar la interfície d’Apple: té un bon disseny i experiència d’usuari, hi estic acostumat, i m’agradava el repte. Això em va portar el 60% del temps dedicat al projecte.

Aquí tens el resultat. Prova de jugar-hi:

hr
min
BEDTIME
WAKE UP

No es pixel perfect, pero es casi idéntica a la de Apple. De hecho, ¡es mejor! Puedes hacer click en la hora de dormir y despertar para introducir el número directamente, algo que no puedes hacer en iOS.

Una vez que hayas configurado los horarios actuales y deseados, necesitas elegir la fecha objetivo. La app sugiere un día basado en datos de investigación sobre el sueño (15 minutos de cambio por día), pero puedes modificarlo. Verás una advertencia si el cambio es muy agresivo:

Advertencia cuando el cambio es de muchos minutos por día Advertencia cuando el cambio es de muchos minutos por día

Finalmente, obtienes el plan diario:

Plan diario del horario de sueño Plan diario del horario de sueño

Al hacer clic en «Add to calendar» se descarga un archivo de Calendario (.ics) con un evento por día. Estos eventos muestran la hora de dormir y despertar de cada día e incluyen un recordatorio 30 minutos antes de acostarte.

Si vuelves a visitar la web, te mostrará el plan para las próximas noches (todos los datos se guardan localmente).

Le puse el nombre «nemui»: nemu (dormir) y i (transición), que se lee como 眠いnemui (somnoliento) en japonés.

Estaba a punto de dar por terminado el proyecto cuando me acordé del horario de verano (DST).

Horario de verano

Más de un tercio de los países del mundo usa el horario de verano. Tenía que darle soporte, dijo mi perfeccionismo.

Y escuché.

nemui tiene soporte para el horario de verano de dos formas. Primero, si estás ajustando tu horario durante un cambio de hora, te avisa y ajusta las horas:

Aviso al cruzar el cambio de hora Aviso al cruzar el cambio de hora

Segundo —y este es mi favorito—, unos días antes de que empiece el horario de verano, puedes configurar horarios actuales e ideales idénticos para ajustar gradualmente el tiempo (te irás a dormir y despertarás un poco más temprano cada día) y evitar perder una hora de sueño de golpe.

Donar suport a l’horari d’estiu no va ser fàcil.

Primer, JavaScript vanilla no és gaire bo amb les dates. No suporta zones horàries i «els càlculs amb l’horari d’estiu són notòriament difícils de gestionar» (Temporal ajudarà amb això).

Segon, l’horari d’estiu és estrany.

Els països comencen/acaben l’horari d’estiu el primer, segon o últim diumenge d’un mes donat, o l’últim dijous/divendres. O el divendres abans de l’últim diumenge.

Naturalment, l’hora de transició també varia: pot ser a les 00:00, 01, 02, 03… Fins i tot a les 24:00! (gràcies, Xile!)

I hi ha més! Potser creies que totes les regions avancen/endarrereixen una (1) hora, oi? Doncs no.

Hi ha un grup d’illes entre Austràlia i Nova Zelanda, anomenades Illa Lord Howe, amb transicions de 30 minuts. Així és. El primer diumenge d’abril a les 02:00, els rellotges es retarden a la 01:30. El canvi es reverteix el 5 d’octubre.

Tot i que menys de 400 persones hi viuen, em vaig assegurar que la meva app fos compatible amb aquest canvi. Havia de fer-ho.

El veredicte

M’alegra informar que he aconseguit ajustar el meu horari de manera indolora. El meu cos es va adaptar al nou horari, a diferència de les vegades que ho vaig fer de cop. Penso fer servir nemui de nou quan s’acosti el canvi a l’horari d’estiu.


Extra: mini-projecte

Abans de crear nemui, vaig fer una petita aplicació web per veure quan és el proper canvi d’hora (inspirada per un artefacte de Claude creat per Simon Willison), basada en la zona horària del teu dispositiu. Aquí tens una captura de pantalla:

Captura de pantalla del proper canvi d'hora Captura de pantalla del proper canvi d'hora

Visita dst.osc.garden per veure quan és el proper canvi d’hora a la teva zona horària.