# Site Update 2025

<!-- category -- About, Updates -->
<datetime class="hidden">2025-11-30T12:00</datetime>
<pinned />
From 89 articles to 487 (including >80 totally new ones)!

Marraskuu on melkein ohi, joten ajattelin lisätä muutamia kohokohtia ja tietoa siitä, mitä olemme tehneet tässä kuussa.

## AI & LLM Deep Dive

Tämän kuun tärkein tavoite oli saada itseni ajan tasalle kaikista AI-kohuista ja ymmärtää aluetta paremmin. Olen ollut rakennuttaja lähes 30 vuotta, joten tykkään tehdä tätä joskus.

No niin, tulin hieman hulluksi. Tämän seurauksena kirjoitin lähes 40 artikkelia LLM:stä, RAG:stä, ONNX:stä, näköä ja niin edelleen...

### Semanttinen tiedustelusarja (10 osaa)

ASP.NET-sovelluksiin kattava syvällinen semanttisen haun ja tekoälykäyttöisten ominaisuuksien rakentaminen:

1. [Johdatus Semanttiseen tiedusteluun](/blog/semantidintelligence) - 13. marras
2. [Osa 1: Säätiön perustaminen](/blog/semantidintelligence-part1) - 13. marras
3. [Osa 2: Upotteet ja vektorivarasto](/blog/semantidintelligence-part2) - 13. marras
4. [Osa 3: Etsintäputken rakentaminen](/blog/semantidintelligence-part3) - 13. marras
5. [Osa 4: ONNX-integraatio](/blog/semantidintelligence-part4) - 13. marras
6. [Osa 5: Kehittynyt kysely](/blog/semantidintelligence-part5) Marraskuun 14. päivä
7. [Osa 6: Hybridihakustrategiat](/blog/semantidintelligence-part6) Marraskuun 14. päivä
8. [Osa 7: Suorituskyvyn optimointi](/blog/senmanticintelligence-part7) 15. marras
9. [Osa 8: Tuotannon käyttöönotto](/blog/semanticintelligence-part8) 16. marras
10. [Osa 9: Seuranta ja kunnossapito](/blog/semanticintelligence-part9) 18. marras
11. [Osa 10: Tulevaisuuden ohjeet](/blog/semanticintelligence-part10) 9. marraskuuta

### Asianajajan rakentaminen GPT blogiasi varten (8 osaa)

Rakentaa täydellisen RAG-pohjaisen chatbotin, joka voi vastata blogisi sisältöön liittyviin kysymyksiin:

1. [Osa 1: Arkkitehtuurin yleiskatsaus](/blog/building-a-lawyer-gpt-for-your-blog-part1) 12. marras
2. [Osa 2: Tietojen nauttiminen](/blog/building-a-lawyer-gpt-for-your-blog-part2) 12. marras
3. [Osa 3: Sulautettava sukupolvi](/blog/building-a-lawyer-gpt-for-your-blog-part3) 12. marras
4. [Osa 4: Vektorivarasto Qdrantilla](/blog/building-a-lawyer-gpt-for-your-blog-part4) 12. marras
5. [Osa 5: Kyselyn käsittely](/blog/building-a-lawyer-gpt-for-your-blog-part5) 12. marras
6. [Osa 6: Vastesukupolvi](/blog/building-a-lawyer-gpt-for-your-blog-part6) 12. marras
7. [Osa 7: UI-integraatio](/blog/building-a-lawyer-gpt-for-your-blog-part7) 12. marras
8. [Osa 8: Käyttöönotto ja skaalaus](/blog/building-a-lawyer-gpt-for-your-blog-part8) 12. marras
9. [Pilvivaihtoehtoinen lähestymistapa](/blog/building-a-lawyer-gpt-cloud-alternative) 12. marras

### RAG-perussarja

Käytännöllinen opas noutajasukupolveen:

1. [RAG Primer: Perusasioiden ymmärtäminen](/blog/rag-primer) 22. marras
2. [RAG Architecture Deep Sukellus](/blog/rag-architecture) 22. marras
3. [Käytännölliset RAG-sovellukset](/blog/rag-practical-applications) 22. marras
4. [Hybridihaku- ja indeksointistrategiat](/blog/rag-hybrid-search-and-indexing) 22. marras

