Skip to main content
Guus Bosman.nl

Search form

Main menu

  • Home
  • About Guus
  • Books I'd like to read
User Menu
  • Log in

Een kalender-app met Codex

Monday, October 19, 2026

De afgelopen week heb ik geëxperimenteerd met de Codex-app van OpenAI en een gezinskalenderapp gebouwd. Het was een geweldige manier om meer te leren over het ontwikkelen van AI-software, en het resultaat is een handige app voor ons gezin.

De app draait op GCP en vervangt een gedeeld document dat we al jaren gebruiken (hoewel het nog steeds naar PDF kan worden geëxporteerd in het oude formaat). Hij is meertalig, importeert automatisch agenda-feeds uit verschillende bronnen, zoals de voetbalteams en de Bulgaarse school, en doet vrijwel alles wat ik ervan verwachtte.

Codex met GPT-6.1 Sol

Ik heb voornamelijk GPT-6.1 Sol Medium gebruikt, wat geweldig werkte. In de beginfase heb ik ook Astra geprobeerd, en dat was uitstekend, maar het verbruikte te veel tokens voor mijn ChatGPT Plus-abonnement van $20 per maand. Volgens mijn eigen schatting heb ik voor deze app ongeveer 10 miljoen tokens gebruikt; de exploitatiekosten van GCP zouden waarschijnlijk hooguit $3 per maand bedragen.

Codex werkte ongelooflijk zelfstandig. Het besteedde regelmatig 10–15 minuten aan coderen, testen en het oplossen van problemen zonder enige input van mij. Dat is heel anders dan het werken met AI in VS Code nog maar zes maanden geleden, toen ik nog veel meer begeleiding moest geven.

Het grappige is dat ik de architectuur van de app nauwelijks ken. Ik weet dat het een OCI-container met 1 vCPU is waarop Debian draait in Google Cloud Run, maar Codex heeft alle GitHub-buildpijplijnen en -implementaties voor mij opgezet. Ik heb Codex wel behoorlijk wat tijd laten besteden aan beveiligingsscans en het bouwen, en aan het automatisch ophalen van patches enz.

Het is gewoon verbazingwekkend om te zien hoe snel alles zich ontwikkelt.

  • Read more about Een kalender-app met Codex
  • Log in to post comments

Paneldiscussie in Alpharetta

Friday, May 22, 2026

Het was goed om het Alpharetta-team deze week te ontmoeten. Ik nam deel aan een panel dat goed werd ontvangen.

  • Read more about Paneldiscussie in Alpharetta
  • Log in to post comments

Migratie naar Drupal 11 voltooid

Sunday, January 11, 2026

Ik heb de site omgezet naar een nieuwe Drupal-versie. Ik gebruik Drupal 7 al een paar jaar, maar de ondersteuning is een tijdje geleden gestopt en toen ik dit weekend wat tijd had, heb ik de upgrade uitgevoerd.

Dit was de eerste upgrade waarbij ik ChatGPT kon gebruiken -- het was erg nuttig.

De site draait nu op een nieuwe EC2 instance, met nieuwe monitoring en automatische scripts. Ik ben gestopt met Amazon RDS -- het was overkill voor wat ik nodig had en te duur. In plaats daarvan draai ik alles weer op een enkele EC2-instantie, website en database, en het werkt goed.

  • Read more about Migratie naar Drupal 11 voltooid
  • Log in to post comments

30X more signal power

Sunday, November 23, 2025

Last year I switched over to T-Mobile 5G after months of back-and-forth with Comcast. They simply couldn’t resolve the reliability issues on our street. I was hesitant at first, but the 5G connection has been excellent. And to state the obvious: reliable internet matters a lot to me given the number of video presentations I do. I’m mostly in the office these days, but for video production, my home studio is still hard to beat.

For the six months I kept the 5G gateway in the basement while testing the signal, and once I was confident in its stability, I decided to give it a permanent (and better) home. Two electricians ran Ethernet to several rooms upstairs — a surprising amount of work, two floors up and across the house — but the result is fantastic.

I moved the modem to the upstairs room that’s closest to the T-Mobile antenna a few streets over — and the visual speaks for itself. The signal strength improved by about 15 decibels, a substantial boost that translates to roughly 30X more received signal power.

  • Read more about 30X more signal power
  • Log in to post comments

