Op obscure plekjes vind je soms de mooiste typografie.

Bord met de tekst 'Aanplakken op dit gebouwtje streng verboden'

Mijn foto-workflow in 2021 📷

Toen ik een aantal jaren geleden serieuzer aan de slag ging met fotograferen, ben ik ook meer gaan letten op het gestructureerd verwerken en opslaan van alle fotobestanden.

Doel is om makkelijk foto’s terug te kunnen vinden. Van familie of vrienden, van bepaalde gebeurtenissen of gewoon favorieten.

📷 Foto’s importeren van mijn camera

Lightroom Classic open op een Macbook Foto's van mijn spiegelreflexcamera importeer ik in 4 stappen:
  • Foto’s (in JPEG of RAW) van mijn spiegelreflexcamera importeer ik van SD-kaart in Lightroom Classic.
  • Daarbij voeg ik direct trefwoorden aan de foto’s die de locatie en gebeurtenis beschrijven.
  • Na import neem ik alle foto’s door en markeer ik de ‘picks’ en ‘rejects’ (Shift + P en Shift + X in Lightroom).
  • Aan ‘picks’ voeg ik nog extra trefwoorden toe zoals persoon, bijzonder object of een type foto (landschap). De mooiste foto’s geef ik daarbij ook een of meer sterren.
  • Als laatste stap verwijder ik de rejects.

Na de laatste stap heb ik een gestructureerd overzicht van mijn foto’s, en kan ik een selectie gaan bewerken en delen. Alleen: wat doe ik met de foto’s op mijn telefoon?

📱 iPhone foto’s

Vanaf de eerste Nokia-smartphone met camera schiet ik ook veel plaatjes met telefoons. De kwaliteit daarvan was eerst zo matig dat ik deze alleen online deelde, en niet speciaal wilde bewaren. Totdat die camera’s ‘goed genoeg’ werden.

Screenshot van Photos.app op iPhone met totaal aantal foto's op de telefoon zichtbaar

Bij mij was dat rond de iPhone 6s (2015). Daarvan importeerde ik eerst af en toe de originelen op mijn MacBook. Maar al snel koos ik voor het gemak van iCloud Photo Library:

  • Foto’s synchroniseren daarmee automatisch tussen telefoon en laptop. Waarbij originelen op mijn laptop komen en verkleinde versies op mijn iPhone blijven. Meer dan 30.000 stuks alweer.
  • De mooiere foto’s en herinneringen geef ik hartjes en zet ik in albums.
  • Photos.app analyseert verder automatisch alle foto’s op gezichten (personen), objecten en type foto’s.
  • Via gedeelde albums kan ik makkelijk foto’s delen met mijn vriendin en familie.
  • En de herinneringen-functie haalt (mede op basis van andere informatie zoals datum, locatie en herkende personen en objecten) regelmatig mooie momenten naar boven.

Voor mij is Photos.app daarmee de plek om foto’s terug te kijken. Daarom exporteer ik de beste foto’s van mijn camera ook uit Lightroom Classic om ze als album te importeren in Photos.app. Hiermee zijn deze op al mijn devices beschikbaar.

En ja, iCloud Photos is geen backup. Dus van alle foto’s worden op twee plekken backups bewaard (lokaal via TimeMachine en remote met Backblaze).

Problemen met de huidige foto-opslag

Hiermee heb ik een gebruiksvriendelijk systeem dat me nauwelijks werk kost qua onderhoud. Maar er zitten wel wat addertjes onder het gras:

  1. Photos.app lijkt voor de lange termijn geen toekomstbestendige foto-opslag. Metadata wordt opgeslagen in een database, en kun je daar niet makkelijk uithalen. Gesynchroniseerde foto's worden in een ondoorzichtige mappenstructuur opgeslagen.
  2. Mijn foto-opslag in iCloud loopt langzaam uit de klauwen. Omdat originele foto’s in iCloud worden opgeslagen loopt de hoeveelheid data die ik daar verbruik steeds verder op.
  3. Op mijn telefoon heb ik nu meer dan 30.000 foto's en video's. Maar Apple heeft geen enkel belang om mij te helpen met het opschonen daarvan.
  4. Met mijn huidige workflow, vooral qua synchroniseren en foto's raadplegen, is nogal vastgeklonken aan het Apple-ecosysteem. Terwijl ik qua data en documenten graag ecosysteem-onafhankelijk ben. (Misschien moeten we dat, analoog aan indieweb, 'indiephoto' noemen?)

Oplossing?

