cleaning
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"schedule": "daily",
|
||||
"schedule": "daily",
|
||||
"aggressiveCompression": "true",
|
||||
"compressWiki": "true"
|
||||
"compressWiki": "true"
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ repos:
|
||||
- id: detect-private-key
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
- id: check-xml
|
||||
- id: check-yaml
|
||||
- id: forbid-new-submodules
|
||||
- id: mixed-line-ending
|
||||
|
||||
@@ -5,10 +5,10 @@ specialpost: true
|
||||
date: 2000-08-20T12:00:00+02:00
|
||||
|
||||
---
|
||||
Pythonista, Backend Developer, Photographer, Dev Ops, Ex-Scout, Bookworm and Tea Lover.
|
||||
Sometime you can find me in a GDG, a DataBeers, a Pycon, a Comicon or other similar event.
|
||||
Huge Open Source fan and user I am allways searching something new to do or to study.
|
||||
Huge fan of automation, autodeploy, data sharing and bots.
|
||||
A lot of my personal stuff are here in my blog and some in my Github.
|
||||
Pythonista, Backend Developer, Photographer, Dev Ops, Ex-Scout, Bookworm and Tea Lover.
|
||||
Sometime you can find me in a GDG, a DataBeers, a Pycon, a Comicon or other similar event.
|
||||
Huge Open Source fan and user I am allways searching something new to do or to study.
|
||||
Huge fan of automation, autodeploy, data sharing and bots.
|
||||
A lot of my personal stuff are here in my blog and some in my Github.
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ rsvp:
|
||||
bookmark:
|
||||
---
|
||||
|
||||
And today I find a new shop near my home.
|
||||
And today I find a new shop near my home.
|
||||
It is a tearoom with comics, manga and table top game...
|
||||
|
||||
I LOVE IT
|
||||
|
||||
@@ -16,4 +16,4 @@ bookmark:
|
||||
|
||||
Sometime the best things are the little things like some comment under your photo (in my free time I am a photographer)
|
||||
|
||||
#littlethings #microblogging
|
||||
#littlethings #microblogging
|
||||
|
||||
@@ -16,5 +16,5 @@ I LOVE to walk after dark but I am not very good with the astronomical photo
|
||||
|
||||
## Challenge
|
||||
|
||||
I am studing how to take a photo of the moon or the stars.
|
||||
I am studing how to take a photo of the moon or the stars.
|
||||
In this one I use some filters to get a better image the day after.
|
||||
|
||||
@@ -19,5 +19,5 @@ I love it and I love the food.
|
||||
|
||||
## Problem
|
||||
|
||||
WOST LIGHT EVER!
|
||||
WOST LIGHT EVER!
|
||||
I don't like the multiple type of light they have inside so you need to be good with feeling the light changing at every corner
|
||||
|
||||
@@ -5,7 +5,7 @@ feature_link: ""
|
||||
feature_text: ""
|
||||
tags:
|
||||
slug: "Fundor333"
|
||||
categories:
|
||||
categories:
|
||||
- rant
|
||||
description: "Primo post"
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Nel prossimo futuro ho intenzione di pubblicare un articolo di approfondimento,
|
||||
|
||||
# La competizione dei floppy
|
||||
|
||||
A ogni partecipante alla convention viene dato un floppy disk con l'adesivo con i dati del partecipante e dietro un piccolo QRCode.
|
||||
A ogni partecipante alla convention viene dato un floppy disk con l'adesivo con i dati del partecipante e dietro un piccolo QRCode.
|
||||
{{< tweet user="matteo_zuccon" id="987619049029939200" >}}
|
||||
|
||||
E' propio quest'ultimo che ha attirato enormemente la mia attenzione sulla cosa e si è rivelata un bell' easter egg.
|
||||
@@ -43,7 +43,7 @@ In ogni caso mi ha permesso di socializzare con alcune persone e di divertirmi i
|
||||
Quest'anno, sia per un discorso economico che per un discorso di tempi, ho deciso di non partecipare alla Pyfiorentina ma andare a caccia di Lampredotto.
|
||||
|
||||
|
||||
Trovato quindi il locale e mangiato il lampredotto ho avuto una idea per un progetto con i GTFS di Google grazie all'autobus che per poco non mi metteva sotto (troppo distratto io dal lampredotto).
|
||||
Trovato quindi il locale e mangiato il lampredotto ho avuto una idea per un progetto con i GTFS di Google grazie all'autobus che per poco non mi metteva sotto (troppo distratto io dal lampredotto).
|
||||
|
||||
Su questo spero di darvi presto aggiornamento.
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Questo ha portato alla creazione di alcuni progetti hardware/software che cercan
|
||||
|
||||
Nonostante quello che mostrano nei film, lo scambio 'di persona' è molto pericoloso e raramente usato. Viene invece usato il *Dead Drops* o *consegna morta*:
|
||||
dopo essersi accordati su un punto di consegna, il mittente lascia il "pacchetto" nel punto di consegna dove, il ricevente, lo viene a ritirare
|
||||
|
||||
|
||||
Da questa idea nasce il primo progetto che esamino da lungo tempo: il progetto "*Dead Drops*"
|
||||
|
||||
## Dead Drop
|
||||
@@ -30,7 +30,7 @@ Nato come progetto d'arte di Aram Bartholl, un artista con base a Berlino, è un
|
||||
|
||||
Infatti è considerabile come _hack urbano_ in quanto è, semplicemente, il posizionamento di supporti di memoria fissa nel territorio. Ad esempio il murare una chiavetta usb su una parete o legare, con una sicura, ad un albero un supporto usb.
|
||||
|
||||
Tutto questo viene gestito all'interno di un sito internet[^5] che ha anche un database in cui vengono segnalati i dead drop esistenti, il contenuto di partenza e lo stato del supporto stesso per rendere tutto più semplice e funzionale.
|
||||
Tutto questo viene gestito all'interno di un sito internet[^5] che ha anche un database in cui vengono segnalati i dead drop esistenti, il contenuto di partenza e lo stato del supporto stesso per rendere tutto più semplice e funzionale.
|
||||
|
||||
Questo sistema risulta essere molto interessante da un punto di vista tecnico ma difficile da mantenere in quanto molto soggetta allo stato della parete stessa e alle condizioni atmosferiche dell'area. In oltre può essere anche intesa come _danneggiamento di suolo pubblico/privato_.
|
||||
|
||||
@@ -48,7 +48,7 @@ Ispirata dal sistema delle radio pirata, la PiratBox è un sistema hardware di o
|
||||
|
||||

