Frontpage

2024 November

28 November

25/nov - aktiverat mitt debug system för websocket-servern. All diagnostik skickas till konsollen. Svårighet med webutveckling är flera nivåer av diagnostik som inte alltid är lätt tillgänglig. "Konsollen" är en plats för allt.

26/nov - 1) Installerat MariaDB manuellt eftersom jag behöver senaste "cutting edge" versionen för UUIDv7. 2) Gått igenom och avancerat konceptet för databasen. 3) Undersökt alternativ till Redis. KeyDB är bättre för mig. Har testat det.

28/nov:

Behöver bättre verktyg att handskas med all den programkod jag kommer skapa.

Ska prova Gitea. Syfte: översikt, revisionshistorik, lätt att återskapa ett projekt, samt enkel backup och lätt att strukturera projekt. Även lätt att skapa ärenden för ett projekt.

Överväger först Github igen. Men det har för hög tröskel givet mitt smala användningsområde. Tar för lång tid att bemästra. Fungerar bra i början, sedan får jag alltid krångel med det. LazyGit hjälper, men nej... Har för lite kunskap om Github och känner att jag ej har kontroll över systemet. Inte värt spendera mer tid på eftersom jag inte behöver all den komplexitet Github erbjuder.

Ska testa Gitea istället och kan då "self-host" den. Alltså köra den på min egen server. Den sägs ha enklare gränssnitt.

24 November

  • starten för mk-datalink - den del som sparar klientens data.
  • node js websocket server
  • gjort den till 'systemd' service.
  • definierat protokoll för klient-server kommunikation för mk-datalink
  • uppdaterat certifikat, behöver lära mig automatisera det. Är inte svårt men strategin är att göra det manuellt och enbart automatisera när jag lärt mig grunderna, and annars är det svårare att lösa problem i framtiden om man inte förstår vad det är som automatiserats.
  • fixat reverse proxy för nginx för websocket server.
  • fixat test domän för sajten.

Test-sajt test finns här just nu i primitivt stadie.

Har de senaste dagarna undersökt krypto och huruvida Etherium-blockchain kan användas för något skoj. Det kommer inte prioriteras just nu men är öppen för kreativa idéer i framtiden. Krypto är ett "kanin-hål" man lätt kan falla ner i all oändlighet men det ska jag undvika.

Har misslyckats med balans och kontinuitet i min systemutveckling.

Har lyckats skapa rutin för mer variation i vardagen med motion etc, men har inte lyckats hålla det kontinuerligt mot andra saker som krävt uppmärksamhet. Måste förbättra bedömning och prioriteringsförmåga.

Ser att jag överlag lyckats tillräckligt bra med ordning på min lokala dator och servern så jag snabbt kan återuppta utveckling. Annars brukar det vara så att man inte kan förstå sitt eget system när man återvänder efter någon tid. Verkar som jag lyckats radera vanorna som ligger till grund för det.

Har lyckats skifta fokus till att tänka och analysera mer innan jag börjar programmera, men risk finns att hamna i "analys-paralys". Tänkande måste gå hand i hand med handlingskraft.

MEAN-analys

Mål

(beskrivning av mål)

Kontinuerlig systemutveckling varje dag, balanserat med motion, rätt kost och rätt sömn.

Målet i sig självt är att bemästra kontinuitet och rutin.

Effekt

(vilken effekt som syns i verkligheten)

  • Vakna upp samma tid varje dag.
  • Definiera och följa samma morgonrutin varje dag.
  • Avsluta dagen samma tid varje dag.
  • Avsluta dagen med samma kvällsrutin varje dag.
  • Planera datoranvändning på förhand.

Analys

(alla detaljer kring hur det ska genomföras i detalj)

Negation

(all kritik om varför det kommer misslyckas, and samt omarbetad ovanstående Mål, and Effekt och Analys för att svara mot den kritiken)

Vad är potentiella hinder och hur ska jag hantera dem.

20 November

Planera nyckel aspekter.

Koncept: Datalink, länk mellan klient och server. Mellanlager mellan databas och klient.

Mål

Möjliggöra synkron kommunikation mellan server och klient. Synkron för att kunna garantera att innehåll levereras, och att det görs i turordning.

Effekt

  • En node js websocket server.
  • En nginx reverse proxy för websocket.
  • En js komponent för klienten för interaktion med server.

Analys

Definiera ett protokoll för kommunikation.