Using Prometheus, Grafana and Docker on a Raspberry Pi

Saturday, December 9, 2023

Our house has been experiencing intermittent internet issues. Our cable provider, Comcast, has come out a few times to take a look but they have not found the root cause yet.

I spent some time creating a dashboard for myself, so I could track the problem better. I installed Docker on a Raspberry Pi, and installed Prometheus, InfluxDB and Grafana plus custom scrapers for my Motorola modem. All this came out quite nicely.

The first chart shows packet loss -- I run a ping test every few seconds against a couple of internet targets. It's very clear that this connection is not clean.

The other charts show details from the modem. For example, when the Comcast engineer worked on my cables yesterday, it resulted in much higher Upstream Power -- which we thought might have resolved it, but sadly didn't.

  • Read more about Using Prometheus, Grafana and Docker on a Raspberry Pi
  • Log in to post comments

Generating Dutch language using Nescio's works and a GPT

Monday, June 12, 2023

I'm mostly done with the Natural Language Processing specialization and tonight I was playing around with a fun proof of concept written by Andrej Karpathy.

The proof of concept is a tiny transformer architecture, "GPT mini". Unlike its big GPT-3 and GPT-4 brothers, this tiny model is character based, not word based. The text I used are three short stories by author Nescio -- which, in fact, constitute his complete works, around 200k characters. I trained it for 20,000 iterations.

The source code and results are available on Github. The architecture uses an embedding size of 192, 6 attention heads and stacks 6 transformer blocks. The results in 2.71M parameters and the 20k iterations took around 15 minutes on an NVIDIA A100.

It's really fun to see how the model improves over time. Initially, the generated text is mostly random, but slowly but surely it starts to reproduce sentence structures and realistic looking words. Of course, with such a small corpus of 200k characters, the model will overfit the data and start to reproduce sentences from the source text -- but it's still cool to see.

After the first iteration

eun nOO nnp nepurK eued d$ptOd nK nt a a K t$utnKtaen Kate dt nd t,pten ap ean d, tpen pnr d K e eaKt nnndddette autaKpaateeu a KpK Kae e h$aKpa ha K tnO a n hatptn aae de antaKpnpptpeKdeddnt npoaupta tp ean hK t p Kao Kt ht p pndn tep nernn auKdtd hnO n ept nK o K eKn n Kapttu ndpt do ate tddon er n KtdnO ed$ ha nudK dtKadddaadtdeaadp p nK$pdteeta t out p tn en nOneKtKanuh an opon Kanee pe dp e d epaKteaKKra aadp n o Kedae eaoata e taeat n hpeuedpK p dn haa en eKedn auu K

After 500 iterations:

I, dat de burs een
heef op dat zei, haar mals dacht de zei vrijn en eeschaan. Wiltij haar zoef
ik op er haarmet van en om de stotjes de waaren in voereed, ik
kaneek z'n had over van wilderde doof toed doe hoeden?" Is in daar
wond een gaamen zest zou zoo van voeren, de del den van
al hij me heeme vand van gon draat op z'n voedene verkorgerd diet
koes opte hemt ond zoo ik geschadens wam op het zageend veellen dondje de eer de
dat naar de verral de van geschiller wijd en een datst een een
gendas a

After 1,000 iteration (training loss 1.54447) -- first mention of "Dora"

Is biesteren er zelfde hand
en geven wit zoo gehand. En wat zei ik zijn op nog meer, nieuw, dat wit was vuor. Hij
waren dat niks was maal, als nooiil met ze zoulven.

Maar dan dan tonden heelemalen, toent naar beziefdig heuis, over
dat den schragen. Dora i weg een meer neem. Een zei i een kleet blauwsten
was moest en knapplook best verschij, dan zooals wees in 't benait zinnen. Er wan
met wweet op deek van de leven en klampte over was gedrhouden, ondergal
weer en gelende sische en hoe of meer d

1500: train loss 1.34416 -- you can see that "Bavink" makes his appearance.