|
||||
|
||||
Tecnicamente è un router modificato in modo da creare un _hotspot_ "offile" da cui prendere e lasciare file e commenti. Si basa su una "patch" di _OpenWrt_ che trasforma il router compatibile in un hotspot/server.
|
||||
Tecnicamente è un router modificato in modo da creare un _hotspot_ "offile" da cui prendere e lasciare file e commenti. Si basa su una "patch" di _OpenWrt_ che trasforma il router compatibile in un hotspot/server.
|
||||
|
||||
Attraverso una interfaccia web e collegandosi via WiFi è possibile caricare e scaricare i file contenuti all'interno della _PirateBox_.
|
||||
|
||||
@@ -66,7 +66,7 @@ In oltre alcune di queste modifiche sono diventate talmente _grosse_ da diventar
|
||||
|
||||
## LibraryBox
|
||||
|
||||
Mod e poi fork di _PirateBox_, è la versione "per libri" della _PirateBox_.
|
||||
Mod e poi fork di _PirateBox_, è la versione "per libri" della _PirateBox_.
|
||||
|
||||
Risulta utilizzare la stessa base hardware (sempre un router con una unità di memoria) ed è sempre una "_patch_" di _OpenrWrt_ a cui viene cambiata l'interfaccia grafica e alcune funzionalità.
|
||||
|
||||
@@ -81,7 +81,7 @@ Questo ha portato molti a sfruttare molto più pesantemente la _LibraryBox_ risp
|
||||
---
|
||||
|
||||
Fondamentalmente queste sono le tecnologie _P2P_ offline che suggerisco e di cui mi sono interessato nel mio tempo libero. Nel caso ne trovi di nuove mi preoccuperò di fare un aggiornamento in quanto l'argomento a me piace in modo particolare e lo trovo anche particolarmente interessante anche dal punto di vista umano, perchè è sempre interessante vedere i nuovi sistemi con cui il genere umano condivide la conoscenza.
|
||||
|
||||
|
||||
[^1]: [The Guardian: Moscow names British 'spies' in NGO row](https://www.theguardian.com/world/2006/jan/23/russia.politics)
|
||||
[^2]: Sito ufficiale del progetto Dead Drops _Link con problemi_ ~~deaddrops.com~~
|
||||
[^3.1]: [Thread sulla mod con Icecast](http://forum.piratebox.cc/read.php?2,3764) e [tutorial](https://github.com/janbre/Assorted/tree/master/Piratebox/PirateBoxRadio)
|
||||
|
||||
@@ -33,12 +33,12 @@ Semplicemente da questi dati si capisce che la console risulta essere meno _pote
|
||||
|
||||
## Casi d'uso
|
||||
|
||||
Sostanzialmente la console è sia una console _portatile_ che una console _fissa_.
|
||||
Sostanzialmente la console è sia una console _portatile_ che una console _fissa_.
|
||||
Per fare ciò è stata creato un "dock" che viene collegata alla televisione o allo schermo (essendo collegabile via HDMI basta anche un monitor). Questa base risulta però pericolosa per l'integrità dello schermo touch, che viene segnato se ripetutamente inserita e rimossa senza fare attenzione. Personalmente ho risolto il problema con una pellicola protettiva che avrei acquistato comunque trattandosi anche di una console portatile e che l'uso più ambio che io ne faccio è proprio la funzionalità portatile.
|
||||
|
||||
Altro problema è il punto di aggancio per l'alimentazione. Essendo posizionato sotto non è possibile utilizzare la _gamba_ per tenere lo _Switch_ in verticale mentre è in carica. Per farlo è necessaria una "base" che alzi lo _Switch_. Anche questa la ho presa separatamente e da rivenditori di terze parti anche se la Nintendo sembra essere intenzionata a spostare la presa dello _Switch_ nella prossima linea.[^2]
|
||||
|
||||
Ho fatto delle prove in tv e il risultato è esattamente quanto sperato. Ottima qualità video, ottimo audio, l'unico problema da parte mia è che la connessione alla rete è possibile solo via wifi ma per il resto funziona divinamente.
|
||||
Ho fatto delle prove in tv e il risultato è esattamente quanto sperato. Ottima qualità video, ottimo audio, l'unico problema da parte mia è che la connessione alla rete è possibile solo via wifi ma per il resto funziona divinamente.
|
||||
|
||||
## Videogiochi dello _Switch_
|
||||
|
||||
@@ -59,7 +59,7 @@ A questo poi viene aggiunto il fattore _esclusive Nintendo_, che risultano sempr
|
||||
|
||||
Ottima idea di console, ottima implementazione ibrida, alcuni difetti nel design ma molto limitati. A questo si aggiunge un bel parco giochi e esclusive con un bel parco _indie_ che incentivano il mercato con nuove idee e nuove grafiche.
|
||||
|
||||
Personalmente consiglio l'acquisto della console sopratutto se interessano gli _indie e i gdr_ ma se non piacciono queste due categorie potrebbe essere una console meno adatta se piacciono di più gli _sparatutto_.
|
||||
Personalmente consiglio l'acquisto della console sopratutto se interessano gli _indie e i gdr_ ma se non piacciono queste due categorie potrebbe essere una console meno adatta se piacciono di più gli _sparatutto_.
|
||||
|
||||
Sperando di avervi interessato vi invito a commentare e discutere sulla console, grazie.
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ All of this is from personal research and study.
|
||||
|
||||
In the 1945 was publish in _The Atlantic Monthly_ the article "As We May Think" where the _Memex_, the first concept of _hypertext_ was born.
|
||||
|
||||
In 1963 the term "hypertext" and "hypermedia" was coined as part of a model for creating linked content.
|
||||
In 1963 the term "hypertext" and "hypermedia" was coined as part of a model for creating linked content.
|
||||
|
||||
From here to 1980 any region of the planet make a type of _hypertext_ but we ignore all of them because we aren't interested in them now. You need to go to the 1980 CERN for have a software call ENQUIRE, a _hypertext_ software.
|
||||
But it was unaccessible for everybody so the software was discart.
|
||||
@@ -57,7 +57,7 @@ And this become more evident with _Wordpress_ where you need from 10 to 40 query
|
||||
|
||||
### And now the static site generators
|
||||
|
||||
Now we have to talk about the static site generator.
|
||||
Now we have to talk about the static site generator.
|
||||
|
||||
First we talk about the one is not in use anymore: the gui one. Is a complex software where you have multiple buttons for build the gui and put the text, img and all the other things in position. This way was popular at the end of the 90' and the beginning of the 2000' with _Microsoft Publisher_ and _iLife iWeb_. All of them death today because was too long to make a site and you need html knowledge for the more advance stuff and integrate js for some animation or others things.
|
||||
|
||||
@@ -81,7 +81,7 @@ There are multiple good reason for this:
|
||||
* Fast: they ask the page you serve it without any form of elaboration. You cant have a site more fast than static
|
||||
* Easy to backup: you can backup in infinite ways your blog because you only need to save the theme, config and the content. All the other thins (the server software, the genererator and plugins) you don't need in your backup. All are descript in the theme, config and content.
|
||||
* No upgrade: you don't need to update the site to the newer version of one library or the plugin for X. With a static site generator you have a HTML site allways valid
|
||||
* You need hyperlink not plugin: at the end of the day you want the hyperlink of a site/blog not the fancy plugin for an unicorn running on the page. Any plugin add complexity at the system and the site, it make the site slower and sometime, when not working right, more difficult to debuggin.
|
||||
* You need hyperlink not plugin: at the end of the day you want the hyperlink of a site/blog not the fancy plugin for an unicorn running on the page. Any plugin add complexity at the system and the site, it make the site slower and sometime, when not working right, more difficult to debuggin.
|
||||
|
||||
## Conclusion
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- dotfiles
|
||||
- coding
|
||||
slug: "backup-your-crontab"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "Using DotBot for backup and sync crontab job"
|
||||
|
||||
|
||||
@@ -9,15 +9,15 @@ tags:
|
||||
- coding
|
||||
- api
|
||||
slug: "building-my-backend"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "Why someone need a server and how I build mine"
|
||||
---
|
||||
|
||||
More time pass more time I need a server for my cronjob and other process.
|
||||
More time pass more time I need a server for my cronjob and other process.
|
||||
Sometime the cron was a supid thing, working only for the short period and after can be trashed but the real problem start with Feedly, the subscription for feed I use.
|
||||
|
||||
One day, adding a new feed to my Feedly account, I discovered that I can't add more in the free subscription.
|
||||
One day, adding a new feed to my Feedly account, I discovered that I can't add more in the free subscription.
|
||||
So I start thinking some alternative.
|
||||
|
||||
## What I need
|
||||
@@ -48,7 +48,7 @@ In this way I discover some dead blog and other formats of feed (old one from so
|
||||
|
||||
After this I builds the task for the cronjob for getting all the feed of the multiple sources. This task add a command into redis and when the wrapper (celery in my case) can do the job, it does it and log into the database a row with the log in case of failure.
|
||||
|
||||
I did the same also for the "mark as read" task so if I mark one this is a task done by the browser but if I do for the "last month" or "all" posts they make a Celery task into Redis because it can be a lot of work for the server because I can do more thinks with this but not now.
|
||||
I did the same also for the "mark as read" task so if I mark one this is a task done by the browser but if I do for the "last month" or "all" posts they make a Celery task into Redis because it can be a lot of work for the server because I can do more thinks with this but not now.
|
||||
|
||||
In the future I am thinking about point system for the post and other thinks that need a after processing for making a "prefernce system" or other similar thinks for my personal use[^1] and I want to save the top post into my Poket account or save it in a way I can store for personal reference with or without the site working and store it indefenitly.
|
||||
|
||||
@@ -92,5 +92,5 @@ With some time I build more function into this system and add more api. For the
|
||||
|
||||
Because all the project I am working on I don't have a lot of time so all this project have the least priority of all but, one day after the other I will be updating all of this project with all the function I need but for now I have this.
|
||||
|
||||
[^1]: This is an idea I copy from Feedly Premium.
|
||||
[^2]: The *DRF* is the *[Django Rest Framework](https://www.django-rest-framework.org/)*
|
||||
[^1]: This is an idea I copy from Feedly Premium.
|
||||
[^2]: The *DRF* is the *[Django Rest Framework](https://www.django-rest-framework.org/)*
|
||||
|
||||
@@ -8,14 +8,14 @@ tags:
|
||||
- coding
|
||||
- devops
|
||||
slug: "color-your-python-output"
|
||||
categories:
|
||||
categories:
|
||||
- fingerfood
|
||||
- dev
|
||||
description: "Sometime you need to make your output more readible adding color to the terminal"
|
||||
|
||||
---
|
||||
|
||||
Sometime you need to output error and other stuff in the same terminal.
|
||||
Sometime you need to output error and other stuff in the same terminal.
|
||||
It can be a lot of text and you need to make more readible for the user/sysadmin/victim so, the easy way, is to make different the output.
|
||||
|
||||
The easy way to do it is to color the output to some color.
|
||||
@@ -59,7 +59,7 @@ class CLog:
|
||||
print(f"{self.OKBLUE}{string}{self.ENDC}")
|
||||
|
||||
def warning(self,string):
|
||||
print(f"{self.WARNING}{string}{self.ENDC}")
|
||||
print(f"{self.WARNING}{string}{self.ENDC}")
|
||||
|
||||
```
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- git
|
||||
- dotfiles
|
||||
slug: "gitmessage-advance-config"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
- fingerfood
|
||||
description: "Sometime you need to configure your git or have a template for the commit for your work"
|
||||
@@ -20,14 +20,14 @@ Allways put something (ticket code, bug code, etc...), order of stuff, some comm
|
||||
|
||||
## How to do
|
||||
|
||||
In Git you can set a a file as the template for the git commit.
|
||||
You can do it for a single project or for your user.
|
||||
In Git you can set a a file as the template for the git commit.
|
||||
You can do it for a single project or for your user.
|
||||
In this case I will show the command for all your project.
|
||||
|
||||
### The config
|
||||
|
||||
First you need to write a file.
|
||||
Usualy I make a file in the home ***~/.gitmessage*** where I put the message.
|
||||
Usualy I make a file in the home ***~/.gitmessage*** where I put the message.
|
||||
For example a file template is:
|
||||
|
||||
{{< highlight bash >}}
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- devops
|
||||
- hacking
|
||||
slug: "keep_update_gitlab"
|
||||
categories:
|
||||
categories:
|
||||
- fingerfood
|
||||
- dev
|
||||
description: "How to check if your GitLab is update automaticaly"
|
||||
@@ -37,7 +37,7 @@ So I decide to hack the system and make an allert for me.
|
||||
First ve need to understand how the label work.
|
||||
A rapid ispection of the page show that the label is a responde of a _get_ at the url *version.gitlab.com/check.svg* with some parameters.
|
||||
|
||||
In particolar we need the GitLab version installed. So we need it too. And for them we need the token from the self hosted installation[^3].
|
||||
In particolar we need the GitLab version installed. So we need it too. And for them we need the token from the self hosted installation[^3].
|
||||
|
||||
### Get the version of GitLab
|
||||
For this project we only need python and [_requests_](https://pypi.org/project/requests/)
|
||||
@@ -74,7 +74,7 @@ def last_version_gitlab():
|
||||
return r.text
|
||||
```
|
||||
|
||||
In this way you return a string with the label as xml img.
|
||||
In this way you return a string with the label as xml img.
|
||||
So if you want a feedback when is to update it you can do this.
|
||||
|
||||
``` python
|
||||
@@ -86,7 +86,7 @@ In this way you return _False_ if you need to update, _True_ elsewhere.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Whith this you can make another function for sending a notification or a mail for the update.
|
||||
Whith this you can make another function for sending a notification or a mail for the update.
|
||||
I make all this code into a cronjob with mail sender for getting at the start of my work hours a mail for unupdated gitlab installation.
|
||||
I also suggest Slack or Telegram for the notification for the unupgraded GitLab.
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ tags:
|
||||
- bot
|
||||
- dotfiles
|
||||
slug: "manage-site-and-certificate"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "One dev manage 40 sites' domains, SSL and check all of them with a package"
|
||||
|
||||
---
|
||||
|
||||
After my [other post]({{< relref "post/2020/ssl-check-with-a-script/index.md" >}}) I find we (me and my coworker) need to check between 30 to 40 domain, subdomain and SSL certificate for work and some more for our private life so I put on the test my [other post's script]({{< relref "post/2020/ssl-check-with-a-script/index.md" >}}) but we need to check more.
|
||||
After my [other post]({{< relref "post/2020/ssl-check-with-a-script/index.md" >}}) I find we (me and my coworker) need to check between 30 to 40 domain, subdomain and SSL certificate for work and some more for our private life so I put on the test my [other post's script]({{< relref "post/2020/ssl-check-with-a-script/index.md" >}}) but we need to check more.
|
||||
|
||||
We need to check when the domain expire (DNS Lookup), we need to check if the server are up and the SSL certificate. This is a problem because we need to launch the same commands every day for multiple server every day and some time we forgot a domain or a url and we don't check it for days. And if something boom we need to fix it with *zero down time* so we need to do some sysadmin work.
|
||||
|
||||
@@ -42,7 +42,7 @@ So for start I need to register some urls like google and amazon for example
|
||||
|
||||
Now you only register the url, nothing is check for now.
|
||||
|
||||
For run all job or only one you need to use the *run* directive with the *--c* flag for adding command.
|
||||
For run all job or only one you need to use the *run* directive with the *--c* flag for adding command.
|
||||
|
||||
```bash
|
||||
servergrimoire run
|
||||
@@ -52,7 +52,7 @@ After this you don't have any return beause this command is for cronjob or simil
|
||||
|
||||
If you need to see what was the last run you can call *stats* and *info* if you want to see what is save into the data file. This way make easy for cronjob, automatic task and will grow with other function. All the command are in the *help* directive if you need more info.
|
||||
|
||||
This is a little module but can be extrime usefull in small list of urls but you need other tool if you use it for hundreds urls.
|
||||
This is a little module but can be extrime usefull in small list of urls but you need other tool if you use it for hundreds urls.
|
||||
I also accept help for the plugin.
|
||||
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ def server_program():
|
||||
server_socket.listen(20)
|
||||
{{< / highlight >}}
|
||||
|
||||
Where we
|
||||
Where we
|
||||
|
||||
* Start a socket with __socket.socket()__
|
||||
* Set the socket to the Host and Port with __.bind((HOST, PORT))__
|
||||
@@ -68,7 +68,7 @@ After this you need to accept new incomming request. I also set a timeout becaus
|
||||
|
||||
We put into __data_raw__ the data from the connection (here we use size)[^2] and we have 2 more interesting object:
|
||||
|
||||
* __conn__ a socket with *this* connection
|
||||
* __conn__ a socket with *this* connection
|
||||
* __address__ the *ip* for *this* connection
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- coding
|
||||
- devops
|
||||
slug: "ssl-check-with-a-script"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
- fingerfood
|
||||
description: "You need to check a lot of SSL certificate, some domain and others things"
|
||||
@@ -21,7 +21,7 @@ Every sistem I have use CertBot, the bot for Let's Encrypt, who renew the certif
|
||||
|
||||
## Script out the problem
|
||||
|
||||
For this script we need
|
||||
For this script we need
|
||||
|
||||
* Python 3.6 or more
|
||||
* PyOpenssl
|
||||
|
||||
@@ -4,11 +4,11 @@ date: 2020-11-09T11:00:50+01:00
|
||||
|
||||
feature_link: "https://unsplash.com/photos/8OVDzMGB_kw"
|
||||
feature_text: "Photo by Matt Ragland on Unsplash"
|
||||
tags:
|
||||
tags:
|
||||
- coding
|
||||
- devops
|
||||
slug: "why-you-need-a-doc"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "Every project you make you understand new things so you need to write down some thing. Something like a doc"
|
||||
|
||||
@@ -20,18 +20,18 @@ And you have multiple tool for doing it.
|
||||
|
||||
# Tecnology or tools used
|
||||
|
||||
We only have 2 tipe of tool for this task: paper o paperless.
|
||||
You can't use other type of tool or tecnology and you can use the same tecnic in all the tecnology or tools you use.
|
||||
We only have 2 tipe of tool for this task: paper o paperless.
|
||||
You can't use other type of tool or tecnology and you can use the same tecnic in all the tecnology or tools you use.
|
||||
|
||||
This is because you need to understand how the human work for make a better doc.
|
||||
|
||||
## Paper or Journal or notebook or a printed paper
|
||||
|
||||
The old fascion way. You write all into paper and no one can use it other then you. Sometime you can put in the office somewhere all the colleague can read it.
|
||||
The old fascion way. You write all into paper and no one can use it other then you. Sometime you can put in the office somewhere all the colleague can read it.
|
||||
|
||||

|
||||
|
||||
Sometime this is a good idea have a printed paper near a machine or someting similar because all the taks are in the "physical" world. But if you are working from home this is a bad solution.
|
||||
Sometime this is a good idea have a printed paper near a machine or someting similar because all the taks are in the "physical" world. But if you are working from home this is a bad solution.
|
||||
|
||||
You can't share it without pass a physical copy of it to the other member of the team/client/human. This is a huge limit if your documentation.
|
||||
|
||||
@@ -64,11 +64,11 @@ You can learn with a "wiki" style of documentation and you can make task with a
|
||||
|
||||
# My way
|
||||
|
||||
I love MarkDown and the GitHub/GitLab issiue so for my personal and work project I combine them.
|
||||
I love MarkDown and the GitHub/GitLab issiue so for my personal and work project I combine them.
|
||||
|
||||
For the documentation I use [MkDocs](https://www.mkdocs.org/) for build the documentation. I write it as a Question-Answer document, so it isn't about HOW THE SOFTWARE WORK but it is about HOW DO TASK WITH SOFTWARE. In this way I find more easly what I want or what I need.
|
||||
|
||||
When I need to do something I write a issiue with a __todo__ with the micro-task I need to do for the issie, in this way I break the macro-task into task and after in micro-task so I can remember all and keep a trace of the task if I need to do It again.
|
||||
When I need to do something I write a issiue with a __todo__ with the micro-task I need to do for the issie, in this way I break the macro-task into task and after in micro-task so I can remember all and keep a trace of the task if I need to do It again.
|
||||
|
||||
If I find the task I doing can be needed in the future I copy the __ToDo__ list into a MarkDown and I make a wiki about the task for future reference.
|
||||
In this way I have, for the big task, a to do list and a wiki for the task in question.
|
||||
|
||||
@@ -8,7 +8,7 @@ tags:
|
||||
- devops
|
||||
- gitops
|
||||
slug: "From-DevOps-to-GitOps"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "Why am I moving from DevOps to GitOps"
|
||||
|
||||
@@ -38,14 +38,14 @@ _GitOps_ is an evolution of _DevOps_.
|
||||
|
||||
Usually this is done with script and automation (tools, code, ape with a keyboard...) and remove some human error.
|
||||
|
||||
_DevOps_ is a deployment practices, in other way is a philosophy.
|
||||
In any way you have a concept without an implementation.
|
||||
_DevOps_ is a deployment practices, in other way is a philosophy.
|
||||
In any way you have a concept without an implementation.
|
||||
|
||||
_DevOps_ define a way of working and we need something more practical for the world.
|
||||
|
||||
With _DevOps_ in mind we can make an implementation of this set of steps:
|
||||
|
||||
* _Coding_ writing code
|
||||
* _Coding_ writing code
|
||||
* _Building code_ automatic build or similar application specific
|
||||
* _Testing code_ in automatic way and you don't have bug on the deploy
|
||||
* _Approving_ with issue and merge requests
|
||||
@@ -89,9 +89,9 @@ If you don't have man power you *need* to use this technique for trying to have
|
||||
|
||||
## I can use it for my little project?
|
||||
|
||||
Yes, you can. This blog is a _GitOps_ example.
|
||||
Yes, you can. This blog is a _GitOps_ example.
|
||||
|
||||
This site is made with all the necessary stuff and the configs inside repos.
|
||||
This site is made with all the necessary stuff and the configs inside repos.
|
||||
|
||||
All you need for run it is inside one of two repo:
|
||||
|
||||
@@ -99,16 +99,16 @@ All you need for run it is inside one of two repo:
|
||||
* The Hugo repo (the software for building my blog)
|
||||
|
||||
### An Example
|
||||
In this repos (the blog one) you have
|
||||
In this repos (the blog one) you have
|
||||
|
||||
#### The Data
|
||||
|
||||
Like the posts and the images used in this blog and all the info for the Search engine are store in plain files. Some of them are media file but a lot of them are text files (a lot of _MarkDown_ files and some _Json_). Only the comments are outside of the repo.
|
||||
|
||||
#### The Code
|
||||
All the template and the Css/JavaScript of the site (and in my case the SCSS for building the Css).
|
||||
I also have a couple script for generating compressed img for the web.[^2]
|
||||
[^2]: [Hugo With Lazy Loading and Webp]({{< relref "post/2021/Hugo-with-lazy-loading-and-webp" >}})
|
||||
All the template and the Css/JavaScript of the site (and in my case the SCSS for building the Css).
|
||||
I also have a couple script for generating compressed img for the web.[^2]
|
||||
[^2]: [Hugo With Lazy Loading and Webp]({{< relref "post/2021/Hugo-with-lazy-loading-and-webp" >}})
|
||||
|
||||
|
||||
#### The Config
|
||||
@@ -119,10 +119,10 @@ It also have some config for GitHub for the GitHub Action and the config for Git
|
||||
I added some GitHub Action for building the site and test for 404 or similar error after the build. In this way I don't need to check all the link manually.
|
||||
|
||||
#### Console/command file
|
||||
I need this for dev and run it because I don't remember all the commands. In my case an easy to use _makefile_ with some command for building, cleaning and testing the site before deploy it on the _world wild web_.[^3]
|
||||
[^3]: [The team Makefile]({{< relref "post/2021/the-team-makefile" >}})
|
||||
I need this for dev and run it because I don't remember all the commands. In my case an easy to use _makefile_ with some command for building, cleaning and testing the site before deploy it on the _world wild web_.[^3]
|
||||
[^3]: [The team Makefile]({{< relref "post/2021/the-team-makefile" >}})
|
||||
|
||||
## Conclusion
|
||||
|
||||
Working in a little team _GitOps_ is an essential tool for our teamwork.
|
||||
Working in a little team _GitOps_ is an essential tool for our teamwork.
|
||||
Good luck for your implementation of _GitOps_
|
||||
|
||||
@@ -7,7 +7,7 @@ tags:
|
||||
- hacking
|
||||
- rant
|
||||
slug: "frozen-mac-touchbar"
|
||||
categories:
|
||||
categories:
|
||||
- fingerfood
|
||||
- dev
|
||||
description: "Sometime you need to fix your frozen Mac TouchBar"
|
||||
|
||||
@@ -6,9 +6,9 @@ feature_text: "Photo by Zoe on Unsplash"
|
||||
tags:
|
||||
- hugo
|
||||
- microservice
|
||||
- flask
|
||||
- flask
|
||||
slug: "Static-with-a-Form"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
- fingerfood
|
||||
description: "If you have a static site you can also have forms"
|
||||
@@ -28,7 +28,7 @@ My personal solution for this problem is a *Microservice[^1]* *Rest Api[^2]* wit
|
||||
[^2]: [Wikipedia definition of *Rest Api*](https://en.wikipedia.org/wiki/Representational_state_transfer)
|
||||
[^3]: [Wikipedia definition of *Captcha*](https://en.wikipedia.org/wiki/CAPTCHA)
|
||||
|
||||
You can also implement this code in a larger system but I make this code for a *Microservice*.
|
||||
You can also implement this code in a larger system but I make this code for a *Microservice*.
|
||||
Also this is my *Python* implementation because *I use Python* but you can make this solution with your favorite language[^4].
|
||||
|
||||
[^4]: If your favorite language is *Cobol* or *Pascal* I suggest my code for your mental stability
|
||||
@@ -44,11 +44,11 @@ For this you need two part. One is the frontend and one is the backend.
|
||||
|
||||
<form method="post" action="/somewhere_else">
|
||||
... your form data ...
|
||||
<button class="g-recaptcha"
|
||||
data-sitekey="reCAPTCHA_site_key"
|
||||
data-callback='onSubmit'
|
||||
<button class="g-recaptcha"
|
||||
data-sitekey="reCAPTCHA_site_key"
|
||||
data-callback='onSubmit'
|
||||
data-action='submit'>Submit</button>
|
||||
</form>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
@@ -57,15 +57,15 @@ For this you need two part. One is the frontend and one is the backend.
|
||||
</script>
|
||||
```
|
||||
|
||||
With this code for form the client will call the Google server for the *reCaptcha* validation and send the form data to *"/somewhere_else"* as our endpoint.
|
||||
With this code for form the client will call the Google server for the *reCaptcha* validation and send the form data to *"/somewhere_else"* as our endpoint.
|
||||
|
||||
This code is *Universal* so any backend you will use its allways be usefull. For more info about *reCaptcha* and how to use them you can read the [official Google Guide](https://developers.google.com/recaptcha/docs/v3)[^5].
|
||||
This code is *Universal* so any backend you will use its allways be usefull. For more info about *reCaptcha* and how to use them you can read the [official Google Guide](https://developers.google.com/recaptcha/docs/v3)[^5].
|
||||
|
||||
[^5]: [Link](https://developers.google.com/recaptcha/docs/v3)
|
||||
|
||||
### Backend Python Flask and Requests
|
||||
|
||||
In my solution I use MailGun for send me the content of the form. This code send all the the content of the post without check it. It can be use for multiple form at the same time.
|
||||
In my solution I use MailGun for send me the content of the form. This code send all the the content of the post without check it. It can be use for multiple form at the same time.
|
||||
|
||||
All the config are environment variables so you can recicle the script without a lot of work and this script is ready for *serveless* implementations.
|
||||
|
||||
@@ -112,12 +112,12 @@ def hello_world():
|
||||
return redirect(SUCCESS_URL, code=302)
|
||||
```
|
||||
|
||||
In this implementation you recive the post from the form and read the form data and send it to someone with MailGun.
|
||||
In this implementation you recive the post from the form and read the form data and send it to someone with MailGun.
|
||||
If you don't need to send but to save it you can easy change the *send_mailgun_message* with what you need.
|
||||
|
||||
## Alternative
|
||||
|
||||
With the html code show before you can have different endpoint.
|
||||
You can change the desination changing the function.
|
||||
With the html code show before you can have different endpoint.
|
||||
You can change the desination changing the function.
|
||||
|
||||
For example you can send as email with SMTP or save into a database or some file in the server. The only limit is the Api Rest Post url for getting the data from the form.
|
||||
|
||||
@@ -9,7 +9,7 @@ tags:
|
||||
- coding
|
||||
- hacking
|
||||
slug: "The-team-makefile"
|
||||
categories:
|
||||
categories:
|
||||
- dev
|
||||
description: "You need to make a makefile if you are working on a team project"
|
||||
|
||||
@@ -41,7 +41,7 @@ Some git hosting like GitHub, GitLab and GitTea will show your README.md at the
|
||||
|
||||
## Building script
|
||||
|
||||
Any project you have will be having a different set of config and command to launch every task.
|
||||
Any project you have will be having a different set of config and command to launch every task.
|
||||
Sometime you will make one or more script for your task and you need to remember all of the function and launch command. So I write a makefile for all my project, personal and job related.
|
||||
|
||||
### Base of makefile
|
||||
@@ -88,14 +88,14 @@ run: install docs ## Run all the task for building
|
||||
|
||||
So, every time you will use this _makefile_ with _run_ you will run _install_, _docs_ and _run_ in this sequence.
|
||||
|
||||
## Force Testing
|
||||
## Force Testing
|
||||
|
||||
Testing is one of the must of programming. And it can be done only with scripting.
|
||||
The best way I found is using the _makefile_. Setting up a good testing suite with a full cover for the code is the base of a good project.
|
||||
Testing is one of the must of programming. And it can be done only with scripting.
|
||||
The best way I found is using the _makefile_. Setting up a good testing suite with a full cover for the code is the base of a good project.
|
||||
|
||||
And a good way for testing is using some type of _Continuous Integration_ like [_GitHub Action_](https://github.com/features/actions), [_Circle CI_](https://circleci.com/) or [_Travis CI_](https://travis-ci.org/).
|
||||
|
||||
If you will use a _CI_ with a [git-flow](http://danielkummer.github.io/git-flow-cheatsheet/)'s flow you can make the tests' result blocking for merging branch.
|
||||
If you will use a _CI_ with a [git-flow](http://danielkummer.github.io/git-flow-cheatsheet/)'s flow you can make the tests' result blocking for merging branch.
|
||||
|
||||
## Lint and reformatting
|
||||
|
||||
@@ -118,6 +118,6 @@ Also the command _pre-commit run_ will run the pre-commit hooks without make a c
|
||||
|
||||
## Conclusion
|
||||
|
||||
With this setup you can have a lot of automatic task for your project so you and your team will work better, more like a clock and without a lot of coordination if you can follow a standar template like this.
|
||||
With this setup you can have a lot of automatic task for your project so you and your team will work better, more like a clock and without a lot of coordination if you can follow a standar template like this.
|
||||
|
||||
And you can leave and enter in any project in an easy and fast way.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
+++
|
||||
# For example, to Redirect from /old_blog to /blog, set
|
||||
# For example, to Redirect from /old_blog to /blog, set
|
||||
# url to "/old_blog" and redirect_to to "/blog" below
|
||||
type = "redirect"
|
||||
url = "/social_card/"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
description: Python library for rich text and beautiful formatting in the terminal
|
||||
- name: Datasette
|
||||
url: https://github.com/simonw/datasette
|
||||
description: An open source multi-tool for exploring and publishing data
|
||||
description: An open source multi-tool for exploring and publishing data
|
||||
- language: others
|
||||
package:
|
||||
- subtype: style
|
||||
@@ -95,4 +95,4 @@
|
||||
description: GitHub Action to build and deploy a Hugo site to a remote repository 🚀
|
||||
- name: Blog post workflow
|
||||
url: https://github.com/marketplace/actions/blog-post-workflow
|
||||
description: Show your latest blog posts from any sources or StackOverflow activity or Youtube Videos on your GitHub profile/project readme automatically using the RSS feed
|
||||
description: Show your latest blog posts from any sources or StackOverflow activity or Youtube Videos on your GitHub profile/project readme automatically using the RSS feed
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Andrea Grandi ????", "photo": "https://avatars.webmention.io/files.mastodon.social/b32dc86fff05382c848f283bce646a3084a6312b7a3cc0f27a8da079a7d2d40c.jpg", "url": "https://mastodon.social/@andreagrandi"}, "url": "https://mastodon.social/@fundor333/113907209418985626#favorited-by-299643", "published": null, "wm-received": "2025-01-28T19:59:22Z", "wm-id": 1880921, "wm-source": "https://brid.gy/like/mastodon/@fundor333@mastodon.social/113907209418985626/299643", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.bsky.social"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3lgszasvubq2r", "published": "2025-01-28T16:51:37+00:00", "wm-received": "2025-01-28T17:48:55Z", "wm-id": 1880902, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgszasvubq2r%23bridgy-fed-create", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "content": {"html": "Brick and Storm: <a href=\"https://fundor333.com/photos/2025/brick-and-storm/\">https://fundor333.com/photos/2025/brick-and-storm/</a>", "text": "Brick and Storm: https://fundor333.com/photos/2025/brick-and-storm/"}, "mention-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "mention-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.bsky.social"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3lgsytoy6n625", "published": "2025-01-28T16:51:37+00:00", "wm-received": "2025-01-28T17:45:16Z", "wm-id": 1880901, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgsytoy6n625%23bridgy-fed-create", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "photo": ["https://shiitake.us-east.host.bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:u7piwonv4s27ysugjaa6im2q&cid=bafkreibck66w5xlhmxp2iwghsx2syj25vj2s6333qlnm2zyjcqbzi6a3qe"], "content": {"html": "Some brick building before the storm (<a href=\"https://fundor333.com/photos/2025/brick-and-storm/\">https://fundor333.com/photos/2025/brick-and-storm/</a>)", "text": "Some brick building before the storm (https://fundor333.com/photos/2025/brick-and-storm/)"}, "mention-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "mention-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 2, "repost-of": 0, "in-reply-to": 0, "comments": [{"content": "Brick and Storm: https://fundor333.com/photos/2025/brick-and-storm/", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgszasvubq2r%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.bsky.social"}, {"content": "Some brick building before the storm (https://fundor333.com/photos/2025/brick-and-storm/)", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgsytoy6n625%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.bsky.social"}]}}
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.bsky.social"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3lgsytoy6n625", "published": "2025-01-28T16:51:37+00:00", "wm-received": "2025-01-28T17:45:16Z", "wm-id": 1880901, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgsytoy6n625%23bridgy-fed-create", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "photo": ["https://shiitake.us-east.host.bsky.network/xrpc/com.atproto.sync.getBlob?did=did:plc:u7piwonv4s27ysugjaa6im2q&cid=bafkreibck66w5xlhmxp2iwghsx2syj25vj2s6333qlnm2zyjcqbzi6a3qe"], "content": {"html": "Some brick building before the storm (<a href=\"https://fundor333.com/photos/2025/brick-and-storm/\">https://fundor333.com/photos/2025/brick-and-storm/</a>)", "text": "Some brick building before the storm (https://fundor333.com/photos/2025/brick-and-storm/)"}, "mention-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "mention-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Andrea Grandi ????", "photo": "https://avatars.webmention.io/files.mastodon.social/b32dc86fff05382c848f283bce646a3084a6312b7a3cc0f27a8da079a7d2d40c.jpg", "url": "https://mastodon.social/@andreagrandi"}, "url": "https://mastodon.social/@fundor333/113907209418985626#favorited-by-299643", "published": null, "wm-received": "2025-01-28T19:59:22Z", "wm-id": 1880921, "wm-source": "https://brid.gy/like/mastodon/@fundor333@mastodon.social/113907209418985626/299643", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.bsky.social"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3lgszasvubq2r", "published": "2025-01-28T16:51:37+00:00", "wm-received": "2025-01-28T17:48:55Z", "wm-id": 1880902, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgszasvubq2r%23bridgy-fed-create", "wm-target": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-protocol": "webmention", "content": {"html": "Brick and Storm: <a href=\"https://fundor333.com/photos/2025/brick-and-storm/\">https://fundor333.com/photos/2025/brick-and-storm/</a>", "text": "Brick and Storm: https://fundor333.com/photos/2025/brick-and-storm/"}, "mention-of": "https://fundor333.com/photos/2025/brick-and-storm/", "wm-property": "mention-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 2, "repost-of": 0, "in-reply-to": 0, "comments": [{"content": "Some brick building before the storm (https://fundor333.com/photos/2025/brick-and-storm/)", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgsytoy6n625%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.bsky.social"}, {"content": "Brick and Storm: https://fundor333.com/photos/2025/brick-and-storm/", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3lgszasvubq2r%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.bsky.social"}]}}
|
||||
@@ -1 +1 @@
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Michel Murabito", "photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "url": "https://twitter.com/michelmurabito"}, "url": "https://twitter.com/michelmurabito/status/1583817207246880779", "published": "2022-10-22T13:47:02+00:00", "wm-received": "2022-10-22T15:10:27Z", "wm-id": 1543462, "wm-source": "https://brid.gy/repost/twitter/fundor333/1583801197688811520/1583817207246880779", "wm-target": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-protocol": "webmention", "content": {"text": "@michelmurabito al #DevFestTriveneto che presenta #ronda basato su #opa #DevFest #DevFest2022 (fundor333.com/social/2022/10\u2026)"}, "repost-of": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-property": "repost-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Michel Murabito", "photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "url": "https://twitter.com/michelmurabito"}, "url": "https://twitter.com/fundor333/status/1583801197688811520#favorited-by-51541465", "published": null, "wm-received": "2022-10-22T15:10:27Z", "wm-id": 1543463, "wm-source": "https://brid.gy/like/twitter/fundor333/1583801197688811520/51541465", "wm-target": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-property": "like-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 0, "repost-of": 1, "in-reply-to": 0, "comments": [{"content": "@michelmurabito al #DevFestTriveneto che presenta #ronda basato su #opa #DevFest #DevFest2022 (fundor333.com/social/2022/10\u2026)", "link": "https://brid.gy/repost/twitter/fundor333/1583801197688811520/1583817207246880779", "author_name": "Michel Murabito", "author_photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "author_url": "https://twitter.com/michelmurabito"}]}}
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Michel Murabito", "photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "url": "https://twitter.com/michelmurabito"}, "url": "https://twitter.com/fundor333/status/1583801197688811520#favorited-by-51541465", "published": null, "wm-received": "2022-10-22T15:10:27Z", "wm-id": 1543463, "wm-source": "https://brid.gy/like/twitter/fundor333/1583801197688811520/51541465", "wm-target": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Michel Murabito", "photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "url": "https://twitter.com/michelmurabito"}, "url": "https://twitter.com/michelmurabito/status/1583817207246880779", "published": "2022-10-22T13:47:02+00:00", "wm-received": "2022-10-22T15:10:27Z", "wm-id": 1543462, "wm-source": "https://brid.gy/repost/twitter/fundor333/1583801197688811520/1583817207246880779", "wm-target": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-protocol": "webmention", "content": {"text": "@michelmurabito al #DevFestTriveneto che presenta #ronda basato su #opa #DevFest #DevFest2022 (fundor333.com/social/2022/10\u2026)"}, "repost-of": "https://fundor333.com/social/2022/10/22/1666442277/", "wm-property": "repost-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 0, "repost-of": 1, "in-reply-to": 0, "comments": [{"content": "@michelmurabito al #DevFestTriveneto che presenta #ronda basato su #opa #DevFest #DevFest2022 (fundor333.com/social/2022/10\u2026)", "link": "https://brid.gy/repost/twitter/fundor333/1583801197688811520/1583817207246880779", "author_name": "Michel Murabito", "author_photo": "https://avatars.webmention.io/pbs.twimg.com/0b84c31cf0b9e33abe8e2bff95dad66665dfd63bc32f7dbaafffc4ac61759cc9.jpg", "author_url": "https://twitter.com/michelmurabito"}]}}
|
||||
@@ -1 +1 @@
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "LaemenPang", "photo": "https://avatars.webmention.io/files.mastodon.social/f05260061d91af3ebaa31c17256d6b75b697c03d670e1e295704ec78ca10502e.jpg", "url": "https://mastodon.social/@focusedontheberry"}, "url": "https://mastodon.social/@fundor333/113856768273797658#favorited-by-112349892458455305", "published": null, "wm-received": "2025-01-20T20:03:08Z", "wm-id": 1877825, "wm-source": "https://brid.gy/like/mastodon/@fundor333@mastodon.social/113856768273797658/112349892458455305", "wm-target": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "LaemenPang", "photo": "https://avatars.webmention.io/files.mastodon.social/f05260061d91af3ebaa31c17256d6b75b697c03d670e1e295704ec78ca10502e.jpg", "url": "https://mastodon.social/@focusedontheberry"}, "url": "https://mastodon.social/@fundor333/113856768273797658#reblogged-by-112349892458455305", "published": null, "wm-received": "2025-01-20T19:52:47Z", "wm-id": 1877823, "wm-source": "https://brid.gy/repost/mastodon/@fundor333@mastodon.social/113856768273797658/112349892458455305", "wm-target": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-protocol": "webmention", "repost-of": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-property": "repost-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 0, "repost-of": 1, "in-reply-to": 0, "comments": []}}
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "LaemenPang", "photo": "https://avatars.webmention.io/files.mastodon.social/f05260061d91af3ebaa31c17256d6b75b697c03d670e1e295704ec78ca10502e.jpg", "url": "https://mastodon.social/@focusedontheberry"}, "url": "https://mastodon.social/@fundor333/113856768273797658#reblogged-by-112349892458455305", "published": null, "wm-received": "2025-01-20T19:52:47Z", "wm-id": 1877823, "wm-source": "https://brid.gy/repost/mastodon/@fundor333@mastodon.social/113856768273797658/112349892458455305", "wm-target": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-protocol": "webmention", "repost-of": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-property": "repost-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "LaemenPang", "photo": "https://avatars.webmention.io/files.mastodon.social/f05260061d91af3ebaa31c17256d6b75b697c03d670e1e295704ec78ca10502e.jpg", "url": "https://mastodon.social/@focusedontheberry"}, "url": "https://mastodon.social/@fundor333/113856768273797658#favorited-by-112349892458455305", "published": null, "wm-received": "2025-01-20T20:03:08Z", "wm-id": 1877825, "wm-source": "https://brid.gy/like/mastodon/@fundor333@mastodon.social/113856768273797658/112349892458455305", "wm-target": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/micro/2025/10/this-is-why-you-need-a-domain/", "wm-property": "like-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 0, "repost-of": 1, "in-reply-to": 0, "comments": []}}
|
||||
@@ -1 +1 @@
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Raya ???? | Vtuber | EN | Fx Twitch", "photo": "https://avatars.webmention.io/cdn.bsky.app/79df3042bff3b88e3d7660dbf661ebcfafe490e3e52e530653039d613fb66e5f.jpg", "url": "https://bsky.app/profile/hi01.bsky.social"}, "url": "https://bsky.app/profile/fundor333.bsky.social/post/3kzeuwzfkby2t#liked_by_did:plc:bpphohr6ngb62tc6j4tko2if", "published": null, "wm-received": "2024-08-16T15:15:01Z", "wm-id": 1843407, "wm-source": "https://brid.gy/like/bluesky/did:plc:u7piwonv4s27ysugjaa6im2q/at%253A%252F%252Fdid%253Aplc%253Au7piwonv4s27ysugjaa6im2q%252Fapp.bsky.feed.post%252F3kzeuwzfkby2t/did%253Aplc%253Abpphohr6ngb62tc6j4tko2if", "wm-target": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.com"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3kzeuwzfkby2t", "published": "2024-08-10T16:26:47+00:00", "wm-received": "2024-08-10T16:26:50Z", "wm-id": 1842721, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3kzeuwzfkby2t%23bridgy-fed-create", "wm-target": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss", "wm-protocol": "webmention", "content": {"html": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (<a href=\"https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss\">https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss</a>)", "text": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss)"}, "mention-of": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss", "wm-property": "mention-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 1, "repost-of": 0, "in-reply-to": 0, "comments": [{"content": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss)", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3kzeuwzfkby2t%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.com"}]}}
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "fundor333", "photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "url": "https://bsky.app/profile/fundor333.com"}, "url": "https://bsky.app/profile/did:plc:u7piwonv4s27ysugjaa6im2q/post/3kzeuwzfkby2t", "published": "2024-08-10T16:26:47+00:00", "wm-received": "2024-08-10T16:26:50Z", "wm-id": 1842721, "wm-source": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3kzeuwzfkby2t%23bridgy-fed-create", "wm-target": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss", "wm-protocol": "webmention", "content": {"html": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (<a href=\"https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss\">https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss</a>)", "text": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss)"}, "mention-of": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss", "wm-property": "mention-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Raya ???? | Vtuber | EN | Fx Twitch", "photo": "https://avatars.webmention.io/cdn.bsky.app/79df3042bff3b88e3d7660dbf661ebcfafe490e3e52e530653039d613fb66e5f.jpg", "url": "https://bsky.app/profile/hi01.bsky.social"}, "url": "https://bsky.app/profile/fundor333.bsky.social/post/3kzeuwzfkby2t#liked_by_did:plc:bpphohr6ngb62tc6j4tko2if", "published": null, "wm-received": "2024-08-16T15:15:01Z", "wm-id": 1843407, "wm-source": "https://brid.gy/like/bluesky/did:plc:u7piwonv4s27ysugjaa6im2q/at%253A%252F%252Fdid%253Aplc%253Au7piwonv4s27ysugjaa6im2q%252Fapp.bsky.feed.post%252F3kzeuwzfkby2t/did%253Aplc%253Abpphohr6ngb62tc6j4tko2if", "wm-target": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/social/2024/08/10/dont-prefill-config-files/", "wm-property": "like-of", "wm-private": false}], "stats": {"like-of": 1, "bookmark-of": 0, "mention-of": 1, "repost-of": 0, "in-reply-to": 0, "comments": [{"content": "A short post about how to implement a config file in your app with future in head. It look like it is the git way to the config file (https://fundor333.com/social/2024/08/10/dont-prefill-config-files/?utm_medium=rss)", "link": "https://bsky.brid.gy/convert/web/at://did:plc:u7piwonv4s27ysugjaa6im2q/app.bsky.feed.post/3kzeuwzfkby2t%23bridgy-fed-create", "author_name": "fundor333", "author_photo": "https://avatars.webmention.io/shiitake.us-east.host.bsky.network/745ae7c92d33ea40ee0a0cc07825d49dcf5f0375c9b77cf4404889a238e66f93.jpg", "author_url": "https://bsky.app/profile/fundor333.com"}]}}
|
||||
@@ -1 +1 @@
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Juna Salviati", "photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "url": "https://twitter.com/1littleendian"}, "url": "https://twitter.com/1littleendian/status/1571418211077263360", "published": "2022-09-18T08:37:51+00:00", "wm-received": "2022-09-18T10:17:19Z", "wm-id": 1521960, "wm-source": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571418211077263360", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "content": {"html": "<Kubrick intensifies>\n<a class=\"u-mention\" href=\"https://fundor333.com/\"></a>\n<a class=\"u-mention\" href=\"https://twitter.com/fundor333\"></a>", "text": "<Kubrick intensifies>"}, "in-reply-to": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "in-reply-to", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "chringel.dev", "photo": "https://avatars.webmention.io/pbs.twimg.com/fe9de013c66a0cf94194afef099d4a6d11de39de0714f731f25094a68f0a467f.png", "url": "https://twitter.com/DeEgge"}, "url": "https://twitter.com/fundor333/status/1571209821579317249#favorited-by-367205669", "published": null, "wm-received": "2022-09-18T11:00:04Z", "wm-id": 1521995, "wm-source": "https://brid.gy/like/twitter/fundor333/1571209821579317249/367205669", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Juna Salviati", "photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "url": "https://twitter.com/1littleendian"}, "url": "https://twitter.com/fundor333/status/1571209821579317249#favorited-by-777766650", "published": null, "wm-received": "2022-09-18T10:17:19Z", "wm-id": 1521961, "wm-source": "https://brid.gy/like/twitter/fundor333/1571209821579317249/777766650", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "\ud83c\uddfa\ud83c\udde6\ud83c\udff3\ufe0f\u200d\ud83c\udf08\ud83d\udc0dFundor 333\ud83d\udc33\ud83d\udc68\u200d\ud83d\udcbb", "photo": "https://avatars.webmention.io/pbs.twimg.com/c3d085f0266cb157220a9e6312c26ccaeb56e5c4d2d501cf0d6426f05c36890e.jpg", "url": "https://twitter.com/fundor333"}, "url": "https://twitter.com/fundor333/status/1571761030824337409", "published": "2022-09-19T07:20:06+00:00", "wm-received": "2022-09-19T07:30:05Z", "wm-id": 1522347, "wm-source": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571761030824337409", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "photo": ["https://pbs.twimg.com/media/FdAEUv1X0AEHAxf.jpg"], "in-reply-to": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "in-reply-to", "wm-private": false}], "stats": {"like-of": 2, "bookmark-of": 0, "mention-of": 0, "repost-of": 0, "in-reply-to": 2, "comments": [{"content": "<Kubrick intensifies>", "link": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571418211077263360", "author_name": "Juna Salviati", "author_photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "author_url": "https://twitter.com/1littleendian"}]}}
|
||||
{"source": [{"type": "entry", "author": {"type": "card", "name": "Juna Salviati", "photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "url": "https://twitter.com/1littleendian"}, "url": "https://twitter.com/fundor333/status/1571209821579317249#favorited-by-777766650", "published": null, "wm-received": "2022-09-18T10:17:19Z", "wm-id": 1521961, "wm-source": "https://brid.gy/like/twitter/fundor333/1571209821579317249/777766650", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "Juna Salviati", "photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "url": "https://twitter.com/1littleendian"}, "url": "https://twitter.com/1littleendian/status/1571418211077263360", "published": "2022-09-18T08:37:51+00:00", "wm-received": "2022-09-18T10:17:19Z", "wm-id": 1521960, "wm-source": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571418211077263360", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "content": {"html": "<Kubrick intensifies>\n<a class=\"u-mention\" href=\"https://fundor333.com/\"></a>\n<a class=\"u-mention\" href=\"https://twitter.com/fundor333\"></a>", "text": "<Kubrick intensifies>"}, "in-reply-to": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "in-reply-to", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "chringel.dev", "photo": "https://avatars.webmention.io/pbs.twimg.com/fe9de013c66a0cf94194afef099d4a6d11de39de0714f731f25094a68f0a467f.png", "url": "https://twitter.com/DeEgge"}, "url": "https://twitter.com/fundor333/status/1571209821579317249#favorited-by-367205669", "published": null, "wm-received": "2022-09-18T11:00:04Z", "wm-id": 1521995, "wm-source": "https://brid.gy/like/twitter/fundor333/1571209821579317249/367205669", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "like-of": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "like-of", "wm-private": false}, {"type": "entry", "author": {"type": "card", "name": "\ud83c\uddfa\ud83c\udde6\ud83c\udff3\ufe0f\u200d\ud83c\udf08\ud83d\udc0dFundor 333\ud83d\udc33\ud83d\udc68\u200d\ud83d\udcbb", "photo": "https://avatars.webmention.io/pbs.twimg.com/c3d085f0266cb157220a9e6312c26ccaeb56e5c4d2d501cf0d6426f05c36890e.jpg", "url": "https://twitter.com/fundor333"}, "url": "https://twitter.com/fundor333/status/1571761030824337409", "published": "2022-09-19T07:20:06+00:00", "wm-received": "2022-09-19T07:30:05Z", "wm-id": 1522347, "wm-source": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571761030824337409", "wm-target": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-protocol": "webmention", "photo": ["https://pbs.twimg.com/media/FdAEUv1X0AEHAxf.jpg"], "in-reply-to": "https://fundor333.com/post/2022/github-copilot-write-my-post/", "wm-property": "in-reply-to", "wm-private": false}], "stats": {"like-of": 2, "bookmark-of": 0, "mention-of": 0, "repost-of": 0, "in-reply-to": 2, "comments": [{"content": "<Kubrick intensifies>", "link": "https://brid.gy/comment/twitter/fundor333/1571209821579317249/1571418211077263360", "author_name": "Juna Salviati", "author_photo": "https://avatars.webmention.io/pbs.twimg.com/db009297897afff07f3d2f4e2b0975db90fc93750fb726d947439bff65268c71.jpg", "author_url": "https://twitter.com/1littleendian"}]}}
|
||||
@@ -14,7 +14,7 @@
|
||||
{{- $rssFeedDescription := .Site.Params.rssFeedDescription | default "summary" -}}
|
||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||
{{- printf "<?xml-stylesheet href=\"/rss.xsl\" type=\"text/xsl\"?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:media="https://www.rssboard.org/media-rss">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
|
||||
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 567 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 492 KiB |
|
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 209 KiB |
|
Before Width: | Height: | Size: 983 KiB After Width: | Height: | Size: 764 KiB |
|
Before Width: | Height: | Size: 390 KiB After Width: | Height: | Size: 433 KiB |
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 390 KiB |
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 209 KiB After Width: | Height: | Size: 281 KiB |
|
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 280 KiB |
|
Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 382 KiB After Width: | Height: | Size: 214 KiB |
|
Before Width: | Height: | Size: 591 KiB After Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 185 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 646 KiB After Width: | Height: | Size: 983 KiB |
|
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 530 KiB |
|
Before Width: | Height: | Size: 325 KiB After Width: | Height: | Size: 382 KiB |
|
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 325 KiB |
|
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 520 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 269 KiB After Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 300 KiB |
|
Before Width: | Height: | Size: 329 KiB After Width: | Height: | Size: 616 KiB |
|
Before Width: | Height: | Size: 285 KiB After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 545 KiB |
|
Before Width: | Height: | Size: 324 KiB After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 616 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 520 KiB |
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 321 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 235 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 764 KiB After Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 433 KiB After Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 240 KiB After Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 321 KiB After Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 2.7 MiB After Width: | Height: | Size: 646 KiB |
|
Before Width: | Height: | Size: 567 KiB After Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 324 KiB |
|
Before Width: | Height: | Size: 492 KiB After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 545 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 591 KiB |
|
Before Width: | Height: | Size: 313 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 459 KiB |
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 197 KiB |