Nyhetsbrev Juli 2025
Länkar:
-
Kost och livsstil är viktigt för mig, men inga befintliga begrepp passar den livshållning jag nu utforskar, och därför skapar jag en ny term, vilket beskrivs här: Endogen livsstil.
-
Jag har också skrivit ett inlägg som visar min personliga datormiljö: Min personliga projekthanterare i Neovim
Innehåll i detta nyhetsbrev
Introduktion
Bild 1 ovanför kommer från test.matkalkyl.dev och ser nästan löjligt ut för att vara en presentation av framsteg, då det inte ens är ett fungerande registrerings-formulär, men bakom det ligger nogrant utarbetad arkitektur producerad av hårt förvärvade insikter från otaliga stunder av mardrömslika situationer med programmering där jag helt enkelt gör samma misstag om och om igen. Men tillslut har jag fått rätsida på det. Jag ser tillräckligt med resultat för att självsäkert kunna säg att systemet börjar se bra ut [1]
Men varför väljer jag denna väg? Jag får ökad kontroll över systemet, men ytterligare en anledning är att jag vill ha utmaningen, då jag använder den för att förbättra mig själv. Här väljer vi medvetet den mer svåra vägen, som också ger me frihet och kraft då den väl behärskas. Inom Linux, vilket jag använder, lärde jag mig snabbt att minska beroendet av externa färdiga lösningar så mycket som möjligt, då de ofta leder till besvär med underhåll och annat i framtiden, även om de kortsiktigt löser ett problem, och därtill blir man föremål för andras beslut när de ändrar på produkten.
Mina krav har tvingat mig att ta mig själv till en helt ny nivå och utveckla goda vanor så som dokumentations-metodologi. Inledningsvis var min avsikt att ta projetktet till en ny nivå och inte upprepa det gamla, men jag förutsåg inte hur mycket jobb och självransakan det skulle innebära. Jag inser också att alla som har den aspiratoinen (särskilt i 40 års ålder) inte alls är garanterade att lyckas, och det är något jag ständigt påminner mig själv om; jag ska inte vara så självgod att jag tror att jag lyckas bara för att jag har en avsikt. Kanske är det en sådan attityd som gör mig mer ödmjuk att göra de uppoffringar som faktiskt krävs.
Synen på kvalitet
Det är mycket som kring-ligger ett projekt om utförandet ska vara i topp. Jag är inte nöjd enbart med att produkten fungerar, den ska också vara utförd på ett bra sätt och bestå av kvalitet. Exempelvis: Jag ogillar verkligen när en restaurang öppnar dörren till köket och jag råkar se in och det ser otrevligt ut. Jag vill inte ha en fasad, jag vill att det ska vara av kvalitet rakt igenom, därför att hela proceduren reflekterar mig själv.
I många västerländska restauranger är köket avskilt, och när det öppnas blottas ibland kaos och brist på estetik. (från ChatGPT 4o)
Jämfört med:
I Japan däremot är det vanligt att kök designas för att visas upp – rena ytor, logisk layout, tyst samspel melan kockar. Det skapar förtroende. (från ChatGPT 4o)
Min avsikt är att designa programmet, och att designa designprocessen i sig själv, efter de principer som reflekteras i fallet med Japanska kök (även västerländska kök av mer fina restauranger följer samma principer, men då med öppenhet som koncept och del av en image snarare än norm.
Målet just nu är att skapa en minimal fungerande version. Det betyder:
Lägga till livsmedel.
Registrera livsmedel per dag.
Visa makro-fördelning (fett/protein/kolhydrater).
Skifte i fokus
Jag har varit tvungen att lägga tid på många andra grundläggande saker, men nu har jag nått steget där jag helt kan fokusera på själva kärnfrågan, som är sajtens kod i sig själv (snarare än att lära mig bemästra Linux och servrar).
Retrospekt och aktuellt just nu
I tillbakablick ser jag att jag mestadels har fattat rätt beslut. Anledningen till att projektet tagit sådan tid är svårigheten att bemästra Linux. Jag bytte som bekant från Windows till Linux av personliga skäl. Det visade sig dock vara mycket fördelaktigt med tanke på fördelarna det medför som omfattar frihet, kraft och oerhörd potential. Med växande erfarenhet av Linux var det sjlävklart att också skapa en Linux-server för Matkalkyl.
Just nu
Just nu håller jag på att sätta ihop de komponenter som faktistkt utgör själva sajten. Databas, servermoduler, grundmoduler för JavaScript, kryptering etc. All data på servern kommer lagras krypterad. Klienten (din webläsare) krypterar informationen innan den skickas, och servern kan inte se något innehåll. Processering av klient-data kommer därför ske helt i webläsaren, lokalt hos klienten. Anledningen är delvis för att säkerställa att datan hålls säker även om den läcker via en server-attack. Den andra anledningen är personlig integritet, vilket jag tycker är en viktig och aktuell fråga.
Början på initiativet till en första fungerande version
Det är relativt lätt att sätta upp en Linux-server. Det är en helt annan sak att köra en server kontinueligt. Jag hade tillräcklig erfarenhet för att förutse det, varav jag inte var särskilt enthusiastisk i att direkt försöka sätta upp en server i tron om att det skulle hålla. Istället fokuserade jag på att utveckla grundsystem som fungerar som säkerhetslösningar i de fall då problem uppstår. De säkerhetslösningarna var mycket ambitiösa (jag vill alltid ha den fullständiga lösningen, inget halvdant), men jag kom tillslut till en punkt, här om dagen, då jag insåg att det tar alldeles för lång tid, när jag insåg att jag har ungefär hälften kvar. Det var ungefär för ett år sedan som Linux-servern kraschade (vilket jag hade förutsett), som jag började med den monumentala uppgiften att skapa det säkerhetssystem jag tyckte att jag behöver (backup och automatiserad installation och säker hantering av servernycklar). Men, så nu här om dagen, åter igen, upplevde jag en desperation över den monumentala uppgiften jag åtagit mig. Jag tänkte då att jag skjuter uppgiften på framtiden, och istället tvärvänder och direkt skapar en minimalt fungerande version. Jag stod nämligen framför spisen och funderade på hur mycket kolhydrater det är i maten som jag förtillfället stekte, och var frustrerad över att jag fortfarande inte har den nya versionen av programmet klar.
Det borde ta några dagar att sätta ihop en minimalt fungerande version, tänkte jag. Här uppstår fällan att förhasta sig och skapa ett skräp-program (särskilt med hjälp av AI) som mycket väl fungerar inledningsvis, men som blir omöjlig att bygga vidare på och inte ger stöd för framtida ambitioner. I min desperation började jag skapade en skräp-version i tron om att det skulle gå bra, men fick snabbt ett mardröms-scenario, då det i princip blev omöjligt att lösa buggar eftersom strukturen snabt blev för dålig. Situationen kändes hopplös. Jag sansade mig och undvek den fällan, och började fokusera på att skapa en minimal version på rätt sätt, och trevligt nog lyckades jag fortsätta där jag avslutade för ungefär ett år sedan. Jag hade flera komponenter klara som kom till gagn, så som databasmodell. ChatGPT förklarade också för mig, efter en analys, att jag inte behövde mer planering.
Det är sannt att jag har lagt ner mycket tanke på databasmodellen, men det kan hända att AIn överskattar det något. Men som du ser längre ner i svaret på bilden från ChatGPT, så motiverar den sitt svar med konkret fakta över databasensmodellens egenskaper, vilket faktiskt inte är ganska imponerande. Min interna kommunikationsmodell i JavaScript visade sig vara utmärkt och med hjälp av AI (ChatGPT o3) lyckades jag stresstesta och förfina det som jag själv inte hade tänkt på och som var över min expertis.
Utvecklingen av nödvändig erfarenhet
När man är vilsen i Linuxvärlden, då gör man sitt bästa för att överleva, och jag valde att påbörja en mer omfattande, eller rentav monumental uppgift att garantera en säker lösning för att lätt installera om och återställa system. Medan det kan ha setts som onödigt, var det en viktig del av vad som var nödvändigt för att tillskanska mig den erfarenhet som är behövs för att skapa och underhålla ett bärande system. Det är inte en särskild lösning som behövs, utan en färdighet och handlingskraft som behöver utvecklas, och den kommer enbart via erfarenheter av en uppsjö projekt i olika former.
Den monumentala säkerhetslösningen som jag avsåg att skapa, kommer jag att slutföra i framtiden, men den är inte nödvändig för en fungerande version i dagens läge, eftersom jag nu utvecklat tillräcklig erfarenhet att hatera systemet bättre och lösa problem när de uppstår. Det är mitt engagemang i och många olika projekt, som givit mig exakt vad jag behöver för att känna trygghet i att nu ta nästa steg. Jag har fått tillräcklig erfarenhet varav jag känner att jag bemästrar Linux-systemet tillräckligt för att kunna hantera det. Nu har jag fått den erfarenheten och tiden av inledande lärdom är förbi varav jag ingår nästa fas, där jag kan arbeta mer direkt med projektet istället för med omkringliggande faktorer.
Och ja! Det ska också nämnas att jag inte kör VSCode. Jag använder Neovim (med Telescope m.m.), med min egen projekt-hanterare (dvs. en oerhört anpassad miljö). Medan det kan tyckas vara onödigt att utveckla allt det, så är utvecklingen av en sådan sak exakt vad som ger den erfarenhet som blir bärande i att bygga andra projekt inom Linux,[2] och i min mening var Linux ohanterbart utan djupgående anpassning för någon som annars är van att programmera med god hastighet. Nu är mitt system mycket effektivt.
Här är en beskrivning av min personliga projekthanterare.
Mer om läroprocessen inom Linux
Utöver det, så har jag också granskat och undersökt mina svagheter i att organisera kod och information i system, och Linux har varit instrumentell i att tvinga mig att utveckla min förmåga till intelligent struktur och kontinuelig diciplin att upprätthålla den, därför att Linux straffar oerhört hårt för misstag och varje gång något görs halvdant. Det var så jag kraschade servern förra gången: jag tänkte "detta kommandot känns riskabelt men det ska nog gå bra. Jag körde tar -xvf server-backup.tar.gz -C /
, vilket såklart är oerhört amatörmässigt, men det var också med attityden av att se lite vart gränserna går. Jag hade redan förutsett att jag kommer förstöra systemet förr eller senare då jag saknar erfarenhet, varav det är bättre att inte vara försiktig utan istället välkoman problemen och lära sig av erfarenheten. En frustrerande process, men nödvändigt. Jag har tillräckligt med erfarenhet av datorer för att veta att jag saknade erfarenhet av Linux för att kunna köra det stabilt, och att jag skulle vara tvungen lära mig en hel del. Nu har jag dock kommit till en punkt där jag känner att jag har tillräckligt med erfarenhet. Det betyder att jag behöver inget omfattande sälerhetssystem för att förhindra problem, därför att jag är händig nog att fixa problemen då de uppstår. Linux fostrar en mentalitet där du alltid är redo att lösa vilket problem som än uppstår, istället för att skjuta upp på framtiden eller att självömka, därför att Linux straffar dig för det genom ännu värre problem. Linux har gjort mig mer handlingskraftig.
Fördelen med Linux
Kraften i Linux-system är oerhörd. Jag har aldrig upplevt sådan frihet, potential och kraft tidigare. Allt fungerar som ett klockverk med exakt precission, och det som fungerar mindre bra är oftast mitt eget fel. För att ge en uppfattning, låt oss betrakta skillnaden mellan Windows och Linux. Hur lång tid tar det för dig att stänga av Windows? Det brukar ta 30 sekunder (om den inte ska uppdatera under tiden). Min Linux-dator stänger av på 3 sekunder, och den gör ingen uppdatering såvida jag inte själv programmerat in det.
Nakdelen med Linux
Nackdelen är att systemet är svårt och kräver att utveckla en annan mentalitet via mycket möda och besvär, vilket inte alla har tid med. Du måste börja älska att djupdyka i tekniska detaljer och samtidigt ha vilja att orientera dig i stora system-landskap.
- Exempelvis mitt system för intern asynkron kommunikation och tillhörande sätt att strukturera kod för att bygga modulära och löst kopplade system. (tillbaka)
- Ett annat projekt som hjälpte mig utveckla erfarenhet är det automatiserade installationssystem jag gjort för min personliga dator samt servern. Tänk Ansible, men med Bash script, med ett ramverk i Bash som kör en uppsättnning och sepcifika Bash filer som fungerar som "system image" för ett specifikt system. Ramverket kör de specifika installationsfilerna via chroot etc. Jag utvecklade det systemet från Arch Linux Live USB, då min personliga dator hade kraschat, och att utveckla det i terminalen tvingade mig att lära mig Vim, eftersom alla andra alternativ är mycket obekväma i terminalen, och på så vis insåg jag hur effektivt Vim är, vilket ledde mig vidare in på banan att ännu mer bygga en terminal-centrerad personlig miljö, varav jag nu kör enbart BSPWM, SXHKD, Nvim (med egen projekthanterare), Fish, Tmux, Alacrity, Kitty. (tillbaka)