No. En toe kan- hij
dan dat zoo ook, dat ze 't, avonds herd over hem op hun trap
heugen, aan de wijlen of te zeggen. En op haar enoedig, vertielde zag z'n verschicht,
maar eenige schider tot zelf nog en dat heel greest om. En de boogen wat
niks meer zag hij met den handel nog waar boven.

En zei Bavink, wat ze zit wij van z'n beetjes heer met
een pijs af, die zien? En wier zag je heer aan weer anders en dat ze
oude hem. Het wezelfsleven viel was zoo veel gaan, dat i nog haar schoof ofdat,
ze wo

iter 3000: train loss 0.89607
Als-i in de steven lager daar gelezen,
met verlangd jaar er boven. Dan was ik er nergens in. Het was een
raam van hoog.

Op een ander hoofd stond er geweest. En toen ik daar goed was een tijd naar
uit een beetje stroomen en de somberhooge schitterenden van een
dichtertje en niet meer op. De overzij had ik gehad overalen,
dan moet Bavink op een meid voor de lantaarn geluiden, zag ze weer
een duidelijk leven zich neem.

Maar met de zaken heel en das 'm niet een dertje heelemaal in een den hand
va

iter 5500: train loss 0.46585
" En middag on-i ook heeft-i een
betrekking van hun mijn sigaren op een papieren, en toen ik boven
jelui de menschen om niet te houden. Ik ben ben de vrouw niet, maar
mijn gedachten zijn geeft tusschen zijn kleeren verdroeg en een wonderlijk
scht wend dan ons over uit den weg te lochten.

Onderwijl schreef i op z'n zomermiddag waren gestapt en Bavink had aan
gehad w. Z'n boekje leven van den groote gekosten voor dragen in 't huis
en van de Waalt soliabolone tafee en er kreeg naar 't water en dan

15500: train loss 0.23958 -- after 15k iterations, the training loss doesn't really decrease anymore.

7 mensche me schel zoo over boven huis bij de puilten? In een net verden. Ik keek
er naar niet bij over. De zon van die monu stilletjes en geen oogenblik gelijk. En
daarna had je dikke Jan ook weer, den toren van Zierikzee, nu in 't
kleine kuisje in
't water te razen. Daarnaast stond m'n troost bestaan. De treurwilg zij in een volksbuurt, waar weer zeiden in 't
alsterdampje en geen oogenblik 't zelfde. Eenen keer hield ze diep
ze niet verlegenheid zooals als i kleinste vasthiel en verlangen over

  • Read more about Generating Dutch language using Nescio's works and a GPT
  • Log in to post comments

Learning about Attention

Sunday, June 4, 2023

I've completed the first three courses of the Natural Language Processing specialization at Coursera, and started the fourth one today. I really enjoyed the the courses so far but this fourth course is the best part: learning about Attention.

The basic concept of this was introduced in 2014, three years later the famous "Attention is all you need" paper came out.

  • Read more about Learning about Attention
  • Log in to post comments

Continuous Bag of Words

Tuesday, May 23, 2023

With the rise of Large Language Models, I decided to dive into machine learning again and catch up on how these LLMs truly work. I'm following a course by Deeplearning.ai on Natural Language Processing.

I'm at the end of the second course and we're going through Continuous Bag of Words, which was part of the original word2vec algorithm that was so influential. It's really fun. The previous week was about n-grams, which was also nice to program with.

  • Read more about Continuous Bag of Words
  • 1 comment
  • Log in to post comments

Microsoft Certified Azure Fundamentals

Tuesday, February 1, 2022

I successfully completed a certification for Azure, the cloud offering from Microsoft.

I took the exam in our basement; it was strange to be on video all the time. But the process was nice and smooth.

  • Read more about Microsoft Certified Azure Fundamentals
  • Log in to post comments

Y2K

Saturday, January 4, 2020

A script I wrote a few years ago to help me with pictures on the website stopped working... It assumed every year started with 201, haha.

FoundPos := RegExMatch(clipboard, "^201[0-9][0-9][0-9][0-9][0-9].*\.[jJ][pP][gG]", FoundFileName)

  • Read more about Y2K
  • 2 comments
  • Log in to post comments

Pagination

  • Page 1
  • Page 2
  • Page 3
  • Next page
  • Last page