### Muut AI/LLM-artikkelit

- [LLM API-integraatio](/blog/llmapi) - marras 2 - LLM-palveluiden sovellusliittymien rakentaminen
- [LLM API gRPC:llä](/blog/llmapigrpc) - Nov 6 - Korkean suorituskyvyn LLM-rajapinnat gRPC:llä
- [Luistelu- ja väliseinästrategiat](/blog/chunkingandcaching) - 6. marras - LLM:ien asiakirjakäsittelyn optimointi
- [Avalonia TinyLLM Chat](/blog/avalonia-tinyllm-chat) - 10. marraskuuta - Cross-platform -työpöytä LLM-chat-sovellus
- [Tehokas Alt Text Generation](/blog/efficient-alt-text-generation) - 20. marraskuuta - Visiomallien käyttö saavutettavuutta ajatellen
- [Omatoimiset Vector-tietokannat Qdrantin kanssa](/blog/self-hosted-vector-databases-qdrant) 23 marras - Oman vektorin DB:n käyttö
- [Semanttinen haku ONNX:llä ja Qdrantilla](/blog/semantic-search-with-onnx-and-qdrant) - 25. marras - Paikallisen semanttisen haun toteutus
- [Miksi kaupalliset tekoälyhankkeet ovat typeriä](/blog/whycommercialaiprojectsaredumb) 26 marrask. - Kriittinen katsaus AI-kohuun

