Uppdatering inför nyår

Bilden visar nätverksförbindelsen, hastighet och hur mycket data som skickas. Hastigheten som visas i bilden, 16 ms, är en "roundtrip" - alltså fram och tillbaka - från Sverige där jag sitter, till Finland där servern ligger. Systemet skickar en "Ping" varje 25e sekund.
I skrivandets stund är det nu snart nyår...
Nu ser vi fram emot 2026 då jag förutspår goda resultat. Min uppskattning av 2025 visade sig trots allt vara rätt i viss mån. För första halvan av 2026 förutspår jag att en användbar version i lägsta mån kommer finnas.
Kontinuerligt arbete med kärnprojektet har börjat
Jag har nu lyckats börja arbeta kontinuerligt med kärnprojektet (det som syns för användaren). Tidigare har det varit mycket kringliggande så som server administration, och annat relaterat och orelaterat som kommit emellan. På matkalkyl.dev finns diverse diagram på tiden jag spenderar med utvecklingen, då jag numera mäter tiden och kvaliteten på dygnets alla aktiviteter för att analysera och förbättra. De diagram som visas där var givande att experimentera med (ChatGPT gjorde koden, så ingen tidsförlust där), och är antagligen vad jag kommer använda för Matkalkyl (charts.js).
Nej, det ser inte ut som jag kommit så värst långt, men vad som presenteras här är mycket bra på ett djupare plan, och när det väl är på plats kommer de synliga resultaten komma i allt högre takt. Jag kommer också kunna nyttja AIn på ett isolerat sätt så att den inte härjar fritt i min kod, men enbart för fokuserat arbete på utvalda platser i mitt övergripande system.
Exempel såhär långt
En demonstration finns på trekyl.com. Det är ett framsteg, men det ser inte ut så om man inte tittar djupare i systemet, vilket jag redogör för nedan... Den pågående utvecklingen sker på test.matkalkyl.dev, men den är mycket riskabel då det i princip är där jag utvecklar sajten i realtid, så gå till trekyl.com för senaste stabila (jag får se om jag behåller det domän-namnet sedan).
Det är fortfarande en bra bit kvar... men jag lyckades ändå på sätt och vis med vad jag förutspådde i början av 2025, då jag nämnde att jag beräknade få igång en fungerande version innan årets slut.
Nu är det bara några timmar kvar innan 12-slaget till år 2026, och jag har fått igång en fungerande version.
Dock beror nuvarande status på vad som avses med fungerande:
Den fungerar inte i följande avseende: Från ett användarperspektiv går den inte att använda ännu.
Den fungerar i följande avseende: Från ett systemutvecklarperspektiv demonstrerar den att den avsedda och ambitiösa grundstrukturen fungerar.
Varför det är ett framsteg
Jag har nu slutfört målet att nå den högsta abstraktionsnivån i systemet som jag behöver för att möta de krav jag har, och jag har samtidigt undvikt diverse abstraktions-fällor. Den näst högsta abstraktionsnivån var att jag kunde bygga ett ramverk som applikationen lever i - diverse generell funktionalitet struktureras omkring applikationen istället för i applikationen så som nätverkshantering. Den högre nivån ovanför det är att bygga en modul som bygger ramverk som i sin tur kör applikationer inom sig.
Det har inte varit helt lätt att komma fram till lösningen, då det är många basala saker som ska utarbetas som signalsystem, och beslut för hur data inom och mellan moduler ska struktureras. Jag har använt mig av funktionell objektorienterad programmering (alltså inga class och liknande, vilket egentligen enbart är "syntactic sugar" inom JavaScript - ett slags gränssnitt för att förenkla JavaScript, men vilket också leder till begränsningar. Att utarbeta vad som upplevs som oerhört fundamentala strukturer har tagit tid, men det var exakt detta jag ville, då jag vill ha kontroll på hela systemet och inte ha något onödigt, samt att jag ville ta min kunskap till en ny nivå. Mycket tänkande och experimenterande har varit förekommande.
Mer specifikt: Systemet består av en modul som bygger olika ramverk anpassade för olika applikationer (Ramverksbyggare). Applikationen bygger sedan upp sig själv inom ramverket genom att nyttja de av ramverket givna resurserna och funktionerna. Applikationen kan bara se vad ramverket exponerar för den. Ramverket blir applikationens miljö. Applikationen bygger upp sig själv genom en rad plugins (små moduler) som nyttjar ramverket. Användaren kan själv välja vilka plugins den vill ha.. En PageMaker gör även att användaren själv kommer kunna designa innehållet och layouten genom att bestämma vilka plugins som ska användas, vart de ska placeras ut och deras inställningar. Vill du exempelvis inte ha nätverksstatus, kalender, och en klocka, etc... då kan du ta bort det. Standardupplägg kommer givetvis finnas. Koden för diverse saker laddas också dynamiskt baserat på konfiguration.
Systemet innebär att flera olika applikationer kan köras samtidigt i samma system, där Matkalkyl motsvarar en applikation bland flera möjliga. Jag vill ha den möjligheten för jag tänker mig att utveckla andra kringliggande applikationer i framtiden på samma grund, och de avses också bli tillgängliga för alla via samma grundsystem. Systemet ger hög grad av flexibilitet och valmöjlighet.
Ai-fälla
Jag föll in i AI-fällor när det var nytt, sedan lärde jag mig av det. Nu, på ett år, har AI har fördubblat sin kapacitet att generera kod nu, från 800 till 1600 rader fungerande kod, och det är åter lockande att falla in i AI-fällan och försöka bygga allt med den, men jag kommer inte falla in i den fällan igen. Sådant duger bara för enklare program. Genom AI kan jag dock lättare begripa och överväga olika tillvägagångssätt. AI:n fungerar utmärkt som diskussionspartner samt för att göra hästjobb.
Reflektion
Det har under lång tid känns som att jag inte kommer någon vart, men till min överraskning visar det sig att sådant jag utvecklade för 1-2 år sedan, håller måttet mycket väl och kommer till gagn. Jag har alltså lyckats driva projektet framåt, bara det att den subjektiva upplevelsen har varit en annan.