De definitieve oplossing heb ik nog niet helemaal uitgewerkt, maar ik zie twee opties:

  1. 💶 Betalen voor gemak. Daarmee los ik probleem 2 en 3 op, en bespaar ik mezelf tijd.
  2. 📁 Energie steken in een toekomstbestendige, ecosysteem-onafhankelijke foto-opslag.

Bij de eerste optie hou ik het dure, grote iCloud-abonnement aan en ga ik geen tijd steken in onafhankelijke opslag van foto’s. Het is ook een beetje  een gok op dat de foto-software-ontwikkelingen in de toekomst mij als consument nog meer voordelen gaan bieden (dankzij Machine Learning e.d.).

De tweede optie gaat uit van een goed uitgedacht mappenstructuur voor al mijn foto’s. iPhone-foto’s zal ik periodiek uit Photos.app moeten exporteren, waarbij ik oudere foto’s die niet-favoriet zijn eruit verwijder. Dat vereist meer handmatig beheer, maar er zijn scripts waarmee je metadata uit Photos.app kunt exporteren.Photos.app blijf ik dan als viewer naast de mappenstructuur gebruiken. Puur omdat ik op het moment privé Apple-apparaten gebruik is dat de meest logische stap. Dit dan in combinatie met iCloud Photos voor sync en delen van foto’s.

Naast een toekomstbestendiger opslag zou zo’n setup als voordeel hebben dat de opslag in en kosten voor iCloud afnemen. Nadeel is dat het mij tijd zal kosten om regelmatig handmatig de exports uit te voeren (en te checken of het goed gaat 😉). Keuzes.

Zie ook:

Schaatsers op de uiterwaarden

Mooi was ‘t hè

Security headers instellen voor je website

Afgelopen week was ik bezig met het migreren van een aantal persoonlijke websites van shared hosting naar Linode. Na het overzetten van alle databases en bestanden stond er nog een klein puntje op mijn actielijst: alle HTTP security headers eens nakijken en (waar mogelijk) goed instellen.

Omdat het niet iets is wat ik dagelijks doe even een samenvatting. For future reference. ;)

Wat zijn HTTP headers?

Security headers score roelioAls jij een webpagina bezoekt wisselt de server waarop die website gehost informatie met jouw browser. Onder andere over hoe je browser moet omgaan met a) de verbinding naar die website en b) de inhoud van de webpagina. Een aantal van die headers kun je inzetten om je website beter te beveiligen, de zogenaamde security headers.

Om snel te checken hoe jouw website er nu voor staat kun je deze scannen met securityheaders.com. Mijn website begon met een F en scoort nu een A (goed), maar er zijn nog verbeterpunten.

Belangrijke security headers

Er zijn een aantal HTTP security headers beschikbaar om bepaald gebruik van je website te controleren of te beperken. Allemaal gericht op het beperken van risico’s voor bezoekers. Bijvoorbeeld:

  • Strict-Transport-Security: hiermee kun je afdwingen dat browsers jouw website alleen via HTTPS inladen. Altijd aanbevolen als je al een SSL-certificaat hebt geinstalleerd.
  • X-Frame-Options: om te voorkomen dat je website via een iframe in een andere website wordt ingeladen kun X-Frame-Options instellen. Bijna altijd aan te raden, behalve als je wil toestaan dat inhoud op andere websites 'ingesloten' wordt.
  • X-Content-Type-Options: stelt vast dat browsers scripts en stylesheets niet mogen laden als de server niet het correcte MIME type meegeeft. Gericht op het tegengaan van XSS.
  • Referrer-Policy: deze bepaalt welke informatie via de HTTP Referer header wordt meegegeven. Je kunt kiezen uit de complete URL van herkomst, alleen de domeinnaam van herkomst, maar je kunt ook kiezen alleen een referrer mee te geven naar andere pagina's binnen je eigen site.
  • Permissions-Policy: via browser features en API's kunnen webpagina's toegang vragen tot je camera, microfoon, locatie, etc. Met een Permissions-Policy stel je beperkingen in welke web features je site mag gebruiken. En die gelden dan ook voor embeds!
  • Content-Security-Policy: met een CSP stel je heel precies in welke bronnen vanaf welke domeinen mogen worden geladen. En of inline javascript (XSS risico) geladen mag worden. Op de infosec-website van Mozilla vind je meerdere voorbeelden van Content Security Policies.

Security headers instellen

HTTP Security Headers kun je instellen via server-configuratiebestanden, maar ook via plugins/modules van jouw CMS. De eerste optie vond ik het makkelijkst. Zoals altijd: maak even een back-up van de configuratie-bestanden voordat je iets wijzigt.