Kirjoitin myös yli tusinan työkalua ja NuGet-paketteja (monia vielä odottamassa lopullista julkaisua) näet [Tänne päin.](https://github.com/scottgal/mostlylucid.nugetpackages). Paketit kuten [enimmäkseen lucid.llmalttext](https://github.com/scottgal/mostlylucid.nugetpackages?tab=readme-ov-file#mostlylucidllmalttext) on suunnattu ratkaisemaan ongelmia, joita minulla on ollut - tässä tapauksessa [Alt-tekstin tuottaminen kuville, joissa käytetään visuaalista LLM:ää](/blog/mostlylucid-llmalttext) (25. marrask.)

## ASP.NET-syvennykset

### ASP.NET putkistosarja (6 osaa)

ASP.NET-ydinpyyntöputken ymmärtäminen alusta alkaen:

1. [API-kontekstit](/blog/API-CONTEXTS) 5. marras - HttpContextin ja ystävien ymmärtäminen
2. [Palvelin ja isäntä](/blog/ASPNET-PIPELINE-PART2-SERVER-HOSTING) 9. marras
3. [Middleware Deep Sukellus](/blog/ASPNET-PIPELINE-PART3-MIDDLEWARE) 9. marras
4. [Kiertelyä ja päätekohtia](/blog/ASPNET-PIPELINE-PART4-ROUTING-ENDPOINTS) 9. marras
5. [Sovellusmallit](/blog/ASPNET-PIPELINE-PART5-APPLICATION-MODELS) 9. marras
6. [Edistynyt laajamittaisuus](/blog/ASPNET-PIPELINE-PART6-ADVANCED-EXTENSIBILITY) 9. marras
7. [Valtio pyyntöjen välillä](/blog/ASPNET-STATE-BETWEEN-REQUESTS) 9. marras

### Taustapalvelusarja

1. [Taustapalvelut Osa 1: Perusasiat](/blog/background-services-in-aspnetcore-part1) 27. marraskuuta
2. [Taustapalvelut Osa 2: Kehittyneet mallit](/blog/background-services-in-aspnetcore-part2) 27. marraskuuta

### Muut ASP.NET-artikkelit

- [OpenAPI Features in .NET 9](/blog/oprnapi-features) 5. marras
- [HTMX ASP.NET-ydinosuudella](/blog/htmx-aspnetcore-partials) - 28. marraskuuta
- [SEO:n korjaaminen ASP.NET-ydinblogeja varten](/blog/fixing-seo-for-aspnetcore-blog) 26. marras
- [EF:n muuttoliikkeet oikealla tavalla](/blog/efmigrationstherightway) 23. marras
- [Nykyaikainen CQRS ja tapahtumakilpailu](/blog/moderncqrsandeventsourcing) - 13. marras
- [Vastapaineet jonotusjärjestelmissä](/blog/backpressure-queueing-systems) 23. marras
- [SignalR Demo Guide](/blog/signalr-demo-guide) - 4. marras
- [Turvallinen Chat Demo](/blog/securechatdemo) 11. marraskuuta

## Testaaminen ja laatu

- [HttpClient-testaus ilman Mocksia](/blog/httpclient-testing-without-mocks) - marras 29 - Todelliset HTTP-testistrategiat
- [PuppeteerSharp E2E -testi](/blog/puppeteersharp-e2e-testing) - Nov 27 - Selainautomaation testaus
- [Näyttelijän E2E-testi](/blog/playwright-e2e-testing) - 27.11. - Moderni E2E-testikehys
- [CSX:n käyttö testauksessa](/blog/using-csx-for-testing) 26.11. - C#-kirjoitus testiskenaarioita varten

## Docker & DevOps

- [Docker Development Deep Sukellus](/blog/docker-development-deep-dive) 9. marras
- [Docker Swarm Cluster Guide](/blog/docker-swarm-cluster-guide) 12. marras
- [Frontend Building -putken modernisointi](/blog/modernising-frontend-build-pipeline) 11. marraskuuta

## Sivusto

Osana tekoälytutkimustani päivitin sivustoa myös käyttääkseni RAG-lähestymistapaa blogikirjoitusten hakuun. Tässä käytetään vektoritietokantaa (Qdrant) ja ONNX:ää (paikallinen, CPU), joka mahdollistaa blogikirjoitusten semanttisen haun. Se mahdollistaa myös älykkään 404-käsittelyn (katsomalla tulevia pyyntöjä ja sovittamalla ne olemassa oleviin viesteihin).

Aiheeseen liittyviä artikkeleita:

- [Sota 404.](/blog/the-war-on-404) - 23. marras - Älykäs 404 käsittely semanttisella sovituksella
- [Suodata viivan kehitys ja ongelmat](/blog/filterbarprogressandissues) 10. marras
- [Suodata viiva edistys- ja vikoja](/blog/filter-bar-progress-and-bugs) 10. marras

### Merenneitokaavion parannukset

Julkaisin [npm-paketti](https://www.npmjs.com/package/mostlylucid-mermaid) Parannetut merenneidon kaaviot:

- [Merenneito JS Deep Dive](/blog/mermaid-js-deep-dive) 9. marras
- [Merenneitokaavioiden parantaminen PanZoomin ja Exportin avulla](/blog/enhancingmermaiddiagramswithpanzoomandexport) 7. marras
- [NPM:n Merenneidon parannuksien kustantaminen](/blog/publishingmermaidenhancementsnpm) 7. marras

### Muita sivustopäivityksiä

- [Hakemistoavustin](/blog/pagingtaghelper1) 7. marras - Räätälöinnin apulainen
- [Markdig Hae laajennus](/blog/markdigfetchextension) - Nov 7 - Ulkoisen sisällön hakeminen Markdownista

## EasyNMT → enimmäkseen lucid-nmt

Joten nyt olen käyttänyt erinomaista [EasyNMT](https://github.com/UKPLab/EasyNMT) Tämän sivuston virkojen kääntämiseksi alkuperäinen hanke on kuitenkin bitrotoitu. Se rahoitettiin EU:n apurahalla tutkimushankkeena, joten sitä on nyt laiminlyöty muutaman vuoden ajan.

Joten minä [teki omansa](https://github.com/scottgal/mostlyucid-nmt)Dockerin kuva `mostlylucid-nmt` On täysin takaperin yhteensopiva BUT lisää toni toiminnallisuutta ja luotettavuutta ominaisuuksia, kuten:

- Monimalliset varamallit - automaattisesti takaisin vähemmän suorituskykyisiin malleihin, jotta kieliparien välillä saadaan max-käännös
- Muistinhallinta - hallinnoi omaa muistiaan (esim. evict, lataus) niin, että se pystyy pyörittämään Forever-ohjelmaa luotettavasti
- Parannettu GPU-rakenne TON-konfiguraatiolla
- ARM64-versiot (se CAN ajaa Pi:llä)
- Ja paljon enemmän noin luotettavuus, lauseen jakaminen, marketdown käsittely jne.

Aiheeseen liittyviä artikkeleita:

- [enimmäkseen lucid-nmt Complete Guide](/blog/mostlylucid-nmt-complete-guide) 8. marras
- [Miten hermokonekäännös toimii](/blog/how-neural-machine-translation-works) 9. marras

## enimmäkseen lucid.co.uk Content Resurrection

Kun aloitin tämän blogin viime vuonna, tavoitteenani oli saada KAIKKI vanhat sisältöni (2004-2010) sivustoltani enimmäkseen lucid.co.uk muutti tänne.

Tämä oli kysymys, koska olin menettänyt tiedot vuosien varrella, joten kirjoitin [Arkisto.Org](https://archive.org/) Tiedonkeruutyökalu, joka sai vanhan sisällön, ammensi sen, määräpäivät, kategoriat jne. uuteen muotoon, ja nyt ensimmäiset blogikirjoitukseni ovat nyt ohi [täällä](/blog/538).

- [Vanhan blogin sisällön palauttaminen](/blog/oldblog) 24. marras - Koko tarina sisällön talteenotosta
- [Herätys](/blog/reanimation) 24. marras - Vanhan sisällön herättäminen henkiin

Tämä tarkoitti myös tonneittain päivityksiä sivustolle, jotta se voisi käsitellä lähteviä rikkinäisiä linkkejä; se luo automaattisesti Archive.org-linkkejä vanhoille viestille samaan aikaan alkuperäisen artikkelin kanssa.

## Claude-koodin käyttö

Yksi BIG-tuottavuuden voitoista tässä kuussa oli [Claude-koodi](https://docs.anthropic.com/en/docs/build-with-claude/code-assistance)Sen avulla sain valmiiksi DOZENS-ohjelman keskeneräisiä artikkeleita, jotka olivat olleet esillä luonnoksissa.

- Koodiesimerkkien täyttäminen
- Teknisten käsitteiden laajentaminen
- Virheiden korjaaminen näytekoodissa
- Testiskenaarioiden luominen
- Kattavan sarjan kirjoittaminen johdonmukaisella rakenteella

Se on kuin väsymätön pariohjelmoija, joka ei koskaan ärsyynny "vain yhdestä asiasta".

## Mielipide & Essay- kappaleita

Muutama ei-tekninen kappale ohjelmistojen kehittämiskulttuurista:

- [Agile Standups: Seremoniavero](/blog/agile-standups-ceremony-tax) 21 marras - Miksi päivittäiset standupit tuhlaavat usein aikaa
- [Laita se toimimaan, tee siitä sitten kaunis](/blog/makeitworkthenmakeitpretty) 19 marras - Iteratiivisesta kehityksestä
- [Hissikyykky](/blog/elevatorpitch) - marras 19 - Teknisten ideoiden välittäminen
- [Koodilla leikkiminen: Tehokas agile](/blog/playing-with-code-efficient-agile) 23. marras
- [Ominaisuusnäytösten kirjoittaminen](/blog/writingfeaturespecs) 11. marraskuuta
- [Sana lisenssistä](/blog/awordonlicensing) 23. marras
- [Piilotetut järjestelmät](/blog/hiddensystems) Näkymätön infrastruktuuri, josta olemme riippuvaisia

### DISE-sarja (Developer Industry Software Engineering)

Joitakin ajatuksia ohjelmistoalasta:

- [DISE: Vain Voyager](/blog/disejustvoyager) 24. marras
- [Osa 2: Oppisopimuskoulutus](/blog/blog-article-cooking-dise-part2-apprenticeships) 18. marras
- [Osa 3: Epäluotettavat jumalat](/blog/blog-article-cooking-dise-part3-untrustworthy-gods) 20. marras

## Hauskoja juttuja

- [Rampage](/blog/rampage) 8. marras - Matka muistojen kaistalle

## Mitä seuraavaksi?

Rentoudun hieman...Minulla on yhä artikkeleita kaikista vielä julkaisemattomista nyhtöpaketeista, mutta olen tyytyväinen tekoälytietooni toistaiseksi.

Joulukuu todennäköisesti näkee minut:

- Lisää NuGet-paketteja, joita olen työstänyt
- Semanttisten hakuparannusten jatkaminen
- Lisää aluetukikokeiluja

Kiitos, että luit, nähdään joulukuussa!