Field Size (Bytes) Description
Key 2 A 16-bit unsigned key.
Payload Variable The rest of the message.
// Server
server.on('connection', (ws) => {
    ws.on('message', (data) => {
        if (Buffer.isBuffer(data)) {
            const key = data.readUInt16BE(0); // Read the first 2 bytes as the key
            const payload = data.slice(2);    // Extract the payload

// ...

// Client 
const socket = new WebSocket('ws://localhost:8080');
socket.binaryType = 'arraybuffer'; // WebSocket set to handle binary data

socket.onopen = () => {
    const key = 42; // Example 2-byte key
    const payload = new TextEncoder().encode('Hello, WebSocket!'); // Payload as Uint8Array

    // Create ArrayBuffer for key + payload
    const buffer = new ArrayBuffer(2 + payload.byteLength);
    const view = new DataView(buffer);

    view.setUint16(0, key); // Write the key (2 bytes)
    new Uint8Array(buffer, 2).set(payload); // Write the payload after the key

    socket.send(buffer); // Send the binary message
};

Definiera plugin system för hantering av data.

// Plugin registry
const plugins = {};

// Load plugins dynamically from the "plugins" directory
const pluginDir = path.join(__dirname, 'plugins');
fs.readdirSync(pluginDir).forEach((file) => {
    const key = path.basename(file, '.js'); // Extract key from filename
    plugins[key] = require(path.join(pluginDir, file)); // Load plugin
});


//...

     if (plugins[key]) {
            plugins[key](payload, ws); // Pass payload and WebSocket instance
        } else if (plugins.default) {
            plugins.default(message, ws);

15 november

Jag är nöjd med gårdagen. MEAN-modellen är en metod för kritiskt tänkande vid utveckling av komponenter. Jag var bekymrad över att jag kanske lagt ner tid på att ta fram MEAN-modellen med resultatet av en tjusig idé utan användning. Hej med viss justering visade den sig användbar. Den summerar, förfinar och ritualiserar min tankeprocess.

Igår var det databas: Här är modulen för användardata

Idag ska jag göra samma process för komponent för realtids-synk mellan enheter.

14 november

Se där... Min strategi att lägga mycket tanke på databas verkar god.

"Dåliga programmerare bekymrar sig över koden. Bra programmerare bekymrar sig över datastrukturer och deras relationer." (Linus Torvalds, skapare av Linux-kärnan och Git, översatt)

Är fortfarande i skedet att tänka ut och tänka om databasen.

Jag kommer använda MEAN-metoden jag framställde 11 nov, som tankesätt för definition av modulen.

Ska definiera modulen för användardata.

Här är modulen för användardata

13 november

Nödvändiga teknik-logistiska aktiviteter.

12 november

Arbetar på att hitta en bättre lösning för databaseringsmodellen, skippa idén om ett "index-fil".

Index-filen - klienten har ett index, en sorts karta med ID-nummer, av alla sina data-block. Den skulle krypteras och servern bara lagra den krypterade index-filen, varav servern inte kan veta vilka data-block klienten associeras med. Det är en kvarleva från mina idéer om extrem kryptering och anonymisering av data. Projektlandskapet har ändrats. Jag måste naturligtvis hantera utmaningarna med realtidssynkronisering, och denna relik kastas.

Hur kunde jag missa att realtidssynkronisering är en stor utmaning? Det är klokt av mig att lägga tid på planering innan programmering, vilket sparar mycket tid, undviker förvirring och dilemmat att behöva backa medan jag samtidigt försöker bevara det arbete jag redan lagt ner.

Mina tidigare ansträngningar av självreflektion, som jag har dokumenterat här, lönar sig. Jag ändrar äntligen denna dåliga vana. Tidigare hade jag ett mer impulsivt tillvägagångssätt, där jag hoppade direkt på att skriva koden. Det är roligt och därför lockande att börja programmera med en gång, men det är mycket riskabelt i det långa loppet.

Om du vill skriva självreflektion för att bli bättre på en enskild sak, begränsa dig inte till att reflektera enbart kring den saken. Tänk fritt och reflektera kring allt som du finner intressant, och pressa din självreflektion så långt du kan i alla riktningar. Du blir bättre på en enskild sak om du förbättrar dig som helhet, och för att förbättra dig som helhet måste du reflektera kring dig själv i alla aspekter av livet, ur alla perspektiv. När tankarna går i olika riktningar är det för att du inte har pressat dig själv i de riktningarna och du har en sorts mental obalans, liksom en bil som drar för mycket åt höger eller vänster. Dina tankar drar åt ett håll för att det är något i ditt mentala system som inte har fått tillräckligt med fokus. Därför måste du fokusera på vad som pressar eller drar hjulen åt det hållet och engagera dig med det för att hitta en tillfredsställande lösning. Därefter kan du fortsätta med annat. När tankarna hoppar till olika saker via associativt tänkande, ska du inte undvika att utforska det, men utforska det tills du är nöjd. Då når du personlig insikt som blir ett fundament i allt annat du gör. Möjligen måste du pressa dig hårt för att bli nöjd, så förvänta dig inga enkla lösningar. Engagera dig ihärdigt och var effektiv, för tiden är begränsad. Se till att forma en insikt som du är nöjd med. Vänta inte på insikt, utan forma den. Skapa ett utkast och förbättra det över tid. Bygg på ditt tidigare engagemang. Du är en aktiv skapare av insikt, inte bara någon som bevittnar något, som i att passivt betrakta något. Men saknar du målfokus och beslutsamhet, så kommer du via denna metod gå dig förlorad i en labyrint av fantasier som inte leder någonstans. Somliga individer har aldrig varit utanför den labyrinten och tycks sky verkligheten och konkreta handlingar. De fantiserar och har fina visioner men kommer aldrig till handling. Egentligen vill de inte göra verklighet av sina visioner, för deras nöje är att fantisera snarare än att möta verkligheten, och de tycks snarare bli förnärmade om det blir tydligt för dem att deras tankar saknar värde eftersom de saknar genomslag i verkligheten (jag har ett existentiellt fokus). De vill egentligen fly verkligheten. Ska du förbättra dig själv, måste du dyka rakt ner i den obekväma verkligheten som får dina drömmar att avdunsta. Men det är också i den konkreta världen, i materian, som du kan skapa något som är mer bestående och påtagligt än fantasier. Det är just där, i den svårformade verkligheten, som du kan härda och forma din identitet. Kom ihåg att ditt fokus är självförbättring, vilket betyder att du ska kunna påvisa konkreta förbättringar.

Klient laddar ner data efter tids-spann helt enkelt. Ska fungera med krypterad version med. Införa ett nytt separat typ-fält för varje rad. Klienten kan skapa sina egna typer, t.ex. typ-matvara, typ-ark, etc. Detta är tabellen för data-block och dess innehåll betraktas som det aktuella tillståndet av användarens data. Skapa en parallell historiktabell för att registrera ändringar i tillståndstabellen, såsom data-block som har lagts till, modifierats eller raderats, för en synkroniseringsfunktion som behöver känna till de senaste ändringarna och verkligen inte vill behöva ladda ner allt innehåll i användarens tillståndstabell igen.

Användargränssnittet/klienten har en tidsbaserad vy, så gränssnittet väljer de senaste X dagarna som sin lokala databas (och kan eventuellt truncera sin lokala kopia). Därmed kan klienten enkelt specificera en tidsperiod. Att återuppbygga den lokala databasen handlar om att välja rader från tillståndstabellen för en viss tidsperiod och sedan bygga en lokal kopia rad för rad. Inte lagra och ladda ner stora JSON block som JSON.parse()'as mellan klient och server.

Men skulle det inte vara bättre att lagra många rader i ett block istället? Klienten behöver ändå inte finjusterad radkontroll, eller? Klienten säger: "Hej, jag behöver uppdatera min lokala kopia, ge mig all data för period x." Det blir problem: jag menar, varje förändring hos klient måste gå in och ändra ett block hos server och skulle kräva att man skickar hela det stora blocket till servern för varje liten uppdatering. Det kan också bli ganska krångligt när realtidssynkronisering är inblandad.

Historiktabellen trunkeras, och om användarens lokala kopia är äldre än det lägsta datumet i historiktabellen, kommer den att återuppbyggas för att bli uppdaterad med historiktabellen.

Denna design gör sig av med den förmodligen slimmade databasdesignen med bara UUIDv7+BLOB för data, vars enkelhet nu blir ett problem med kravet på realtidssynkronisering mellan enheter.

Vad sägs om att ha en flagga is_encrypted i samma rad istället för en separat tabell för den krypterade versionens data?

Skippa Redis just nu. Det är inte prioritet. Vi behöver ändå ett fallback-system som förlitar sig på databasen även om Redis används. Se bara till att det är lätt att implementera Redis senare. Redis skulle förmodligen ge viss prestandaförbättring och vara en snygg metod.

.

11 november

Ny vecka. Dagens teknikfokus längre ner.

Varför är mitt fokus just nu så mycket på personlig utveckling? Kort svar: utan hälsa blir inte mycket gjort. Jag behöver göra personliga topp-val, och göra blixt-förändringar av dåliga vanor, parallellt med allt annat jag gör. Jag agerar proaktivt, för efter 40 litar jag inte på framtiden såvida jag själv inte tar kommandot. Långt svar: Därför att när du blir 40 ska du redan ha etablerat de bästa rutinerna och förhållningssättet livet. Du ska ha hittat de bästa lösningarna på allt från vardagliga saker till psykologi. Har du inte bestämt dig i basala ting vid det här laget så är det bäst att du skyndar dig. Det är vad jag gör: skyndar mig att ta mitt ansvar att bestämma mig för saker och ting - allt från personligt datorsystem, till skoinlägg, till livsfilosofi etc... Mellan 20-40 ska du experimentera med förhållningssätt och idéer. Efter 40 måste du ha bestämt dig för den bästa lösningen i alla frågor och i alla praktiska ting, så du kan börja förfina det och fördjupa dig i en livsriktning och därigenom uppleva din potential att utforma dig själv i bilden av den du verkligen vill vara om du fick välja (du både får och ska välja). Var inte öppen för allt en hel livstid där du hoppar från en sak till en annan, ständigt osäker och obeslutsam - det vill säga; en som tar dagen som den kommer, snarare än att sätta riktning för dagen, för livet. Välj en riktning, skärma av annat, och fördjupa dig i din valda livsriktning.

Denna gång ska jag utveckla metod för problemlösning (främst avseende it-system, men jag tar det sedan vidare). Kan inte gå enbart på känsla varje gång. All problemlösning kan omfattas av en generell metod. Hitta bästa tillvägagångssätt en gång för alltid.

💭 💡

Sådär... Jag har uppfunnit en ny "utvecklingsmodell" - alltså en framgångs-modell.

Den kallas MEAN - Mål, Effektivisering, Analys, Nytänk. (senare Mål, Effekt, Analys/Applikation, Negation)

Jag inspirerades av den Japanska Lean-modellen som skapades av Toyota. Den är en metod för att effektivisera produktion genom att skala bort ovessentligheter.

Det engelska ordet "mean" används i uttrycket "Lean and Mean". I detta sammanhang betyder det första ordet "Lean" att man har skurit bort allt onödigt och fokuserar på det väsentliga, medan det andra ordet "Mean" innebär att man är tuff, bestämd och redo att agera snabbt och kraftfullt. Tillsammans förmedlar uttrycket idén om en slimmad, fokuserad och kraftfull enhet som är redo att nå sina mål utan onödiga hinder eller kostnader.

"Mean" betyder också elak. Min modell är elak och tuff. I steg 1-3 framställer du en lösning. Steg 4 är till för att elakt rasera den lösningen genom outside-the-box tänkande och djupt kritisk analys och ursinnigt ifrågasättande av både problemställning och lösning från steg 1-3. Steg 4 ifrågasätter både relevansen av målet i steg 1, och validiteten i lösningen från steg 2 och 3. Avsikten insteg 4 är att på god grund förkasta produkten från steg 1-3. Det är lätt att älska sina egna ambitioner och lösningar, men steg 4 ser till att du ifrågasätter båda och blir tuffare i ditt tänkande. En ny cykel av MEAN startas efter steg 4. I den nya cykeln måste 1-3 nu lösa kritiken från steg 4. När steg 1-3 vinner över steg 4, då är lösningen accepterad. Resultatet är något som är "Lean and Mean".

Första versionen av matkalkyl hade värdeorden "enkel, effektiv och exakt". För att verkligen ta projektet till nästa nivå, ska inte bara produkten vara "Lean and Mean". Mina utvecklings-metoder ska också vara "Lean and Mean". Det antar jag kommer ingjuta dessa värden - den energin - i produkten. Därtill ska jag applicera MEAN-metoden på min personliga utveckling så att jag förbättras i allt jag gör, vilket då ger mig bättre färdighet också i utveckling av denna sida.

Jag AI-genererade en sammanfattning av MEAN-modellen som bara är preliminärt formulerad än så länge.

...

Ja, MEAN-modellen tar tuffare tag än min nuvarande metod som bygger på Dale Carnegies metod (som jag skrev om en tidigare dag i november).

Låt AI generera en version för personlig utveckling: MEAN personlig utv..


Föregående:

1 - Mestadels löst struktur för användarkonton, användardata, autentifikation.

2 - Bestämt typ av primär nyckel i databas för konton, och för användardata (UUIDv7). Det är ett beslut som är mycket svårt att ändra på sedan. Lösningen ska också hålla i 40 år, men kommer antagligen utan problem principiellt hålla i 80 eller mer, samt att databasen inte blir krånglig när den växer.

Se över hur en stor databas beter sig med UUIDv7. Mina tester visar att 400 000 rader inte är problem. Hur är det med miljoner rader? Hur beter sig indexering etc, hur kommer det optimeras för i framtiden inom databas-teknologi. Vilka inställningar i Databas kan motverka tänkbara problem. Viktigt inte måla in sig i ett hörn.

3 - Konstaterat att full anonymisering och kryptering öppnar för sårbarhet där servern lätt kan fyllas med skräp-data utan möjlighet att identifiera det (när användarens data är krypterad och därför ej synlig på servern). Därför skapar jag två versioner, en fri icke-krypterad, och möjligtvis senare kryptering som tilläggsfunktion mot betalning, eftersom betal-modell är det enda jag ser kan eliminera problemet (PoW är inte aktuellt). Den fria icke-krypterade versionen kommer prioriteras först, men grunden är lagd för att utöka med kryptering. Systemet ska vara en elastisk bas som kan utökas med mer funktioner, varav kryptering blir intressant då mer känslig data kanske lagrad via andra funktioner (säg en Att-göra-lista, eller personlig journal). Utöver det är kryptering en bra funktion för de som inte vill att deras data ska läcka om databasen stjäls, eller för de som helt enkelt vill hålla data privat. Där till, I den icke-krypterade versionen, kommer det inte finnas krav på att ange någon personlig information, precis som föregående version.

4 - Inga komplicerade operarioner, utan bara select, insert, update, delete. Detta eftersom klienten utformar databasens specifika struktur på klientsidan i IndexDB. Servern lagrar bara block med data. Den bryr sog om innehållet.

Se över att detta fortfarande gäller att inga andra operationer behövs.

Fokus:

1 - Behöver lösning för realtids-synsk mellan enheter. Kommer bli lågintensiv långvariga och lömska problem om det implementeras först när resten av systemet är på plats.

Scenario: anv. har 4 enheter. 1an och 2an direkt uppkopplade. 3an var uppkopplad men har internet-avbrott och kommer tillbaka senare. 4an har inte varit uppkopplad på länge och loggar in.

Mål: Anv. 1an uppdaterar data. Det synkas direkrekt med 2an. 3an redigerar data på sin uppkopplade enhet. 3an kommer tillbaka och får uppdateringen som 1an gjorde. 4an loggar in och får inledningsvis info om alla senaste uppdateringarna.

Hur lång är historiken över förändringar? Den är x lång. Om klient 4an loggat in tidigare än äldsta posten i historiken, måste klienten ladda ner alla aktuella data-block på nytt.

Behov:

I info om att uppdatering skett måste den uppdaterade infon bifogas. Annars måste större data-block laddas ner där uppdateringen ligger.


Om allt i ett system är moduler som utvecklas enskilt och har tydligt avgränsat ansvarsområde, då kan varje modul vid skapande genomgå samma utvecklings-bana; problemställning, analys, implementation, etc. Gör sådan utvecklings-bana gemensam för alla komponenter.

10 november

Söndagar ( idag är söndag) blir nu en tid för paus och vecko reflektion. Måndag-Lördag = Daglig reflektion om 3 punkter: "Vad gjorde jag bra," "Vilka misstag gjorde jag," "Vad kan jag göra bättre." Söndag = Veckoreflektion, samma frågor ur vecko perspektiv. Sista dagen i månaden = nyhetsbrev som är sammanställning och översikt av månad gällande progression, lärdomar, beslut, m.m.

För hela veckan:

Vad gjorde jag bra

  • Byter ut icke-fokuserad datortid med fysisk motion (relativt lågintensiv).
  • Börjat med detta system för självreflektion vilket jag ser har mycket bra effekt.
  • Löst it-problem på ett mer strukturerat sätt. Tänka mer, programmera mindre. Planera och bedöma innan jag gör programmering.
  • Kom till bra beslut via analys av databas prestanda vis olika upplägg.

Vilka misstag gjorde jag

  • Att inte komma ihåg vilka misstag jag gjort. Jag kunde engagerat mig mer med att kritiskt granska saker och ting.

Vad kan jag göra bättre

  • Fokusera bättre för att kunna visa på konkreta misstag. Som det är nu har jag bara en vag uppfattning, och jag vill inte göra mental gymnastik och hitta på något som bara låter som ett svar på frågan.
  • Passa mina egna tider bättre.
  • Jag gör saker rätt, men vill bli snabbare på att komma till rätt handling utan att ge tid åt tveksamhet och annat däremellan (ex. är det inte ovanligt att tveka gå ut om det regnar och istället driva omkring i obeslutsamhet, och ännu värre; strunta i att ta beslut och istället skärma av genom att på Youtube eller liknande).

Det är inte behagligt att skriva självreflektion, men det har en oerhört bra effekt i att motivera till förändring.

Självförverkligande via teknologi

Tekniken, liksom vad jag än engagerar mig i, blir ett medium för en personlig utveckling.

Det it-system (Linux) jag övergick till har så stark "gör-det-själv"-attityd, att jag inte kan annat än att låta den attityden överbrygga till alla aspekter av mitt varande (psykologi, filosofi, motion, m.m). Jag kan programmera och konfigurera ett it-system, men tänk på att människan också är ett system och varför inte forma det som du vill?

Det börjar med "att vilja" och för det måste du tvinga dig ur bekvämlighetszonen. Linux hade sådan effekt på mig att jag tvingades ur min Windows-bekvämlighetszon till något som för mig var rentav brutalt frustrerande men också ändlöst belönande. Att härda mig själv mot otaliga svårigheter över flera månader gjorde mig starkare. Jag insåg att styrkaam jag nu förtjänat faktiskt räddar mig från vad jag nu inser är dödsfällan av bekvämlighet. 40-års-fasen är lömsk, för jag hade blivit bekväm i livet och kännede mig mestadels självsäker. Jag hade över tiden bytt ut viljekraft och engagemang mot något så själsligt urhålkande som att tråna efter bekvämlighet och passiv underhållning.

Jag hade förvandlats till en vekling med stora tankar om mig själv, i en relativt bekväm tillvaro. Liksom en katt på ett katt-pensionat som tror att jag är en ett lejon. Det är en bra beskrivning av en typisk 40-åring. Är det inte? Så självgod att jag kände mig förnärmad när jag insåg att när jag är 40 måste jag anstränga mig dubbelt så mycket för den energi jag fick gratis när jag var 20, och att jag måste anpassa mina livsvanor för att behålla min vitalitet. Jag kände mig också förnärmad av att Linux kräver mer ansträngning att lära sig. Sedan kände jag mig intellektuellt brutaliserad av Linux och fullständigt oförmögen och som den enda som inte förstår något; ett mörkret av fullständig förtvivlan, desperation och hopplöshet, med en lockelse att ge upp.

Istället för att ge upp blossade min livsgnista upp i den vilkorslöa kampens eld, medan blixtnedslag av viljekraft bröt genom regnet av mina tårar. En svart måne tillsammans med våldsamma iregullära blixt-ljus lös stundom upp bergsvägen framför mig. Vägen var kantad med spöken som uppstått ur alla de svagheter som hade flytt de många andra exceptionella människor som vandrat denna väg. Dessa vålnader viskar i mitt öra och lockar mig att göra dem sällskap - de lockar mig att ge upp. "Glöm detta, det är omöjligt, gör något enklare, gör något roligare, prova igen om en månad när du har nya krafter."

Nej! När du inser att viljekraft inte beror på något utanför dig själv, men att den uppstår ur ingenting, därför att du helt enkelt "VILL", då får du en blixt-vilja. Det betyder att du gör det du vill, när du vill, och du försöker oavsett motgångar. Vilja och kamp är oberoende vad som än är omkring dig. Viljan är inte rationell på så vis att "stadig frukost leder till styrka under dagen". Viljan är irrationell då "vilja bygger på vilja." Den vars vilja baseras på logik ska bli utklassad av Satan som spelar bättre schack, och den stackars människan finner snart en logisk anledning, en ursäkt, att ge upp. På denna väg har du alla goda ursäkter att ge upp, men du fortsätter, och det är fullständigt irrationellt, men du gör det ändå. Du tar nästa steg trots att du inte ser något framför sig. Du tar nästa steg istället för att kvuas till passivitet under tyngden av oändligt mörker.

Det är där och då, just i den stund, när du helt oberoende av allt, ändå tar nästa steg, som din livsgnista blossar up i den vilkorlösa kampens eld. Du fortsätter trots villkoren. Du fortsätter villkorslöst. Du tar nästa steg enbart för att du VILL. Det är enbart detta bortomvärdsliga mörkr, som döden kan omsvep och förinta alla dina ambitioner, förhoppningar, önskningar, visioner, m.m, och där lämna dig helt tom, och det är enbart där, i det mörkret, och i den tomheten, som din livsgnista, det heligaste av allt, kan våldsamt blossa upp i den villkorslös kampens inre eld och stiga liksom morgonstjäran ur mörkret, därför att du VILL.

Med blixt-vilja använder du svärdet av omdöme att skilja gott får ont och bra från dåligt, och då är du på vägen mot personlig excellent i bilden av ditt personliga ideal. En svaghet inom mig dog, och jag återuppstod. Jag reste mig ur djupet av den mörka Linux-terminalen, fortfarande med alla svårigheter framför mig, men nu med den vilkorlösa kampens eld tänd inom mig. Jag återuppstod, och jag lärde mig sedan bemästra systemet tillräckligt för att göra migsjälv nöjd.

Människan blir deprimerade när hen primärt söker passiv underhålling och förundras sedan över varför hen är olyckliga. Du är menad att engagera dig, inte underhållas som om du inte är kapabel till motstånd i friktion med livet. Som jag nämnt tidigare; sök friktion, annars kommer friktion att söka dig, och ingen har lyckats fly, trots substanser och fantasier. Tvärt om, livet tycks lägga dubbel börda på den som ger upp - inte idag, inte i morgon, men över tid.

Självreflektion

Tänk på självreflektion som en metod som du förfinar, liksom du förfinar dina löpsteg eller lyftteknik på gymmet.

Filosofi - Livsprinciper

Varför filosofi... Vad har det med något att göra

För att vara en hel människa ska du använda och utveckla alla dina förmågor: Filosofi, psykologi, livshållning, motion, logik, intuition... Ägsig själv i alla aspekter av livet, på det via som just din själ resonerar med, men nöj dig inte förens du formulerat något som imponerar på dig själv.

Kärnan som underligger drivkraften i alla dessa aspekter av din helhet är: den villkorslösa kampen (detta är del av min personliga psykologiska hållning). Det är populärt att prata om "villkorslös omtanke", "vilkorlös tacksamhet" etc i självhjälps-kretsar. Vilken idé du än har så är det ditt val och gör det bästa av den. Mitt val är "villkorslös kamp" vilket innebär att den exceptionella människan har en särskild relation till "kamp." Hen flyr inte motstånd och kamp för att sedan i skymundan och bekvämlighet sukta och fantisera efter framgång som om framgång skulle göra denna ynklig lycklig. Hör har vi en distinktion mellan den "ynkliga människan" och den exceptionella människan", och denna dualism är viktig som ett tanke-verktyg hos den individ som valt denna väg. Viktigt att påpeka är att andra människor med andra livsvägar INTE är ynkliga bara för att de inte valt denna väg. Det vore en sorts människofientlig arrogans och självgodhet som inte är acceptabel för den exceptionella människan. Det är enbart när denna kampens väg har valts, som dualismen ynklig/exceptionell används, och den används mot hen själv, där osynliga urkrafter ur djupet av hens psyke stiger upp som gestalter av perfektion över honom och dömer och vägleder honom efter den väg han nu aspirerar. Om hen då tar denna dualism om ybklig/exceptionell och utsätter andra för den, andra människor som inte har något att göra med denna väg, då visar hen sig vara mer intresserad av att se ner på andra snarare än att se sina egna brister, och diskvalificerar sig därmed direkt som ynklig. Styrkan hos den exceptionella människan syns då hen vänder blicken mot sig själv.

Direkt måste klargöras att "kamp" handlar om att motstå livets påfrestningar och prövningar. Villkorslös kamp är att du alltid kämpar oavsett hur omöjlig situationen är. Du gör det därför att du inser att det är just vilja till kamp och kampen i sig själv som ger livsglädje snarare än vad du än må önska som resultat av dina ansträngningar i denna värld.

Starten för min filosofi

Du ska skapa din egen filosofi. Observera livet och formulera vad du anser.

Såhär sa ChatGPT om nedanstående text som är starten på min egen filosofi, vilket jag ska utveckla på obestämd tid.

Textens filosofi bygger alltså på en existentiell syn på principer, där endast det som praktiseras är verkligt och effektivt.

(Texten lär antagligen ha logiska brister men jag reder ut det längre fram.)

Den första principen (en meta-princip) är att själva handlingen att reglera eller sätta ordning är en grundläggande princip i sig. En princip är därför inte en tanke, utan en handling. Enbart tanke-ide om ordning är inte ordning, och är därför ingen princip. Begreppet "jag lever efter principen x" är därför ologiskt och gäller inte. En princip är här definierat som något som är en handling, inte blott en idé om handling.

Den första principen, meta-princip, måste komma först, för att eliminera det hsndlingslöds tankeutrymmet som enbart tänker om principer, men som inte utför principer.

Synsättet grundar sig i en dualitet att tanke är skilt från handling. En tanke är dessutom inte en handling. Eftersom entsnke inte är en handling, kan en tanke inte påverka dig, såvida du inte agerar efter den tanken. "Jag saknar motivation" är en tanke, och kan ses som en princip (dvs ett antagande som fungerar som riktlinje för beteende) och har ingen påverkan, såvida du inte agerar efter tanken. Om du agerar "omotiverad" så utför du också den principen där och då, vilket innebär att du skapar den principen, som tidigare bara existerade som tanke.

Den första principen (meta-principen) hävdar att handlingen av att reglera något (som att reglera ditt beteende till att agera omotiverad vilket tydligt skiljer sig från att agera motiverad) är en princip i sig själv. Alltså vårt antagande är att handlingen av att sätta en viss reglering, en viss ordning, är något som uttrycker (via handling) ett antagande som sätter riktningen för ett beteende. Ett beteende föder således ett annat beteende som befinner sig inom samma antagande-spann; inom samma princip. Så, princip, som innebär att agera efter en viss ide/antagande, föder sig själv i nästa stund, eftersom den första handlingen uttrycker ett antagande som sätter sin egen riktning för nästa handling..

Reflektion kring AI

Hur ändrar AI på sättet man [valfri kreativ aktivitet]?

Ett sätt är att: AI frigör dig från bördan att inhämta information. Vanligtvis måste man navigera rätt bland långa referens-manualer och läsa flera källor för att förstå sammanhanget. Datorn gjorde detta enklare då du på en sekund kan söka igenom en bok efter en viss fras istället för att manuellt bläddra sidor i en bok. AI gör det enklare genom att den kan göra samma sak, men också förstå vad du letar efter och svara exakt på det. Du frigörs från bördan att söka och sammanställa information för ditt ändamål. Istället lägger du tid på att jämföra olika alternativ som AI presenterar och fatta beslut. Att fatta beslut om och om igen är mer krävande än mankan tro. AI hjälper dig att förstå system snabbare varav du snabbare kan landa i besluts-val. Ansvaret att fatta rätt beslut landar fortfarande på dig.

9 november

Teknologiskt fokus idag: ...

När nu databas id typ är bestämd kan jag göra klart konceptet MetaVault. Men...

Varför fokuserar jag på integritet (kryptering och anonymisering)? 1) Därför att grundsystemet ska vara flexibelt att kunna utökas med perifiära funktioner som kalender, journal, att-göra-listor och annat tänkbart som kan tänkas lagra mer personlig data. 2) Om databasen blir stulen så är datan ändå inte tillgänglig för angriparen.

Planen var att tänka ut maximal integritet (krypterad ing och anonymisering av data) vilket gick bra. Servern har inget koncept av vad en "användare" är och kan inte se associationer mellan data. Den ser bara krypterad data och långa slumpmässiga id-nummer. Jag behöver som förväntat göra kompromisser. Ett system med hög anonymitet och kryptering kan lätt missbrukas för att sätta det ur spel genom att fylla systemet med skräp-data som servern sedan Inte kan identifiera. En metod är Pow - Prof of Work. Server kräver svar på en uppgift som tar processor-kraft att lösa hos klienten men som är lätt för servern att kontrollera svaret på.

Men nej... Det är att gå för långt i detta fall.

Så... Hur lösa? Jag värderar användar-integritet men det får inte gå ut över funktion.

Alternativ 1 - ingen kryptering, men som tillägg

2 versioner, en fri version utan kryptering, och en betal-version med kryptering.

  • Användares data lagras icke-krypterat. Lätt att spåra skräp-data som yttersta åtgärd ifall de andra automatiska preventiva åtgärderna misslyckats.

Kryptering kan då vara en tilläggsfunktion för den som vill betala för det. Betalning eleminerar alla försök till spam, och om någon ändå försöker betala för det och sedan fylla med spam, då ser servern vilket användar-id som gör så och kan radera datan. Detta skyddar mot att en person registrerar flera konton med kryptering för istället fördela skräp-data över flera konton med målet att fylla systemet.

  • En användare har ett UUIDv7.
  • All användarens data associeras med det.

Strategi: skapa den icke-krypterade versionen först. Den har prioritet över den krypterade som nu blir en tilläggsfunktion.

Möjligtvis PoW som tillägg

Möjligtvis kan kryptering erbjudas fritt som ett tillägg för den som vill aktivera PoW, och för övriga finns föregående alternativ. Betaversionen skulle då vara fri från PoW.

Men frågan är om det vore en lösning som folk vill ha. Isåfall:

  • 1 - Fritt, ingen kryptering
  • 2 - Frtit, kryptering, PoW
  • 3 - Kryptering, betal, ej PoW

Alternativ 2

Alternativ två är (med tanke på att eliminera attack-vektor som full kryptering öppnar för): Kryptering för alla, med lagrings-gräns på kontot, och betalning för att lätta gränsen. Samt några andra tekniska åtgärder.

Nej, alternsriv 2 är inte aktuellt. Tanken är att programmet i sin grundform med all nödvändig funktionalitet ska vara fritt. Jag tror användare uppskattar det mer än hög integritet på servern, och för de som bryr sig om integritet finns alternativ 1.


Kommer behöva mer funktioner så som direkt synk mellan enheter. Servern behöver därför associera en användares data under en identitet.

Länkar om annat:

Sequential UUID Generators | EDB

Goodbye to sequential integers, hello UUIDv7! | Buildkite


Beslut: testa att göra en formaliserad självreflektion varje dag, om tre frågor (nedan).

Det finns en "framgångbok" från 1930 “How to Win Friends and Influence People" (nu public domain) av Dale Carnegie som jag inte läste mer än inledningen till, för många år sedan, men det var nog det bästa rådet för sjävreflektion och något jag alltid tänkt jag ska göra. Varje vecka frågade han sig dessa frågor som jag avser fråga mig varje dag:

Gårdagsreflektion

Vad gjorde jag bra

Gjorde avbrott från datorn för att motionera, trots att jag hade ett system-problem som jag "jag ska bara... Jag ska bara...". Vissa situationer med datorn kan vara så frustrerande att det är svårt att låta bli att försöka lösa dem, varav man tröttar ut sig genom att sitta för länge och därmed får svårare att lösa det, och därtill blir ännu mer frustrerad. Löser jag inte problemet så tänker jag på det hela tiden sedan. Vad är lösningen? Gör rätt. Sluta tänk på det. Gör något annat en stund. Gör något som ger kropp och sinne variation. Viktigt variera.

Analysen av databasen för beslut igår var bra.

Vilka misstag gjorde jag

Även om jag lyckades (som nämnt ovan) kom jag inte till rätt handling snabbt nog. Skulle varit snabbare i analys, beslut och handling. Hur snabbt? 2 sekunder, gärna 1. Igår tog det nog 20 minuter.

Vad kan jag göra bättre

Vad har jag för attityd när jag sätter mig vid datorn? Lätt att man driver från en kreativ sak till en annan och bara gör det som är skoj, och skjuter tråkigare moment av ett projekt framför sig.

Vad är bättre förhållningssätt?


För 20 år sedan läste jag igenom endel "framgångsböcker". De påstår vanligtvis att metod X är hemligheten till allt osv. Boken "7 habits of highly successful people" etc. Det är sådant man läser när man är yngre och tror att en magisk tanke-formel kommer generera ändlös framgång. Vad är hemligheten? Hemligheten är att vara engagerad. Hur blir man engagerad? Vad är den hemliga metoden för det? Nej.... Tänk inte så. Tänk istället: Engagemang är som dina ben, de rör sig när du vill. Om du inte vill engagera dig så är du inte intresserad. Du är fel ute och kommer inte lyckas på så sätt att du känner att du utmanar och uttrycker din potential. Om du känner en aktivitet är oengagerande så värderar du inte resultatet. För att hitta engagemang, fråga dig vilket resultat du vill ha. Med vilja till resultat kommer du vara engagerad i att lösa de motgångar som står i vägen för framgångar. Just och precis i spänningsläget mellan motgång och framgång blossar livsgnista upp i en eld av engagemang. Då säger man att något är "spännande". I gränslandet mellan motgång och framgång upplever du din vilja. Vilja = att vara levande. Att "inte bry sig om livet" är att vara viljelös. Det kanske signalerar en kulturell attityd om att vara tuff etc, men i mötet med verkligheten är det en svag hållning då attityden lämnar dig oförberedd och slutligen missgynnad, dels av din egen försummelse och dels av andra krafter. Somliga vill inte något särskilt och tycks acceptera dagen som den är och väntar ständigt på att "något roligt" ska hända. Inte sällan uppstår saker som vardags-depression och andra destruktiva tankegångar, just för att de inte har något att engagera sig med. Hur hitta sitt engagemang? Fråga dig vilka aktiviteter som gör dig till en bättre, starkare och smartare människa. Livsglädjen ligger inte i aktiviteten resultat utan i engagemanget i stundens nu. När du är genuint engagerad, på så vis att du känner livsglädje och spänning i det du gör, då kommer framgång av sig själv, och den framgången är personlig och sekundär den personliga utvecklingen du genomgår. Titta inte på andras framgång, fråga dig istället: hur har de förädlas, eller inte, som människa, genom att uppnå sin framgång.

Engagemang kanske kommer lätt för somliga tidigt i livet. Det har inte mycket värde om det senare avtar (vanligt på äldre dagar). Poängen är att hitta ett engagemang som inte avtar oavsett vad. För det behöver du en friktion som inte avtar. Livet i sig själv och att bibehålla vitalitet och att göra bra val i svåra omständigheter är all den friktion du behöver och tar aldrig slut så länge du är på jorden. Intressant är att om du inte själv väljer friktion, så kommer friktion att välja dig, förr eller senare.

8 november

Detta är ett beslut som ska hålla i minst 40 år, och är svårt att ändra om jag väljer fel. Därför har jag gjort tester och sammanställt statistik och analys av UUID. UUIDv4 är vinnaren. Sekventiella heltal var dessutom inte alltid effektiva. Min föregående idé visade sig sämst när jag testade.

Här är jämförelsen och nedan är en sammanfattning:

Testerna av MariaDB visar att UUIDv7 generellt presterar bättre än UUIDv4 och sekventiella heltal. Vid både insättning och uppdatering av poster visade UUIDv7 lägre läs- och skrivoperationer samt kortare exekveringstid. Sekventiella heltal var snabbast vid insättningar men krävde mer resurser för uppdateringar. Sammantaget ger UUIDv7 en balans av snabbhet och effektiv datahantering, medan sekventiella heltal ger hög insättningsprestanda men med högre resursanvändning vid andra operationer. UUIDv4 hade genomgående den långsammaste prestandan. (ChatGPT sammanfattning)


UUID är inte så dåligt som primär nyckel som folk på internet verkar tycka. MariaDB är optimerat för det till viss grad. Allt i databaser lagras i rader i tabeller. Databasen omplacera tabell-rader i B-träd för att underlätta sökning. Databasen delar upp tabell-rader intervaller som 0-10, 10-20 etc. Då kan den snabbare hoppa till segment 10-20 om den söker efter 15 och skippa söka föregående. UUID har stor slumpmässighet och gör trädet fragmenterad, men databasen har vissa optimeringar för det. UUIDv7, i kontrast till UUIDv4, undviker vissa problem med sin sekventiella tidsbundna natur.

UUIDv4/7 finns i ny version av MariaDB. Installera MariaDB > 11.7 för UUIDv4(). Måste installera manuellt. Den är för ny. Inte än i paketsystemet.

UUIDv4 - MariaDB Knowledge Base

Vill ha den för att köra prestanda test med UUIDv4, då jag funderar på att välja den. Ska installera den manuellt.

Nuvarande test med UUIDv1 är i samma klass som att använda sekventiell nummer, vilket förvånar mig då endel avråder från UUID som primär nyckel.

Håller på med predtandardtest med UUID och andra typer.

Test på server

Notera att jag enbart kommer använda seelct, insert, update, delete. Datan är krypterad, därför ingen användning för annat.

Inte det mest sofistikerade test, men visar ändå på vad som sker. Sätt in 100 rader, 100 omgångar, ta genomsnitts värden på det. Databas hade redan > 350 000 rader vid testet.

Test Type Duration Cache Hit Ratio Data Reads Data Writes Data Read (Bytes) Data Written (Bytes) Final Rows
repeat_insert (100,100) N/A N/A N/A N/A N/A N/A N/A
test_bigint_smallint 206,869 µs (avg) 86.00% 31,024 15,920 508,297,216 188,497,920 378,125
test_bigint_int 211,382 µs (avg) 85.79% 30,094 18,547 493,060,096 268,926,976 378,125
test_sequential_int 189,051 µs (avg) 94.08% 14,679 15,783 240,500,736 177,815,552 378,125
test_uuid 189,515 µs (avg) 92.08% 23,308 11,771 381,878,272 44,761,088 378,125

Av ovanstående är det iallafall fastställt att BIGINT varianterna inte är bra alls.

Samma mönster visas vid återkommande tester.

Förresten, är mitt test inte tillräcklig simulering av real-world-case. Det visar på bulk prestanda.

Jämförelse mellan test_uuid och test_sequential_int

Parameter test_sequential_int test_uuid Skillnad
Duration (µs) 189,051 189,515 test_uuid är marginellt långsammare
Cache Hit Ratio 94.08% 92.08% test_sequential_int har bättre cacheträffar
Data Reads 14,679 23,308 test_uuid har betydligt fler läsningar
Data Writes 15,783 11,771 test_uuid har färre skrivningar
Data Read (Bytes) 240,500,736 381,878,272 test_uuid använder mer läsdata
Data Written (Bytes) 177,815,552 44,761,088 test_uuid använder mycket mindre skrivdata

Aspekter: Innodb_buffer_pool_reads, Innodb_buffer_pool_read_requests, Innodb_data_reads, Innodb_data_writes, Innodb_data_read, Innodb_data_written.


Psykologi: Det är populärt att sträva att vara mer medveten och närvarande (därmed "mindfulness"-kurser etc). Om du verkligen faktiskt blir mer medveten kommer du antagligen inte gilla det, för du inser ansvaret du annars så behagligt flyr genom att just vara icke-medveten. Jag syftar inte på "medveten" så som i politik, där ägande av "rätt" åsikt felaktigt likställs med att vara medveten. Jag syftar exakt och enbart på att vara medveten om din egen vardag och de ansvar du har gentemot dig själv. Ignorans är ett opium.

Hur blir man mer medveten? En enkel väg är att skapa en morgonrutin där du först motionerar på något vis för att syresätta kropp och hjärna. Gör meditation 5-10 minuter minst där du fokuserar enbart på en upplevelse (ex upplevelse av andning i magen eller enbart observerar alla tankar som uppstår utan att engagera dem), detta för att minska tendens till impulsivitet; önskvärt eftersom impulsivitet föranleder dåliga och verklighetsfrånvända beteenden genom en slarvig och impulsiv värdering av det du har framför dig. Impulsiva beteenden är verklighetsfrånvända på så sätt de ignorerar konsekvenser. Verklighetens lagar straffar dig på lång sikt för dåliga beteenden (ex. livsstilsfaktorer påverkar hälsa). Du vänder blicken bort från den verklighet som gäller. Utöver motion och enkel meditation: Tänk också igenom dagen; vad du har framför dig. På detta sätt blir du mer medveten.

7 november

Att fatta beslut kan vara svårt. En viktig del är att samla in ett bra informationsunderlag (vad jag avser göra med databas-beslut). Jag tror man i det dagliga livet förbise det. Får du mental dimma, känner dig håglös och att något är övermäktigt, kan det bero på att du saknar information och därför inte kan fatta beslut som leder till handling. Hjärnan strejkar för den vet inte vad den har att välja mellan. Du måste söka mer detaljerad information tills hjärnan är nöjd. Då kommer beslutet med enkelhet. (Ibland kan vi dock inte ha tillräcklig information, men kämpa för det)


Testar hur det egentligen står till med olika modeller. Förvånad. Jag har antagligen rätt att databaser övertid förbättrar för UUID och det är ett bra framtidsval:

Enkel prestanda test olika typer databas

Är inte enligt med följande mer sofistikerade test, UUID Benchmark War | Ardent Performance Computing

Antingen har jag för primitivt test och andra förutsättningar, eller så är det som chatgpt säger, att MariaDB är optimerat bättre.

Blir att göra bättre test på servern.

Fortsätter utarbeta meta-valv. Går bra men...

Känner att jag för stunden har mediokert fokus. Inte önskvärt. Vad är lösningen? Behöver morgonrutin för att tänka igenom dagen på förhand? Behöver definitivt variera med motion. Detta är inte skoj. Måste ändra på mina (o)vanor. Måste faktiskt åstadkomma skillnad i vardagen. Tänk att det kan kännas motigt att göra rätt. Lösningen är såklart: Gör rätt. Om man inte kan göra rätt då?! Ja så är det. Somliga lyckas inte, och så är det bara. Man får fråga sig själv om man nöjer sig med det. Är man inte nöjd så fortsätter man att kämpa. Kampen ger energi och livsglädje. Via kamp är man engagerad. Engagemang är rörelse. Rörelse är liv. Det som stannar upp stagnerar. Stillastående vatten är inte bra. Gäller allt från kropp till själ. Sök ett problem att brottas med. Sök friktion. Sök något som är svårt. Sök något som frustrerar. Välkomna det som andra flyr. Vakna och förvänta dig att det kommer bli en svår dag, och om dagen är för lätt, hitta något som gör den svårare (det finns antagligen alltid en till ovana som du kan brottas med om du tittar noga).

Psykologi: Beslutsångest, igen gällande databas struktur. Var uppmärksam på språket för att beskriva upplevelser. Byt ut "beslutsångest" mot "starkt fokus". Du formas via hur du tänker kring upplevelser. Då säger någon att risk är att man förtränger. Att man snarare ska bekänna sin känsla och vältra sig i det. Nej. Kärnan är att byta ut en tanke mot en annan som svarar bättre mot verkligheten. Om istället du byter ut "beslutsångest" mot "starkt fokus", och du sedan ändå misslyckas, då har du inte gjort rätt. Det räcker inte att bara välja en behaglig affirmation som "jag klarar detta". Du måste också förena det med handling. Välj rätt tanake som uppmuntrar ett förhållningssätt som ger bättre resultat när du agerar efter det. Resultatet är det i slutändan som avgör värde av ditt förhållningssätt. Orden är nycklar till förhållningssätt, och förhållningssätt är vägarna som dörrarna öppnar till. Tänk på att sättet du uppnår ett resultat på, själva utförandet, är lika viktigt, därför att du är vad du gör och hur du gör det, inte vad du uppnår. Tendens i människan är att klä sig i result och andra attribut för att dölja för sig själv den man är (dvs. ens dag-för-dag förhållningssätt).

Därför... Jag är inte nöjd enbart med resultatet utan jag vill förbättras som person via mit engagemang, annars är jag inte nödj. Det betydder: bli starkare, snabbare, smartare i alla avseenden. Vad är ett resultat värt om du är den samma som innan du började? Det viktigaste resultatet är dig själv.

6 november

Sedär! Mitt dokumentstionssystem (denna sajt) som integrerar direkt med min telefon och dator, via Syncthing och Obsidian och NeoVim, fungerar utmärkt. Jag tänkte jag kanske kastat bort tid på detta, men nej! Jag behöver verkligen ett dynamiskt dokument-system för att kunna driva tankeverksamhet över lång tid och närsom häst. Upplever detta fungerar att strukturera tankar och ta saker vidare.

Bakom varje stort projekt finns en struktur för att synliggöra i ord det som tänks. Detta ska inte underskattas. Mental dimma uppstår när projektet är större än ditt när- och långtidsminne. Intelligents är att inse sina begränsningar och utarbeta verktyg och rutiner som kompenserar och täcker upp för dem.

Jag besegrar effektivt min mentala dimma från igår. Databas-design känns överväldigande. Varför? Databasen är ju relativt lite arbete, men inom några få rader med databas-kod ryms många svåra beslut. Databasen; en hörnsten i ditt bygge, är lätt att underskatta. Svårigheten är att fel val i databas leder till långsiktiga och lömska problem. Därför stor beslutsångest, där önskemål ställs mot behov, mot effektivitet, mot hanterbarhet, mot framförhållning.

Nu har jag kommit till beslut:

Ledorden som ska samsas är "anonymitet", "kryptering", och "effektivitet."

Beslut databas data typ

Beslut databas id-typ

Beslut autentifikation

På gång meta-valv


Bestäm databas-egenskaper. Databas utformas med kryptering och anonymisering. Kompromisser behöver göras.

Tidiga beslut är viktiga för man får leva med de möjligheter och begränsningar de medför. När jag designar något vill jag öppna så mycket som möjligt för framtida påbyggnad (skalbarhet), men samtidigt inte bjuda in oönskad komplexitet.

Vad är hemligheten till skalbar design? Som vanligt: modulärt, lösa kopplingar mellan komponenter (dvs ej beroende av varandra så ex. en komponent kan uppdateras/bytas ut utan att bryta andra komponenter). Dependency injection, "Design Patterns", etc.

Istället för att förutse alla framtida behov, gör det istället lätt att utöka. Check ✅ på det. Skapa inte strukturer för funktioner du ej behöver. Men (!) problemet är dock att veta hur man skapar strukturer som lätt låter en utöka med nya funktioner i framtiden. Dålig design gör det svårt att utöka.

Såklart kan jag göra bra moduler. Problemet är på högre nivå, när moduler ska samverka. Där uppstår samma problem med inflexibel eller överflexibel kod, men på högre nivå.

Förslaget är gränssnittsdriven design, och abstraktion. Problemet är att abstraktion lätt tas för långt så koden kan göra allt men det är komplicerat att göra något specifikt. (Vem har inte försökt göra ett spel "där man kan göra allt" när man först lär sig om programmering.)

Fokusera domänspecifikt: vad är det konkreta användarområdet. Gör sedan ett bra gränssnitt för det, och bara det. Lösningen tycks vara att andra komponenter kan lita på modulen via en tydlig bild av modulen gör, snarare än att modulen skulle kunna anpassa sig efter andra moduler spridda önskemål. Det är när en modul ska börja försöka kompletera och därmed integrera med andra moduler som oönskad komplexitet uppstår. (Då börjar modulen "läcka" funktionalitet och beroende mellan läcka-från och läcka-till uppstår.)

Undvik lägg in extra funktioner i gränssnittet som är till för att möta specifika moduler krav. Fokusera enbart på en sak oberoende. Gör modulen specifik, inte allmän. Moduler behöver inte bry sig om att kommunicera med varandra, utan skapa en orkestrerings-struktur (gör jag i js-delen, så där får det åt rätt håll)

Genom att hålla varje modul fokuserad på sin kärnfunktion och undvika att ge efter för andras önskemål, minskar du komplexiteten och skapar en design där modulerna är enkla, isolerade och pålitliga. Detta är grunden för en hållbar, modulär arkitektur som kan skalas utan att bli svårhanterlig. (chatgpt)

5 november

Tidigare investerat börjar nu ge nu resultat. Som jag längtat efter det, och som jag oroat mig om jag ens kommer uppnå hacker-stil-nivå på min Linux effektivitet. Att gå från okunnig till handlingskraftig i Linux är inte trivialt. Min partner sa dock "när jag frågar vad du gör på datorn säger du alltid att du gör matsidan, men när jag går till matkalkyl.se ser jag ingenting nytt". Det är en väldigt bra reflektion. Som redogjort för i nyhetsbrevet har allt handlat om ett massivt projekt att lära mig och att anpassa Linux som jag bytte till av nödvändighet och att mk-servern ska köra det (och kör denna sida).

Vanligtvis har man en programmering-editor (IDE) och du skapar din app där.

Matkalkyl är en internet tjänst som ska köras på en egen Linux-server, varav servern också måste utvecklas. Att utveckla och hantera servern kräver att jag kan orientera mig i Linux miljön. Ett vanligt IDE (som VS Code) är inte tillräckligt (och SSH plugin är inte tillräckligt), utan jag behöver också verktyg för att navigera och hantera servern som på liknande vis som jag gör med ett app-projekt.

Jag inser detta eftersom det är en verklighet jag nu lever, då jag har spenderat tid med att utveckla just ett sådant system som täcker påde app-programmering och server-konfiguration. Jag svingar mig mellan programkod och system-kataloger, likt Tarzan i djungeln. Linux är, dessutom, liksom ljungen fyllt av faror och vackra fenomen.

Det kan inte underskattas: Linux sträcker ut ditt korttidsminne till bristningsgränsen då ett icke-anpassat system ger för mycket att hålla reda på, hämnas på dig för ogenomtänkta lösningar som du glömt att du gjorde men som nu skapar problem för dig som du inte vet vart i djupet de gömmer sig, och lämnar dig i förtvivlan, system-haveri och självömkan såvida du inte uppfinner en metod som fungerar för dig.

Man måste arbeta hårt för att skapa egna verktyg (ex. gärna egna nvim plugins) och lära sig befintliga lösningar (telescope, etc) som man behöver för att överleva i Linux. Dopamin-kicken av att lyckas med detta är dock enorm. Att gå från terminal via recovery-usb till att ha valt varje komponent är en bedrift.

Mina fingertoppar dansar nu på tangentbordet i takt med retro-spel-musik, medan jag bemästrar datorteknologins urkraft. Det är nästintill en religiös upplevelse, stundom, och jag undrar om inte guden Tuxidon slutligen har varit tvungen att accepterat mig som en äkta Linux-nörd. (Tux = Linux maskot)

(OBS, texten utgår från terminal-baserad Linux vilket skiljer från desktop-Linux. Även om grafiska gränssnitt kompletterar terminal-baserat så är det oftast bara en fönsterhanterare som används och inte en fullskalig desktop-miljö)

4 november

Börjar se över planen för datsbasen.

Mestadels nöjd, men...

Höga ambitioner för databasen. Känsla av överväldigande. En känsla av att inte se sammanhang och implikationer av tänkta val. Mental oro och en mental dimma. Suttit för länge utan paus? Hjärnan luras.

Vad är bästa strategi i dessa situationer när hjärnan upplever ogrundad rädsla?

Lösning: gör alltid något fysiskt (jogga lätt etc) för att avbryta hjärnans löst grundade fantasier. Forcera sedan eller samtidigt ett fokus på analys och steg för steg plan. (OBS, gör inte bara något konkret som att sortera porslin, för hjärnans fixering på mental dimma bryts inte då, ditt mentala måste dras ner i det konkreta igen, dvs ner i kroppen, och därför gör något som involverar rörelse och direkt engagemang med vad som är framför dig).

Mental dimma är förenat med den förföriska lockelsen till passivitet, och dess broder som heter "Verklighetsflykt" lockar dig att vända blicken bort från det du har framför dig och det du först fokuserade på. Ge aldrig upp ditt fokus och sitt mål pga svaghet. Ge bara upp ett fokus och ett mål om du sakligt har värderat det som icke värdefullt. Ändra aldrig mål i stunden.

Rationellt sett finns inget problem, så varför upplever jag farhågor. Kanske för att:

Jag brukar först tänka ut vad jag vill ha oavsett hur det ska lösas, sedan har jag svårt att acceptera något annat än det jag föreställt mig, även om det är svårt att lösa. Därför uppstår rädsla, för jag befarar att jag tagit mig an ett övermäktigt mål. Varför ska "övermäktigt" vara en avtändande faktor? Bli lite tuffare och inse att du är beredd att kämpa och göra motstånd för att brotta ner problemet. Omsvep dig inte med några andra alternativ. När du andas och lever "kamp" är du fri att välja vilken väg du vill. Bättre att välja det svåra och misslyckas, än att fly det svåra och lyckas med det mediokra. Låt inte svaghet styra vad du väljer. Kamp har också en själsligt renande effekt då det du kämpar emot enbart ger vika när du raderat alla de tillkortakommanden som gör dig ovärdig resultatet. Via en stadig vilja bemästrar du motståndet och ömsar dina svagheter, likt en orm ömsar skin. Du ska också vara misstänksam gentemot allt du inte förtjänat genom dina egna val och ansträngningar, eftersom lätta framgångar förföriskt lockar dig att börja förakta det som är svårt, varav du slutligen lever i fångenskap, omringad och instängd av allt som är svårt.

Hursomhelst... Nuvarande plan behöver ang. databas behöver vägas mot andra behov.

3 november

Bra exempel för att förstå skillnad på Linux och Windows. I Windows finns det en knapp nere i höger hörn för att byta tangentbord-språk, ex från engelska till svenska och tillbaka.

I Linux (terminal-centrerat) har du ett kommando för det. Vill du ha en knapp så får du göra den själv. Jag gör knappen Alt+F11 för det.

Det är ett trivialt exempel som illustrerar principen som är genomgående för Linux-världen )även om enklare alternativ också existerar).

Nackdelen är att du får skapa allt själv. Fördelen är att att det blir otroligt effektivt och anpassat efter dig själv.

2 november

...

1 november

...