Op Nginx is dit mijn aanbevolen configuratie (in /etc/nginx/sites-available/sitenaam.conf) :

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;

 

Gebruik je Apache, dan kun je dit toevoegen aan je .htaccess file:

# HTTP security headers

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"

In deze aanbevolen configuraties mis je nog Content-Security-Policy, Referrer-Policy en Permissions-Policy. Hiervoor zul je je wel even iets moeten inlezen. De configuratie hiervan hangt af van de opzet van je site. Gebruik je daar 3rd party scripts (analytics) of stylesheets (web fonts)? En hoe belangrijk vind je het dat een referrer wordt meegegeven via kliks vanaf jouw website?

Maar als je voor jezelf die vragen hebt beantwoord ben je klaar. Toch? Nou nee, er zijn alweer nieuwe security headers in aantocht. En ook andere aspecten kun je waarschijnlijk verder aanscherpen (zoals DNSSEC). Met bijvoorbeeld Mozilla’s Observatory en Internet.nl kun je uitgebreider scannen hoe veilig jouw site geconfigureerd is. Bij de eerste scoort roel.io slechts een F 😞, bij de tweede pas 70 van maximaal 100 punten. Werk aan de winkel dus!

Verder lezen?

Attack Surface - Cory Doctorow

Attack surface cory doctorow

TL;DR - Aanrader!👍

Attack Surface van Cory Doctorow is een cyberpunk-boek met veel actie dat lekker wegleest, en hoop geeft! Het speelt zich af in een versie van onze wereld waar de mogelijkheden van (internet)technologie zijn gedramatiseerd. De verhaallijn sluit aan op twee eerdere boeken (Little Brother en Homeland), maar je kunt het prima los lezen. Dat deed ik ook.

Verhaal

In reactie op terrorisme is het surveillance-industriële complex wereldwijd een (nog) belangrijker bedrijfstak geworden. Daar verdient hoofdpersoon Masha goed geld, maar met gewetensbezwaren. Want ze weet precies wat voor effect haar werk heeft op de mensen die zij in de gaten houdt.

Het verhaal begint in een fictieve Oost-Europese republiek waar Masha overdag namens het regime de oppositie monitort. ’s Avonds zoekt ze die idealistische actievoerders juist op om ze te leren zich beter te wapenen tegen surveillance-technologie.

Via flashbacks leren we stap-voor-stap hoe Masha in de wereld van de surveillance terecht is gekomen, en welke keuzes ze daarbij heeft gemaakt.

Technologie (niet) uitgelegd

In het boek gebruikt Doctorow aardig wat tech-termen. Maar deze legt hij niet uit. Zoals Ton in zijn recensie aanhaalde is dat om je te stimuleren daar zelf naar op zoek te gaan. Één fan heeft dit al gedaan, en verzameld in de Mashapedia. Zodat je snel kan opzoeken wat een ‘IMSI-catcher’ of een ‘dazzle mask’ zijn.

Morele dilemma's

Nadat het misloopt in Oost-Europa gaat Masha terug naar de VS om een vriendin te helpen. Een vriendin die juist opkomt tegen de bijna autoritaire combinatie van overheid en surveillance-industrie.

Waar de eerdere twee boeken idealistisch young-adult waren, richt Doctorow zich met Attack Surface op volwassenen. In Wired legt hij uit waarom:

“The thing adults do is confront their moral legacy. They look back on what they've done and they think about their regrets,” Doctorow says. “The ongoing process of being an adult is having been corralled into compromises and then making sense of those compromises for yourself.”

Dat is de rode draad in het boek. Als white hat hacker (ingehuurd) binnen het overheidsapparaat heeft Masha veel foute keuzes gemaakt. Wanneer ze die onder ogen begint te zien, kan ze ook nauwlijks richting zichzelf verantwoorden.

Sterk is hoe het boek je meeneemt in haar gedachtengang dat technologie allesbepalend is, en dat je je als burger-onder-surveillance niet aan die technologie kunt onttrekkken. Techno-utopisme, zoals Silicon Valley graag predikt, met een cynische ondertoon. Want je kunt er niet aan ontsnappen.

Als realistische techno-optimist maakt Doctorow daar tegen het einde van het boek een punt over.

"Technology is a tool that gives us the space to make political change. Politics are a tool we use to open the space for making better technology."

En dat geeft niet alleen Masha hoop. Mij ook.

Shoshana Zuboff:

"We can have democracy, or we can have a surveillance society, but we cannot have both.”

