Vermutech #83
Penúltima setmana de gener. Aquesta setmana, amb la pluja que hi va haver per aquí al Baix Empordà i el Gironès, dimarts es va col·lapsar tot: escoles tancades, rius desbordats… però, traient les desgràcies que van passar, aquests dies on veus passar el riu ple d’aigua i va plovent, també els disfruto, mirant l’"espectacle".
Aquests dies m’han anat bé per comprovar que el pluviòmetre de l’estació meteorològica funcionava, i vaig aprofitar per enllaçar-ho amb Weather Underground, un servei que no coneixia, ple de gent que té estacions meteorològiques i publica la informació de forma pública. Això et permet, si vas a un lloc i algú té una estació per allà, comprovar el temps que fa en aquell moment.
A casa, he fet un altre upgrade petit de domòtica amb uns dispositius que són relés molt petits amb Wi‑Fi (i Matter) de Sonoff, que permeten transformar un interruptor normal en “intel·ligent”, podent accionar-lo com abans. Amb això, ja puc programar que les llums de fora vagin segons un horari.
A banda d’això, m’he topat amb una xarxa social nova: xiuxiuejar.com, que encara està en proves, i on la finalitat és utilitzar només el català. Una salutació si t’hi has apuntat des d’allà 👋!
A nivell tècnic, aquesta setmana la volia enfocar en avançar el sistema de snapshots amb PostgreSQL fent servir schemas, però haurà d’esperar, perquè el suport de BigInt a JavaScript ens ha desmuntat tot el que teníem previst…
La implementació a JS és un pedaç, perquè no està integrada amb res existent. BigInt no és un Number, i això vol dir que la majoria de llibreries no han pensat mai en donar suport a dades d’aquest tipus…
Al final, la solució ha sigut serialitzar-ho com a text pel frontal, però per fer això s’han hagut de fer canvis, tests, etc. A vegades em frustren aquestes situacions, en què un canvi que era mínim i tècnicament viable es veu limitat per una restricció externa (el JavaScript) que no té un bon suport per a BigInt.
Començo amb algunes recomanacions,
💾 Programari
Deskflow: És una eina que havia utilitzat molt abans, quan es deia Synergy. Serveix per compartir teclat i ratolí entre diferents ordinadors. Ara Synergy és una versió de pagament que esponsoritza Deskflow, que és totalment programari lliure.
🤔 Curiositats
Hacker News Slop: Agafa els posts de la portada de Hacker News i, amb intel·ligència artificial, crea una idea de negoci… qui sap, potser hi trobes la teva pròxima empresa 😂
📦 Recursos
Un article sobre com crear les enunciacions de versions de programari i com són de diferents de les notes de versió. Val la pena llegir-lo i entendre qui llegirà aquest text i com se li han de transmetre els canvis.
📊 Enquesta
La setmana passada, els Eurogames com Catan o Carcassonne es van endur la victòria, seguits de prop pels jocs de cartes i estratègia.
Aquesta setmana, anant cap a temes més tècnics...
🌟 El concepte
Com que porto dues setmanes donant la tabarra amb els BigInt, avui aprofito per explicar una cosa que sovint donem per feta: què són els tipus de dades.
Un tipus de dada és una convenció que defineix com es representa una informació dins d’un ordinador. No és el mateix guardar un 42 com a número que com a text. Aquesta decisió afecta com es pot operar amb el valor, quanta memòria ocuparà i com es transmetrà a altres sistemes.
Hi ha tipus que ens semblen evidents —enters, decimals, cadenes de text, booleans…— però darrere de cada un d’aquests hi ha limitacions. Un cas famós és el dels floats, on operacions senzilles com 0.1 + 0.2 no donen exactament 0.3, sinó 0.30000000000000004 (web memorable inclosa). I això no és cap bug: és com funciona la representació binària dels decimals dins dels ordinadors.
Si vols fer la prova, obre una consola de Python i escriu:
0.14 * 100 == 14
0.1 + 0.2 == 0.3
Què creus que retorna cada línia? 🙃
Quan treballes amb llenguatges més propers al maquinari (com C, Rust o fins i tot PostgreSQL), el tipus de dada no només defineix què és un valor, sinó també quanta memòria ocuparà i com es comportarà. Un int pot ser de 16, 32 o 64 bits, pot ser amb o sense signe (unsigned int), i cal escollir-lo bé segons el rang de valors que esperes.
El mateix passa a les bases de dades, on decidir si una columna és int4, int8, boolean o text pot tenir impacte directe en l’espai que ocupa una taula o en el rendiment de les consultes.
Els tipus de dades definiran l’espai que ocupa una aplicació, el seu rendiment i com de fàcil serà interoperar amb altres llenguatges o sistemes. També cal tenir en compte com es serialitzen (sobretot quan passen per una API o es guarden com a JSON) i si el llenguatge del frontend o backend hi dona suport real.
🎛️ Mod
Aquesta edició l’he escrita escoltant So Much More de Brett Dennen. La cançó recomanada: Someday.
💖 Feedback
Si t’ha agradat i em vols ajudar, fes arribar aquest contingut a qui creguis que li pot interessar, i entra al canal de Telegram per comentar la publicació.


