Geek Bites   Archief   

Gemini CLI: De kracht van Google AI vanuit je terminal

Iedere developer heeft wel eens gehoord van Gemini: Google's krachtige AI-model dat kan helpen bij het schrijven van code, beantwoorden van vragen en het oplossen van complexe problemen.

Gemini is een multimodaal AI-model van Google dat tekst, code, afbeeldingen en andere content kan begrijpen en genereren. Het is ontworpen om developers en gebruikers te helpen bij verschillende taken, van het schrijven van code tot het beantwoorden van complexe vragen.

Van browser naar CLI

Gemini is natuurlijk beschikbaar via de webinterface op gemini.google.com, maar voor developers die veel tijd in de terminal doorbrengen, is er nu een nog handiger oplossing: gemini-cli.

Gemini CLI is Google's officiële command-line interface voor het interacteren met Gemini AI-modellen direct vanuit je terminal. Voor developers die gewend zijn aan een CLI-workflow kan dit een enorme productiviteitsboost betekenen.

Net zoals je met git je versiecontrole regelt, kun je nu met gemini AI-functionaliteit integreren in je dagelijkse development workflow. Het mooie is dat je hierdoor AI-functies kunt combineren met andere command-line tools via pipes en scripting.

Waarom gemini-cli gebruiken?

De belangrijkste voordelen van gemini-cli ten opzichte van de webinterface zijn:

  • Snelheid: Geen browser nodig, direct vanuit je terminal
  • Integratie: Combineer met andere CLI-tools via pipes
  • Scripting: Automatiseer AI-taken in shell scripts
  • Focus: Blijf in je development omgeving zonder context switching
  • Batch processing: Verwerk meerdere files of inputs in één keer

Installatie en configuratie

Installeren via npm

Gemini CLI is beschikbaar als npm package en kan eenvoudig globaal geïnstalleerd worden:

$ npm install -g @google/gemini-cli

Na installatie kun je controleren of alles goed is gegaan:

$ gemini --version

Output:

0.1.5

Authenticatie configureren

Om gemini-cli te kunnen gebruiken moet je authenticeren met Google's AI services. Er zijn verschillende authenticatiemethoden beschikbaar:

Optie 1: Inloggen met je Google account (aanbevolen)

De eenvoudigste manier is inloggen met je persoonlijke Google account. Bij de eerste keer opstarten van gemini-cli wordt je automatisch doorgestuurd naar een webpagina voor authenticatie. Na authenticatie worden je credentials lokaal opgeslagen, zodat je niet elke keer opnieuw hoeft in te loggen.

Dit geeft je automatisch toegang tot:

  • Tot 60 model requests per minuut
  • 1.000 model requests per dag

Let op: Voor Google Workspace accounts of bepaalde andere gevallen moet je mogelijk een GOOGLE_CLOUD_PROJECT environment variable instellen.

Optie 2: Google AI API key

Voor geavanceerd gebruik of hogere limieten kun je een API key gebruiken. Deze kun je verkrijgen via Google AI Studio.

Er zijn twee manieren om je API key te configureren:

API key via environment variable:

$ export GEMINI_API_KEY="jouw-api-key-hier"

API key via settings bestand:

Gemini CLI maakt automatisch een configuratiemap aan in ~/.gemini/. Je kunt hier een settings.json bestand aanmaken:

$ mkdir -p ~/.gemini
$ echo '{"auth": {"type": "api_key", "api_key": "jouw-api-key-hier"}}' > ~/.gemini/settings.json

Optie 3: Vertex AI

Voor enterprise gebruik kun je ook authenticeren via Vertex AI met Google Cloud credentials.

Aan de slag met gemini-cli

Basis gebruik

De eenvoudigste manier om gemini-cli te gebruiken is door een vraag direct als argument mee te geven:

$ gemini -p "Wat is de hoofdstad van Nederland?"

Output:

De hoofdstad van Nederland is Amsterdam.

Input via stdin

Een krachtige feature is het gebruik van pipes om input door te geven:

$ echo "Leg uit wat deze JavaScript functie doet: function fibonacci(n) { return n <= 1 ? n : fibonacci(n-1) + fibonacci(n-2); }" | gemini

Dit is vooral handig voor het analyseren van code files:

$ cat script.js | gemini -p "Analyseer deze code en geef verbeterpunten"

Verschillende AI-modellen gebruiken

Gemini CLI ondersteunt verschillende modellen. Het standaard model is gemini-2.5-pro, maar je kunt ook andere modellen specificeren:

$ gemini -m "gemini-1.5-flash" -p "Maak een simpele HTML pagina"

De beschikbare modellen zijn:

  • gemini-2.5-pro (standaard) - Meest krachtig voor complexe taken
  • gemini-1.5-flash - Sneller voor eenvoudige taken
  • gemini-1.5-pro - Balans tussen snelheid en kwaliteit

Geavanceerde functies

File context meegeven

Een van de krachtigste features is het meegeven van file context. Hiermee kan Gemini de inhoud van je project begrijpen:

$ gemini -a -p "Analyseer mijn project en geef feedback op de code architectuur"

De -a of --all_files flag zorgt ervoor dat alle files in de huidige directory worden meegenomen als context.

Let op: Wees voorzichtig met deze optie in grote projecten, aangezien dit veel tokens kan kosten.

Sandbox modus

Voor veilige code-uitvoering biedt gemini-cli een sandbox modus:

$ gemini -s -p "Schrijf een Python script dat de Fibonacci reeks berekent en voer het uit"

De -s of --sandbox flag zorgt ervoor dat gegenereerde code veilig wordt uitgevoerd in een geïsoleerde omgeving.

YOLO modus

Voor wie wat avontuurlijker is, is er de YOLO (You Only Live Once) modus. Deze accepteert automatisch alle acties die Gemini voorstelt:

$ gemini -y -p "Refactor mijn JavaScript code en pas de wijzigingen toe"

Waarschuwing: Gebruik YOLO modus alleen in projecten waar je een backup van hebt, aangezien wijzigingen automatisch worden toegepast.

Debug modus

Voor ontwikkelaars die willen begrijpen wat er onder de motorkap gebeurt:

$ gemini -d -p "Analyseer deze error message"

Debug modus geeft meer informatie over de API-calls en verwerkingsprocessen.

Praktische voorbeelden

Code review automatiseren

$ git diff HEAD~1 | gemini -p "Review deze code changes en geef feedback"

Dit combineert Git's diff output met Gemini's code review capabilities.

Documentation genereren

$ cat src/utils.js | gemini -p "Genereer JSDoc commentaren voor deze functies"

Error debugging

$ npm test 2>&1 | gemini -p "Analyseer deze test errors en geef oplossingsrichtingen"

Commit messages verbeteren

$ git diff --cached | gemini -p "Schrijf een duidelijke commit message voor deze changes"

Shell integratie

Bash alias maken

Voor veelgebruikte commando's kun je handige aliases maken:

# In je ~/.bashrc of ~/.zshrc
alias gai="gemini -p"
alias gcode="gemini -p 'Review deze code:'"
alias gexplain="gemini -p 'Leg uit:'"

Nu kun je eenvoudig gebruik maken van:

$ cat complex-algorithm.js | gcode
$ gexplain "wat doet async/await in JavaScript?"

Script integratie

Gemini CLI werkt uitstekend in shell scripts:

#!/bin/bash

# AI-powered commit message generator
generate_commit_message() {
    local diff_output=$(git diff --cached)
    if [ -z "$diff_output" ]; then
        echo "Geen staged changes gevonden"
        return 1
    fi

    echo "$diff_output" | gemini -p "Schrijf een heldere commit message voor deze changes. Gebruik conventional commits format."
}

# Gebruik
generate_commit_message

Tips en best practices

1. Context is koning

Hoe meer relevante context je meegeeft, hoe betere resultaten je krijgt. Gebruik file context slim:

# Specifieke files meegeven
$ gemini -p "Analyseer deze component" < src/components/UserProfile.jsx

2. Pipe chains gebruiken

Combineer meerdere tools voor krachtige workflows:

$ git log --oneline -10 | gemini -p "Analyseer deze commit history en geef feedback op de commit messages"

3. Output formatting

Voor gestructureerde output kun je specifiek om formaten vragen:

$ gemini -p "Maak een checklist voor code review in markdown format"

4. Model selectie

  • Gebruik gemini-1.5-flash voor snelle, eenvoudige taken
  • Gebruik gemini-2.5-pro voor complexe analysis en code generatie
  • Test verschillende modellen om te zien wat het beste werkt voor jouw use case

Troubleshooting

Veelvoorkomende problemen

API Key issues

Error: Please set an Auth method in your .gemini/settings.json

Oplossing: Controleer of je API key correct is geconfigureerd:

$ cat ~/.gemini/settings.json
$ echo $GEMINI_API_KEY

Rate limiting

Error: Rate limit exceeded

Oplossing: Wacht even voordat je het opnieuw probeert, of gebruik een lichter model zoals gemini-1.5-flash.

Geen internet connectie

Error: getaddrinfo EAI_AGAIN

Oplossing: Controleer je internetverbinding en firewall instellingen.

Toekomst van AI in development

Gemini CLI is meer dan alleen een handige tool - het vertegenwoordigt een verschuiving naar AI-geïntegreerde development workflows.

Door AI-functionaliteit direct in je terminal te brengen, verdwijnt de drempel om AI te gebruiken voor dagelijkse development taken. Het wordt net zo natuurlijk als het gebruiken van grep, awk of andere Unix-tools.

De integratie met bestaande command-line tools via pipes en scripts opent de deur naar volledig geautomatiseerde, AI-aangedreven workflows. Denk aan:

  • Automatische code reviews bij elke commit
  • Intelligente error analysis in CI/CD pipelines
  • AI-gegenereerde documentatie updates
  • Smart refactoring suggestions

Done!

Gemini CLI brengt de kracht van Google's AI direct naar je terminal. Door de combinatie van eenvoud, kracht en integratiemogelijkheden is het een waardevolle toevoeging aan elke developer's toolkit.

Of je nu snel een code snippet wilt laten uitleggen, een complexe algorithm wilt analyseren, of je hele development workflow wilt automatiseren - gemini-cli maakt het mogelijk.

Deze blog post is trouwens ook een klein experiment - geschreven met behulp van Copilot om te kijken hoe AI kan bijdragen aan technische content. Een mooie synergie tussen mens en machine!

Tijd om je terminal wat slimmer te maken!

Nuttige links

Laravel & Docker

Sander Elderman

github.com/sanderelderman

Als webdeveloper kan het je tegenwoordig haast niet ontgaan zijn, het Laravel framework. Een populair framework geschreven in PHP voor het ontwikkelen van web applicaties. Met Laravel kan je zowel een losse API als een complete full-stack applicatie ontwikkelen. Zo heeft Laravel een heleboel standaard functionaliteiten zoals een ORM, dependency injection, queues en scheduled jobs. Daarnaast kan er met een extra package en enkele commands een compleet authenticatie systeem gegenereerd worden. Hierdoor is het een zeer geschikt framework voor de snelle realisatie van een proof of concept applicatie.

Echter komen met al deze functionaliteiten ook de nodige tools bij kijken die je moet installeren op je machine. Zo heb je in elk geval PHP en Composer nodig en ontkom je eigenlijk ook niet aan een database als MySQL. Als de applicatie eenmaal iets uitgebreider wordt kom je ook al snel dingen tegen als NPM, NodeJS en Redis voor bijvoorbeeld het maken van een WebSocket server of het compileren van frontend assets. Uiteindelijk zorgt dit ervoor dat iedereen in het team en op de productie omgeving vanalles moet installeren en vervolgens ook nog dezelfde versie moet draaien. Hierdoor loop je al snel het risico dat je het welbekende probleem tegenkomt: "maar op mijn machine werkt het gewoon hoor".

But it works on my machine

Docker? Eerst nog even iets anders

Als oplossing voor dit probleem hadden de developers van Laravel al snel een oplossing. Virtuele Machines!

Met een Virtuele Machine werd dit probleem van verschillende ontwikkel- en productieomgevingen opgelost voordat Docker de standaard was. Laravel heeft hiervoor de Homestead package ontwikkeld. Dit is een Vagrant box voorverpakt met alle tools die je die je in je dagelijkse Laravel development tegenkomt. Vagrant is hierin de tool voor het beheren van virtuele machines in combinatie met VirtualBox of Parallels. Hierdoor had elke developer dezelfde ontwikkelomgeving en hoefde deze alleen nog maar nagebouwd te worden op de productieomgeving.

Deze oplossing werkt in principe prima alleen is het probleem dat een Virtuele machine relatief zwaar is wat betreft hardwaregebruik. Voor elke applicatie heb je een nieuwe VM nodig en uiteindelijk neemt dit ook wel de nodige opslagruimte in beslag. Het werkt maar is niet de ideale oplossing.

Docker, dé oplossing!

Docker biedt voor het probleem van hardwaregebruik en snelheid de ideale oplossing. Docker is een platform voor het beheren van container applicaties. De containers zijn een stuk minder zwaar in gebruik dan virtuele machines. Daarnaast zijn containers snel en zijn ze makkelijk uitbreidbaar. Voor een uitgebreide vergelijking tussen containers en virtuele machines raad ik dit artikel aan.

Uiteindelijk heeft Laravel hiervoor ook een package gemaakt genaamd Sail. Hiermee kan de hele stack die voor Laravel nodig is gebruikt wordon zonder zelf ook maar iets te installeren. Het enige wat je nodig hebt is een Docker installatie en wanneer er Windows gebruikt wordt WSL2 (Windows Subsystem for Linux).

Aan de slag!

Nu gaan we daadwerkelijk aan de slag een een Laravel project opzetten met Docker. Zorg ervoor dat je Docker en Docker Compose hebt geinstalleerd. Bij Windows en macOS zit Docker Compose standaard bij je Docker Desktop installatie. Alleen voor een Linux OS is het noodzakelijk Docker Compose apart te installeren. Voor de installatie instructies van Docker zie de Docker Docs.

Aanmaken project

Start een terminal op en voer de commando hieronder uit.

Let op: als Windows gebruiker moet je in de WSL terminal zitten door wsl uit te voeren in PowerShell of Command Prompt.

curl -s https://laravel.build/voorbeeld-app | bash

Deze commando maakt een nieuw Laravel project aan in de map voorbeeld-app en installeerd alle Composer dependencies. Uiteraard kan de tekst voorbeeld-app veranderd worden naar de naam van je project.

Ga vervolgens naar de map van je nieuwe project door de volgende commando te doen:

cd voorbeeld-app

Vanuit deze map kan de applicatie gestart worden in Docker. Dit gebeurt met de volgende commando:

./vendor/bin/sail up

Nu worden alle Docker images gedownload de containers gestart. Als alles goed is verlopen zou het project beschikbaar moeten zijn op localhost. Ga naar de browser en typ localhost in de url balk om dit te verifieren. Als het goed is is nu het volgende scherm te zien.

Laravel hoofdscherm

Gefeliciteerd, je hebt nu een Laravel applicatie draaien en kan aan de slag om een prachtige applicatie te ontwikkelen!🎉

Dependencies installeren vanuit een git repository

Het kan natuurlijk voorkomen dat jij niet degene bent die een nieuw project opzet in het team. Je zal dan hoogstwaarschijnlijk het project clonen via git alleen ontbreken vervolgens alle dependencies. Ook hier is aan gedacht en er is daar ook een commando voor.

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v $(pwd):/var/www/html \
    -w /var/www/html \
    laravelsail/php81-composer:latest \
    composer install --ignore-platform-reqs

Deze commando zal een aparte docker container aanmaken (en vervolgens ook verwijderen) en vanuit daar alle Composer dependencies installeren zodat je zelf geen Composer hoeft te installeren op je eigen machine.

Verder lezen

Ben je nou nieuwsgierig geworden naar Laravel of Docker? Kijk dan eens op de volgende sites.

Design het Web

Joris van der Kamp

github.com/jorisvanderkamp

Development en webdesign zijn termen die vaak door elkaar worden gehaald. Hoewel het twee aparte taken zijn varen ze wel in hetzelfde vaarwater en zullen ze in een groot deel van de web-trajecten overlappen. Uit mijn ervaring blijkt dat veel personen die in één van deze twee categorieën werken ook behendig zijn in de ander, maar hebben altijd voorkeur voor hun eigen onderdeel. Welke mogelijkheden zijn er voor wie als we het hebben over doorgroeien (als designer)?

Er zijn een aantal mogelijkheden waar je uit kan kiezen als designer: je wil doorleren en de code echt gaan beheersen, je wil omscholen en het design achter je laten, je vindt allebei leuk en blijft er tussenin hangen, of je sluit de code helemaal uit.

Vergeet het design

Er is een mogelijkheid om het designen helemaal te laten voor wat het is en je vol te storten op de code. Dit is iets wat ik niet zou aanraden; veel bedrijven zijn blij met developers die ook designkennis hebben. Om binnen organisaties de overlap tussen design en development zo soepel mogelijk te laten lopen zijn een aantal, of tenminste één zo’n persoon nodig. Je kunt dus een belangrijke rol gaan spelen.

In het begin heb je nog niet veel aan je design skills, dit komt omdat je nog heel beperkt bent in wat je kunt maken. In een later stadium zul je gaan merken dat je niet alleen vette dingen kunt maken, maar ook verzinnen. Je kunt dan nauw samenwerken met de designers, en ze zullen ook blij zijn met jou.

Leer het bij: Code, Code, Code!

In het begin is het niet te overzien; verschillende tools, talen & frameworks; Vue, Angular, React etc! Ook worden er veel fancy Engelse namen en programmeertalen gebruikt in dagelijks communicatie. Afhankelijk van je doel is de leercurve best steil, zeker als je alleen een design achtergrond hebt. Er zijn ook veel overeenkomsten, die zie je vooral terug in HTML/CSS. Denk aan eigenschappen van elementen, werkstructuur en het uiteindelijke doel; gave dingen maken!

Ik heb gemerkt dat het iets is wat je over je heen moet laten komen. Veel stof is logischer en minder ingewikkeld dan hoe het er in eerste instantie uitziet. Als designer heb je ook te maken met projectmatig werken, het einddoel waarborgen en een professioneel product afleveren. De tooling is alleen anders. Het moeilijkste om te leren is het denken als een developer; een soort analytische, oplossingsgerichte visie die je moet hebben, naast je algemene programmeer vaardigheden natuurlijk. Met genoeg oefening is dit zeker onder de knie te krijgen en moeten de meeste designers met een beetje geduld, hier wel uit gaan komen.

Code
Leer project HTML/CSS

De dubbele pet: WordPress

In mijn geval was ik meer vaardig in design terwijl ik meer interesse had voor de development. Als tussenoplossing daarvoor maakte ik gebruik van WordPress. Een veel gebruikt CMS die theme based veel mogelijkheden biedt. Na het maken van het design kon ik het in een populaire builder zoals Avada of Elementor het design ongeveer nabouwen. Het design van het web is voor klein MKB veruit het belangrijkst. De onderliggende techniek is niet zo belangrijk. Door een behoorlijke groep mensen word de designer ook gezien als developer. Als designer heb je dus een dubbele pet als je het hebt over theme based werken.

De technische kennis beperkt zich tot basis HTML/CSS vaardigheden wat goed te overzien is. Een groot nadeel van WordPress is dat het gebruik maakt van externe plug-in’s en dat er veel updates gaande zijn. Op het moment dat er hier ergens wat fout gaat ben je afhankelijk van je technische kennis of de bouwer van het thema/de plug-in.

Avada
Avada website 2022

Sluit het uit: no-code

No-code frameworks zijn programma’s waarmee niet-technische mensen software kunnen ontwikkelen zonder te coderen. Deze tools hebben meestal een gebruiksvriendelijke UI en dingen als een drag-and-drop-mogelijkheid, zodat er makkelijk assets toegevoegd kunnen worden zonder technische skills. Dus wil je ver van de code vandaan blijven? Dit is je beste optie.

Wat zijn de grote voordelen van het maken van programma's zonder zelfs de code te schrijven? Snel, goedkoop en een all-in-one oplossing zijn slechts enkele voorbeelden van hoe het ontwikkelen met no-code voordelen kan bieden. Om die redenen is het een steeds populairdere optie bij designers. Mede door die groeiende interesse ontwikkelen de platformen zichzelf ook. Een bekend no-code voorbeeld is Webflow.com

Het zijn niet alleen maar positieve punten. Aanpassing van software in no-code platforms is beperkt. Anders gezegd, je moet het doen met wat het platform biedt. Ook met het oog op de toekomst is dit een risico waar je rekening mee moet houden.

Webflow
Webflow website 2022

Overtuigd? Hier een aantal handige sources:

comments powered by Disqus