Prachtige (ook mooi ontworpen) rant van Robin Rendle: Newsletters; or, an enormous rant about writing on the web that doesn’t really go anywhere and that’s okay with me.

En hij heeft gelijk:

  • Het web is nog steeds te moeilijk.
  • Reeder is ook mijn favoriete web browser.
  • En het is logisch dat nieuwsbrieven de laatste jaren zo populair zijn geworden. 

Wat kunnen we daarmee?

Omdat genieten van de goede dingen des levens nu vooral binnenshuis moet gebeuren proberen we speciale bieren met bijzondere smaken. Zoals een breckenridge barrel-aged Heaven & Hell van brouwerij De Molen. Proost! 😋🍺 

Donker bier in een glas, met ernaast een fles Heaven & Hell van brouwerij de Molen

Het uitzicht tijdens mijn rondje hardlopen 🏃‍♂️vanochtend.

Strand bij Nieuwvliet (drone video)

Zeeuwse strand vanuit de lucht (drone)

Paarden en yoga op het Zeeuwse strand (drone)

Lines in the sand

Drone foto van golven op het strand door Roel Groeneveld

Cadzand in de verte (drone)

Strand richting Cadzand uit de lucht gefotografeerd

Stormbreker

Meeuwen op een rij op de palen van een stormbreker

Peenplant

Wilde peenplant bij zonsondergang

Nederrijn

Wat is GPT-3 eigenlijk?

Misschien heb je op Twitter de hashtag #gpt3 voorbij zien komen? Dan was je vlakbij kunstmatige intelligentie. 😉

GPT-3 staat namelijk voor Generative Pretrained Transformer versie 3 (wikipedia). Kort door de bocht is dat een taalmodel dat ontstaan is door patronen te zoeken in grote hoeveelheden informatie. In dit geval enorme hoeveelheden informatie! Met wat het daar geleerd heeft kan GPT-3 zelf uitgebreid en aardig coherent antwoorden genereren op vragen die je stelt.

Wat is een taalmodel?

Wij denken er nooit over na, maar we hebben allemaal een eigen taalmodel. Dat helpt ons sneller te lezen of luisteren. Op basis daarvan vullen we letters en woorden al in voordat we ze lezen:

Als je bijvoorbeeld al de letters carnava.. voor je ziet, weet je dat je op de puntjes waarschijnlijk een l kunt verwachten. En na het lezen van br… verwacht je hoogstwaarschijnlijk geen k. Niet alleen op letter-niveau, maar ook op woordniveau is de afloop soms goed te voorspellen. Na ‘met terugwerkende …’ verwacht je ‘kracht’ en na ‘het is veel te …’ volgt waarschijnlijk een bijvoeglijk naamwoord (bv ‘heet’ of ‘kort’) en geen zelfstandig naamwoord (bv ‘fiets’ of ‘brood’).

GPT-3 doet ongeveer hetzelfde, maar omdat het model getraind is op zoveel informatie kan het uitgebreider en beter teksten ‘schrijven’ dan eerdere generatieve taalmodellen (zoals voorganger GPT-2).

Hoe het dat geleerd heeft legt Jay Alammar in een korte animatie uit: GPT-3 is getraind op 300 miljard tekens tekst, met als doel om woorden te kunnen voorspellen.

Alles uit de gigantische dataset waaraan het model is blootgesteld is omgezet in 175 miljard parameters. Die gebruikt GPT-3 als je het iets vraagt (input), en op basis daarvan genereert het zelf een antwoord.

Wat kan GPT-3?

Eigenlijk kan GPT-3 gewoon schrijven. Alleen dan schrijven in de breedste zin van het woord, van gedichten tot programmeercode. En veel beter dan eerdere AI-taalmodellen.

In de afgelopen weken is met GPT-3:

En veel meer.

En als je puur kijkt naar de kwaliteit van de teksten die GPT-3 ‘schrijft’? Gwern Bransen is onder de indruk:

GPT-3’s samples are not just close to human level: they are creative, witty, deep, meta, and often beautiful. They demonstrate an ability to handle abstractions, like style parodies, I have not seen in GPT-2 at all. Chatting with GPT-3 feels uncannily like chatting with a human.

Wat betekent GPT-3?

In de New York Times is Farhad Manjoo erg overtuigd:

Software like GPT-3 could be enormously useful. Machines that can understand and respond to humans in our own language could create more helpful digital assistants, more realistic video game characters, or virtual teachers personalized to every student’s learning style. Instead of writing code, one day you might create software just by telling machines what to do.

Meer praktisch ziet Max Woolf, in vergelijking met GPT-2, twee grote verbeteringen in GPT-3:

  1. it allows generation of text twice the length of GPT-2 (about 10 paragraphs of English text total), and
  2. the prompts to the model better steer the generation of the text toward the desired domain (due to few-shot learning). For example, if you prompt the model with an example of React code, and then tell it to generate more React code, you’ll get much better results than if you gave it the simple prompt. Kortom: het GPT-3-taalmodel kan veel langere teksten genereren en beter gestuurd worden met uitgebreidere input.

Maar in de online voorbeelden is GPT-3 ook langzaam. En zijn menselijke vooroordelen die overal op internet te vinden zijn ook in het model aanwezig.

Het is mooi, maar nog zeker geen magie.

Zonnebloem

Zonnebloem met blauwe lucht op de achtergrond

Die Broken Earth trilogie van N.K. Jemisin, wauw!

Jen Taylor: zo lanceer je een product in 5 stappen

Vandaag pikte ik wat flarden op van de Sprint Couch Conference, georganiseerd door het team achter The Next Web. Het thema was ‘Digital product strategy in 2020’, met veel verschillende presentaties. Eerlijk gezegd had ik alleen tijd om het verhaal van Jen Taylor (Hoofd Product bij Cloudflare) met aandacht te volgeen. Daarin ging zij in op hoe bij Cloudflare producten worden gelanceerd.

Voorbereiding

Al heel vroeg in de productontwikkel-cyclus wordt gestart met de eerste stap richting lancering. Door de product manager wordt tijdens het uitwerken van de requirements een blogartikel over het nieuwe product of feature geschreven. Vergelijkbaar met hoe bij Amazon altijd eerst een intern persbericht wordt geschreven bij de start van een nieuw productontwikkel-traject (“Working backwards”, noemen ze dat).

IMG 0180 (Slide uit Jen Taylor's presentatie.)

In die fase wordt ook bepaald wat voor type lancering nodig is:

  1. Een 'Big Bang', voor een nieuw product met duidelijke product-markt-fit, waar veel aandacht voor gegenereerd moet worden (inclusief groter budget voor product marketing) zodat een positie in de markt veroverd kan worden.
  2. Een 'Slow Launch', gericht op een kleinere groep gebruikers waarbij je vooral wil leren van de gebruiker, koper en over welk prijsmodel geschikt is. Data over gebruik en 'word of mouth' zijn essentieel.

Daarbij moet je meenemen hoe je wil lanceren;

  • Creëer je een moment, door je publiek puur voor de lancering te bereiken. Headline-waardig dus.
  • Of haak je aan bij een bestaand moment, bijvoorbeeld een evenement waar jouw gebruikers al aanwezig zijn.

Is dat duidelijk, dan kun je aan de daadwerkelijke lancering gaan werken.

Productlancering

Producten lanceren draait bij Cloudflare gelukkig ook om het succesvol maken van gebruikers. En dat doen ze in 5 stappen:

IMG 0184
  1. Drive Awareness - Vanuit een duidelijke positionering zet je je website, blog, sociale media, eventueel user advocates of advertenties in om je publiek bewust te maken van het nieuwe product of de nieuwe features. Zodat geïnteresseerden leren dat er een nieuwe oplossing is voor hun probleem of 'job'.
  2. Take action - Stel gebruikers in staat om de nieuwe features of het nieuwe product uit te proberen. Kunnen ze een account aanmaken en inloggen? En als ze dan de nieuwe functionaliteit uitproberen is de meerwaarde direct duidelijk?
  3. Get successful - Zorg ervoor dat gebruikers succesvol aan de slag kunnen met die nieuwe mogelijkheden, door documentatie en how to's aan te bieden en video demo's te organiseren.
  4. Stay successful - Biedt goede support aan, met o.a. een gebruiksvriendelijk ticketsysteem, community forums en/of Slack kanalen, bemand door een sterk support team dat voldoende ondersteuning krijgt vanuit de organisatie (kennis, middelen).
  5. Grow - gebruik blogs, white-papers, nieuwsbrieven en e-mail journeys om de mogelijkheden verder onder de aandacht te brengen.

And repeat

In het verlengde van die 5 stappen ga je meten, leren, en vervolgens aanpassingen doorvoeren om je gebruikers succesvoller te maken.

IMG 0193

En daarna begin je aan het volgende product of de volgende nieuwe feature. Net zo makkelijk.

Ongeveer hetzelfde verhaal vertelde ze vorig jaar bij SaaStr, daarvan kun je de video hieronder terugzien: