Home on Dag's home
open_in_new https://dag7.it/index.xml
Recent content in Home on Dag's home
Feed Info
[2025-10-27T10:15:07.325Z] Updated feed with 59 items
[https://dag7.it/index.xml] groups = Blogs
Copy Link
Grid View
List View
Flow View
The Now Page
This is a now page. To know more, see here
Oneliner is in the bottom part, right now Iâm not using it
#
Oct 2025
#
website: this website has been (once again) reworked out. Thanks to a friend of mine that avoided to switch to yet another theme, Iâve moved all the serious content elsewhere. Now I feel much more satisfied, and Iâd like to do whatever I want with this space. IâM FREE, YAHOO!
videogames: finished âPhoenix Wright vs Laytonâ. 7.5/10, I didnât like much the end and a lot of puzzles were too easy. Also the story is not so realistic, though itâs beautiful.
website: Thinking about doing some nows instead of a big now page like so, but I need to think about it, because right now, not only I would need to design now page in a different way, but content on my website should focus on something. Since writing what I do is my main content, well, Iâm just not sure on what to doâŚ
website: I also would like to implement a beautiful gallery from scratch, since everytime I need to insert some photos is a painful experience of HTML and Markdown
movies: Iâve seen Clockwork Orange at cinema. I did like it especially for the OST by Wendy Carlos. Iâd say it is majestic for several aspects: how actors have been filmed by cameras, the plot (Iâve been to cinema blind, I didnât know a single word about the plot), the soundtrack (duh!), and I liked the actors too, because of their facial expressions. Furthermore, Iâve discovered after the movie that the movie is from a novel, therefore maybe I should read the novel. It is a raw movie, but itâs technically speaking beautiful, an experience which is about psychological thriller.
movies: Iâm gonna to watch Profondo Rosso at cinema too.
videogames: Iâve finished Cassette Beasts. I think itâs one of the most lovable games Iâve ever played, it really has been made with heart. Furthermore, itâs surprisingly fun and it includes mechanics already seen somewhere else, but with some nice changes without some of the annoying Pokemon behavior. I love Pokemon! Or at least the old games. But some things are just unnaturally non-sense, like TMs and HMs. You have fusions, you have lores, you can let a monster learn whatever move you want, and if you want change those moves to another monster, it is perfectly fine⌠you even have the ability of using powers to access to some places while going around the map
dev: dealing with reverse engineering and malware analysis. Itâs frustrating but itâs really fun and Iâm enjoying every single minute spent in this activity.
#
books: finished âIl Codice Da Vinciâ 4.5/5, a book I loved from the beginning to the end. There wasnât any evening in these two months that I wish I could stop, in every page something happens.
music: im exploring live coding with Strudel REPL. Iâm also practicing with my bass. Iâve also released a September cover on my SoundCloud
videogames: Iâm still finishing Phoenix Wright vs Ace Attorney, it is a though journey because a part of me would just explore, another part of me would just play the trial segments
language: Iâm learning japanese. So far so good, it isnât an easy journey, but itâs fun after all
#
books: finished âIl magico studio fotografico di Hirasakaâ 5/5, Iâve liked so much the three main stories there, Iâve also liked the setup of the book and whatâs going on (topics: life, memories, memories in life, self-reflections about happiness)
music: im working on my new Game Boy EP, it will be ready hopefully at the end of December
videogames: I really am on Cassette Beast, have finished (once again) Super Mario Bros 3 hard mode with luigiâs physics, Iâm now relaxing with Amazing Penguin
#
tech: Iâve developed sossoldi-companion app to help keeping track of my spending
music: Iâve bought a bass. Itâs time to slap!
music: Iâve played @ Zona Warpa Rome stage. It was amazing to see down the stage crowded by people. Iâve also attended a brief introduction on how to make music with Game Boy
#
tech: attended to RHC Conference 2025, it was interesting especially the talk âNet insecurity: The uncomfortable legacy of hippie philosophyâ
tech: Iâve created âminder appâ, it is a note-taking app in the style of an offline social media. More information will be available if I release the app. Just imagine Twitter with your posts only. Powered by Flutter.
music: attended to Tamala Fest. It was really great!
#
3D: ended a Blender series, I did have a lot of fun. Itâs time to try something else with some discipline now!
Music: brainstormed about future dates and tracks
Books: Algorithms to live by
#
Began creating in Blender, for the sake of knowing something more. Iâve discovered that Iâm having a great time, and lot of fun.
#
Reading more books, doing more fun stuff. I wrote a couple of book reviews here in italian.
Made a Computer Vision project: a Machine Learning model that learnt how Atac bus stops are made and by using AR projects useful information on the screen of the user. Made with Unity!
Made a project, ARMiiPlaza, a recreation of Mii Plaza in Augmented Reality. It is far from being finished, but if I will choose to invest some of my time in Blender, as far as I will make progress with it I will surely go on with that project
Even if my talk hasnât been accepted for CFP, I am going to continue the development of slides and materials
3D Filament is over, I should refill it but Iâm never in the mood of buying another filament
Finally practicing more my electric guitar!
#
Made a full stack project (Regalia⌠once again) with microservices and AWS Lambda + AWS Cognito
Learnt about Locust and the fundamentals on how to benchmark a service
Prepared a talk for Pycon IT 2025
#
Attended Serverless Days as volounteer
Attended last CoderDojo of the year XMasDojo@CoderDojoSPQR
Learnt about AWS and Cloud Architecture
Learning more about CTF and Cybersecurity, thanks to Sapienza Bootcamp. I didnât take much notes, I should write them in a well-structured form and publish it on my website.
#
Attended CoderDojo
Fiddling with 3D Printer, after many years Iâve finally bought one!
#
Nobodyâs Sleeping has been finally released!
Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lightning talk about chiptune
Playing Balatro, refactored my Instagram identity in order to reflect my interests (now iâm publicly available on the coolest Instagram page ever, available here)
Restyling of my website⌠once again.
#
Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
Started âIl gatto che voleva salvare i libriâ, a book about a cat that wants to save books
#
In session, with not much time
Working on a new project, a game for GBA PC
Practicing music with Gameboy, a Nintendo DS and a small synth
Finished âUn estate con la strega dellâovestâ, still reading âExit Realityâ
Iâd like to play more videogames
#
The Wall is now publicly available. Feel free to use it!
Finishing some books - in this period, âBullet Trainâ, but Iâve started another one called âExit reality. Vaporwave, backrooms, weirdcore e altri paesaggi oltre la sogliaâ
Practicing music with a Nintendo DS.
Playing Shiren The Wanderer
Many events such as Zona Warpa 2024 but Iâve attended other cool events too.
#
The Wall a place for your notes and public notes
Finishing some books - in this period, âBullet Trainâ
Oneline-ish thing is a thing now, and what youâre seeing is this section.
Practicing analog music on Stylophone and Pikocore.
Restyling of my website⌠once again.
Soldering boards to make Pikocore a board to play music in an âanalogâ style
Watching movies
#
Building this website - the only thing I really miss is a simple oneline style blog, to update about my projects, thoughts and creations, which is work in progress and it will arrive a day or another
Finishing some books - in this period, âBullet Trainâ
Playing videogames - on Nintendo Ds mostly
Practicing dnb on PSVita - I wish to release something in 2024
Practicing piano - improvising jazz is a thing
Working with Django to build awesome things
Iâm trying to keep it simple, so I can update it easily.
#
2025-05-11: attended to Tamala Fest, I should write a small blog post on it with some photos.
2025-04-17: Iâve seen last lesson of a Blender series I was following. Itâs been really useful and fun.
2025-04-16: Brainstormed about tracks on LSDJ, I have some material.
2025-03-05: I did start using Blender. Iâm having a lot of fun!
2025-02-13: Finally Iâm playing more my electric guitar, I 3d Printed a stand and now it is standing on the floor of my place.
2024-10-20: Wrote an article about curiosity and whatâs going on in my free time.
2024-10-18: Iâve finished âIl gatto che voleva salvare i libriâ. It was short but nice, Iâd like to write an article about it.
2024-10-08: Once again, Iâve restyled my website. Iâm trying to keep it simple and clean. Letâs see how it goes.
2024-10-06: came back from Copenaghen, sad as always when I come back from a trip. Today Iâve seen in Copenaghen Amalieborg, the national gallery (fine arts), the botanical garden and the house of the butterflies
2024-10-05: iâve seen in Copenaghen the little mermaid, the round tower, Rosenborg castle, the black diamond, the opera house (from outside), raduspladsen and strøget street
2024-10-04: leaving here as a placeholder, I need to log more things related to my trips around the world.
2024-10-04: Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lighting talk about chiptune. Iâve seen Christiania area and Nyhavn area. I wanted to go to Tivoli but it was closed.
2024-09-27: Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
2024-06-12: In session, with not much time
2024-04-18: Small restyling of contactsâ homepage section.
2024-04-17: Oneline-ish thing is a thing now, and what youâre seeing is this section.
Reverse Engineering la luce in fondo al tunnel, prima dell'abisso
Caro Dag del 2013,
finalmente sei riuscito a coronare uno dei tuoi sogni nel cassetto: riuscire a saper comprendere o quantomeno leggere un codice assembly per poterci mettere le mani sopra e manipolarlo a tuo piacimento.
Sono le 3 e 45, e finalmente dopo un tour de force durato 3 giorni, posso dire che ho concluso la lettura del manuale di magia nera âPractical Malware Analysisâ.
YEEEEEEEEEE đ
Tecnicamente ho barato: alcuni hands-on non li ho fatti, mentre alcuni capitoli li ho saltati. Mi giustifico dicendo che a breve termine non mi servono, promettendomi di tornarci in un secondo momento con piĂš calma. I capitoli piĂš avanzati, a differenza dei primi, piĂš semplici, sono quelli piĂš interessanti e che permettono di scovare piĂš malware da un punto di vista pratico.
Ma volevo fare una mini recensione!
Avete presente quando vorreste un bel manuale che vi spieghi per filo e per segno cosa dovete fare? Ecco, questo è perfetto sotto questo punto di vista: spiegazioni chiare e semplici, con una serie di esercizi allegati, con tanto di soluzione commentata passo passo. Non mi sorprende affatto che sia considerato come testo di riferimento: sarà anche molto vecchio e alcuni dei tool al quale fa riferimento sono stati sostituiti da cose piÚ aggiornate, ma le basi a distanza di anni sono rimaste quelle.
Tra i contro invece mettiamo lâessere scritto in bianco e nero (a volte le cose con riquadri e colori si capiscono di piĂš), ma soprattutto il fatto di essere rimasto fermo a Windows XP. Da un lato il fatto che il libro risulti ancora attuale è molto bello. Dallâaltro però, alcuni esempi non funzionano. Ho speso circa 3 ore una sera per poi sorprendermi che non câera soluzione allâesercizio che stavo facendo, se non usare una vecchia VM con Windows XP.
Dunque ho scelto di leggere questo manuale per passare un esame universitario ma anche perchÊ questo argomento mi è sempre piaciuto e non ho mai avuto modo di approndirlo.
Câè un ma: fare reverse engineering, soprattutto di malware, richiede una base di conoscenza di Assembly (nel manuale viene spiegato), e di come si programma in generale. Ai tempi non sapevo programmare, figuriamoci fare le operazioni al contrarioâŚ
Ă assolutamente impensabile pensare di seguire un manuale del genere senza saper programmare, o senza fare gli hands-on.
Câè una bella differenza tra il leggere e il fare, e questo Feynman lo sapeva molto bene.
Ad ogni modo, gli esempi sul libro sono molto didattici. Vorrei riuscire a preparare una sorta di videolezioni fatte da me, perchĂŠ si trovano in giro in inglese ma non in italiano. Ă vero che viviamo nel 2025, dove le traduzioni automatiche sono allâordine del giorno, ma mi piacerebbe riuscire comunque a portare questo argomento su un canale YouTube.
Inoltre⌠ho preso tantissimi appunti usando Obsidian! Proprio non mi capitava di prendere cosĂŹ tanti appunti da un sacco di tempo. Ă bello arrivare a fine giornata con tante cose apprese e scritte, a moâ di diario.
Il mondo dei malware e del reverse engineering è un mondo mistico fatto di sigle, di misure antireverse, e di tanto, tanto codice Assembly. Sicuramente fare lâesame è stata una buona motivazione, ma non mi sarei mai concentrato cosĂŹ tanto ad approfondire.
Sono stati tre giorni incredibili dove ho imparato tantissime cose, e non vedo lâora di metterle in pratica, magari cominciando a fare i crack-me o altre sfide online, sino ad arrivare ai sample degli esami.
Come ritirare il diploma della scuola superiore
Qualche giorno fa, mi è venuto in mente di cercare come ritirare il diploma di scuola superiore, una cosa che avrei dovuto fare tempo fa forse, ma va bene cosÏ, meglio tardi che mai dice un proverbio.
Scrivo una email alla segreteria della mia vecchia scuola, chiedendo i prossimi passi.
Una signora molto cortese mi risponde dicendomi âpagamento su cc1016, di 15.13⏠la scuola è aperta questi giorni dalle 15 alle 16â
Ecco le scelte che avevo a mia disposizione:
Pagarlo online tramite una piattaforma messa a disposizione dal ministero âPago in reteâ aperta alle scuole
Andare alla posta e pagarlo
Andare sullâapp della mia banca e pagarlo lĂŹ
Usare unâapp di terze parti (non faccio il nome per rispetto)
Il mio primo pensiero è stato âva be, andiamo sullâapp della banca e paghiamoâ
E cosĂŹ, tra unâapp e lâaltra, sono giunto sul link di pagamento dei bollettini.
Inserisco i dati: cc1016, importo 15.13âŹâŚ per scoprire che⌠lâunica tipologia di bollettino accettata è l'896
âPoco maleâ â Penso tra me e me â âbasterĂ usare lâapp ministeriale âPago in reteâ, designata ai pagamenti elettronici tra scuole e cittadiniâ.
Mi registro con SPID, apro la web app, cerco il nome della scuola e noto che sono disponibili due voci della stessa scuola, una col codice meccanografico corretto e i dati giusti, lâaltra sembra la rimanenza di dati meno recenti ma comunque quella era esattamente la mia scuola. A scanso di equivoci decido di inserire quella col codice meccanografico.
Ecco che succede: selezionando quella col codice identificativo corretto spunta fuori un messaggio di errore dicendo che la scuola non supporta i pagamenti fatti tramite la piattaforma.
Decido allora di provare quella senza codice, trattandosi della stessa scuola. Il sistema mi risponde ânon ci sono pagamenti attivi che possono essere effettuatiâ. Come se la scuola avrebbe dovuto attivare la possibilitĂ di pagare quel servizio online, e non di default.
Spazientito, decido di scaricare lâapp di terze parti, la mia ultima spiaggia. Prima di scaricarla mi sono informato come pagare il bollettino che serviva a me, e lâapp in questione ha proprio un articolo in cui spiegano che è possibile farlo. âOttimo!â â esclamo â âallora sicuramente riuscirò a pagare questa voltaâ.
Mi registro, apro lâapp e⌠ancora una volta, schiaffi in faccia, il sistema mi dice âsi, una volta era possibile pagare anche gli altri tipi di bollettini, ma ora solo l'896â.
Ultima spiaggia: decido di andare in ufficio postale. Mi reco li e scopro che non solo lâufficio postale è chiuso, ma ha un bel cartello appiccicato con su scritto âper i servizi postali, recarsi a 1.5km da qui la mattina, e 1.9km da qui se i servizi vi servono il pomeriggioâ. Per motivi di tempo ovviamente non potevo recarmi lĂŹ la mattina, e il pomeriggio quando ho deciso di effettuare il pagamento avevo i minuti contati.
Ecco un poâ di considerazioni, prima di spiegarvi come pagare la tassa di diploma.
Siamo nel 2025. I pagamenti elettronici sono stati introdotti a forza in Italia, per permettere una quasi-modernizzazione del paese e per combattere lâevasione fiscale.
In un mondo governato dai pagamenti elettronici, non è possibile che per pagare determinati tipi di tasse o tributi debba essere necessario affidarsi alle poste, obbligatoriamente di persona. Ă una cosa veramente assurda e inutile, atta solo a favorire incentivi e giri di soldi verso una determinata azienda, che non è neanche nellâinteresse dei cittadini.
Avrei capito se il pagamento fosse stato possibile effettuarlo online esclusivamente tramite una certa piattaforma, anche se non ne vedo il motivo, tanto i soldi sempre allâagenzia delle entrate vanno. Ma addirittura legare indissolubilmente il pagamento delle tasse e dei tributi alle poste, questo è un comportamento che trovo davvero inaccettabile.
Unâaltra considerazione che voglio fare riguarda il sistema di pagamento âPago in reteâ. Ă notevole il fatto che abbiano voluto semplificare il pagamento di tasse e tributi tramite un sistema di pagamento. Perlomeno non dobbiamo attendere in fila alle poste (sigh) il pagamento di una qualsiasi tassa scolastica. Il problema è che se la scuola non attiva il sistema di pagamento, è completamente inutile.
Non ho dati sufficienti per stabilire quante e quali scuole e di che ordine utilizzino il sistema di pagamento ministeriale, ma che senso ha avere il sistema piĂš figo del mondo e non attivarlo obbligatoriamente in tutte le scuole?
Quindi:
alla pubblica istruzione, invito ad abilitare e forzare i pagamenti elettronici tramite la piattaforma, dando anche la possibilità di pagare di persona per chi è impossibilitato
allâagenzia delle entrate, invito ad abilitare il pagamento di tutte le tipologie di bollettini online, tanto i soldi sempre voi li ricevete, vi è perfettamente indifferente chi li fa
alla scuola stessa, invito ad accettare il sistema di pagamento âPago in reteâ o effettuare i versamenti in autonomia, mettendo a disposizione una cassa in contanti dove posso direttamente versare i soldi e possono essere versati al mio posto
Questa è una storia davvero tutta italiana, con cose allâitaliana.
Ecco come fare:
capire quando la scuola puo riceverti e se hanno ancora il tuo diploma
se non lo hanno, contatta il miur
recarsi alle poste
non perdere tempo (sigh) a cercare altri metodi di pagamento
conto corrente: 1016
intestato a: agenzia delle entrate - nucleo operativo di Pescara
importo: 15.13
causale: tassa di diploma
vai a scuola col documento e la ricevuta
La giungla degli spazi personali
Alla fine è successo: mi sono finalmente deciso a cambiare un poâ la struttura di questo sito web. Ă difficilissimo ritagliarsi degli spazi online senza impazzire. Il mio sito web, sĂŹ, proprio quello che state leggendo, era unâaccozzaglia di roba tra il professionale e il non professionale.
Posso affermare con una certa sicurezza che a partire da oggi:
- la parte musicale adesso ha unâidentitĂ tutta sua, e la potete vedere al solito link dag7.it/music
- la parte professional adesso è scorporata in un altro dominio che ho da un sacco di anni
- la home page è stata pulita, ed adesso contiene i link secondari che prima era impossibile vedere
Spero vivamente di aggiornare la gallery, al piu presto, magari modularizzandola visto che ora è una giungla di html+css+js+foto inserite a casaccio nella cartella static
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Decap CMS Test: svolta o bidone?
Proprio qualche giorno fa mi sono imbattuto nella necessità di dover scrivere un articolo per il mio blog. E mi è totalmente passata la voglia di farlo!
Abbraccio moltissimo la filosofia open source di avere i file in markdown, hostati da qualche parte, essendo il mio un piccolo spazio statico ci sta che sia una cosa piccola.
Ma a volte la semplicitĂ si scontra con la troppa semplicitĂ : non avere unâinterfaccia bella e piena di feature (come ad esempio quella di Wordpress) limita tantissimo il processo creativo. Da una parte non hai il problema di un editor e sei indipendente da tutte le tecnologie. Dallâaltra però, anche lâocchio vuole la sua parte. Soprattutto per le immagini, è davvero una faticaccia scrivere i post in formato markdown, metterci unâimmagine carina ecc.
Sarebbe tutto piĂš semplice se esistesse un software in grado di gestire questa situazione.
Oggi ho scoperto https://decapcms.org/ che per chi non lo conoscesse è un software che fa esattamente la cosa che stavo cercando.
Non è perfetto: non è comunque bellissima lâinterfaccia, e mi piacerebbe che in futuro la situazione migliorasse, però facciamo notevoli passi da gigante.
Ecco uno screenshot di cosa vedo io quando vado a scrivere un nuovo articolo:
Uno screenshot di decap cms
Che dire? Sarà la soluzione finale o dovrò (sigh) migrare da qualche altra parte su Wordpress?
GitLab CI/CD Pipelines Explained with a Fun Tiramisu Recipe
GitLab CI/CD Pipeline Tutorial for Beginners
#
During a DevOps crash course, Iâve been called to teach how to setup a simple GitLab pipeline.
It wasnât easy: the people who took part in that course, were from very different backgrounds: backend in PHP, frontend, people out of school at their first job employment⌠despite of this, Iâve talked to them about what a devops does, who is it, and how pipelines are important.
In this article, you are going to learn how to setup a simple toy pipeline, in order to experiment a little bit with GitLab runners.
I donât care just gimme the recipe and Iâll figure out everything else!!!
here it is
How to do it
#
The first step is to have a GitLab account. You can sign up for a GitLab account here. I personally donât use that much GitLab, but I will move provided my use cases fits GitLab.
Next, you should create a repository:
fill the blanks as you prefer
and click the blue button âcreate a projectâ
#
Now itâs time to write a small pipeline and set the runner.
#
A pipeline is a group of steps (named âstagesâ) that include jobs, what we need to do in each stage.
To understand more this concept, imagine cooking a Tiramisu: you have to first prepare ingredients, then you have to assemble them, there is a cooling part and the final step is service. These all stages.
Jobs can be, in the stage of preparing ingredients: make some coffee, whip cream and sugarâŚ
Stages and jobs together in a file, form a pipeline, that is given to a runner.
#
A runner is a server, running Linux, that will take what you wrote in your pipeline and setup all the processes in order to accomplish what you told it.
For example, if we said âdear runner, compile our application (given a Dockerfile) and publish it on GitLabâ it will exactly do this thing.
The way to communicate between us and the machine, is using a YAML file.
#
A YAML file is a plain text file, with some instructions in there. YAML is a declarative language, meaning that we donât have to write specific keywords in order to describe or achieve something in particular, rather than we focus more on the grammar of the language to reach our goals.
To learn YAML I strongly suggest this amazing website that will teach you in no time how to write some YAML.
#
Left side of the menu, âbuildâ, âpipelinesâ
Next, click on the âtest templateâ
We will be in the pipeline editor: this will create a .gitlab-ci.yml file at the end of our edits.
Click âcommit changesâ at the end and wait for a pipeline running warning at the top of the page.
If you click on the link in blue, you will see something like this:
donât worry if something doesnât have a green tick, it will be a matter of time.
If everything goes well, everythingâs will be marked in green.
This means that pipeline has succeeded.
#
Hereâs the YAML file to copy paste in the pipeline:
stages:
- prep
- assembly
- cooling
- serving
prepare_cream:
stage: prep
script:
- date +%H%M%S
- echo "I beat the egg yolks with the sugar"
- echo "I add the mascarpone"
- echo "I whip the cream and fold it in"
prepare_coffee:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the coffee with the Moka pot (preferably a large one)"
- echo "I let the coffee cool"
prepare_ladyfingers:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the ladyfingers"
soak_ladyfingers:
stage: assembly
script:
- date +%H%M%S
- echo "I dip the ladyfingers in cold coffee"
layer_layouts:
stage: assembly
script:
- date +%H%M%S
- echo "Arrange the ladyfingers in the pan"
- echo "Spread the mascarpone cream"
- echo "Repeat the layers until the pan is full"
- echo "Drizzle the surface with bitter coffee or chocolate"
chill_tiramisu:
stage: cooling
script:
- date +%H%M%S
- echo "I refrigerate the tiramisu for at least 4 hours"
serve_tiramisu:
stage: serving
script:
- date +%H%M%S
- echo "I get the set of plates"
- echo "I plate the tiramisu"
- echo "I serve it to my guests"
- echo ":)"
- echo "Measure blood sugar"
This is the recipe in Italian:
stages:
- preparazione_ingredienti
- assemblaggio
- raffreddamento
- servizio
prepara_crema:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Monto i tuorli con lo zucchero"
- echo "Aggiungo il mascarpone"
- echo "Monto la panna e la incorporo"
prepara_caffe:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo il caffĂŠ con la Moka (meglio se grande)"
- echo "Lascio raffreddare il caffè"
prepara_savoiardi:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo i savoiardi"
inzuppa_savoiardi:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Inzuppo i savoiardi nel caffè freddo"
metti_strati:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Disporre i savoiardi nella teglia"
- echo "Stendere la creama al mascarpone"
- echo "Ripetere gli strati fino a esaurire lo spazio nella teglia"
- echo "Spolverare con caffè amaro o cioccolato in superficie"
raffredda_tiramisu:
stage: raffreddamento
script:
- date +%H%M%S
- echo "Metto il tiramisĂš in frigo per almeno 4 ore"
servi_tiramisu:
stage: servizio
script:
- date +%H%M%S
- echo "Prendo il set di piattini"
- echo "Impiatto il tiramisĂš "
- echo "Servo ai miei ospiti"
- echo ":)"
- echo "Misurare la glicemia"
Save it into your pipeline editor, commit and�
#
We have cooked a delicious tiramisu and learnt how the pipeline works! đ°đŤâď¸
#
Thanks for your attention, I highly suggest to try it out this simple example to get started with GitLab runners and pipelines. This was a toy example, but many other awesome things can be done.
Try this pipeline in your own GitLab project and share your results by sending me an email!
NOTE: the line âdateâ in script part, is for echoing the date time when the job is executed. This is to figure out if the job execution is done in parallel or in sequence. Figure it out for yourself, which of the two ways.
Come creare musica con il gameboy (Zona Warpa Roma 2025)
Hai partecipato al talk a Zona Warpa Roma 2025? Sei solo curioso di vedere le mie slide del talk che ho tenuto?
Clicca qui e sarai accontentato!
La formula magica per vivere felici
#
âLa Sottile arteâ è un libro che mi ha sempre incuriosito sin da quando avevo 16 anni: ai tempi leggevo tantissimi libri, e mi ricordo che un giorno presi questo libro tra le mani e iniziai a leggerlo, un poâ attratto dal suo contenuto, un poâ perchĂŠ câera una parolaccia nel titolo.
Col passare degli anni i ricordi si sono affievoliti ma appena ne ho avuto lâoccasione ho acquistato questo libro.
Incoraggia ad avere una visione del mondo diversa da quella che uno ha oltre a dare altre visioni, cose che magari conosci e sai, ma non hai avuto modo di rifletterci ultimamente.
Nel libro vengono affrontati tantissimi temi e cosa dovrebbero o non dovrebbero rappresentare nella vita di tutti noi, volendone citare qualcuno: sbattersene, sbattersi per quello che uno vuole davvero e non per lâideale, scegliere bene i valori, Panda Deluso lâeroe che non esiste ma tutti ne hanno bisogno, il segreto della felicitĂ e dellâinfelicitĂ , emozioni, leggi di inversione.
#
Ho trascritto a mano alcune citazioni ed elaborato brevi pensieri eccoli qui:
#
Sbattersi per troppe cose nuoce alla tua salute mentale
â Pagina 12
ed è vero, spesso non ce ne rendiamo conto ma siamo totalmente assorbiti dalle troppe cose che ci succedono, dai troppi stimoli solo perchÊ non abbiamo imparato a selezionarle
#
Si chiama Ciclo di risposta infernale, e appena ti distrai ci finisci dentro e ti manda in pappa il cervello. Non è colpa nostra, è un errore che la societĂ stessa ci porta a fare. Eâ la spinta. Sii il migliore, il piĂš popolare, il piĂš produttivo, il piĂš invidiato, il piĂš ricco, il piĂš attraente, il piĂš ammirato. Sii perfetto, formidabile, poi esci e vai a fare il tuo lavoro ultra gratificante che finirĂ per salvare anche il mondo
â Pagina 15
Fregandotene ottieni i migliori risultati
â Pagina 18
Valori
#
Scegli sempre per cosa batterti
â Pagina 27
Valori di merda: piacere, successo materiale, avere sempre ragione ed essere sempre positivi.
â Pagina 102
In particolare nel secondo punto, racconta della storia del batterista dei Beatles, Pete Best, che fu cacciato dalla band, e fu sostituito da Ringo Starr. Lui trovò il coraggio di ricominciare una nuova vita con la sua compagna e i propri figli.
Racconta anche la storia di Dave Mustaine: un chitarrista bravissimo che faceva parte dei Metallica, ma fu cacciato dalla band. Lui non si arrese e fondò i Megadeth, una band che ebbe un successo incredibile ma che non raggiunse mai i livelli dei Metallica e lui ne soffrÏ molto.
Nel terzo punto invece afferma che è molto piÚ utile presumere di essere ignoranti e non sapere granchè, poichÊ questo permette di imparare e migliorarsi.
Quando abbiamo valori scadenti che applichiamo a noi stessi o ad altri ci sbattiamo per cose di poca importanza. Quando abbiamo valori migliori, ci sbattiamo per cose che contano davvero.
â Pagina 110
Come scegliere dei valori un poâ migliori
#
ResponsabilitĂ
#
Ogni cosa che succede siamo noi a scegliere come reagire
Incertezza
#
La certezza è nemica della crescita. Non câè nulla di certo finchĂŠ non accade â e anche a quel punto, resta discutibile. Per questo motivo perchĂŠ avvenga una crescita di qualunque tipo è necessario accettare le inevitabili imperfezioni dei nostri valori.
â Pagina 145
Fallimento
#
Se una cosa ti modifica la eviti. Ă il motivo per il quale le persone evitano il successo o il fallimento e non fa le cose, come diventare un grande artista o pubblicare video o un libro.
â Pagina 165
Se sei bloccato su un problema, non restare fermo a pensarci sopra; comincia a lavorarci. Anche se non hai idea di cosa stai facendo, il semplice fatto di lavorarci finirĂ per portare nella tua testa le idee giuste
â Pagina 192
Rifiuto
#
Ma dobbiamo rifiutare qualcosa. Altrimenti non diamo importanza a niente. Se nessuna cosa è migliore o piĂš desiderabile di unâaltra, siamo vuoti e la nostra vita non ha significato
â Pagina 204
La gente non può risolvere per te i tuoi problemi. NÊ dovrebbe provarci, perchÊ la cosa non ti renderà felice. Neanche tu puoi risolvere i problemi degli altri, perchÊ analogamente non li renderesti felici. Una relazione malsana si ha quando due persone cercano di risolversi a vicenda i problemi per sentirsi bene rispetto a se stessi.
Al contrario, una relazione sana si ha quando ciascuno risolve i propri problemi per sentirsi bene rispetto allâaltro. Imporre qualche limite decente non significa che non puoi aiutare il tuo partner o sostenerlo, o essere sostenuta e aiutata. Dovete sostenervi a vicenda. Ma solo perchĂŠ scegliete di farlo. Non perchĂŠ vi sentite obbligati o pensate che sia dovuto.
â Pagina 212
Per questo il tradimento è cosĂŹ distruttivo. [âŚ]
O si ricostruisce la fiducia, o ci si saluta. Il problema è che quasi tutte le persone che sono scoperte a tradire si scusano e fanno il discorsetto del Non succederà mai piڝ e basta. Molti traditi accettano questa risposta come dato di fatto e non si chiedono se quei valori e quelle cose lo rendano una buona persona con cui stare insieme.
Se una persona tradisce, qualunque sia il motivo, è evidente che i valori di chi tradisce non sono allineati in modo tale da sostenere una relazione sana, e se questa persona non lo ammette o si rifiuta di accettarlo è priva dellâautoconsapevolezza necessaria a risolvere qualunque problema relazionale.
â Pagina boh
Morte
#
Tu sei un grande, e non perchĂŠ hai obiettivi definiti e beni materiali. Queste cose non definiscono la grandezza. Sei un grande perchĂŠ di fronte alla confusione infinita e alla morte certa, continui a decidere per cosa sbatterti e per cosa no. Questo semplice fatto, il semplice scegliere i valori della tua vita, ti rende giĂ una persona bellissima, di successo e amata. Anche se non te ne rendi conto, se stai morendo di fame o dormendo sotto un ponte. Anche tu morirai e questo perchĂŠ anche tu hai avuto lâenorme fortuna di avere vissuto.
â Pagina 247
Budda
#
Qui non riporto delle citazioni, ma lâautore parla della storia di Buddha, storia che personalmente non conoscevo e ho ritenuto molto interessante.
In breve: Buddha era un principe che aveva tutto, ma non era felice, e un giorno decise di abbandonare luogo, averi e casa e andare in cerca della veritĂ uscendo dalla sua zona di comfort.
#
Panda Deluso ⌠il suo superpotere sarebbe quello di dire alle persone le veritĂ crudeli che hanno bisogno di sentire ma che si rifiutano di accettare. Andrebbe di porta in porta come un venditore di Bibbie, suonerebbe il campanello e direbbe cose come: ÂŤCerto, fare un sacco di soldi ti fa sentire bene, ma non ti farĂ amare dai tuoi figliÂť, [âŚ]. Poi augurerebbe ai padroni di casa una buona giornata e sâincamminerebbe verso lâappartamento successivo
â Pagina 36
Lâautore fa riferimento ad un ipotetico eroe che non esiste, ma vorrebbe che esistesse. Panda non si farebbe problemi nel dire le cose, belle o brutte che siano, sputandoci in faccia la realtĂ .
Soffriamo perchÊ è biologicamente utile, sprona al cambiamento.
Se eviti i tuoi problemi e senti di non averne, ti rendi infelice. Il segreto sta nel risolvere i problemi, non nel non averne
â Pagina 41
FelicitĂ
#
Desiderare unâesperienza positiva è giĂ di per sĂŠ unâesperienza negativa
â Pagina 16
Non sarai mai falice se continui a cercare in che cosa consiste il significato della vita - Albert Camus
â Pagina 17
La domanda giusta non è âcosa vuoi dalla vitaâ ma âquale dolore vuoi dalla tua vitaâ
â Pagina 48
La felicitĂ richiede fatica, cresce dai problemi. La gioia non sunta dalla terra come le margherite.
â Pagina 49
La strada verso la felicità è una piena di mucchi di merda
â Pagina 50
Emozioni
#
Le emozioni sono segnali, suggerimenti, non comandamenti. Le emozioni negative sono una chiamata alâazione, quando le provi è perchĂŠ devi fare qualcosa.
â Pagina 45
Sai chi basa la propria vita sulle emozioni? I bambini di tre anni e i cani. Essere ossessionato dalle emozione e attribuire loro un-importanza eccessiva ci danneggia per il semplice fatto che esse non durano.
â Pagina 46
Sui social
#
PiĂš siamo liberi di esprimerci, piĂš vogliamo essere liberi di non interagire con chiunque possa turbarci e non essere dâaccordo con noi.
â Pagina 72
Essere nella media è perfettamente ok: se fossimo tutti speciali nessuno lo sarebbe.
â Pagina 78
Legge dellâinversione (backwards law)
#
PiĂš ti sforzi di essere certo di qualcosa, piĂš ti sentirai incerto e insicuro
Conclusioni
#
Un libro che offre indubbiamente una panoramica su un modo di vedere le cose diverso al quale siamo abituati. Condivido personalmente molti punti che vengono toccati e spero di riuscire anche il suo seguito molto presto.
Dopo questo trip mentale allâinsegna di Panda Deluso, consiglio di leggere Atomic Habits di James Clear, dopo questo libro recensione piccola che arriverĂ prossima settimana.
Storia del Videogioco: la mia recensione in qualche paragrafo
Oggi ho finalmente finito âStoria del Videogiocoâ, un libro che avevo inziato a Dicembre ma che non avevo terminato.
Il libro è molto corto, ha circa 150 pagine e racconta dagli albori ai videogiochi piÚ moderni.
Secondo me è ottimo per chi non è esperto per nulla e vuole approfondire o semplicemente per gli amanti del retrogaming: sono venuto a conoscenza di importanti figure e di parti delle storie di alcune delle piĂš famose case di produzione videoludiche dellâepoca proprio grazie a questo libro.
Lâinizio è davvero immersivo, racconta la storia del videogioco, partendo da prima dellâesposizione del 1958 di Tennis For Two addirittura.
Verso la fine si perde tantissimo e viene tutto condensato in qualche manciata di pagine: davvero un peccato, secondo me si sarebbe potuta spendere qualche parola in piĂš per lâevoluzione dei giochi e il mercato in generale.
Nel complesso va benissimo da leggere ai fini di accrescere la propria cultura storica sui videogiochi classici e storici, ma non prendetelo come testo di riferimento per i videogiochi dopo il 2010.
Cosa ho imparato da un progetto fallito
Introduzione
#
Per il mio esame di Computer Vision dovevo fare un progetto in una tecnologia che sfruttasse la Computer Vision. Poteva trattarsi di un modello di Machine Learning (da ora in avanti ML), riconoscimento di voltiâŚ
Tuttavia una delle mie passioni piĂš grandi, sin dal 2014, è sempre stata la realtĂ aumentata. Siccome i modelli di ML spopolano al giorno dâoggi, basti pensare a Deepseek a GPT e chi piĂš ne ha piĂš ne metta, mi sono venute in mente diverse idee.
#
Ciò che però ha conquistato la mia scimmia, è stata unâidea tanto semplice quanto complessa.
A Roma abbiamo un grande problema: gli autobus e i mezzi pubblici. Noi li odiamo, loro odiano noi, quindi la cosa è reciproca, ma câè una cosa insopportabile che non ho riscontrato in quasi nessuna altra cittĂ : le fermate dellâautobus (o paline) sono senza le tabelle degli orari previsti e delle partenze da capolinea.
Questa grave mancanza fa sĂŹ che certamente una persona si affida alle app online, ma fattuariamente le app online mostrano solo il prossimo o i prossimi orari previsti o dei bus in arrivo.
Senza contare che ogni volta bisogna geolocalizzarsi o inserire il codice della fermata a mano, o i nomi delle fermate. Non tutte le app infatti supportano lâinserimento del numero identificativo della fermata.
Quanto sarebbe bella unâapp che la apri, inquadri la fermata, lui ci pensa qualche secondo e ti dice in tempo reale che fine ha fatto il tuo autobus, se arriva o meno, prossime partenze da capolinea e⌠insomma tutte le informazioni del quale potresti avere bisogno ma proiettate direttamente sulla fermata?
E da qui inizia lâodissea.
#
La nostra storia comincia con Unity: questo strumento permette infatti, stando alle informazioni che si trovano online di creare esperienze per la XR, la cosiddetta Extended Reality che comprende RealtĂ Aumentata e RealtĂ Virtuale, in maniera abbastanza semplice.
Inoltre è gratuito.
PerchĂŠ non approfittarne?
Bè perchĂŠâŚ
NON ESISTE un altro modo per fare esperienze AR con un motore grafico!
O meglio, esistono altri motori grafici, che però non hanno implementato tutte le funzionalità come Unity. Va da sÊ che per creare esperienze di questo genere si ha bisogno di Unity.
Non lâho mai usato, non conosco i principi del game design e della programmazione dei videogiochi in 3D, ma voglio dire, se Godot provato il giorno prima è cosĂŹ semplice, immagino sarĂ come bere un bicchier dâacqua.
La curva di apprendimento è altissima: non consiglierei mai Unity ad uno sviluppatore alle prime armi, ma neanche ad un programmatore con molta esperienza. Non si capisce dove sono le cose, devi aggiungere componenti intermedi per eseguire qualsiasi azione, insieme a Unity ti viene installato Visual Studio (non Code) che è pesantissimo e scomodo, ogni volta che cambi qualcosa allâinterno del progetto (assets) deve ricaricare tutto e ci mette del tempo, ed infine utilizza C# che non è un grossissimo problema venendo da Python e Java, ma se stai lavorando in velocitĂ lo è eccome se non conosci il linguaggio.
Unity funziona a scene, e in ogni scena ci sono gli oggetti. Gli oggetti possono avere delle proprietĂ , altri oggetti a loro volta (es. Canvas, una tela, può avere al suo interno unâimmagine o anche un bottone).
#
Lâidea alla base è molto semplice: unâapp che preso il flusso della fotocamera, riconosce che si tratta della fermata del bus, estrae il testo, fa una ricerca online della fermata e restituisce tutte le informazioni necessarie.
Scompattiamola in piĂš problemi e soluzioni:
Prendere il flusso della fotocamera: qui Unity ci viene in aiuto, basta inserire un oggetto nella scena del gioco giĂ preimpostato.
Riconoscere la fermata del bus: qui mi viene da dire che o usiamo delle immagini di riferimento e la libreria opencv in modo tale da riuscire a estrapolare lâimmagine, oppure usiamo un modello di Machine Learning opportunamente addestrato.
Estrarre il testo: idem, usiamo un altro modello di ML
Cercare e restituire le informazioni: serve un endpoint intermedio o una chiamata a OpenData. Niente che non possa essere gestito.
#
GiĂ iniziare a settare la camera giĂ fatta e impostata è unâimpresa. Inizialmente avrei dovuto usare OpenXR e AndroidXR salvo poi scoprire che si tratta di un ecosistema non rilasciato. Ho speso la parte iniziale per configurare il progetto e cercare di far funzionare quelle cose, salvo poi scoprire che non servivano. Dopo un poâ di peripezie e ricerche online riesco a capire come fare: basta aggiungere AR Session e AR Camera Manager.
#
E come? Abbiamo detto prima di usare OpenCV la libreria ricca di strumenti per computer vision. Gli unici due risultati che trovo sono questo tool a 50$ e questâaltra libreria qui emgucv che però la prima costa 50$ e la seconda non si trovano esempi.
Devo passare ad un modello di Machine Learning.
Mi imbatto in questo articolo e questa guida che spiegano come creare un riconoscitore di oggetti personalizzato. Proprio ciò che serve a me!
Ă il momento di cercare le immagini delle fermate dellâautobus di Roma: online se ne trovano a bizzeffe per fortuna quindi faccio presto. Ma come faccio a dire al modello di ML che quella è una fermata del bus? Semplice, bisogna riquadrare gli oggetti nelle immagini, usando tool come cvat.ai.
La fase di labeling, questo è il nome tecnico, dura 2 ore, ma devo rifare il lavoro 3 volte.
La prima perchĂŠ lâho fatto in maniera non consistente inquadrando un poâ la fermata e un poâ il contenuto della fermata, la seconda perchĂŠ non ho pulito il dataset da eventuali immagini a bassa risoluzione e unâaltra cosa fondamentale: YOLO supporta, solo rettangoli, e non forme personalizzate.
Di conseguenza, siccome non sapevo di questa cosa e ho pensato di selezionare tutta lâarea del bus, devo fare di nuovo labelling delle immagini.
La terza è quella giusta.
#
Dopo qualche giorno riesco finalmente ad addestrare un modello in 300 epoch, con una precisione altissima. Sono molto soddisfatto ma câè un problema: Unity supporta solo file onnx, non pt, il formato predefinito di pytorch. Decido di convertire il modello e noto che gli output sono sbagliati: che fare?
Dopo moltissime ricerche vengo a scoprire che bisogna applicare dei âcontrolayerâ: ma io non ho la piĂš pallidea idea di cosa applicare.
CosÏ armato di pazienza e motori di ricerca cerco e cerco e cero, finchè non mi imbatto in questo link dagli sviluppatori. La manna dal cielo: basta copiare questo, modificarlo leggermente e⌠FUNZIONA TUTTO!
Il risultato è un disastro: lo script è stato sviluppato per la versione 1.4.0 di Sentis, ma ora siamo alla 2.1, e nonostante ci siano delle guide per modernizzare il codice, cerco di scrivere il codice aggiornato diverse volte, fallendo miseramente.
Mi viene in mente allora una cosa semplice tanto banale: passare a una versione inferiore di Sentis, cosĂŹ che quellâesempio possa girare senza problemi. Per mia fortuna funziona proprio cosĂŹ!
#
Armato di forbici dalla punta arrotondata, capisco che ora il problema è fargli riconoscere la fermata.
Ecco cosa provo:
riaddestrare facendo labelling nuovamente per la quarta volta, questa volta cercando di fargli riconoscere fermata e numero
addestrare 4 modelli diversi su tempi diversi
integrare un altro modello che riconosca le cifre
Inutile dirvi che nessuna di queste funziona: il testo è troppo piccolo nelle foto.
Su unity inoltre, poichĂŠ câè bisogno di quel formato onnx, non riesco ad usare nessun altro modello e tesseract non si può usare perchĂŠ non câè una guida su come usarlo su sentis.
Decido di fare una cosa: delegare a un sistema esterno il compito di tradurre il testo dallâimmagine, mentre allâapp lasciare il compito di riconoscere la fermata.
#
Anche questa cosa si rivela un buco nellâacqua: il sistema esterno è pronto, metto su una piccola app in Flask in Python con la libreria tesseract per lâOCR, ma lâapp non riesce a rilevare cifre su immagini piccole.
Se invece gli dò tutta lâimmagine lâOCR avviene, ma non molto correttamente e i numeri non li rivela mai.
#
Ecco cosa ho imparato grazie a questa esperienza:
prima di iniziare o proporre un progetto valutarne attentamente la fattibilitĂ
quando si gestisce un esempio, sarebbe bene aggiornarlo allâultima versione man mano che le versioni avanzano
YOLOv8 è ottimo per riconoscere oggetti personalizzati
se non hai una GPU potente, linux, e un bel disco capiente, scordati di fare qualunque cosa con il machine learning. Lâalternativa è Copilot ma devi assumere che il modello venga addestrato in tempi brevi.
Yes, the end, vicolo cieco.
Via verso un altro progetto!
Canto di Natale, cucina cinese e DOM clobbering
Ecco tre cose a caso che mi sono piaciute e ho scoperto ultimamente.
#
Il vero canto di natale, non rappresenta come in molti noi crediamo il fatto che âa Natale siamo tutti piĂš buoni e si sta in famiglia e si fa il grande pranzoâ.
Lâimmagine di Babbo Natale, è presa dal fantasma del Natale presente.
Il fatto di festeggiare il Natale, nasce come celebrazione del solstizio: il giorno in cui ci sono meno ore di luce in tutto lâanno. Di conseguenza si è piĂš deboli e fare un pranzo tutti insieme è un modo per rimanere forti perchĂŠ è piĂš difficile sopravvivere: fa freddo!
Quando Dickens scrisse il canto di Natale, era il 1840, in piena rivoluzione industriale: non si stava cosÏ bene, Londra si era appena trasformata in una cappa grigia a causa della rivoluzione industriale. Ai padroni delle fabbriche però questo non importava: stavano bene dopotutto poichÊ loro guadagnavano, e finchÊ un lavoratore fa guadagnare, tutto bene. I poveri lavorano, i ricchi stavano bene.
#
A Milano câè stato il primo insediamento cinese in Italia: questo perchĂŠ dopo la prima guerra mondiale vennero dei cinesi a Milano (quaranta) che via via divennero sempre di piĂš, originari della provincia di Zhejiang.
In Cina hanno un detto: a colazione si mangia tanto, a pranzo si mangia bene, a cena si mangia intelligente.
colazione: si mangia tanto perchĂŠ deve servire una grande energia per tutta la giornata e per lavorare
pranzo: si mangia bene, quindi anche cose piĂš pesanti
cena: si mangia intelligente, ossia leggero poichĂŠ ognuno ha le proprie condizioni e le proprie esigenze (cercando su Google ho trovato âmangiare come un poveroâ)
Una colazione tradizionale è un poâ dolce e un poâ salata, e può comprendere di: pane di soia che deve essere bianco e leggermente dolciastro, bao con verdure miste e carne , latte di soia dolce e latte di soia salata con salsa di soia, pastella fritta, cipollotto e coriandolo.
Un pranzo invece dipende: di solito è 1+1, 2+1, 3+1, 4+1 o 4+2 e significano (numero di portate)+(numero di zuppe). Es. 2+2 vuol dire due piatti principali e due zuppe. Lâacqua non si beve: si prende il tĂŠ e si ordina la zuppa proprio per assumere liquidi. Solitamente è 2+1: pak-choi saltato (verdure) e carne di suino saltato con peperoni e peperoncino piccanti. La zuppa invece, la piĂš popolare, è con pomodoro, uovo e cipollotto. E immancabilmente anche una ciotola di riso bianco. Non câè un ordine.
#
Javascript è molto simpatico: mette tutto dentro collection. Possiamo sfruttare questa cosa per creare oggetti secondo un criterio che vogliamo noi e modificare lâesecuzione di alcuni script.
Ad esempio, se noi abbiamo
<script>
if(window.isSafe) {
console.log("Flag");
}
quel window.isSafe non esiste ma può essere creato aggiungendo da qualche parte nella pagina
<a id='isSafe' name='...' href="onerror=alert(1)"></a>
ma ciò non funziona perchĂŠ il browser fa encoding in automatico; possiamo evitare questa cosa usando lo schema cid, aggiungendo cid allâinizio
<a id='isSafe' name='...' href='cid:"onerror=alert(1)//'></a>
Medium: is it worth your time and effort?
Medium: is it worth your time and effort?
#
It is a paradox: why am I writing an article on Medium about why I donât like it?
I occasionally return to Medium, wondering why I left a place like this. After all, they provide a distraction-free editor, that is appealing, a melting pot of articles, and is full of people who write stories, and I love stories! After all, one right story could change the world.
I wouldnât say I like to discuss whatâs working here; instead, Iâd like to discuss some criticisms and issues, hoping they will be changed soon.
(SPOILER: it is unlikely to happen)
#
Letâs talk about the editor and markdown: I cannot easily import my content into Medium, and vice versa: exporting my Medium content to other formats is a nightmare.
We can import articles from other websites, by clicking âStoriesâ and âImport a storyâ, but they will be badly formatted, at least speaking about markdown.
Though Medium is based on a business model where people pay to read exclusive content on this platform, when I write my content as many people do, Iâm used to writing everything in Markdown format.
This is because Markdown is platform-agnostic. Provided that you have a âMarkdown interpreterâ you can see your content styled everywhere.
By letting people write in a plain text file on something like an old Mac, or even a Commodore 64, and share it in some way, you leave the door open to recycling old hardware that probably was going to be left in the dust in a basement or straight to the dump.
You could even save your Markdown files to a floppy disk and load it into a 80s/90s computer
Being able to import your stories more comfortably, provides access to your platform, potentially increasing the number of people who want to write here.
However, it is understandable that you donât want to people leave Medium: I donât personally share this line of thoughts.
#
Why do I criticize the Markdown editor so much?
It could be more intuitive: to write some source code by using a monospace font, we can use ``` on a newline and a textbox will appear.
This is similar to Markdown: thatâs great, but Medium editor is a WYSIWYG editor (what you see is what you get) therefore I would expect that when you copy-paste and highlight the text, the option âformat as codeâ would be available.
What about links? You should select text and click on the âlinkâ icon: you canât say in advance to create a link like you would with Markdown.
While aiming for simplicity and a distraction-free writing experience, writing articles can be frustrating for users who are more standardized editors. Speaking about code, although using a monospace font for code is clear once you get the hang of the triple backticks (```) or the â+â code block option, these functions
Any action other than formatting text in bold, italics, or underlining, like inserting links, code blocks, and images, requires selecting text or navigating through a â+â menu.
While the editorâs clean, âdistraction-freeâ design is appealing, the non-standard formatting options and limited Markdown support make it tedious for users to work efficiently.
We can sort out these problems by allowing Markdown or adding a few standard optional toolbar icons without cluttering the layout.
#
Letâs say we are writing a guide with some code inside: we cannot place a code block inside a bullet list, because the only possible moves are:
Hit return: this creates a new numbered item. You canât insert a code block within the item itself.
Double enter: this creates a new line where you can insert a code block, but it breaks the list flow. After adding the code block, youâre stuck outside the list and canât continue numbering
Shift and enter: this lets you move to a new line within the same list item without breaking the flow, but you canât add any additional formatting or a code block on that line.
The same thing happens for images as reported by Medium itself: you cannot include an image within a list without breaking the list.
This could be better because I think it would be great if I could create a numbered list for my guides or procedures and place images wherever I want.
Since editors are just a means to express ourselves, we should be able as free as we can, an editor is just a tool; it shouldnât control us. We use it to express our unique spirit.
#
Mediumâs editor has great potential, especially for people who want to jump in and write without fuss.
But for those who like to have a bit more control or are used to Markdown, it can feel frustrating â or a hunt for the right formatting option.
Letâs hope Medium will take step to streamline and maybe even standardize things. With just a few tweaks, it could be a better experience.
If you liked this article, come say hi over at dag7.it or consider supporting my work â every bit helps
Originally published on medium.com on 5th November 2024, at 13:00
AIO Kittens ITA: an italian-only (maybe) unified manual for Exploding Kittens
Have you ever thought about playing Exploding Kittens but you donât feel up to use hundreds of different manuals?
Today, Iâm gonna release âAIO Kittensâ, a unified manual that includes not only official expansions, but also other unofficial ones.
Iâve never tried to print it on a leaflet or something like that, it should be more compact than the official one.
Feel free to reach me through my email to let me know if this is useful for you or you would like to share with me your thoughts on it!
For now is italian-only, in future who knows, if enough interest is reached I can think about an english version.
==Download it now==
New track: Nobody's Sleeping
A new track is finally out!
#
Many years have passed since I did that track.
Iâm happily releasing it for Halloween. Hope you enjoy it!
As always, donât forget to check my music page to stay updated with all my music.
The Rabbit Hole of Curiosity: A Personal Dive into Tech and Security
Starting a new academic year
#
A new academic year has started. Well, not today, but a month ago.
Geez, time flies.
It is strange how every academic year feels like the first one but with the knowledge of the previous ones. It is like a new game plus, but with the same character and more skills: scared of the unknown, but with the knowledge of the past.
Anyway, hereâs the story: Iâve started some brand new courses. I always have been curious about the world, especially for the things that are related in my field of study.
Informatics is divided into many branches, but I think the major ones are:
Backend programming: the part of the software that is not visible to the user, you know, âthe magic under the hoodâ
Frontend programming: the part of the software that is visible to the user, the âpart that the user seesâ
DevOps: the part of the software that is related to the deployment and the maintenance of the software, fundamental skill for a developer, but also for a system administrator
Security: the part of the software that is related to the security of the software, the âpart that keeps the software safeâ
During the years, Iâve explored many of these branches, Iâm currently working as a backend developer and DevOps, but Iâve always been interested in the security part. It is fascinating how a software can be secure or not, and how a software can be exploited by a malicious user.
Because, after all, user is the most unpredictable part of the software.
Knowing how to write a good and a bad software is a fundamental skill. Knowing how to break it, it is even more important because you can understand how to protect it and how to write a more secure software.
#
Yesterday I got up in the morning, and started to study like a fool. I was highly demotivated: this is related to the fact that Iâve attempted a couple of exams in the past, and Iâve failed them. Iâve studied a lot, but Iâve failed them.
I was demotivated, but Iâve decided to try again.
This time is different: Iâve started to study two courses, one about the security of the software and the other one is about malware analysis.
It is impossible to explain how much Iâm enjoying them: the stuff is exactly what I was looking for years, but I never dared to study by myself, because I was scared of its complexity.
Well, they are not easy: they are definitely not easy, but I donât think they are impossible, and being in an universitarian environment, I can ask for help if I need it or if Iâm stuck, while alone at home, I cannot ask for help, and Iâm stuck with my thoughts.
So, until now, Iâve been studying a lot, and Iâve learned a lot of things.
Everytime Iâve finished a lesson, I had a dopamine rush, and I wanted to know more about it, in particular by consuming videos and articles.
It would be a good idea:
to write some articles about security and malware analysis, what Iâm learning, to not forget them
update my notes with the new things Iâm learning
#
I will never understand why I get in love with things I donât know. When I grasp a new concept, I feel like Iâm in love with it, and I want to know more about it, but this is applied to every unknown field and leads me to a rabbit hole of curiosity.
Unfortunately the time is limited, and I cannot explore everything I want with the depth I want.
Iâm a curious person, and I will always be.
xoxo, Damiano
p.s. very soon I will start in reading âAtomic Habitsâ by James Clear, Iâve heard a lot of good things about it, and Iâm curious to know more about it. I will write an article about it, for sure.
p.p.s. Iâm so happy that Iâve finally have found some time to write an article: it makes me feel good.
Django Day 2024: lighting talk on Chiptune
The event
#
Django Day in Copenaghen is an event dedicated to Django, the Python web framework. It was a one-day event, and I had the chance to attend it as a speaker.
Iâve decided to talk about Chiptune, a genre of music that uses the sound chips of old computers and consoles to create music.
#
Iâve presented a small introduction to Chiptune, explaining what it is and how it is made. Iâve also shown some examples of main artists, the demoparties, the Chiptune music, and Iâve explained how to create Chiptune music using a tracker and whatâs the difference between a tracker and a DAW.
#
If youâre here, you probably would like to download the slides of my talk.
Maybe youâre interested in Chiptune, or maybe youâre interested in the talk Iâve done.
Click here to download the slides.
If you donât feel up to download the slides, click here to see a youtube video of me in action.
#
The feedback was great. Iâve received some questions about Chiptune after the talk. I talked with some people who knew artists and discovered new people doing music.
I also make music, take a look if you please!
The organizers were happy with my talk, and theyâve asked me if I would have liked to perform a live Chiptune session. Iâve accepted, and Iâve performed a small live session at the end of the event, using my Gameboy.
Zona Warpa Milan 2024 Tour: what's now?
Milan has been the last Zona Warpa Tour, I took part and here it is a small blog post to share my experience.
#
Everything has started in 2023, when the first Zona Warpa Tour was announced.
Zona Warpa is a self-managed videogame festival, mainly focused on indie and small productions. They are organized in different cities, and the last one in 2024 was in Milan.
As attendee, I had the chance to play some games, meet some developers and also take part in some talks and they were about a lot of different topics, from accesibility to translation.
I also had the chance to meet some people and have a good time with them.
The first time I took part, was in Rome in June 2023.
But this was an important event for me, also because I have the possibility to finally show my composition on stage. I have been working on this for a long time, and I was very happy to have the chance to show it to the public, in collaboration with a friend of mine. We performed together under the pseudonym of âcyrix86mpuâ.
Iâve also been able to code a little cracktro, thanks to the awesome LOVJ that helped me with visuals while performing.
What about now? Iâm looking forward to the next Zona Warpa Tour, and if I will have more tracks ready, I will be happy to perform again.
Stay tuned for more updates!
xoxo
#
The full video is available here: https://video.zonawarpa.it/w/v6SJtA54A5LRm6ay86kJhZ
#
Zona Warpa Torino 2025
Ă stato fighissimo il Gabrio, ed è stato bello suonare per le persone che câerano al suo interno.
Day 5: Videogame's Devlog - Inventory, HP, counter attacks
I am caught up in something else and have been slowing down these days.
The situation has become untenable: I feel the need to write tests and modularize the code further.
Things break and I donât know why.
Anyway, I manage to create a small inventory by deciding to treat the inventory as a dictionary and inserting an object into it every time it is printed in the overlay.
Thereâs a problem: exits are added to the inventory, that it is not what we want, but never mind: this is a problem I will fix another time.
I also decide to implement the fact that enemies counter-attack by assigning each monster an attack and a defense and making it so that when they counter-attack and when I attack, according to small mathematical formulas the hp is decreased or not.
To get around the regeneration problem I temporarily decide to make the character recover one hp every time he moves.
I also decide to implement the fact that the character can die: if the hp is less than 0, the game ends. To start a new game, just press the âRâ key.
The game is starting to take shape, but I have to fix some bugs and make it more playable, for now Iâd like to polish on textures and make the game more enjoyable, so I manage to understand when to use borderâs tileset and when not.
Other wishable features are:
handle items in the inventory
fix enemies texture bug
add proper tiles for the border in the map
invent a story
add a boss / boss room
I am very happy with the progress I made, but I have to keep going.
Day 4: Videogame's Devlog - graphics, minimap and level up
Tonight is the night! I need to implement graphics!
Well, how to do it? Old videogames were made with spritesheets, so I decide to do the same. I downloaded a spritesheet from a free itch.io download link, and I am ready to go�
But whatâs the basic idea? I have to draw the map exactly as I did before, but instead of drawing colored squares, I have to draw textures.
The steps are:
load the spritesheet
while drawing the map, if the tile is a wall then go to the spritesheet and take the 4th square by row and column
for example, if the wall is at row 1 and column 1, then the square is at row 0, column 0, wide 16 and high 16
if the character is at row 2 and column 1, then the square is at row 161 and column 116, wide 16 and high 16, and so on
this is because the spritesheet is 16x16 and every square is 16x16
This is feasible, so I decide to go ahead: I modify the main structure by adding row column and spritesheet where the graphics are saved.
After that, instead of drawing colored squares I decide to draw textures, each 16x16 and⌠itâs a great idea, everything works, I just have to be careful to change the sprites of the enemies.
Wouldnât it be nice a minimap in the HUD too? Of course, it may come in handy for me for debugging purposes but also for the player in the future.
I notice that minimap is the same map I normally draw, but with pixels 1x1 instead of tiles. Basically there is no need to rewrite the code, just to make a function that draws a general map.
Since the code is starting to be a mess, I decide to refactor it a bit: dictionary will store each elementâs characteristics, like this:
{
"enemy": {
"x": 10,
"y": 10,
"hp": 10,
"attack": 2,
"walkable": False,
...
},
...
}
Look how itâs beautiful!
Now itâs time to improve the HUD and set health points and attack points to the protagonist and enemies.
I decide to also change the function that inserts stuff into the map: in case of enemies/living people, it also inserts additional parameters such as residual hp or collected tool, so that I can manage enemiesâ items and death as well.
I finally decide to implement a simple level up (experience) and level up mechanism, by using some math functions and randomness.
Day 3: Videogame's Devlog - HUD, enemies, AI, and more!
Good morning Night City
-Cyberpunk 2077
My morning is not a morning, but an evening, and it starts after a good sip of caffè latte: I am ready to face the day. I have a lot of ideas in my head and I want to make them reality.
I had an interesting discussion some time ago with some friends of mine about the difference of cappuccino, caffè latte, and latte macchiato. I am not a coffee expert, but I knew that the difference is in the amount of milk and coffee. The articles I read on the internet are not very clear, however this article here explained by ânientepopodimenoâ but Caffè Borbone is very clear and I recommend it to you if youâre interested.
We need first to resolve the performance problem: a dear friend of mine advised me to reduce the size of the map since I would make less effort that way. I decide to throw down the whole dungeon generation algorithm and redo it almost from scratch.
Iâve watched some videos and read some codes online, but this excellent video brought to you by âTheZZAZZGlitchâ is really interesting and explains in a visual way an approach to generate dungeons.
The generation algorithm is very interesting: first it generates rooms as I do, then unlike me who immediately tries to connect them, it generates âdumbâ rooms (called 1x1) and tries to connect them with existing rooms. It also does another thing: it generates a special border (soft border) that does not allow it to be crossed or passed in any way.
I reason a little bit about how to do that: generate the rooms, okay, which I already had. I can import the 1x1 idea: sounds good to me!
To my surprise it is an approach that works very well: by increasing the number of 1x1 rooms I can increase or decrease the complexity of a dungeon.
Basically it is like connecting multiple rooms together: an approach that works very well!
Before I re-create the collisions and âthe walkable and the unwalkableâ, I want to make sure that I generate the items and everything that is needed to go from one world to another correctly.
It occurs to me that I have to generate items, money, etc., and these should not be in corridors. Grr, this is difficult.
Going back to the performance problem, I decide to reduce the size of the map to 56x32 pixels. Since I did my algorithm in a way that I can change the size of the map, I can do this without any problem and with some surprise I see that the performance has improved a lot, generations are almost instantaneous.
I am very happy and this is the result!
Things canât stop here:** I have to generate the items and the money**. I have to generate the exit that will take me to the next level. I have to generate the enemies and some elementary game elements: key, chest, exit, enemy, boss, trap. After all, I can treat everything as walkable/not walkable as well.
I create a dictionary of tuples: the name is something I know, the tuple there is number (which I will need in the final map), the âcommonâ name, and a color that will then be replaced by a texture in the future.
{
"key": (1, "key", (255, 255, 0)),
"R#@*JE@": (0, "nothing", (0, 0, 0)),
...
}
The idea is to draw the map and depending on what is in the map, draw something different.
#
It also occurs to me that there might be overlapping problems: however, if I calibrate the spawn order well, I should not have such problems.
The overlapping problem is a problem that occurs when I spawn an item, and then I spawn an item on top of it.
For example, I can safely decide to spawn enemies, chests, etc., and only after stairs, since if stairs replace an enemy, it is less serious than having an enemy replace stairs, it would make the game impossible.
Graphically there is not much changes, but in practice I always have an exit and something on my map.
#
Now we have to move on to movement and collisions: I simply have to make a function that checks if I can move on a certain tile, and if yes then move, otherwise not. It will suffice to treat enemies as blocks and everything else as something walkable.
The next step will be to define each entity behavior. Letâs start with stairs -> I decide that every time a valid movement is made events happen, so I use the strategy of the boolean âmoved and not movedâ. It works.
#
Now I have to deal with the AI of the enemies. I want to define different strategies, but for now I am content with a ârandomâ approach.
A first implementation is this: find all the reds, if they can move go in the direction they randomly choose. This approach in terms of memory sucks: it would be better for me in generation phase to save the position of the enemies and update it as they perform movements.
#
But hereâs some bugs arise:
if I decide to move on a tile that has already been chosen by an enemy, I am not a solid object so both I and the enemy overlap.
solved in a simple way by assigning me the property of being solid
since I have defined that every object when stepped on and is âwalkableâ becomes a normal tile again, enemies do the same thing with stairs. In other words: the enemy steals the stairs! This is not good and to solve it I have to handle the limit case of the stairs (between them they should not kill each other as they are all solid).
Technically, I could also change the order of generation: I now generate the rooms, generate the dumb rooms, connect them, generate the items and game elements, however, to save resources and time, I could generate the rooms, place the player, place the items generate the 1x1 tiles and then connect them.
Another bug: enemies and I move in the same tile and overlap: this is not good, and it is because I was never updating the fact that the area where I was standing was free and I had moved to another area. Instead, every time I move, I have to set the tile where I am as âwalkableâ and the new one as ânot walkable,â which comes from the fact that I occupy it.
Another approach I came up with is to simply define whether the playing field is walkable or not.
#
The time has finally come: define the IA behind the enemies: meanwhile, I want to define three kind of enemies, one that is very stupid and keeps doing what I have been doing so far (wandering around randomly), one that is smart and chases the player, and the other that is greedy and steals everything stealable
I create the AI for the first and the second kind, but not the third: I have to think about how to implement it.
Now I find myself in endless dungeons. I definitely need to implement a quick attack just to make enemies disappear. For now I settle for âlast key pressed is up, so I shoot upâ. I can implement it by writing that the last key pressed âlooksâ in a certain direction, regardless of whether or not you can move.
#
Itâs late but I can make it!
I take a short break, and after a while, I find out about pr.end_mode_2d() which allows you to draw a HUD.
Thatâs fantastic! In the top left corner I want the stats counter in general, and at the bottom I want a textbox: the messages go away after two seconds (120 then, because Iâm at 60 frames per second) and the hud has to disappear.
It occurs to me to make a buffer for the messages, and eventually show it slowly by removing each string.
Hereâs an example and why I told the 120 frames per second thing:
messages_buffer.insert(0, ["Level up! You are now level " + str(player['level']), 120, pr.GREEN])
Messages are placed in a list, and each message is a list of three elements: the message, the number of frames it has to stay, and the color.
At the end of the game loop, I check if the message has to be removed, and if so, I remove it, otherwise decrease the number of frames it has to stay until it reaches 0 and shows the message in the box.
This is the result:
Day 2: Videogame's Devlog - Dungeon Generation and Camera
My original idea was to make a dungeon game.
âDamn bro, you just started and you already want to make a dungeon game?â
Yes, I know, but I love dungeon games, and I want to make my own since ever. The most fun part of a dungeon game is the dungeon itself: the rooms, the corridors, the monsters, the traps, the inventory. Everything is random, everything is different every time you play, and thatâs addicting.
But, letâs go back to the game.
It is time to make my hands dirty on the actual dungeon creation. Where do I start?
Well, I had seen a video a while back on procedural dungeon map generation. The idea was that first you generated rooms, then you generated corridors. I then decide to set a scary size for the map, like 300x300 because I think it is a good size for a dungeon.
Letâs move on the dungeon generator part: it is slow and has problems.
The idea is to generate the whole map first by defining walkable and non-walkable areas, the player (always a yellow square), draw a green square for each ânon walkable squareâ, then I can move on to fill the entire map with monsters, items, and traps⌠you know, the usual dungeon stuff.
It works but⌠the problem is also that I canât see anything this way, because everything is too big.
I find out about the existence of the game âcameraâ which serves just as if it were a separate and detached window to the game world. Very pleased about this, I decide to postpone the problem of optimizing things and make them faster until the next day, not before adding some small debugging controls (W and S keys, zoom in or out the view)
I also implemented a small collider with walls, that does not seem to work properly and the classic directional arrow controls for moving my yellow square around.
Hereâs the result:
Day 1: Videogame's Devlog - Totti's Quest
Finally, after some years, I am experimenting for the first time with making video games.
I have always been fascinated by the idea of creating a video game, but I have never had the courage to start. I have always been afraid of not being able to finish it, of not being able to make it as I wanted, of not being able to make it fun.
But this time things are different: I wanted to make a game for GBA, but thanks to a friend of mine who suggested me to use Raylib, a C library for making games, I decided to start with that.
Honestly I was intimidated by the idea of starting from scratch, because many frameworks nowadays I thought were too complex for me. But Raylib is damn simple, and I like it.
I canât make games from one day to another, it requires a lot of time, work, programming, testing and all the other software development phases. After all I write software for a living, so I know what I am talking about.
Letâs start with a silly thing and make Tottiâs Quest, a red square that if it touches another green square, the other one turns yellow and starts the Roma anthem + an image of Totti
The first problem is drawing a square. Well, just check raylib lib! But raylib is a library in C.
My main language is Python: itâs not âI donât like Câ, itâs more like âI use Python every single day, so I am confident with itâ.
They are programming languages: exactly like with the normal ones, they work in the same way. The only difference is that C is verbose, I need to manage more things (like structs, dictionaries are not native and so on). Python have a lot of gimmicks that make it easier to use. Since the result is gonna be the same, I decided to use the latter.
Fortunately, raylib was ported to Python so you find these âbindingsâ that basically make the library suitable for a language that is different from the original one.
Iâve managed to complete the code with a bit of a problem: I canât get the audio to work because it always clashes.
It occurs to me that I can use boolean variables to indicate states, like âplayedâ or not.
This is an approach that works, and I am happy with it.
Restyling 2024: again and again
Here I am again. Another time, my website has been revamped. Iâm back to Hugo, with a template that resembles Github Homepage.
I wanted to create a lot of things, maybe a Hugo theme would have been suitable, but right now I am no up to do it. I just want to write, and share my thoughts.
There is the problem of the language: I donât know if I should write in English or Italian. I am not a native English speaker, but I like to write in English. I will try to write in English, but I will switch to Italian if I feel like it.
Also enjoy the old posts that I have written in the past. They are not many, but they are still there.
I hope you enjoy this new website. I will try to keep it updated as much as possible.
Proposals for 2024
Dear Santa Claus,
this year I have been a good dev: I have worked hard, and learnt a lot of new things. I have created some projects and I have helped some people.
Iâd like to focus on some projects in 2024, and Iâd like to share them with you. I hope you can help me to achieve them.
Here is the list of the projects Iâd like to work on in 2024:
Mcdonaldâs eCDP Project: still in beta due to failure in finding a free translation platform. I should host the strings on a private Pontoon Instance.
jet-set-radio-theme Jet Set Radio Theme for Mozilla Firefox, it is abandoned since the day I submitted it. I should fix things.
MyBacklog: started in 2023, it is a currently unfinished app to track your videogames.
Evolve this website in a way that I like and donât change it anymore. I should focus on writing, not on the website itself.
Here is the list of the things Iâd like to do in 2024:
Study personal finance and invest some money
Study more about Machine Learning and AI
Visit countries I have never visited before
Improve playing any of the instruments I play
Release tracks on Youtube (and possibly Spotify)
I hope you can help me with these projects. I will try to be a good dev in 2024 too.
Best regards,
Dag
P.S. Iâll update you on the progress of these projects on my blog. Stay tuned!
Plastic Dreams From Another World: cosa ne penso
This article is in Italian. If you want to read it in English, just translate it with your favorite browser.
Arkavoid è un progetto di Davide Panetta (al basso) che attinge direttamente dalla cultura synth anni 80 e la ripropone in chiave moderna. Il genere è conosciuto come synthwave.
Plastic Dreams From Another World ĂŠ il primo album di questo progetto.
#
La copertina ĂŠ molto bella da fuori, ricca di dettagli e colori.
Non rispecchia pienamente i brani dellâalbum, dĂĄ una specie di anteprima sullâeffettivo contenuto. Mi piace molto, anche se forse avrei optato per qualcosa piĂş futuristico (lâattuale ĂŠ abbastanza cyberpunk).
In generale ci sono tantissimi dettagli interessanti come una rappresentazione fedelissima di una mpk mini o una specie di Glados sulla destra.
Non mancano poi anche vari richiami alla cultura pop: un paio di Jordan in basso a destra, delle statuette di He-Man, âKitâ di Supercar, un poster di Terminator, e altri elementi assimilabili comunque alla cultura pop o anni 80/90.
Un poâ tutto è un richiamo a qualcosâaltro, auto-referenziale (nel disco) o meno.
#
Tutti i brani in generale sono facilmente ascoltabili, nel senso che non câĂŠ bisogno di essere dei fan particolari di un qualche sottogenere dellâelettronica.
Un solo brano fa eccezione: in esso ad un certo punto câè un suono acutissimo che non è esattamente molto orecchiabile. Tralasciando questo episodio isolato, non ci sono particolari problemi.
#
Lâalbum inizia subito con Run Forever (1), brano che spicca tra tutti per la sua orecchiabilitĂ , con un motivetto molto coinvolgente.
Seguono poi altre considerazioni su alcune tracce:
Night Sands: insieme a The Scorpion, i brani che mi son piaciute di meno tra le tutte, forse perchĂŠ un poâ lente, forse perchĂŠ stilisticamente diverse dal resto dellâalbum.
Red Horizon: potrebbe essere benissimo spacciato per la colonna sonora di Hotline Miami. Non se ne accorgerebbe nessuno. Molto carino!
Bloodzone: lâintro ĂŠ stranissima, e in generale il pezzo ĂŠ pieno di cose âstraneâ ritmicamente. Ă interessante.
The scorpion: di per sĂŠ il pezzo ĂŠ carino, synth decisamente rivedibile
Golden Tears, oltre a piacermi, trovo sia davvero perfetta come traccia finale
#
5 stelle: per me sono delle hit, sono le mie preferite e sono fantastiche, le adoro
4 stelle: ottimo lavoro: non mi sono piaciute come quelle con 5 stelle, ma rimangono dei pezzi ottimi
3 stelle: ok: non sono di per sĂŠ malvagi, ma qualcosa non mi ha proprio convinto
2 stelle: non mi sono piaciuti, ĂŠ il mio rating piĂş basso
1 stella: non uso mai 1 stella :D
#
In generale è un album godibilissimo, con unâottima varietĂ di tracce e stili, con diverse chicche: un ottimo lavoro sia comparto grafico che sonoro.
Tracce preferite in particolare: Rebecca (6), The Ghost Of The Temple (3)
Honorable mentions: Run Forever (1)
Trovate lâalbum in pre-ordine su Bandcamp o su Spotify.
Ă prevista lâuscita il 30 settembre sulle principali piattaforme di distribuzione (Spotify, Apple Music).
Touhou Project: Playing First 5 games with Retroarch
This small guide aims to become the main guide for all those who would like to play Touhou Project (abbreviated as TH), but donât know where to start and how to set up the right emulator.
Note that I only tested this guide on an Anbernic portable console (I told you about it in another article) precisely because I wanted to test how comfortable it actually was play it and because there isnât much material online, neither in English nor in Italian.
#
The TH Project is a series of games (called bullet hell) created by Junâya Ota, alias ZUN: in 1996 he decided that video games were boring, there was nothing really fun for him, so he decided to create a series of titles on his own, partly for fun and partly to experiment.
Games of this kind are normally difficult for the average player: the skill lies in observing and understanding the patterns that are proposed and the fact of remaining calm while being bombarded with bullets.
However, not all of them will hit the player: it will be up to the latter to understand (and remember) who hits him and who doesnât.
#
During the game, we will take on the role of Reimu or Marisa and we will have to shoot and avoid monsters that will try in any way to knock us down.
Between one chapter and another (episodes) we will have small interludes that will push the story forward, allowing us to understand what is happening.
In Italy it is not very popular, but it is especially so in Japan: in addition to the fandom they even have a manga and an anime.
#
The TH Project has been released in 18 different chapters, not counting the 11 official spinoffs which brings the total number of games to 29.
The first 5 chapters are the only ones to have been released for PC-98 and nowadays have become almost impossible to find, except online. They are:
Touhou 1 - Highly Responsive to Prayers
Touhou 2 - Story of Eastern Wonderland
Touhou 3 - Phantasmagoria of Dimensional Dream
Touhou 4 - Lotus Land Story
Touhou 5 - Mystic Square
This article is about the 5 games listed above, all others are available and released for Windows.
The first game is very different from all the other chapters: it is a kind of arkanoid with tiles.
#
To play the Touhou Project you need:
copy of TH Project games for PC-98
PC-98 emulator (Neko Project II) or
Retroarch configured with NP2 KAI core (Neko Project II Kai)
scissors with a rounded tip
#
Load the Retroarch (RA) core called Neko Project II KAI. The KAI version is essential, in fact nothing will work without it.
Make sure you already have configured the core. If you havenât or donât know how, RA guide will help you
Load a game. What a bummer right? It all jerks and feels crappy. Now letâs go make some improvements.
Open Retroarch menu > Core Options > Core Settings > and make these settings:
PC Model: PC-9801VM
CPU Base Clock: 2.4 MHz
Feature CPU: Intel 80386
CPU Clock Multiplier: 16
RAM Size: 13
Skipline Revisions: 255
Soundboard: PC9801-86
Restart the content, and enjoy.
N.B.: this configuration is specific to the Anbernic 353V: experimenting a bit with the settings I reached a good compromise.
If you have a higher-end computer or console, set the CPU Clock Multiplier to 40 and RAM Size also to 32, and then gradually decrease the CPU Clock Multiplier in case you notice frame drops, or slowness in general.
The minimum values are CPU 24 and RAM 13.
(yes, I had to put 16 otherwise everything was laggy)
#
These settings are obviously also valid when using the standalone emulator.
#
It gives me black screen with a)> how do I fix it?
you are not using NP2KAI, but NP2. I told you Kai was needed đ
The second chapter does not take my input.
you are not using NP2KAI, but NP2. I told you Kai was needed đ
I donât see the fonts
Optional files are missing, official guide tells you how to fix this annoying problem. Or play without fonts.
The zip doesnât work!
unzip the zip and put the hdi file in the rom folder. In case you use Anbernic and similar, this folder is called pc98
I canât stop playing, Iâve become good, Iâd like to start chapters for Windows from Steam. Iâm just here to thank you!
I would have put you my affiliate link to Instant Gaming, but they donât sell TH Project, so I suggest you the 13th chapter on Steam. Or start with whatever you prefer.
The guide in the Bignami version, reduced to the bone, is available on Gist Github.
Have fun!
p.s. maybe you already knew TH Project for Bing of Bongs | Big Ben plays âNight of Nightsâ for the Last time or for [McDonaldâs clown video](https://www.youtube.com /watch?v=Q16KpquGsIc)
Anbernic 353V: retrogaming in a gameboy shaped console
People have many hobbies, such as reading, playing sports, listening to music or gardening. Instead, one of my favorite pastimes is playing video games. For me, it has always been a genuine journey of discovery of new worlds and new characters, a bit like reading a book, but in a more interactive way.
I own many of the best-selling consoles of all time, but I was looking for a solution to my desire to dust off old glories.
#
Playing video games on the original consoles requires you to carry each console with you at all times, unless you own backup solutions or backward-compatible consoles, which may not always be able to run all the games from multiple consoles.
For example, if I wanted to play Game Boy Advance (GBA) and PlayStation Portable (PSP) games, I would have to carry two separate consoles with me.
In addition, the backup solutions available on the market for older consoles, although perhaps cheaper at the time, are not cheap. Try, for example, to take a look at the flashcarts for the Game Boy.
So, what to do?
One option is to use a newer, better console in terms of power and performance to play older games.
I am not considering the Nintendo Switch, which is a console that is still in production, but it is difficult to play old games on it, and the Steam Deck, which is a full-fledged computer that does many things in the area of emulation. Both solutions are not cheap even though they do the job they were designed and created for very well.
Nowadays, the cheapest consoles with a good stock of titles are:
New Nintendo 3DS
PSVita
They allow most of the games of previous consoles to be emulated, but they are hard to find at normal prices, especially the latter.
There are two major problems while playing a recent title:
âNewâ consoles do not always have the same aspect ratio and controls as the original version. For example, Nintendo DS games play on a 3DS but have black bands on the sides, while on a DSi (or DSi XL) they play perfectly.
When home consoles are emulated by a newer device, it is difficult to get used to the controls. The feel of a certain controller on original hardware is often different from that of the target console.
This comes purely from the convenience of using one controller over another.
I have always liked the idea of carrying my entire game library with me and being able to have one console that can play my entire collection instead of having to own many different consoles. However, there are also advantages to being able to have more than one console, such as being able to play games exclusive to each console and having access to different features and services offered by each platform. In general, the choice of owning one or more consoles depends on each gamerâs personal preferences and needs.
Not all Game Boys are perfect: the SP is the excellence of compactness. However, over the years, the controls became small for my gradually growing hands, making it a bit uncomfortable.
A good Game Boy in terms of size might be the very first gray (DMG). However, it has a not inconsiderable weight and is not very portable compared to other consoles, as it is heavy in the pocket.
An excellent alternative to both models is the Game Boy Pocket (GBP), which is an excellent compromise both in terms of size, which is much smaller and more compact than a DMG, and in terms of the size of the controls (d-pad and buttons), which maintain the size of the DMG.
The Game Boy family has always suffered from the non-backlit screen, a serious shortcoming that over the years has been a problem for all those who wanted to play at hours other than daylight, risking losing a few diopters.
Where then can I find a âpowerfulâ Game Boy with a good screen and capable of running recent games?
#
And this is how we arrive at a very good compromise: the discovery of non-emblazoned retro consoles.
In the past, consoles were sold with OpenDingux, which never really intrigued me. On the one hand it was very interesting to have a console with a free operating system that could play many dated games, on the other hand they always gave me the impression that they had problems of some sort (arising not only from overheating, but also and especially from the controls).
In recent years, however, several retroconsoles from brands such as Powkiddy, Miyoo, and Anbernic have emerged.
The peculiarity of these consoles is that they often mount Linux or Android, making them perfect for all the geeks who enjoy adding or removing emulators and testing games.
Around 2019 I used to follow, and still follow with great pleasure, the Dr. Game channel, where there are several reviews of handheld consoles, from Famiclones to Power Player Super Joy to these types of consoles.
Initially, I did not like them at all.
I set out to research the various solutions on the market, and the choice fell on two models in particular:
Miyoo Mini
RG35XX
I searched online what these consoles were capable of doing, and found that they can emulate games up to PS1, but not perfectly Dreamcast, PS1, and Game Cube
The Miyoo Mini is just too small and uncomfortable to hold. Compactness is important, but not being ergonomic it is uncomfortable to use. This is very reminiscent of the Game Boy Advance SP in 2023.
#
Initially I thought the RG35XX was a good choice, but then I found that the power left something to be desired and the stock kernel was not excellent.
In short, not really the best choice.
I honestly would have appreciated if the console had better support from the original manufacturer, although there are custom firmwares.
#
I realized that many of the things I wanted were not available, such as Android support, so I decided to spend more and opt for the Anbernic 353V.
Before making the purchase, I went to look at various reviews on Instagram and Youtube: needless to say, there wasnât much. All of them complained about the buttons on the back being difficult to press and uncomfortable.
I must say that I was quite satisfied with its technical specifications. What surprised me most, however, were the controls and toggles themselves, which far exceeded my expectations.
It is able to emulate many systems, such as Dreamcast and PS1 with a stable framerate, but also PSP titles and they seem to work great. However, it is not perfect, there are some things it cannot do, such as emulating the Gamecube or having a stable Android system (crashes every few minutes of play).
Despite the problems, this console has become my favorite handheld and I use it almost every day, especially to play PS1 titles and something on Android: on the latter, apps crash often, especially games.
Another thing I love is the fact that I can use it as a controller for other things-itâs a priceless feature.
I was a bit skeptical about the feedback of the controls, but I must say that the console emulates the feel of the Game Boy Pocket perfectly. Surprisingly, even after some time, my hand doesnât sweat like it does with some controllers, such as the one on the PS4 or the first Xbox One before they overhauled the controller and put a grip on it.
#
If you are looking for a handheld console that is able to satisfy your need for retro gaming, the Anbernic 353V is a solution worth considering.
Iâm not saying itâs perfect, because it obviously has its pros and cons, but I personally found it to be a good quality portable console that offers a wide choice of emulators at an affordable price.
If you want to know everything, but really everything about Anbernic consoles, I recommend you check out awesome-anbernic, where you can find information about the various consoles, custom firmware, and much more.
New year, new website?
Hi everyone.
Hope you had a good time with your family or friends on New Yearâs Eve.
The act of starting something means hard commitment and sacrifice in our lives.
Maybe not, if you like what youâre doing, but most of the time, if you are not following just one topic at time, you will have plenty of things to do.
Well, when Iâve started this blog, I planned to just have a personal space. Unfortunately this is no more possible: I have started a lot of projects , and I have less time for each of them.
Probably I need to move on some old projects, or just keep them and donât take newer ones.
Anyway, hereâs the thing: I will simply change this homepage. You can still reach these pages at dag7.it/blog but on the main page I will probably build a custom homepage to present myself in a semi-stylish way.
One more thing: not sure about the language. I like to write both in english and in italian, but sometimes I search things in italian, some other times in english.
I frankly donât know what to keep and what I should throw away.
I can keep both of them, but it was hard to consistently post each month.
The Now Page
This is a now page. To know more, see here
Oneliner is in the bottom part, right now Iâm not using it
#
Oct 2025
#
website: this website has been (once again) reworked out. Thanks to a friend of mine that avoided to switch to yet another theme, Iâve moved all the serious content elsewhere. Now I feel much more satisfied, and Iâd like to do whatever I want with this space. IâM FREE, YAHOO!
videogames: finished âPhoenix Wright vs Laytonâ. 7.5/10, I didnât like much the end and a lot of puzzles were too easy. Also the story is not so realistic, though itâs beautiful.
website: Thinking about doing some nows instead of a big now page like so, but I need to think about it, because right now, not only I would need to design now page in a different way, but content on my website should focus on something. Since writing what I do is my main content, well, Iâm just not sure on what to doâŚ
website: I also would like to implement a beautiful gallery from scratch, since everytime I need to insert some photos is a painful experience of HTML and Markdown
movies: Iâve seen Clockwork Orange at cinema. I did like it especially for the OST by Wendy Carlos. Iâd say it is majestic for several aspects: how actors have been filmed by cameras, the plot (Iâve been to cinema blind, I didnât know a single word about the plot), the soundtrack (duh!), and I liked the actors too, because of their facial expressions. Furthermore, Iâve discovered after the movie that the movie is from a novel, therefore maybe I should read the novel. It is a raw movie, but itâs technically speaking beautiful, an experience which is about psychological thriller.
movies: Iâm gonna to watch Profondo Rosso at cinema too.
videogames: Iâve finished Cassette Beasts. I think itâs one of the most lovable games Iâve ever played, it really has been made with heart. Furthermore, itâs surprisingly fun and it includes mechanics already seen somewhere else, but with some nice changes without some of the annoying Pokemon behavior. I love Pokemon! Or at least the old games. But some things are just unnaturally non-sense, like TMs and HMs. You have fusions, you have lores, you can let a monster learn whatever move you want, and if you want change those moves to another monster, it is perfectly fine⌠you even have the ability of using powers to access to some places while going around the map
dev: dealing with reverse engineering and malware analysis. Itâs frustrating but itâs really fun and Iâm enjoying every single minute spent in this activity.
#
books: finished âIl Codice Da Vinciâ 4.5/5, a book I loved from the beginning to the end. There wasnât any evening in these two months that I wish I could stop, in every page something happens.
music: im exploring live coding with Strudel REPL. Iâm also practicing with my bass. Iâve also released a September cover on my SoundCloud
videogames: Iâm still finishing Phoenix Wright vs Ace Attorney, it is a though journey because a part of me would just explore, another part of me would just play the trial segments
language: Iâm learning japanese. So far so good, it isnât an easy journey, but itâs fun after all
#
books: finished âIl magico studio fotografico di Hirasakaâ 5/5, Iâve liked so much the three main stories there, Iâve also liked the setup of the book and whatâs going on (topics: life, memories, memories in life, self-reflections about happiness)
music: im working on my new Game Boy EP, it will be ready hopefully at the end of December
videogames: I really am on Cassette Beast, have finished (once again) Super Mario Bros 3 hard mode with luigiâs physics, Iâm now relaxing with Amazing Penguin
#
tech: Iâve developed sossoldi-companion app to help keeping track of my spending
music: Iâve bought a bass. Itâs time to slap!
music: Iâve played @ Zona Warpa Rome stage. It was amazing to see down the stage crowded by people. Iâve also attended a brief introduction on how to make music with Game Boy
#
tech: attended to RHC Conference 2025, it was interesting especially the talk âNet insecurity: The uncomfortable legacy of hippie philosophyâ
tech: Iâve created âminder appâ, it is a note-taking app in the style of an offline social media. More information will be available if I release the app. Just imagine Twitter with your posts only. Powered by Flutter.
music: attended to Tamala Fest. It was really great!
#
3D: ended a Blender series, I did have a lot of fun. Itâs time to try something else with some discipline now!
Music: brainstormed about future dates and tracks
Books: Algorithms to live by
#
Began creating in Blender, for the sake of knowing something more. Iâve discovered that Iâm having a great time, and lot of fun.
#
Reading more books, doing more fun stuff. I wrote a couple of book reviews here in italian.
Made a Computer Vision project: a Machine Learning model that learnt how Atac bus stops are made and by using AR projects useful information on the screen of the user. Made with Unity!
Made a project, ARMiiPlaza, a recreation of Mii Plaza in Augmented Reality. It is far from being finished, but if I will choose to invest some of my time in Blender, as far as I will make progress with it I will surely go on with that project
Even if my talk hasnât been accepted for CFP, I am going to continue the development of slides and materials
3D Filament is over, I should refill it but Iâm never in the mood of buying another filament
Finally practicing more my electric guitar!
#
Made a full stack project (Regalia⌠once again) with microservices and AWS Lambda + AWS Cognito
Learnt about Locust and the fundamentals on how to benchmark a service
Prepared a talk for Pycon IT 2025
#
Attended Serverless Days as volounteer
Attended last CoderDojo of the year XMasDojo@CoderDojoSPQR
Learnt about AWS and Cloud Architecture
Learning more about CTF and Cybersecurity, thanks to Sapienza Bootcamp. I didnât take much notes, I should write them in a well-structured form and publish it on my website.
#
Attended CoderDojo
Fiddling with 3D Printer, after many years Iâve finally bought one!
#
Nobodyâs Sleeping has been finally released!
Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lightning talk about chiptune
Playing Balatro, refactored my Instagram identity in order to reflect my interests (now iâm publicly available on the coolest Instagram page ever, available here)
Restyling of my website⌠once again.
#
Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
Started âIl gatto che voleva salvare i libriâ, a book about a cat that wants to save books
#
In session, with not much time
Working on a new project, a game for GBA PC
Practicing music with Gameboy, a Nintendo DS and a small synth
Finished âUn estate con la strega dellâovestâ, still reading âExit Realityâ
Iâd like to play more videogames
#
The Wall is now publicly available. Feel free to use it!
Finishing some books - in this period, âBullet Trainâ, but Iâve started another one called âExit reality. Vaporwave, backrooms, weirdcore e altri paesaggi oltre la sogliaâ
Practicing music with a Nintendo DS.
Playing Shiren The Wanderer
Many events such as Zona Warpa 2024 but Iâve attended other cool events too.
#
The Wall a place for your notes and public notes
Finishing some books - in this period, âBullet Trainâ
Oneline-ish thing is a thing now, and what youâre seeing is this section.
Practicing analog music on Stylophone and Pikocore.
Restyling of my website⌠once again.
Soldering boards to make Pikocore a board to play music in an âanalogâ style
Watching movies
#
Building this website - the only thing I really miss is a simple oneline style blog, to update about my projects, thoughts and creations, which is work in progress and it will arrive a day or another
Finishing some books - in this period, âBullet Trainâ
Playing videogames - on Nintendo Ds mostly
Practicing dnb on PSVita - I wish to release something in 2024
Practicing piano - improvising jazz is a thing
Working with Django to build awesome things
Iâm trying to keep it simple, so I can update it easily.
#
2025-05-11: attended to Tamala Fest, I should write a small blog post on it with some photos.
2025-04-17: Iâve seen last lesson of a Blender series I was following. Itâs been really useful and fun.
2025-04-16: Brainstormed about tracks on LSDJ, I have some material.
2025-03-05: I did start using Blender. Iâm having a lot of fun!
2025-02-13: Finally Iâm playing more my electric guitar, I 3d Printed a stand and now it is standing on the floor of my place.
2024-10-20: Wrote an article about curiosity and whatâs going on in my free time.
2024-10-18: Iâve finished âIl gatto che voleva salvare i libriâ. It was short but nice, Iâd like to write an article about it.
2024-10-08: Once again, Iâve restyled my website. Iâm trying to keep it simple and clean. Letâs see how it goes.
2024-10-06: came back from Copenaghen, sad as always when I come back from a trip. Today Iâve seen in Copenaghen Amalieborg, the national gallery (fine arts), the botanical garden and the house of the butterflies
2024-10-05: iâve seen in Copenaghen the little mermaid, the round tower, Rosenborg castle, the black diamond, the opera house (from outside), raduspladsen and strøget street
2024-10-04: leaving here as a placeholder, I need to log more things related to my trips around the world.
2024-10-04: Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lighting talk about chiptune. Iâve seen Christiania area and Nyhavn area. I wanted to go to Tivoli but it was closed.
2024-09-27: Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
2024-06-12: In session, with not much time
2024-04-18: Small restyling of contactsâ homepage section.
2024-04-17: Oneline-ish thing is a thing now, and what youâre seeing is this section.
Reverse Engineering la luce in fondo al tunnel, prima dell'abisso
Caro Dag del 2013,
finalmente sei riuscito a coronare uno dei tuoi sogni nel cassetto: riuscire a saper comprendere o quantomeno leggere un codice assembly per poterci mettere le mani sopra e manipolarlo a tuo piacimento.
Sono le 3 e 45, e finalmente dopo un tour de force durato 3 giorni, posso dire che ho concluso la lettura del manuale di magia nera âPractical Malware Analysisâ.
YEEEEEEEEEE đ
Tecnicamente ho barato: alcuni hands-on non li ho fatti, mentre alcuni capitoli li ho saltati. Mi giustifico dicendo che a breve termine non mi servono, promettendomi di tornarci in un secondo momento con piĂš calma. I capitoli piĂš avanzati, a differenza dei primi, piĂš semplici, sono quelli piĂš interessanti e che permettono di scovare piĂš malware da un punto di vista pratico.
Ma volevo fare una mini recensione!
Avete presente quando vorreste un bel manuale che vi spieghi per filo e per segno cosa dovete fare? Ecco, questo è perfetto sotto questo punto di vista: spiegazioni chiare e semplici, con una serie di esercizi allegati, con tanto di soluzione commentata passo passo. Non mi sorprende affatto che sia considerato come testo di riferimento: sarà anche molto vecchio e alcuni dei tool al quale fa riferimento sono stati sostituiti da cose piÚ aggiornate, ma le basi a distanza di anni sono rimaste quelle.
Tra i contro invece mettiamo lâessere scritto in bianco e nero (a volte le cose con riquadri e colori si capiscono di piĂš), ma soprattutto il fatto di essere rimasto fermo a Windows XP. Da un lato il fatto che il libro risulti ancora attuale è molto bello. Dallâaltro però, alcuni esempi non funzionano. Ho speso circa 3 ore una sera per poi sorprendermi che non câera soluzione allâesercizio che stavo facendo, se non usare una vecchia VM con Windows XP.
Dunque ho scelto di leggere questo manuale per passare un esame universitario ma anche perchÊ questo argomento mi è sempre piaciuto e non ho mai avuto modo di approndirlo.
Câè un ma: fare reverse engineering, soprattutto di malware, richiede una base di conoscenza di Assembly (nel manuale viene spiegato), e di come si programma in generale. Ai tempi non sapevo programmare, figuriamoci fare le operazioni al contrarioâŚ
Ă assolutamente impensabile pensare di seguire un manuale del genere senza saper programmare, o senza fare gli hands-on.
Câè una bella differenza tra il leggere e il fare, e questo Feynman lo sapeva molto bene.
Ad ogni modo, gli esempi sul libro sono molto didattici. Vorrei riuscire a preparare una sorta di videolezioni fatte da me, perchĂŠ si trovano in giro in inglese ma non in italiano. Ă vero che viviamo nel 2025, dove le traduzioni automatiche sono allâordine del giorno, ma mi piacerebbe riuscire comunque a portare questo argomento su un canale YouTube.
Inoltre⌠ho preso tantissimi appunti usando Obsidian! Proprio non mi capitava di prendere cosĂŹ tanti appunti da un sacco di tempo. Ă bello arrivare a fine giornata con tante cose apprese e scritte, a moâ di diario.
Il mondo dei malware e del reverse engineering è un mondo mistico fatto di sigle, di misure antireverse, e di tanto, tanto codice Assembly. Sicuramente fare lâesame è stata una buona motivazione, ma non mi sarei mai concentrato cosĂŹ tanto ad approfondire.
Sono stati tre giorni incredibili dove ho imparato tantissime cose, e non vedo lâora di metterle in pratica, magari cominciando a fare i crack-me o altre sfide online, sino ad arrivare ai sample degli esami.
Come ritirare il diploma della scuola superiore
Qualche giorno fa, mi è venuto in mente di cercare come ritirare il diploma di scuola superiore, una cosa che avrei dovuto fare tempo fa forse, ma va bene cosÏ, meglio tardi che mai dice un proverbio.
Scrivo una email alla segreteria della mia vecchia scuola, chiedendo i prossimi passi.
Una signora molto cortese mi risponde dicendomi âpagamento su cc1016, di 15.13⏠la scuola è aperta questi giorni dalle 15 alle 16â
Ecco le scelte che avevo a mia disposizione:
Pagarlo online tramite una piattaforma messa a disposizione dal ministero âPago in reteâ aperta alle scuole
Andare alla posta e pagarlo
Andare sullâapp della mia banca e pagarlo lĂŹ
Usare unâapp di terze parti (non faccio il nome per rispetto)
Il mio primo pensiero è stato âva be, andiamo sullâapp della banca e paghiamoâ
E cosĂŹ, tra unâapp e lâaltra, sono giunto sul link di pagamento dei bollettini.
Inserisco i dati: cc1016, importo 15.13âŹâŚ per scoprire che⌠lâunica tipologia di bollettino accettata è l'896
âPoco maleâ â Penso tra me e me â âbasterĂ usare lâapp ministeriale âPago in reteâ, designata ai pagamenti elettronici tra scuole e cittadiniâ.
Mi registro con SPID, apro la web app, cerco il nome della scuola e noto che sono disponibili due voci della stessa scuola, una col codice meccanografico corretto e i dati giusti, lâaltra sembra la rimanenza di dati meno recenti ma comunque quella era esattamente la mia scuola. A scanso di equivoci decido di inserire quella col codice meccanografico.
Ecco che succede: selezionando quella col codice identificativo corretto spunta fuori un messaggio di errore dicendo che la scuola non supporta i pagamenti fatti tramite la piattaforma.
Decido allora di provare quella senza codice, trattandosi della stessa scuola. Il sistema mi risponde ânon ci sono pagamenti attivi che possono essere effettuatiâ. Come se la scuola avrebbe dovuto attivare la possibilitĂ di pagare quel servizio online, e non di default.
Spazientito, decido di scaricare lâapp di terze parti, la mia ultima spiaggia. Prima di scaricarla mi sono informato come pagare il bollettino che serviva a me, e lâapp in questione ha proprio un articolo in cui spiegano che è possibile farlo. âOttimo!â â esclamo â âallora sicuramente riuscirò a pagare questa voltaâ.
Mi registro, apro lâapp e⌠ancora una volta, schiaffi in faccia, il sistema mi dice âsi, una volta era possibile pagare anche gli altri tipi di bollettini, ma ora solo l'896â.
Ultima spiaggia: decido di andare in ufficio postale. Mi reco li e scopro che non solo lâufficio postale è chiuso, ma ha un bel cartello appiccicato con su scritto âper i servizi postali, recarsi a 1.5km da qui la mattina, e 1.9km da qui se i servizi vi servono il pomeriggioâ. Per motivi di tempo ovviamente non potevo recarmi lĂŹ la mattina, e il pomeriggio quando ho deciso di effettuare il pagamento avevo i minuti contati.
Ecco un poâ di considerazioni, prima di spiegarvi come pagare la tassa di diploma.
Siamo nel 2025. I pagamenti elettronici sono stati introdotti a forza in Italia, per permettere una quasi-modernizzazione del paese e per combattere lâevasione fiscale.
In un mondo governato dai pagamenti elettronici, non è possibile che per pagare determinati tipi di tasse o tributi debba essere necessario affidarsi alle poste, obbligatoriamente di persona. Ă una cosa veramente assurda e inutile, atta solo a favorire incentivi e giri di soldi verso una determinata azienda, che non è neanche nellâinteresse dei cittadini.
Avrei capito se il pagamento fosse stato possibile effettuarlo online esclusivamente tramite una certa piattaforma, anche se non ne vedo il motivo, tanto i soldi sempre allâagenzia delle entrate vanno. Ma addirittura legare indissolubilmente il pagamento delle tasse e dei tributi alle poste, questo è un comportamento che trovo davvero inaccettabile.
Unâaltra considerazione che voglio fare riguarda il sistema di pagamento âPago in reteâ. Ă notevole il fatto che abbiano voluto semplificare il pagamento di tasse e tributi tramite un sistema di pagamento. Perlomeno non dobbiamo attendere in fila alle poste (sigh) il pagamento di una qualsiasi tassa scolastica. Il problema è che se la scuola non attiva il sistema di pagamento, è completamente inutile.
Non ho dati sufficienti per stabilire quante e quali scuole e di che ordine utilizzino il sistema di pagamento ministeriale, ma che senso ha avere il sistema piĂš figo del mondo e non attivarlo obbligatoriamente in tutte le scuole?
Quindi:
alla pubblica istruzione, invito ad abilitare e forzare i pagamenti elettronici tramite la piattaforma, dando anche la possibilità di pagare di persona per chi è impossibilitato
allâagenzia delle entrate, invito ad abilitare il pagamento di tutte le tipologie di bollettini online, tanto i soldi sempre voi li ricevete, vi è perfettamente indifferente chi li fa
alla scuola stessa, invito ad accettare il sistema di pagamento âPago in reteâ o effettuare i versamenti in autonomia, mettendo a disposizione una cassa in contanti dove posso direttamente versare i soldi e possono essere versati al mio posto
Questa è una storia davvero tutta italiana, con cose allâitaliana.
Ecco come fare:
capire quando la scuola puo riceverti e se hanno ancora il tuo diploma
se non lo hanno, contatta il miur
recarsi alle poste
non perdere tempo (sigh) a cercare altri metodi di pagamento
conto corrente: 1016
intestato a: agenzia delle entrate - nucleo operativo di Pescara
importo: 15.13
causale: tassa di diploma
vai a scuola col documento e la ricevuta
La giungla degli spazi personali
Alla fine è successo: mi sono finalmente deciso a cambiare un poâ la struttura di questo sito web. Ă difficilissimo ritagliarsi degli spazi online senza impazzire. Il mio sito web, sĂŹ, proprio quello che state leggendo, era unâaccozzaglia di roba tra il professionale e il non professionale.
Posso affermare con una certa sicurezza che a partire da oggi:
- la parte musicale adesso ha unâidentitĂ tutta sua, e la potete vedere al solito link dag7.it/music
- la parte professional adesso è scorporata in un altro dominio che ho da un sacco di anni
- la home page è stata pulita, ed adesso contiene i link secondari che prima era impossibile vedere
Spero vivamente di aggiornare la gallery, al piu presto, magari modularizzandola visto che ora è una giungla di html+css+js+foto inserite a casaccio nella cartella static
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Decap CMS Test: svolta o bidone?
Proprio qualche giorno fa mi sono imbattuto nella necessità di dover scrivere un articolo per il mio blog. E mi è totalmente passata la voglia di farlo!
Abbraccio moltissimo la filosofia open source di avere i file in markdown, hostati da qualche parte, essendo il mio un piccolo spazio statico ci sta che sia una cosa piccola.
Ma a volte la semplicitĂ si scontra con la troppa semplicitĂ : non avere unâinterfaccia bella e piena di feature (come ad esempio quella di Wordpress) limita tantissimo il processo creativo. Da una parte non hai il problema di un editor e sei indipendente da tutte le tecnologie. Dallâaltra però, anche lâocchio vuole la sua parte. Soprattutto per le immagini, è davvero una faticaccia scrivere i post in formato markdown, metterci unâimmagine carina ecc.
Sarebbe tutto piĂš semplice se esistesse un software in grado di gestire questa situazione.
Oggi ho scoperto https://decapcms.org/ che per chi non lo conoscesse è un software che fa esattamente la cosa che stavo cercando.
Non è perfetto: non è comunque bellissima lâinterfaccia, e mi piacerebbe che in futuro la situazione migliorasse, però facciamo notevoli passi da gigante.
Ecco uno screenshot di cosa vedo io quando vado a scrivere un nuovo articolo:
Uno screenshot di decap cms
Che dire? Sarà la soluzione finale o dovrò (sigh) migrare da qualche altra parte su Wordpress?
GitLab CI/CD Pipelines Explained with a Fun Tiramisu Recipe
GitLab CI/CD Pipeline Tutorial for Beginners
#
During a DevOps crash course, Iâve been called to teach how to setup a simple GitLab pipeline.
It wasnât easy: the people who took part in that course, were from very different backgrounds: backend in PHP, frontend, people out of school at their first job employment⌠despite of this, Iâve talked to them about what a devops does, who is it, and how pipelines are important.
In this article, you are going to learn how to setup a simple toy pipeline, in order to experiment a little bit with GitLab runners.
I donât care just gimme the recipe and Iâll figure out everything else!!!
here it is
How to do it
#
The first step is to have a GitLab account. You can sign up for a GitLab account here. I personally donât use that much GitLab, but I will move provided my use cases fits GitLab.
Next, you should create a repository:
fill the blanks as you prefer
and click the blue button âcreate a projectâ
#
Now itâs time to write a small pipeline and set the runner.
#
A pipeline is a group of steps (named âstagesâ) that include jobs, what we need to do in each stage.
To understand more this concept, imagine cooking a Tiramisu: you have to first prepare ingredients, then you have to assemble them, there is a cooling part and the final step is service. These all stages.
Jobs can be, in the stage of preparing ingredients: make some coffee, whip cream and sugarâŚ
Stages and jobs together in a file, form a pipeline, that is given to a runner.
#
A runner is a server, running Linux, that will take what you wrote in your pipeline and setup all the processes in order to accomplish what you told it.
For example, if we said âdear runner, compile our application (given a Dockerfile) and publish it on GitLabâ it will exactly do this thing.
The way to communicate between us and the machine, is using a YAML file.
#
A YAML file is a plain text file, with some instructions in there. YAML is a declarative language, meaning that we donât have to write specific keywords in order to describe or achieve something in particular, rather than we focus more on the grammar of the language to reach our goals.
To learn YAML I strongly suggest this amazing website that will teach you in no time how to write some YAML.
#
Left side of the menu, âbuildâ, âpipelinesâ
Next, click on the âtest templateâ
We will be in the pipeline editor: this will create a .gitlab-ci.yml file at the end of our edits.
Click âcommit changesâ at the end and wait for a pipeline running warning at the top of the page.
If you click on the link in blue, you will see something like this:
donât worry if something doesnât have a green tick, it will be a matter of time.
If everything goes well, everythingâs will be marked in green.
This means that pipeline has succeeded.
#
Hereâs the YAML file to copy paste in the pipeline:
stages:
- prep
- assembly
- cooling
- serving
prepare_cream:
stage: prep
script:
- date +%H%M%S
- echo "I beat the egg yolks with the sugar"
- echo "I add the mascarpone"
- echo "I whip the cream and fold it in"
prepare_coffee:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the coffee with the Moka pot (preferably a large one)"
- echo "I let the coffee cool"
prepare_ladyfingers:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the ladyfingers"
soak_ladyfingers:
stage: assembly
script:
- date +%H%M%S
- echo "I dip the ladyfingers in cold coffee"
layer_layouts:
stage: assembly
script:
- date +%H%M%S
- echo "Arrange the ladyfingers in the pan"
- echo "Spread the mascarpone cream"
- echo "Repeat the layers until the pan is full"
- echo "Drizzle the surface with bitter coffee or chocolate"
chill_tiramisu:
stage: cooling
script:
- date +%H%M%S
- echo "I refrigerate the tiramisu for at least 4 hours"
serve_tiramisu:
stage: serving
script:
- date +%H%M%S
- echo "I get the set of plates"
- echo "I plate the tiramisu"
- echo "I serve it to my guests"
- echo ":)"
- echo "Measure blood sugar"
This is the recipe in Italian:
stages:
- preparazione_ingredienti
- assemblaggio
- raffreddamento
- servizio
prepara_crema:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Monto i tuorli con lo zucchero"
- echo "Aggiungo il mascarpone"
- echo "Monto la panna e la incorporo"
prepara_caffe:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo il caffĂŠ con la Moka (meglio se grande)"
- echo "Lascio raffreddare il caffè"
prepara_savoiardi:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo i savoiardi"
inzuppa_savoiardi:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Inzuppo i savoiardi nel caffè freddo"
metti_strati:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Disporre i savoiardi nella teglia"
- echo "Stendere la creama al mascarpone"
- echo "Ripetere gli strati fino a esaurire lo spazio nella teglia"
- echo "Spolverare con caffè amaro o cioccolato in superficie"
raffredda_tiramisu:
stage: raffreddamento
script:
- date +%H%M%S
- echo "Metto il tiramisĂš in frigo per almeno 4 ore"
servi_tiramisu:
stage: servizio
script:
- date +%H%M%S
- echo "Prendo il set di piattini"
- echo "Impiatto il tiramisĂš "
- echo "Servo ai miei ospiti"
- echo ":)"
- echo "Misurare la glicemia"
Save it into your pipeline editor, commit and�
#
We have cooked a delicious tiramisu and learnt how the pipeline works! đ°đŤâď¸
#
Thanks for your attention, I highly suggest to try it out this simple example to get started with GitLab runners and pipelines. This was a toy example, but many other awesome things can be done.
Try this pipeline in your own GitLab project and share your results by sending me an email!
NOTE: the line âdateâ in script part, is for echoing the date time when the job is executed. This is to figure out if the job execution is done in parallel or in sequence. Figure it out for yourself, which of the two ways.
Come creare musica con il gameboy (Zona Warpa Roma 2025)
Hai partecipato al talk a Zona Warpa Roma 2025? Sei solo curioso di vedere le mie slide del talk che ho tenuto?
Clicca qui e sarai accontentato!
La formula magica per vivere felici
#
âLa Sottile arteâ è un libro che mi ha sempre incuriosito sin da quando avevo 16 anni: ai tempi leggevo tantissimi libri, e mi ricordo che un giorno presi questo libro tra le mani e iniziai a leggerlo, un poâ attratto dal suo contenuto, un poâ perchĂŠ câera una parolaccia nel titolo.
Col passare degli anni i ricordi si sono affievoliti ma appena ne ho avuto lâoccasione ho acquistato questo libro.
Incoraggia ad avere una visione del mondo diversa da quella che uno ha oltre a dare altre visioni, cose che magari conosci e sai, ma non hai avuto modo di rifletterci ultimamente.
Nel libro vengono affrontati tantissimi temi e cosa dovrebbero o non dovrebbero rappresentare nella vita di tutti noi, volendone citare qualcuno: sbattersene, sbattersi per quello che uno vuole davvero e non per lâideale, scegliere bene i valori, Panda Deluso lâeroe che non esiste ma tutti ne hanno bisogno, il segreto della felicitĂ e dellâinfelicitĂ , emozioni, leggi di inversione.
#
Ho trascritto a mano alcune citazioni ed elaborato brevi pensieri eccoli qui:
#
Sbattersi per troppe cose nuoce alla tua salute mentale
â Pagina 12
ed è vero, spesso non ce ne rendiamo conto ma siamo totalmente assorbiti dalle troppe cose che ci succedono, dai troppi stimoli solo perchÊ non abbiamo imparato a selezionarle
#
Si chiama Ciclo di risposta infernale, e appena ti distrai ci finisci dentro e ti manda in pappa il cervello. Non è colpa nostra, è un errore che la societĂ stessa ci porta a fare. Eâ la spinta. Sii il migliore, il piĂš popolare, il piĂš produttivo, il piĂš invidiato, il piĂš ricco, il piĂš attraente, il piĂš ammirato. Sii perfetto, formidabile, poi esci e vai a fare il tuo lavoro ultra gratificante che finirĂ per salvare anche il mondo
â Pagina 15
Fregandotene ottieni i migliori risultati
â Pagina 18
Valori
#
Scegli sempre per cosa batterti
â Pagina 27
Valori di merda: piacere, successo materiale, avere sempre ragione ed essere sempre positivi.
â Pagina 102
In particolare nel secondo punto, racconta della storia del batterista dei Beatles, Pete Best, che fu cacciato dalla band, e fu sostituito da Ringo Starr. Lui trovò il coraggio di ricominciare una nuova vita con la sua compagna e i propri figli.
Racconta anche la storia di Dave Mustaine: un chitarrista bravissimo che faceva parte dei Metallica, ma fu cacciato dalla band. Lui non si arrese e fondò i Megadeth, una band che ebbe un successo incredibile ma che non raggiunse mai i livelli dei Metallica e lui ne soffrÏ molto.
Nel terzo punto invece afferma che è molto piÚ utile presumere di essere ignoranti e non sapere granchè, poichÊ questo permette di imparare e migliorarsi.
Quando abbiamo valori scadenti che applichiamo a noi stessi o ad altri ci sbattiamo per cose di poca importanza. Quando abbiamo valori migliori, ci sbattiamo per cose che contano davvero.
â Pagina 110
Come scegliere dei valori un poâ migliori
#
ResponsabilitĂ
#
Ogni cosa che succede siamo noi a scegliere come reagire
Incertezza
#
La certezza è nemica della crescita. Non câè nulla di certo finchĂŠ non accade â e anche a quel punto, resta discutibile. Per questo motivo perchĂŠ avvenga una crescita di qualunque tipo è necessario accettare le inevitabili imperfezioni dei nostri valori.
â Pagina 145
Fallimento
#
Se una cosa ti modifica la eviti. Ă il motivo per il quale le persone evitano il successo o il fallimento e non fa le cose, come diventare un grande artista o pubblicare video o un libro.
â Pagina 165
Se sei bloccato su un problema, non restare fermo a pensarci sopra; comincia a lavorarci. Anche se non hai idea di cosa stai facendo, il semplice fatto di lavorarci finirĂ per portare nella tua testa le idee giuste
â Pagina 192
Rifiuto
#
Ma dobbiamo rifiutare qualcosa. Altrimenti non diamo importanza a niente. Se nessuna cosa è migliore o piĂš desiderabile di unâaltra, siamo vuoti e la nostra vita non ha significato
â Pagina 204
La gente non può risolvere per te i tuoi problemi. NÊ dovrebbe provarci, perchÊ la cosa non ti renderà felice. Neanche tu puoi risolvere i problemi degli altri, perchÊ analogamente non li renderesti felici. Una relazione malsana si ha quando due persone cercano di risolversi a vicenda i problemi per sentirsi bene rispetto a se stessi.
Al contrario, una relazione sana si ha quando ciascuno risolve i propri problemi per sentirsi bene rispetto allâaltro. Imporre qualche limite decente non significa che non puoi aiutare il tuo partner o sostenerlo, o essere sostenuta e aiutata. Dovete sostenervi a vicenda. Ma solo perchĂŠ scegliete di farlo. Non perchĂŠ vi sentite obbligati o pensate che sia dovuto.
â Pagina 212
Per questo il tradimento è cosĂŹ distruttivo. [âŚ]
O si ricostruisce la fiducia, o ci si saluta. Il problema è che quasi tutte le persone che sono scoperte a tradire si scusano e fanno il discorsetto del Non succederà mai piڝ e basta. Molti traditi accettano questa risposta come dato di fatto e non si chiedono se quei valori e quelle cose lo rendano una buona persona con cui stare insieme.
Se una persona tradisce, qualunque sia il motivo, è evidente che i valori di chi tradisce non sono allineati in modo tale da sostenere una relazione sana, e se questa persona non lo ammette o si rifiuta di accettarlo è priva dellâautoconsapevolezza necessaria a risolvere qualunque problema relazionale.
â Pagina boh
Morte
#
Tu sei un grande, e non perchĂŠ hai obiettivi definiti e beni materiali. Queste cose non definiscono la grandezza. Sei un grande perchĂŠ di fronte alla confusione infinita e alla morte certa, continui a decidere per cosa sbatterti e per cosa no. Questo semplice fatto, il semplice scegliere i valori della tua vita, ti rende giĂ una persona bellissima, di successo e amata. Anche se non te ne rendi conto, se stai morendo di fame o dormendo sotto un ponte. Anche tu morirai e questo perchĂŠ anche tu hai avuto lâenorme fortuna di avere vissuto.
â Pagina 247
Budda
#
Qui non riporto delle citazioni, ma lâautore parla della storia di Buddha, storia che personalmente non conoscevo e ho ritenuto molto interessante.
In breve: Buddha era un principe che aveva tutto, ma non era felice, e un giorno decise di abbandonare luogo, averi e casa e andare in cerca della veritĂ uscendo dalla sua zona di comfort.
#
Panda Deluso ⌠il suo superpotere sarebbe quello di dire alle persone le veritĂ crudeli che hanno bisogno di sentire ma che si rifiutano di accettare. Andrebbe di porta in porta come un venditore di Bibbie, suonerebbe il campanello e direbbe cose come: ÂŤCerto, fare un sacco di soldi ti fa sentire bene, ma non ti farĂ amare dai tuoi figliÂť, [âŚ]. Poi augurerebbe ai padroni di casa una buona giornata e sâincamminerebbe verso lâappartamento successivo
â Pagina 36
Lâautore fa riferimento ad un ipotetico eroe che non esiste, ma vorrebbe che esistesse. Panda non si farebbe problemi nel dire le cose, belle o brutte che siano, sputandoci in faccia la realtĂ .
Soffriamo perchÊ è biologicamente utile, sprona al cambiamento.
Se eviti i tuoi problemi e senti di non averne, ti rendi infelice. Il segreto sta nel risolvere i problemi, non nel non averne
â Pagina 41
FelicitĂ
#
Desiderare unâesperienza positiva è giĂ di per sĂŠ unâesperienza negativa
â Pagina 16
Non sarai mai falice se continui a cercare in che cosa consiste il significato della vita - Albert Camus
â Pagina 17
La domanda giusta non è âcosa vuoi dalla vitaâ ma âquale dolore vuoi dalla tua vitaâ
â Pagina 48
La felicitĂ richiede fatica, cresce dai problemi. La gioia non sunta dalla terra come le margherite.
â Pagina 49
La strada verso la felicità è una piena di mucchi di merda
â Pagina 50
Emozioni
#
Le emozioni sono segnali, suggerimenti, non comandamenti. Le emozioni negative sono una chiamata alâazione, quando le provi è perchĂŠ devi fare qualcosa.
â Pagina 45
Sai chi basa la propria vita sulle emozioni? I bambini di tre anni e i cani. Essere ossessionato dalle emozione e attribuire loro un-importanza eccessiva ci danneggia per il semplice fatto che esse non durano.
â Pagina 46
Sui social
#
PiĂš siamo liberi di esprimerci, piĂš vogliamo essere liberi di non interagire con chiunque possa turbarci e non essere dâaccordo con noi.
â Pagina 72
Essere nella media è perfettamente ok: se fossimo tutti speciali nessuno lo sarebbe.
â Pagina 78
Legge dellâinversione (backwards law)
#
PiĂš ti sforzi di essere certo di qualcosa, piĂš ti sentirai incerto e insicuro
Conclusioni
#
Un libro che offre indubbiamente una panoramica su un modo di vedere le cose diverso al quale siamo abituati. Condivido personalmente molti punti che vengono toccati e spero di riuscire anche il suo seguito molto presto.
Dopo questo trip mentale allâinsegna di Panda Deluso, consiglio di leggere Atomic Habits di James Clear, dopo questo libro recensione piccola che arriverĂ prossima settimana.
Storia del Videogioco: la mia recensione in qualche paragrafo
Oggi ho finalmente finito âStoria del Videogiocoâ, un libro che avevo inziato a Dicembre ma che non avevo terminato.
Il libro è molto corto, ha circa 150 pagine e racconta dagli albori ai videogiochi piÚ moderni.
Secondo me è ottimo per chi non è esperto per nulla e vuole approfondire o semplicemente per gli amanti del retrogaming: sono venuto a conoscenza di importanti figure e di parti delle storie di alcune delle piĂš famose case di produzione videoludiche dellâepoca proprio grazie a questo libro.
Lâinizio è davvero immersivo, racconta la storia del videogioco, partendo da prima dellâesposizione del 1958 di Tennis For Two addirittura.
Verso la fine si perde tantissimo e viene tutto condensato in qualche manciata di pagine: davvero un peccato, secondo me si sarebbe potuta spendere qualche parola in piĂš per lâevoluzione dei giochi e il mercato in generale.
Nel complesso va benissimo da leggere ai fini di accrescere la propria cultura storica sui videogiochi classici e storici, ma non prendetelo come testo di riferimento per i videogiochi dopo il 2010.
Cosa ho imparato da un progetto fallito
Introduzione
#
Per il mio esame di Computer Vision dovevo fare un progetto in una tecnologia che sfruttasse la Computer Vision. Poteva trattarsi di un modello di Machine Learning (da ora in avanti ML), riconoscimento di voltiâŚ
Tuttavia una delle mie passioni piĂš grandi, sin dal 2014, è sempre stata la realtĂ aumentata. Siccome i modelli di ML spopolano al giorno dâoggi, basti pensare a Deepseek a GPT e chi piĂš ne ha piĂš ne metta, mi sono venute in mente diverse idee.
#
Ciò che però ha conquistato la mia scimmia, è stata unâidea tanto semplice quanto complessa.
A Roma abbiamo un grande problema: gli autobus e i mezzi pubblici. Noi li odiamo, loro odiano noi, quindi la cosa è reciproca, ma câè una cosa insopportabile che non ho riscontrato in quasi nessuna altra cittĂ : le fermate dellâautobus (o paline) sono senza le tabelle degli orari previsti e delle partenze da capolinea.
Questa grave mancanza fa sĂŹ che certamente una persona si affida alle app online, ma fattuariamente le app online mostrano solo il prossimo o i prossimi orari previsti o dei bus in arrivo.
Senza contare che ogni volta bisogna geolocalizzarsi o inserire il codice della fermata a mano, o i nomi delle fermate. Non tutte le app infatti supportano lâinserimento del numero identificativo della fermata.
Quanto sarebbe bella unâapp che la apri, inquadri la fermata, lui ci pensa qualche secondo e ti dice in tempo reale che fine ha fatto il tuo autobus, se arriva o meno, prossime partenze da capolinea e⌠insomma tutte le informazioni del quale potresti avere bisogno ma proiettate direttamente sulla fermata?
E da qui inizia lâodissea.
#
La nostra storia comincia con Unity: questo strumento permette infatti, stando alle informazioni che si trovano online di creare esperienze per la XR, la cosiddetta Extended Reality che comprende RealtĂ Aumentata e RealtĂ Virtuale, in maniera abbastanza semplice.
Inoltre è gratuito.
PerchĂŠ non approfittarne?
Bè perchĂŠâŚ
NON ESISTE un altro modo per fare esperienze AR con un motore grafico!
O meglio, esistono altri motori grafici, che però non hanno implementato tutte le funzionalità come Unity. Va da sÊ che per creare esperienze di questo genere si ha bisogno di Unity.
Non lâho mai usato, non conosco i principi del game design e della programmazione dei videogiochi in 3D, ma voglio dire, se Godot provato il giorno prima è cosĂŹ semplice, immagino sarĂ come bere un bicchier dâacqua.
La curva di apprendimento è altissima: non consiglierei mai Unity ad uno sviluppatore alle prime armi, ma neanche ad un programmatore con molta esperienza. Non si capisce dove sono le cose, devi aggiungere componenti intermedi per eseguire qualsiasi azione, insieme a Unity ti viene installato Visual Studio (non Code) che è pesantissimo e scomodo, ogni volta che cambi qualcosa allâinterno del progetto (assets) deve ricaricare tutto e ci mette del tempo, ed infine utilizza C# che non è un grossissimo problema venendo da Python e Java, ma se stai lavorando in velocitĂ lo è eccome se non conosci il linguaggio.
Unity funziona a scene, e in ogni scena ci sono gli oggetti. Gli oggetti possono avere delle proprietĂ , altri oggetti a loro volta (es. Canvas, una tela, può avere al suo interno unâimmagine o anche un bottone).
#
Lâidea alla base è molto semplice: unâapp che preso il flusso della fotocamera, riconosce che si tratta della fermata del bus, estrae il testo, fa una ricerca online della fermata e restituisce tutte le informazioni necessarie.
Scompattiamola in piĂš problemi e soluzioni:
Prendere il flusso della fotocamera: qui Unity ci viene in aiuto, basta inserire un oggetto nella scena del gioco giĂ preimpostato.
Riconoscere la fermata del bus: qui mi viene da dire che o usiamo delle immagini di riferimento e la libreria opencv in modo tale da riuscire a estrapolare lâimmagine, oppure usiamo un modello di Machine Learning opportunamente addestrato.
Estrarre il testo: idem, usiamo un altro modello di ML
Cercare e restituire le informazioni: serve un endpoint intermedio o una chiamata a OpenData. Niente che non possa essere gestito.
#
GiĂ iniziare a settare la camera giĂ fatta e impostata è unâimpresa. Inizialmente avrei dovuto usare OpenXR e AndroidXR salvo poi scoprire che si tratta di un ecosistema non rilasciato. Ho speso la parte iniziale per configurare il progetto e cercare di far funzionare quelle cose, salvo poi scoprire che non servivano. Dopo un poâ di peripezie e ricerche online riesco a capire come fare: basta aggiungere AR Session e AR Camera Manager.
#
E come? Abbiamo detto prima di usare OpenCV la libreria ricca di strumenti per computer vision. Gli unici due risultati che trovo sono questo tool a 50$ e questâaltra libreria qui emgucv che però la prima costa 50$ e la seconda non si trovano esempi.
Devo passare ad un modello di Machine Learning.
Mi imbatto in questo articolo e questa guida che spiegano come creare un riconoscitore di oggetti personalizzato. Proprio ciò che serve a me!
Ă il momento di cercare le immagini delle fermate dellâautobus di Roma: online se ne trovano a bizzeffe per fortuna quindi faccio presto. Ma come faccio a dire al modello di ML che quella è una fermata del bus? Semplice, bisogna riquadrare gli oggetti nelle immagini, usando tool come cvat.ai.
La fase di labeling, questo è il nome tecnico, dura 2 ore, ma devo rifare il lavoro 3 volte.
La prima perchĂŠ lâho fatto in maniera non consistente inquadrando un poâ la fermata e un poâ il contenuto della fermata, la seconda perchĂŠ non ho pulito il dataset da eventuali immagini a bassa risoluzione e unâaltra cosa fondamentale: YOLO supporta, solo rettangoli, e non forme personalizzate.
Di conseguenza, siccome non sapevo di questa cosa e ho pensato di selezionare tutta lâarea del bus, devo fare di nuovo labelling delle immagini.
La terza è quella giusta.
#
Dopo qualche giorno riesco finalmente ad addestrare un modello in 300 epoch, con una precisione altissima. Sono molto soddisfatto ma câè un problema: Unity supporta solo file onnx, non pt, il formato predefinito di pytorch. Decido di convertire il modello e noto che gli output sono sbagliati: che fare?
Dopo moltissime ricerche vengo a scoprire che bisogna applicare dei âcontrolayerâ: ma io non ho la piĂš pallidea idea di cosa applicare.
CosÏ armato di pazienza e motori di ricerca cerco e cerco e cero, finchè non mi imbatto in questo link dagli sviluppatori. La manna dal cielo: basta copiare questo, modificarlo leggermente e⌠FUNZIONA TUTTO!
Il risultato è un disastro: lo script è stato sviluppato per la versione 1.4.0 di Sentis, ma ora siamo alla 2.1, e nonostante ci siano delle guide per modernizzare il codice, cerco di scrivere il codice aggiornato diverse volte, fallendo miseramente.
Mi viene in mente allora una cosa semplice tanto banale: passare a una versione inferiore di Sentis, cosĂŹ che quellâesempio possa girare senza problemi. Per mia fortuna funziona proprio cosĂŹ!
#
Armato di forbici dalla punta arrotondata, capisco che ora il problema è fargli riconoscere la fermata.
Ecco cosa provo:
riaddestrare facendo labelling nuovamente per la quarta volta, questa volta cercando di fargli riconoscere fermata e numero
addestrare 4 modelli diversi su tempi diversi
integrare un altro modello che riconosca le cifre
Inutile dirvi che nessuna di queste funziona: il testo è troppo piccolo nelle foto.
Su unity inoltre, poichĂŠ câè bisogno di quel formato onnx, non riesco ad usare nessun altro modello e tesseract non si può usare perchĂŠ non câè una guida su come usarlo su sentis.
Decido di fare una cosa: delegare a un sistema esterno il compito di tradurre il testo dallâimmagine, mentre allâapp lasciare il compito di riconoscere la fermata.
#
Anche questa cosa si rivela un buco nellâacqua: il sistema esterno è pronto, metto su una piccola app in Flask in Python con la libreria tesseract per lâOCR, ma lâapp non riesce a rilevare cifre su immagini piccole.
Se invece gli dò tutta lâimmagine lâOCR avviene, ma non molto correttamente e i numeri non li rivela mai.
#
Ecco cosa ho imparato grazie a questa esperienza:
prima di iniziare o proporre un progetto valutarne attentamente la fattibilitĂ
quando si gestisce un esempio, sarebbe bene aggiornarlo allâultima versione man mano che le versioni avanzano
YOLOv8 è ottimo per riconoscere oggetti personalizzati
se non hai una GPU potente, linux, e un bel disco capiente, scordati di fare qualunque cosa con il machine learning. Lâalternativa è Copilot ma devi assumere che il modello venga addestrato in tempi brevi.
Yes, the end, vicolo cieco.
Via verso un altro progetto!
Canto di Natale, cucina cinese e DOM clobbering
Ecco tre cose a caso che mi sono piaciute e ho scoperto ultimamente.
#
Il vero canto di natale, non rappresenta come in molti noi crediamo il fatto che âa Natale siamo tutti piĂš buoni e si sta in famiglia e si fa il grande pranzoâ.
Lâimmagine di Babbo Natale, è presa dal fantasma del Natale presente.
Il fatto di festeggiare il Natale, nasce come celebrazione del solstizio: il giorno in cui ci sono meno ore di luce in tutto lâanno. Di conseguenza si è piĂš deboli e fare un pranzo tutti insieme è un modo per rimanere forti perchĂŠ è piĂš difficile sopravvivere: fa freddo!
Quando Dickens scrisse il canto di Natale, era il 1840, in piena rivoluzione industriale: non si stava cosÏ bene, Londra si era appena trasformata in una cappa grigia a causa della rivoluzione industriale. Ai padroni delle fabbriche però questo non importava: stavano bene dopotutto poichÊ loro guadagnavano, e finchÊ un lavoratore fa guadagnare, tutto bene. I poveri lavorano, i ricchi stavano bene.
#
A Milano câè stato il primo insediamento cinese in Italia: questo perchĂŠ dopo la prima guerra mondiale vennero dei cinesi a Milano (quaranta) che via via divennero sempre di piĂš, originari della provincia di Zhejiang.
In Cina hanno un detto: a colazione si mangia tanto, a pranzo si mangia bene, a cena si mangia intelligente.
colazione: si mangia tanto perchĂŠ deve servire una grande energia per tutta la giornata e per lavorare
pranzo: si mangia bene, quindi anche cose piĂš pesanti
cena: si mangia intelligente, ossia leggero poichĂŠ ognuno ha le proprie condizioni e le proprie esigenze (cercando su Google ho trovato âmangiare come un poveroâ)
Una colazione tradizionale è un poâ dolce e un poâ salata, e può comprendere di: pane di soia che deve essere bianco e leggermente dolciastro, bao con verdure miste e carne , latte di soia dolce e latte di soia salata con salsa di soia, pastella fritta, cipollotto e coriandolo.
Un pranzo invece dipende: di solito è 1+1, 2+1, 3+1, 4+1 o 4+2 e significano (numero di portate)+(numero di zuppe). Es. 2+2 vuol dire due piatti principali e due zuppe. Lâacqua non si beve: si prende il tĂŠ e si ordina la zuppa proprio per assumere liquidi. Solitamente è 2+1: pak-choi saltato (verdure) e carne di suino saltato con peperoni e peperoncino piccanti. La zuppa invece, la piĂš popolare, è con pomodoro, uovo e cipollotto. E immancabilmente anche una ciotola di riso bianco. Non câè un ordine.
#
Javascript è molto simpatico: mette tutto dentro collection. Possiamo sfruttare questa cosa per creare oggetti secondo un criterio che vogliamo noi e modificare lâesecuzione di alcuni script.
Ad esempio, se noi abbiamo
<script>
if(window.isSafe) {
console.log("Flag");
}
quel window.isSafe non esiste ma può essere creato aggiungendo da qualche parte nella pagina
<a id='isSafe' name='...' href="onerror=alert(1)"></a>
ma ciò non funziona perchĂŠ il browser fa encoding in automatico; possiamo evitare questa cosa usando lo schema cid, aggiungendo cid allâinizio
<a id='isSafe' name='...' href='cid:"onerror=alert(1)//'></a>
Medium: is it worth your time and effort?
Medium: is it worth your time and effort?
#
It is a paradox: why am I writing an article on Medium about why I donât like it?
I occasionally return to Medium, wondering why I left a place like this. After all, they provide a distraction-free editor, that is appealing, a melting pot of articles, and is full of people who write stories, and I love stories! After all, one right story could change the world.
I wouldnât say I like to discuss whatâs working here; instead, Iâd like to discuss some criticisms and issues, hoping they will be changed soon.
(SPOILER: it is unlikely to happen)
#
Letâs talk about the editor and markdown: I cannot easily import my content into Medium, and vice versa: exporting my Medium content to other formats is a nightmare.
We can import articles from other websites, by clicking âStoriesâ and âImport a storyâ, but they will be badly formatted, at least speaking about markdown.
Though Medium is based on a business model where people pay to read exclusive content on this platform, when I write my content as many people do, Iâm used to writing everything in Markdown format.
This is because Markdown is platform-agnostic. Provided that you have a âMarkdown interpreterâ you can see your content styled everywhere.
By letting people write in a plain text file on something like an old Mac, or even a Commodore 64, and share it in some way, you leave the door open to recycling old hardware that probably was going to be left in the dust in a basement or straight to the dump.
You could even save your Markdown files to a floppy disk and load it into a 80s/90s computer
Being able to import your stories more comfortably, provides access to your platform, potentially increasing the number of people who want to write here.
However, it is understandable that you donât want to people leave Medium: I donât personally share this line of thoughts.
#
Why do I criticize the Markdown editor so much?
It could be more intuitive: to write some source code by using a monospace font, we can use ``` on a newline and a textbox will appear.
This is similar to Markdown: thatâs great, but Medium editor is a WYSIWYG editor (what you see is what you get) therefore I would expect that when you copy-paste and highlight the text, the option âformat as codeâ would be available.
What about links? You should select text and click on the âlinkâ icon: you canât say in advance to create a link like you would with Markdown.
While aiming for simplicity and a distraction-free writing experience, writing articles can be frustrating for users who are more standardized editors. Speaking about code, although using a monospace font for code is clear once you get the hang of the triple backticks (```) or the â+â code block option, these functions
Any action other than formatting text in bold, italics, or underlining, like inserting links, code blocks, and images, requires selecting text or navigating through a â+â menu.
While the editorâs clean, âdistraction-freeâ design is appealing, the non-standard formatting options and limited Markdown support make it tedious for users to work efficiently.
We can sort out these problems by allowing Markdown or adding a few standard optional toolbar icons without cluttering the layout.
#
Letâs say we are writing a guide with some code inside: we cannot place a code block inside a bullet list, because the only possible moves are:
Hit return: this creates a new numbered item. You canât insert a code block within the item itself.
Double enter: this creates a new line where you can insert a code block, but it breaks the list flow. After adding the code block, youâre stuck outside the list and canât continue numbering
Shift and enter: this lets you move to a new line within the same list item without breaking the flow, but you canât add any additional formatting or a code block on that line.
The same thing happens for images as reported by Medium itself: you cannot include an image within a list without breaking the list.
This could be better because I think it would be great if I could create a numbered list for my guides or procedures and place images wherever I want.
Since editors are just a means to express ourselves, we should be able as free as we can, an editor is just a tool; it shouldnât control us. We use it to express our unique spirit.
#
Mediumâs editor has great potential, especially for people who want to jump in and write without fuss.
But for those who like to have a bit more control or are used to Markdown, it can feel frustrating â or a hunt for the right formatting option.
Letâs hope Medium will take step to streamline and maybe even standardize things. With just a few tweaks, it could be a better experience.
If you liked this article, come say hi over at dag7.it or consider supporting my work â every bit helps
Originally published on medium.com on 5th November 2024, at 13:00
AIO Kittens ITA: an italian-only (maybe) unified manual for Exploding Kittens
Have you ever thought about playing Exploding Kittens but you donât feel up to use hundreds of different manuals?
Today, Iâm gonna release âAIO Kittensâ, a unified manual that includes not only official expansions, but also other unofficial ones.
Iâve never tried to print it on a leaflet or something like that, it should be more compact than the official one.
Feel free to reach me through my email to let me know if this is useful for you or you would like to share with me your thoughts on it!
For now is italian-only, in future who knows, if enough interest is reached I can think about an english version.
==Download it now==
New track: Nobody's Sleeping
A new track is finally out!
#
Many years have passed since I did that track.
Iâm happily releasing it for Halloween. Hope you enjoy it!
As always, donât forget to check my music page to stay updated with all my music.
The Rabbit Hole of Curiosity: A Personal Dive into Tech and Security
Starting a new academic year
#
A new academic year has started. Well, not today, but a month ago.
Geez, time flies.
It is strange how every academic year feels like the first one but with the knowledge of the previous ones. It is like a new game plus, but with the same character and more skills: scared of the unknown, but with the knowledge of the past.
Anyway, hereâs the story: Iâve started some brand new courses. I always have been curious about the world, especially for the things that are related in my field of study.
Informatics is divided into many branches, but I think the major ones are:
Backend programming: the part of the software that is not visible to the user, you know, âthe magic under the hoodâ
Frontend programming: the part of the software that is visible to the user, the âpart that the user seesâ
DevOps: the part of the software that is related to the deployment and the maintenance of the software, fundamental skill for a developer, but also for a system administrator
Security: the part of the software that is related to the security of the software, the âpart that keeps the software safeâ
During the years, Iâve explored many of these branches, Iâm currently working as a backend developer and DevOps, but Iâve always been interested in the security part. It is fascinating how a software can be secure or not, and how a software can be exploited by a malicious user.
Because, after all, user is the most unpredictable part of the software.
Knowing how to write a good and a bad software is a fundamental skill. Knowing how to break it, it is even more important because you can understand how to protect it and how to write a more secure software.
#
Yesterday I got up in the morning, and started to study like a fool. I was highly demotivated: this is related to the fact that Iâve attempted a couple of exams in the past, and Iâve failed them. Iâve studied a lot, but Iâve failed them.
I was demotivated, but Iâve decided to try again.
This time is different: Iâve started to study two courses, one about the security of the software and the other one is about malware analysis.
It is impossible to explain how much Iâm enjoying them: the stuff is exactly what I was looking for years, but I never dared to study by myself, because I was scared of its complexity.
Well, they are not easy: they are definitely not easy, but I donât think they are impossible, and being in an universitarian environment, I can ask for help if I need it or if Iâm stuck, while alone at home, I cannot ask for help, and Iâm stuck with my thoughts.
So, until now, Iâve been studying a lot, and Iâve learned a lot of things.
Everytime Iâve finished a lesson, I had a dopamine rush, and I wanted to know more about it, in particular by consuming videos and articles.
It would be a good idea:
to write some articles about security and malware analysis, what Iâm learning, to not forget them
update my notes with the new things Iâm learning
#
I will never understand why I get in love with things I donât know. When I grasp a new concept, I feel like Iâm in love with it, and I want to know more about it, but this is applied to every unknown field and leads me to a rabbit hole of curiosity.
Unfortunately the time is limited, and I cannot explore everything I want with the depth I want.
Iâm a curious person, and I will always be.
xoxo, Damiano
p.s. very soon I will start in reading âAtomic Habitsâ by James Clear, Iâve heard a lot of good things about it, and Iâm curious to know more about it. I will write an article about it, for sure.
p.p.s. Iâm so happy that Iâve finally have found some time to write an article: it makes me feel good.
Django Day 2024: lighting talk on Chiptune
The event
#
Django Day in Copenaghen is an event dedicated to Django, the Python web framework. It was a one-day event, and I had the chance to attend it as a speaker.
Iâve decided to talk about Chiptune, a genre of music that uses the sound chips of old computers and consoles to create music.
#
Iâve presented a small introduction to Chiptune, explaining what it is and how it is made. Iâve also shown some examples of main artists, the demoparties, the Chiptune music, and Iâve explained how to create Chiptune music using a tracker and whatâs the difference between a tracker and a DAW.
#
If youâre here, you probably would like to download the slides of my talk.
Maybe youâre interested in Chiptune, or maybe youâre interested in the talk Iâve done.
Click here to download the slides.
If you donât feel up to download the slides, click here to see a youtube video of me in action.
#
The feedback was great. Iâve received some questions about Chiptune after the talk. I talked with some people who knew artists and discovered new people doing music.
I also make music, take a look if you please!
The organizers were happy with my talk, and theyâve asked me if I would have liked to perform a live Chiptune session. Iâve accepted, and Iâve performed a small live session at the end of the event, using my Gameboy.
Zona Warpa Milan 2024 Tour: what's now?
Milan has been the last Zona Warpa Tour, I took part and here it is a small blog post to share my experience.
#
Everything has started in 2023, when the first Zona Warpa Tour was announced.
Zona Warpa is a self-managed videogame festival, mainly focused on indie and small productions. They are organized in different cities, and the last one in 2024 was in Milan.
As attendee, I had the chance to play some games, meet some developers and also take part in some talks and they were about a lot of different topics, from accesibility to translation.
I also had the chance to meet some people and have a good time with them.
The first time I took part, was in Rome in June 2023.
But this was an important event for me, also because I have the possibility to finally show my composition on stage. I have been working on this for a long time, and I was very happy to have the chance to show it to the public, in collaboration with a friend of mine. We performed together under the pseudonym of âcyrix86mpuâ.
Iâve also been able to code a little cracktro, thanks to the awesome LOVJ that helped me with visuals while performing.
What about now? Iâm looking forward to the next Zona Warpa Tour, and if I will have more tracks ready, I will be happy to perform again.
Stay tuned for more updates!
xoxo
#
The full video is available here: https://video.zonawarpa.it/w/v6SJtA54A5LRm6ay86kJhZ
#
Zona Warpa Torino 2025
Ă stato fighissimo il Gabrio, ed è stato bello suonare per le persone che câerano al suo interno.
Day 5: Videogame's Devlog - Inventory, HP, counter attacks
I am caught up in something else and have been slowing down these days.
The situation has become untenable: I feel the need to write tests and modularize the code further.
Things break and I donât know why.
Anyway, I manage to create a small inventory by deciding to treat the inventory as a dictionary and inserting an object into it every time it is printed in the overlay.
Thereâs a problem: exits are added to the inventory, that it is not what we want, but never mind: this is a problem I will fix another time.
I also decide to implement the fact that enemies counter-attack by assigning each monster an attack and a defense and making it so that when they counter-attack and when I attack, according to small mathematical formulas the hp is decreased or not.
To get around the regeneration problem I temporarily decide to make the character recover one hp every time he moves.
I also decide to implement the fact that the character can die: if the hp is less than 0, the game ends. To start a new game, just press the âRâ key.
The game is starting to take shape, but I have to fix some bugs and make it more playable, for now Iâd like to polish on textures and make the game more enjoyable, so I manage to understand when to use borderâs tileset and when not.
Other wishable features are:
handle items in the inventory
fix enemies texture bug
add proper tiles for the border in the map
invent a story
add a boss / boss room
I am very happy with the progress I made, but I have to keep going.
Day 4: Videogame's Devlog - graphics, minimap and level up
Tonight is the night! I need to implement graphics!
Well, how to do it? Old videogames were made with spritesheets, so I decide to do the same. I downloaded a spritesheet from a free itch.io download link, and I am ready to go�
But whatâs the basic idea? I have to draw the map exactly as I did before, but instead of drawing colored squares, I have to draw textures.
The steps are:
load the spritesheet
while drawing the map, if the tile is a wall then go to the spritesheet and take the 4th square by row and column
for example, if the wall is at row 1 and column 1, then the square is at row 0, column 0, wide 16 and high 16
if the character is at row 2 and column 1, then the square is at row 161 and column 116, wide 16 and high 16, and so on
this is because the spritesheet is 16x16 and every square is 16x16
This is feasible, so I decide to go ahead: I modify the main structure by adding row column and spritesheet where the graphics are saved.
After that, instead of drawing colored squares I decide to draw textures, each 16x16 and⌠itâs a great idea, everything works, I just have to be careful to change the sprites of the enemies.
Wouldnât it be nice a minimap in the HUD too? Of course, it may come in handy for me for debugging purposes but also for the player in the future.
I notice that minimap is the same map I normally draw, but with pixels 1x1 instead of tiles. Basically there is no need to rewrite the code, just to make a function that draws a general map.
Since the code is starting to be a mess, I decide to refactor it a bit: dictionary will store each elementâs characteristics, like this:
{
"enemy": {
"x": 10,
"y": 10,
"hp": 10,
"attack": 2,
"walkable": False,
...
},
...
}
Look how itâs beautiful!
Now itâs time to improve the HUD and set health points and attack points to the protagonist and enemies.
I decide to also change the function that inserts stuff into the map: in case of enemies/living people, it also inserts additional parameters such as residual hp or collected tool, so that I can manage enemiesâ items and death as well.
I finally decide to implement a simple level up (experience) and level up mechanism, by using some math functions and randomness.
Day 3: Videogame's Devlog - HUD, enemies, AI, and more!
Good morning Night City
-Cyberpunk 2077
My morning is not a morning, but an evening, and it starts after a good sip of caffè latte: I am ready to face the day. I have a lot of ideas in my head and I want to make them reality.
I had an interesting discussion some time ago with some friends of mine about the difference of cappuccino, caffè latte, and latte macchiato. I am not a coffee expert, but I knew that the difference is in the amount of milk and coffee. The articles I read on the internet are not very clear, however this article here explained by ânientepopodimenoâ but Caffè Borbone is very clear and I recommend it to you if youâre interested.
We need first to resolve the performance problem: a dear friend of mine advised me to reduce the size of the map since I would make less effort that way. I decide to throw down the whole dungeon generation algorithm and redo it almost from scratch.
Iâve watched some videos and read some codes online, but this excellent video brought to you by âTheZZAZZGlitchâ is really interesting and explains in a visual way an approach to generate dungeons.
The generation algorithm is very interesting: first it generates rooms as I do, then unlike me who immediately tries to connect them, it generates âdumbâ rooms (called 1x1) and tries to connect them with existing rooms. It also does another thing: it generates a special border (soft border) that does not allow it to be crossed or passed in any way.
I reason a little bit about how to do that: generate the rooms, okay, which I already had. I can import the 1x1 idea: sounds good to me!
To my surprise it is an approach that works very well: by increasing the number of 1x1 rooms I can increase or decrease the complexity of a dungeon.
Basically it is like connecting multiple rooms together: an approach that works very well!
Before I re-create the collisions and âthe walkable and the unwalkableâ, I want to make sure that I generate the items and everything that is needed to go from one world to another correctly.
It occurs to me that I have to generate items, money, etc., and these should not be in corridors. Grr, this is difficult.
Going back to the performance problem, I decide to reduce the size of the map to 56x32 pixels. Since I did my algorithm in a way that I can change the size of the map, I can do this without any problem and with some surprise I see that the performance has improved a lot, generations are almost instantaneous.
I am very happy and this is the result!
Things canât stop here:** I have to generate the items and the money**. I have to generate the exit that will take me to the next level. I have to generate the enemies and some elementary game elements: key, chest, exit, enemy, boss, trap. After all, I can treat everything as walkable/not walkable as well.
I create a dictionary of tuples: the name is something I know, the tuple there is number (which I will need in the final map), the âcommonâ name, and a color that will then be replaced by a texture in the future.
{
"key": (1, "key", (255, 255, 0)),
"R#@*JE@": (0, "nothing", (0, 0, 0)),
...
}
The idea is to draw the map and depending on what is in the map, draw something different.
#
It also occurs to me that there might be overlapping problems: however, if I calibrate the spawn order well, I should not have such problems.
The overlapping problem is a problem that occurs when I spawn an item, and then I spawn an item on top of it.
For example, I can safely decide to spawn enemies, chests, etc., and only after stairs, since if stairs replace an enemy, it is less serious than having an enemy replace stairs, it would make the game impossible.
Graphically there is not much changes, but in practice I always have an exit and something on my map.
#
Now we have to move on to movement and collisions: I simply have to make a function that checks if I can move on a certain tile, and if yes then move, otherwise not. It will suffice to treat enemies as blocks and everything else as something walkable.
The next step will be to define each entity behavior. Letâs start with stairs -> I decide that every time a valid movement is made events happen, so I use the strategy of the boolean âmoved and not movedâ. It works.
#
Now I have to deal with the AI of the enemies. I want to define different strategies, but for now I am content with a ârandomâ approach.
A first implementation is this: find all the reds, if they can move go in the direction they randomly choose. This approach in terms of memory sucks: it would be better for me in generation phase to save the position of the enemies and update it as they perform movements.
#
But hereâs some bugs arise:
if I decide to move on a tile that has already been chosen by an enemy, I am not a solid object so both I and the enemy overlap.
solved in a simple way by assigning me the property of being solid
since I have defined that every object when stepped on and is âwalkableâ becomes a normal tile again, enemies do the same thing with stairs. In other words: the enemy steals the stairs! This is not good and to solve it I have to handle the limit case of the stairs (between them they should not kill each other as they are all solid).
Technically, I could also change the order of generation: I now generate the rooms, generate the dumb rooms, connect them, generate the items and game elements, however, to save resources and time, I could generate the rooms, place the player, place the items generate the 1x1 tiles and then connect them.
Another bug: enemies and I move in the same tile and overlap: this is not good, and it is because I was never updating the fact that the area where I was standing was free and I had moved to another area. Instead, every time I move, I have to set the tile where I am as âwalkableâ and the new one as ânot walkable,â which comes from the fact that I occupy it.
Another approach I came up with is to simply define whether the playing field is walkable or not.
#
The time has finally come: define the IA behind the enemies: meanwhile, I want to define three kind of enemies, one that is very stupid and keeps doing what I have been doing so far (wandering around randomly), one that is smart and chases the player, and the other that is greedy and steals everything stealable
I create the AI for the first and the second kind, but not the third: I have to think about how to implement it.
Now I find myself in endless dungeons. I definitely need to implement a quick attack just to make enemies disappear. For now I settle for âlast key pressed is up, so I shoot upâ. I can implement it by writing that the last key pressed âlooksâ in a certain direction, regardless of whether or not you can move.
#
Itâs late but I can make it!
I take a short break, and after a while, I find out about pr.end_mode_2d() which allows you to draw a HUD.
Thatâs fantastic! In the top left corner I want the stats counter in general, and at the bottom I want a textbox: the messages go away after two seconds (120 then, because Iâm at 60 frames per second) and the hud has to disappear.
It occurs to me to make a buffer for the messages, and eventually show it slowly by removing each string.
Hereâs an example and why I told the 120 frames per second thing:
messages_buffer.insert(0, ["Level up! You are now level " + str(player['level']), 120, pr.GREEN])
Messages are placed in a list, and each message is a list of three elements: the message, the number of frames it has to stay, and the color.
At the end of the game loop, I check if the message has to be removed, and if so, I remove it, otherwise decrease the number of frames it has to stay until it reaches 0 and shows the message in the box.
This is the result:
Day 2: Videogame's Devlog - Dungeon Generation and Camera
My original idea was to make a dungeon game.
âDamn bro, you just started and you already want to make a dungeon game?â
Yes, I know, but I love dungeon games, and I want to make my own since ever. The most fun part of a dungeon game is the dungeon itself: the rooms, the corridors, the monsters, the traps, the inventory. Everything is random, everything is different every time you play, and thatâs addicting.
But, letâs go back to the game.
It is time to make my hands dirty on the actual dungeon creation. Where do I start?
Well, I had seen a video a while back on procedural dungeon map generation. The idea was that first you generated rooms, then you generated corridors. I then decide to set a scary size for the map, like 300x300 because I think it is a good size for a dungeon.
Letâs move on the dungeon generator part: it is slow and has problems.
The idea is to generate the whole map first by defining walkable and non-walkable areas, the player (always a yellow square), draw a green square for each ânon walkable squareâ, then I can move on to fill the entire map with monsters, items, and traps⌠you know, the usual dungeon stuff.
It works but⌠the problem is also that I canât see anything this way, because everything is too big.
I find out about the existence of the game âcameraâ which serves just as if it were a separate and detached window to the game world. Very pleased about this, I decide to postpone the problem of optimizing things and make them faster until the next day, not before adding some small debugging controls (W and S keys, zoom in or out the view)
I also implemented a small collider with walls, that does not seem to work properly and the classic directional arrow controls for moving my yellow square around.
Hereâs the result:
Day 1: Videogame's Devlog - Totti's Quest
Finally, after some years, I am experimenting for the first time with making video games.
I have always been fascinated by the idea of creating a video game, but I have never had the courage to start. I have always been afraid of not being able to finish it, of not being able to make it as I wanted, of not being able to make it fun.
But this time things are different: I wanted to make a game for GBA, but thanks to a friend of mine who suggested me to use Raylib, a C library for making games, I decided to start with that.
Honestly I was intimidated by the idea of starting from scratch, because many frameworks nowadays I thought were too complex for me. But Raylib is damn simple, and I like it.
I canât make games from one day to another, it requires a lot of time, work, programming, testing and all the other software development phases. After all I write software for a living, so I know what I am talking about.
Letâs start with a silly thing and make Tottiâs Quest, a red square that if it touches another green square, the other one turns yellow and starts the Roma anthem + an image of Totti
The first problem is drawing a square. Well, just check raylib lib! But raylib is a library in C.
My main language is Python: itâs not âI donât like Câ, itâs more like âI use Python every single day, so I am confident with itâ.
They are programming languages: exactly like with the normal ones, they work in the same way. The only difference is that C is verbose, I need to manage more things (like structs, dictionaries are not native and so on). Python have a lot of gimmicks that make it easier to use. Since the result is gonna be the same, I decided to use the latter.
Fortunately, raylib was ported to Python so you find these âbindingsâ that basically make the library suitable for a language that is different from the original one.
Iâve managed to complete the code with a bit of a problem: I canât get the audio to work because it always clashes.
It occurs to me that I can use boolean variables to indicate states, like âplayedâ or not.
This is an approach that works, and I am happy with it.
Restyling 2024: again and again
Here I am again. Another time, my website has been revamped. Iâm back to Hugo, with a template that resembles Github Homepage.
I wanted to create a lot of things, maybe a Hugo theme would have been suitable, but right now I am no up to do it. I just want to write, and share my thoughts.
There is the problem of the language: I donât know if I should write in English or Italian. I am not a native English speaker, but I like to write in English. I will try to write in English, but I will switch to Italian if I feel like it.
Also enjoy the old posts that I have written in the past. They are not many, but they are still there.
I hope you enjoy this new website. I will try to keep it updated as much as possible.
Proposals for 2024
Dear Santa Claus,
this year I have been a good dev: I have worked hard, and learnt a lot of new things. I have created some projects and I have helped some people.
Iâd like to focus on some projects in 2024, and Iâd like to share them with you. I hope you can help me to achieve them.
Here is the list of the projects Iâd like to work on in 2024:
Mcdonaldâs eCDP Project: still in beta due to failure in finding a free translation platform. I should host the strings on a private Pontoon Instance.
jet-set-radio-theme Jet Set Radio Theme for Mozilla Firefox, it is abandoned since the day I submitted it. I should fix things.
MyBacklog: started in 2023, it is a currently unfinished app to track your videogames.
Evolve this website in a way that I like and donât change it anymore. I should focus on writing, not on the website itself.
Here is the list of the things Iâd like to do in 2024:
Study personal finance and invest some money
Study more about Machine Learning and AI
Visit countries I have never visited before
Improve playing any of the instruments I play
Release tracks on Youtube (and possibly Spotify)
I hope you can help me with these projects. I will try to be a good dev in 2024 too.
Best regards,
Dag
P.S. Iâll update you on the progress of these projects on my blog. Stay tuned!
Plastic Dreams From Another World: cosa ne penso
This article is in Italian. If you want to read it in English, just translate it with your favorite browser.
Arkavoid è un progetto di Davide Panetta (al basso) che attinge direttamente dalla cultura synth anni 80 e la ripropone in chiave moderna. Il genere è conosciuto come synthwave.
Plastic Dreams From Another World ĂŠ il primo album di questo progetto.
#
La copertina ĂŠ molto bella da fuori, ricca di dettagli e colori.
Non rispecchia pienamente i brani dellâalbum, dĂĄ una specie di anteprima sullâeffettivo contenuto. Mi piace molto, anche se forse avrei optato per qualcosa piĂş futuristico (lâattuale ĂŠ abbastanza cyberpunk).
In generale ci sono tantissimi dettagli interessanti come una rappresentazione fedelissima di una mpk mini o una specie di Glados sulla destra.
Non mancano poi anche vari richiami alla cultura pop: un paio di Jordan in basso a destra, delle statuette di He-Man, âKitâ di Supercar, un poster di Terminator, e altri elementi assimilabili comunque alla cultura pop o anni 80/90.
Un poâ tutto è un richiamo a qualcosâaltro, auto-referenziale (nel disco) o meno.
#
Tutti i brani in generale sono facilmente ascoltabili, nel senso che non câĂŠ bisogno di essere dei fan particolari di un qualche sottogenere dellâelettronica.
Un solo brano fa eccezione: in esso ad un certo punto câè un suono acutissimo che non è esattamente molto orecchiabile. Tralasciando questo episodio isolato, non ci sono particolari problemi.
#
Lâalbum inizia subito con Run Forever (1), brano che spicca tra tutti per la sua orecchiabilitĂ , con un motivetto molto coinvolgente.
Seguono poi altre considerazioni su alcune tracce:
Night Sands: insieme a The Scorpion, i brani che mi son piaciute di meno tra le tutte, forse perchĂŠ un poâ lente, forse perchĂŠ stilisticamente diverse dal resto dellâalbum.
Red Horizon: potrebbe essere benissimo spacciato per la colonna sonora di Hotline Miami. Non se ne accorgerebbe nessuno. Molto carino!
Bloodzone: lâintro ĂŠ stranissima, e in generale il pezzo ĂŠ pieno di cose âstraneâ ritmicamente. Ă interessante.
The scorpion: di per sĂŠ il pezzo ĂŠ carino, synth decisamente rivedibile
Golden Tears, oltre a piacermi, trovo sia davvero perfetta come traccia finale
#
5 stelle: per me sono delle hit, sono le mie preferite e sono fantastiche, le adoro
4 stelle: ottimo lavoro: non mi sono piaciute come quelle con 5 stelle, ma rimangono dei pezzi ottimi
3 stelle: ok: non sono di per sĂŠ malvagi, ma qualcosa non mi ha proprio convinto
2 stelle: non mi sono piaciuti, ĂŠ il mio rating piĂş basso
1 stella: non uso mai 1 stella :D
#
In generale è un album godibilissimo, con unâottima varietĂ di tracce e stili, con diverse chicche: un ottimo lavoro sia comparto grafico che sonoro.
Tracce preferite in particolare: Rebecca (6), The Ghost Of The Temple (3)
Honorable mentions: Run Forever (1)
Trovate lâalbum in pre-ordine su Bandcamp o su Spotify.
Ă prevista lâuscita il 30 settembre sulle principali piattaforme di distribuzione (Spotify, Apple Music).
Touhou Project: Playing First 5 games with Retroarch
This small guide aims to become the main guide for all those who would like to play Touhou Project (abbreviated as TH), but donât know where to start and how to set up the right emulator.
Note that I only tested this guide on an Anbernic portable console (I told you about it in another article) precisely because I wanted to test how comfortable it actually was play it and because there isnât much material online, neither in English nor in Italian.
#
The TH Project is a series of games (called bullet hell) created by Junâya Ota, alias ZUN: in 1996 he decided that video games were boring, there was nothing really fun for him, so he decided to create a series of titles on his own, partly for fun and partly to experiment.
Games of this kind are normally difficult for the average player: the skill lies in observing and understanding the patterns that are proposed and the fact of remaining calm while being bombarded with bullets.
However, not all of them will hit the player: it will be up to the latter to understand (and remember) who hits him and who doesnât.
#
During the game, we will take on the role of Reimu or Marisa and we will have to shoot and avoid monsters that will try in any way to knock us down.
Between one chapter and another (episodes) we will have small interludes that will push the story forward, allowing us to understand what is happening.
In Italy it is not very popular, but it is especially so in Japan: in addition to the fandom they even have a manga and an anime.
#
The TH Project has been released in 18 different chapters, not counting the 11 official spinoffs which brings the total number of games to 29.
The first 5 chapters are the only ones to have been released for PC-98 and nowadays have become almost impossible to find, except online. They are:
Touhou 1 - Highly Responsive to Prayers
Touhou 2 - Story of Eastern Wonderland
Touhou 3 - Phantasmagoria of Dimensional Dream
Touhou 4 - Lotus Land Story
Touhou 5 - Mystic Square
This article is about the 5 games listed above, all others are available and released for Windows.
The first game is very different from all the other chapters: it is a kind of arkanoid with tiles.
#
To play the Touhou Project you need:
copy of TH Project games for PC-98
PC-98 emulator (Neko Project II) or
Retroarch configured with NP2 KAI core (Neko Project II Kai)
scissors with a rounded tip
#
Load the Retroarch (RA) core called Neko Project II KAI. The KAI version is essential, in fact nothing will work without it.
Make sure you already have configured the core. If you havenât or donât know how, RA guide will help you
Load a game. What a bummer right? It all jerks and feels crappy. Now letâs go make some improvements.
Open Retroarch menu > Core Options > Core Settings > and make these settings:
PC Model: PC-9801VM
CPU Base Clock: 2.4 MHz
Feature CPU: Intel 80386
CPU Clock Multiplier: 16
RAM Size: 13
Skipline Revisions: 255
Soundboard: PC9801-86
Restart the content, and enjoy.
N.B.: this configuration is specific to the Anbernic 353V: experimenting a bit with the settings I reached a good compromise.
If you have a higher-end computer or console, set the CPU Clock Multiplier to 40 and RAM Size also to 32, and then gradually decrease the CPU Clock Multiplier in case you notice frame drops, or slowness in general.
The minimum values are CPU 24 and RAM 13.
(yes, I had to put 16 otherwise everything was laggy)
#
These settings are obviously also valid when using the standalone emulator.
#
It gives me black screen with a)> how do I fix it?
you are not using NP2KAI, but NP2. I told you Kai was needed đ
The second chapter does not take my input.
you are not using NP2KAI, but NP2. I told you Kai was needed đ
I donât see the fonts
Optional files are missing, official guide tells you how to fix this annoying problem. Or play without fonts.
The zip doesnât work!
unzip the zip and put the hdi file in the rom folder. In case you use Anbernic and similar, this folder is called pc98
I canât stop playing, Iâve become good, Iâd like to start chapters for Windows from Steam. Iâm just here to thank you!
I would have put you my affiliate link to Instant Gaming, but they donât sell TH Project, so I suggest you the 13th chapter on Steam. Or start with whatever you prefer.
The guide in the Bignami version, reduced to the bone, is available on Gist Github.
Have fun!
p.s. maybe you already knew TH Project for Bing of Bongs | Big Ben plays âNight of Nightsâ for the Last time or for [McDonaldâs clown video](https://www.youtube.com /watch?v=Q16KpquGsIc)
Anbernic 353V: retrogaming in a gameboy shaped console
People have many hobbies, such as reading, playing sports, listening to music or gardening. Instead, one of my favorite pastimes is playing video games. For me, it has always been a genuine journey of discovery of new worlds and new characters, a bit like reading a book, but in a more interactive way.
I own many of the best-selling consoles of all time, but I was looking for a solution to my desire to dust off old glories.
#
Playing video games on the original consoles requires you to carry each console with you at all times, unless you own backup solutions or backward-compatible consoles, which may not always be able to run all the games from multiple consoles.
For example, if I wanted to play Game Boy Advance (GBA) and PlayStation Portable (PSP) games, I would have to carry two separate consoles with me.
In addition, the backup solutions available on the market for older consoles, although perhaps cheaper at the time, are not cheap. Try, for example, to take a look at the flashcarts for the Game Boy.
So, what to do?
One option is to use a newer, better console in terms of power and performance to play older games.
I am not considering the Nintendo Switch, which is a console that is still in production, but it is difficult to play old games on it, and the Steam Deck, which is a full-fledged computer that does many things in the area of emulation. Both solutions are not cheap even though they do the job they were designed and created for very well.
Nowadays, the cheapest consoles with a good stock of titles are:
New Nintendo 3DS
PSVita
They allow most of the games of previous consoles to be emulated, but they are hard to find at normal prices, especially the latter.
There are two major problems while playing a recent title:
âNewâ consoles do not always have the same aspect ratio and controls as the original version. For example, Nintendo DS games play on a 3DS but have black bands on the sides, while on a DSi (or DSi XL) they play perfectly.
When home consoles are emulated by a newer device, it is difficult to get used to the controls. The feel of a certain controller on original hardware is often different from that of the target console.
This comes purely from the convenience of using one controller over another.
I have always liked the idea of carrying my entire game library with me and being able to have one console that can play my entire collection instead of having to own many different consoles. However, there are also advantages to being able to have more than one console, such as being able to play games exclusive to each console and having access to different features and services offered by each platform. In general, the choice of owning one or more consoles depends on each gamerâs personal preferences and needs.
Not all Game Boys are perfect: the SP is the excellence of compactness. However, over the years, the controls became small for my gradually growing hands, making it a bit uncomfortable.
A good Game Boy in terms of size might be the very first gray (DMG). However, it has a not inconsiderable weight and is not very portable compared to other consoles, as it is heavy in the pocket.
An excellent alternative to both models is the Game Boy Pocket (GBP), which is an excellent compromise both in terms of size, which is much smaller and more compact than a DMG, and in terms of the size of the controls (d-pad and buttons), which maintain the size of the DMG.
The Game Boy family has always suffered from the non-backlit screen, a serious shortcoming that over the years has been a problem for all those who wanted to play at hours other than daylight, risking losing a few diopters.
Where then can I find a âpowerfulâ Game Boy with a good screen and capable of running recent games?
#
And this is how we arrive at a very good compromise: the discovery of non-emblazoned retro consoles.
In the past, consoles were sold with OpenDingux, which never really intrigued me. On the one hand it was very interesting to have a console with a free operating system that could play many dated games, on the other hand they always gave me the impression that they had problems of some sort (arising not only from overheating, but also and especially from the controls).
In recent years, however, several retroconsoles from brands such as Powkiddy, Miyoo, and Anbernic have emerged.
The peculiarity of these consoles is that they often mount Linux or Android, making them perfect for all the geeks who enjoy adding or removing emulators and testing games.
Around 2019 I used to follow, and still follow with great pleasure, the Dr. Game channel, where there are several reviews of handheld consoles, from Famiclones to Power Player Super Joy to these types of consoles.
Initially, I did not like them at all.
I set out to research the various solutions on the market, and the choice fell on two models in particular:
Miyoo Mini
RG35XX
I searched online what these consoles were capable of doing, and found that they can emulate games up to PS1, but not perfectly Dreamcast, PS1, and Game Cube
The Miyoo Mini is just too small and uncomfortable to hold. Compactness is important, but not being ergonomic it is uncomfortable to use. This is very reminiscent of the Game Boy Advance SP in 2023.
#
Initially I thought the RG35XX was a good choice, but then I found that the power left something to be desired and the stock kernel was not excellent.
In short, not really the best choice.
I honestly would have appreciated if the console had better support from the original manufacturer, although there are custom firmwares.
#
I realized that many of the things I wanted were not available, such as Android support, so I decided to spend more and opt for the Anbernic 353V.
Before making the purchase, I went to look at various reviews on Instagram and Youtube: needless to say, there wasnât much. All of them complained about the buttons on the back being difficult to press and uncomfortable.
I must say that I was quite satisfied with its technical specifications. What surprised me most, however, were the controls and toggles themselves, which far exceeded my expectations.
It is able to emulate many systems, such as Dreamcast and PS1 with a stable framerate, but also PSP titles and they seem to work great. However, it is not perfect, there are some things it cannot do, such as emulating the Gamecube or having a stable Android system (crashes every few minutes of play).
Despite the problems, this console has become my favorite handheld and I use it almost every day, especially to play PS1 titles and something on Android: on the latter, apps crash often, especially games.
Another thing I love is the fact that I can use it as a controller for other things-itâs a priceless feature.
I was a bit skeptical about the feedback of the controls, but I must say that the console emulates the feel of the Game Boy Pocket perfectly. Surprisingly, even after some time, my hand doesnât sweat like it does with some controllers, such as the one on the PS4 or the first Xbox One before they overhauled the controller and put a grip on it.
#
If you are looking for a handheld console that is able to satisfy your need for retro gaming, the Anbernic 353V is a solution worth considering.
Iâm not saying itâs perfect, because it obviously has its pros and cons, but I personally found it to be a good quality portable console that offers a wide choice of emulators at an affordable price.
If you want to know everything, but really everything about Anbernic consoles, I recommend you check out awesome-anbernic, where you can find information about the various consoles, custom firmware, and much more.
New year, new website?
Hi everyone.
Hope you had a good time with your family or friends on New Yearâs Eve.
The act of starting something means hard commitment and sacrifice in our lives.
Maybe not, if you like what youâre doing, but most of the time, if you are not following just one topic at time, you will have plenty of things to do.
Well, when Iâve started this blog, I planned to just have a personal space. Unfortunately this is no more possible: I have started a lot of projects , and I have less time for each of them.
Probably I need to move on some old projects, or just keep them and donât take newer ones.
Anyway, hereâs the thing: I will simply change this homepage. You can still reach these pages at dag7.it/blog but on the main page I will probably build a custom homepage to present myself in a semi-stylish way.
One more thing: not sure about the language. I like to write both in english and in italian, but sometimes I search things in italian, some other times in english.
I frankly donât know what to keep and what I should throw away.
I can keep both of them, but it was hard to consistently post each month.
The Now Page
This is a now page. To know more, see here
Oneliner is in the bottom part, right now Iâm not using it
#
Oct 2025
#
website: this website has been (once again) reworked out. Thanks to a friend of mine that avoided to switch to yet another theme, Iâve moved all the serious content elsewhere. Now I feel much more satisfied, and Iâd like to do whatever I want with this space. IâM FREE, YAHOO!
videogames: finished âPhoenix Wright vs Laytonâ. 7.5/10, I didnât like much the end and a lot of puzzles were too easy. Also the story is not so realistic, though itâs beautiful.
website: Thinking about doing some nows instead of a big now page like so, but I need to think about it, because right now, not only I would need to design now page in a different way, but content on my website should focus on something. Since writing what I do is my main content, well, Iâm just not sure on what to doâŚ
website: I also would like to implement a beautiful gallery from scratch, since everytime I need to insert some photos is a painful experience of HTML and Markdown
movies: Iâve seen Clockwork Orange at cinema. I did like it especially for the OST by Wendy Carlos. Iâd say it is majestic for several aspects: how actors have been filmed by cameras, the plot (Iâve been to cinema blind, I didnât know a single word about the plot), the soundtrack (duh!), and I liked the actors too, because of their facial expressions. Furthermore, Iâve discovered after the movie that the movie is from a novel, therefore maybe I should read the novel. It is a raw movie, but itâs technically speaking beautiful, an experience which is about psychological thriller.
movies: Iâm gonna to watch Profondo Rosso at cinema too.
videogames: Iâve finished Cassette Beasts. I think itâs one of the most lovable games Iâve ever played, it really has been made with heart. Furthermore, itâs surprisingly fun and it includes mechanics already seen somewhere else, but with some nice changes without some of the annoying Pokemon behavior. I love Pokemon! Or at least the old games. But some things are just unnaturally non-sense, like TMs and HMs. You have fusions, you have lores, you can let a monster learn whatever move you want, and if you want change those moves to another monster, it is perfectly fine⌠you even have the ability of using powers to access to some places while going around the map
dev: dealing with reverse engineering and malware analysis. Itâs frustrating but itâs really fun and Iâm enjoying every single minute spent in this activity.
#
books: finished âIl Codice Da Vinciâ 4.5/5, a book I loved from the beginning to the end. There wasnât any evening in these two months that I wish I could stop, in every page something happens.
music: im exploring live coding with Strudel REPL. Iâm also practicing with my bass. Iâve also released a September cover on my SoundCloud
videogames: Iâm still finishing Phoenix Wright vs Ace Attorney, it is a though journey because a part of me would just explore, another part of me would just play the trial segments
language: Iâm learning japanese. So far so good, it isnât an easy journey, but itâs fun after all
#
books: finished âIl magico studio fotografico di Hirasakaâ 5/5, Iâve liked so much the three main stories there, Iâve also liked the setup of the book and whatâs going on (topics: life, memories, memories in life, self-reflections about happiness)
music: im working on my new Game Boy EP, it will be ready hopefully at the end of December
videogames: I really am on Cassette Beast, have finished (once again) Super Mario Bros 3 hard mode with luigiâs physics, Iâm now relaxing with Amazing Penguin
#
tech: Iâve developed sossoldi-companion app to help keeping track of my spending
music: Iâve bought a bass. Itâs time to slap!
music: Iâve played @ Zona Warpa Rome stage. It was amazing to see down the stage crowded by people. Iâve also attended a brief introduction on how to make music with Game Boy
#
tech: attended to RHC Conference 2025, it was interesting especially the talk âNet insecurity: The uncomfortable legacy of hippie philosophyâ
tech: Iâve created âminder appâ, it is a note-taking app in the style of an offline social media. More information will be available if I release the app. Just imagine Twitter with your posts only. Powered by Flutter.
music: attended to Tamala Fest. It was really great!
#
3D: ended a Blender series, I did have a lot of fun. Itâs time to try something else with some discipline now!
Music: brainstormed about future dates and tracks
Books: Algorithms to live by
#
Began creating in Blender, for the sake of knowing something more. Iâve discovered that Iâm having a great time, and lot of fun.
#
Reading more books, doing more fun stuff. I wrote a couple of book reviews here in italian.
Made a Computer Vision project: a Machine Learning model that learnt how Atac bus stops are made and by using AR projects useful information on the screen of the user. Made with Unity!
Made a project, ARMiiPlaza, a recreation of Mii Plaza in Augmented Reality. It is far from being finished, but if I will choose to invest some of my time in Blender, as far as I will make progress with it I will surely go on with that project
Even if my talk hasnât been accepted for CFP, I am going to continue the development of slides and materials
3D Filament is over, I should refill it but Iâm never in the mood of buying another filament
Finally practicing more my electric guitar!
#
Made a full stack project (Regalia⌠once again) with microservices and AWS Lambda + AWS Cognito
Learnt about Locust and the fundamentals on how to benchmark a service
Prepared a talk for Pycon IT 2025
#
Attended Serverless Days as volounteer
Attended last CoderDojo of the year XMasDojo@CoderDojoSPQR
Learnt about AWS and Cloud Architecture
Learning more about CTF and Cybersecurity, thanks to Sapienza Bootcamp. I didnât take much notes, I should write them in a well-structured form and publish it on my website.
#
Attended CoderDojo
Fiddling with 3D Printer, after many years Iâve finally bought one!
#
Nobodyâs Sleeping has been finally released!
Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lightning talk about chiptune
Playing Balatro, refactored my Instagram identity in order to reflect my interests (now iâm publicly available on the coolest Instagram page ever, available here)
Restyling of my website⌠once again.
#
Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
Started âIl gatto che voleva salvare i libriâ, a book about a cat that wants to save books
#
In session, with not much time
Working on a new project, a game for GBA PC
Practicing music with Gameboy, a Nintendo DS and a small synth
Finished âUn estate con la strega dellâovestâ, still reading âExit Realityâ
Iâd like to play more videogames
#
The Wall is now publicly available. Feel free to use it!
Finishing some books - in this period, âBullet Trainâ, but Iâve started another one called âExit reality. Vaporwave, backrooms, weirdcore e altri paesaggi oltre la sogliaâ
Practicing music with a Nintendo DS.
Playing Shiren The Wanderer
Many events such as Zona Warpa 2024 but Iâve attended other cool events too.
#
The Wall a place for your notes and public notes
Finishing some books - in this period, âBullet Trainâ
Oneline-ish thing is a thing now, and what youâre seeing is this section.
Practicing analog music on Stylophone and Pikocore.
Restyling of my website⌠once again.
Soldering boards to make Pikocore a board to play music in an âanalogâ style
Watching movies
#
Building this website - the only thing I really miss is a simple oneline style blog, to update about my projects, thoughts and creations, which is work in progress and it will arrive a day or another
Finishing some books - in this period, âBullet Trainâ
Playing videogames - on Nintendo Ds mostly
Practicing dnb on PSVita - I wish to release something in 2024
Practicing piano - improvising jazz is a thing
Working with Django to build awesome things
Iâm trying to keep it simple, so I can update it easily.
#
2025-05-11: attended to Tamala Fest, I should write a small blog post on it with some photos.
2025-04-17: Iâve seen last lesson of a Blender series I was following. Itâs been really useful and fun.
2025-04-16: Brainstormed about tracks on LSDJ, I have some material.
2025-03-05: I did start using Blender. Iâm having a lot of fun!
2025-02-13: Finally Iâm playing more my electric guitar, I 3d Printed a stand and now it is standing on the floor of my place.
2024-10-20: Wrote an article about curiosity and whatâs going on in my free time.
2024-10-18: Iâve finished âIl gatto che voleva salvare i libriâ. It was short but nice, Iâd like to write an article about it.
2024-10-08: Once again, Iâve restyled my website. Iâm trying to keep it simple and clean. Letâs see how it goes.
2024-10-06: came back from Copenaghen, sad as always when I come back from a trip. Today Iâve seen in Copenaghen Amalieborg, the national gallery (fine arts), the botanical garden and the house of the butterflies
2024-10-05: iâve seen in Copenaghen the little mermaid, the round tower, Rosenborg castle, the black diamond, the opera house (from outside), raduspladsen and strøget street
2024-10-04: leaving here as a placeholder, I need to log more things related to my trips around the world.
2024-10-04: Attended Django Day DK 2024, one day before I decided to attend as a speaker presenting a lighting talk about chiptune. Iâve seen Christiania area and Nyhavn area. I wanted to go to Tivoli but it was closed.
2024-09-27: Zona Warpa, finally performed something after many years fiddling with LSDJ. Greetz to tucs and my friends.
2024-06-12: In session, with not much time
2024-04-18: Small restyling of contactsâ homepage section.
2024-04-17: Oneline-ish thing is a thing now, and what youâre seeing is this section.
Reverse Engineering la luce in fondo al tunnel, prima dell'abisso
Caro Dag del 2013,
finalmente sei riuscito a coronare uno dei tuoi sogni nel cassetto: riuscire a saper comprendere o quantomeno leggere un codice assembly per poterci mettere le mani sopra e manipolarlo a tuo piacimento.
Sono le 3 e 45, e finalmente dopo un tour de force durato 3 giorni, posso dire che ho concluso la lettura del manuale di magia nera âPractical Malware Analysisâ.
YEEEEEEEEEE đ
Tecnicamente ho barato: alcuni hands-on non li ho fatti, mentre alcuni capitoli li ho saltati. Mi giustifico dicendo che a breve termine non mi servono, promettendomi di tornarci in un secondo momento con piĂš calma. I capitoli piĂš avanzati, a differenza dei primi, piĂš semplici, sono quelli piĂš interessanti e che permettono di scovare piĂš malware da un punto di vista pratico.
Ma volevo fare una mini recensione!
Avete presente quando vorreste un bel manuale che vi spieghi per filo e per segno cosa dovete fare? Ecco, questo è perfetto sotto questo punto di vista: spiegazioni chiare e semplici, con una serie di esercizi allegati, con tanto di soluzione commentata passo passo. Non mi sorprende affatto che sia considerato come testo di riferimento: sarà anche molto vecchio e alcuni dei tool al quale fa riferimento sono stati sostituiti da cose piÚ aggiornate, ma le basi a distanza di anni sono rimaste quelle.
Tra i contro invece mettiamo lâessere scritto in bianco e nero (a volte le cose con riquadri e colori si capiscono di piĂš), ma soprattutto il fatto di essere rimasto fermo a Windows XP. Da un lato il fatto che il libro risulti ancora attuale è molto bello. Dallâaltro però, alcuni esempi non funzionano. Ho speso circa 3 ore una sera per poi sorprendermi che non câera soluzione allâesercizio che stavo facendo, se non usare una vecchia VM con Windows XP.
Dunque ho scelto di leggere questo manuale per passare un esame universitario ma anche perchÊ questo argomento mi è sempre piaciuto e non ho mai avuto modo di approndirlo.
Câè un ma: fare reverse engineering, soprattutto di malware, richiede una base di conoscenza di Assembly (nel manuale viene spiegato), e di come si programma in generale. Ai tempi non sapevo programmare, figuriamoci fare le operazioni al contrarioâŚ
Ă assolutamente impensabile pensare di seguire un manuale del genere senza saper programmare, o senza fare gli hands-on.
Câè una bella differenza tra il leggere e il fare, e questo Feynman lo sapeva molto bene.
Ad ogni modo, gli esempi sul libro sono molto didattici. Vorrei riuscire a preparare una sorta di videolezioni fatte da me, perchĂŠ si trovano in giro in inglese ma non in italiano. Ă vero che viviamo nel 2025, dove le traduzioni automatiche sono allâordine del giorno, ma mi piacerebbe riuscire comunque a portare questo argomento su un canale YouTube.
Inoltre⌠ho preso tantissimi appunti usando Obsidian! Proprio non mi capitava di prendere cosĂŹ tanti appunti da un sacco di tempo. Ă bello arrivare a fine giornata con tante cose apprese e scritte, a moâ di diario.
Il mondo dei malware e del reverse engineering è un mondo mistico fatto di sigle, di misure antireverse, e di tanto, tanto codice Assembly. Sicuramente fare lâesame è stata una buona motivazione, ma non mi sarei mai concentrato cosĂŹ tanto ad approfondire.
Sono stati tre giorni incredibili dove ho imparato tantissime cose, e non vedo lâora di metterle in pratica, magari cominciando a fare i crack-me o altre sfide online, sino ad arrivare ai sample degli esami.
Come ritirare il diploma della scuola superiore
Qualche giorno fa, mi è venuto in mente di cercare come ritirare il diploma di scuola superiore, una cosa che avrei dovuto fare tempo fa forse, ma va bene cosÏ, meglio tardi che mai dice un proverbio.
Scrivo una email alla segreteria della mia vecchia scuola, chiedendo i prossimi passi.
Una signora molto cortese mi risponde dicendomi âpagamento su cc1016, di 15.13⏠la scuola è aperta questi giorni dalle 15 alle 16â
Ecco le scelte che avevo a mia disposizione:
Pagarlo online tramite una piattaforma messa a disposizione dal ministero âPago in reteâ aperta alle scuole
Andare alla posta e pagarlo
Andare sullâapp della mia banca e pagarlo lĂŹ
Usare unâapp di terze parti (non faccio il nome per rispetto)
Il mio primo pensiero è stato âva be, andiamo sullâapp della banca e paghiamoâ
E cosĂŹ, tra unâapp e lâaltra, sono giunto sul link di pagamento dei bollettini.
Inserisco i dati: cc1016, importo 15.13âŹâŚ per scoprire che⌠lâunica tipologia di bollettino accettata è l'896
âPoco maleâ â Penso tra me e me â âbasterĂ usare lâapp ministeriale âPago in reteâ, designata ai pagamenti elettronici tra scuole e cittadiniâ.
Mi registro con SPID, apro la web app, cerco il nome della scuola e noto che sono disponibili due voci della stessa scuola, una col codice meccanografico corretto e i dati giusti, lâaltra sembra la rimanenza di dati meno recenti ma comunque quella era esattamente la mia scuola. A scanso di equivoci decido di inserire quella col codice meccanografico.
Ecco che succede: selezionando quella col codice identificativo corretto spunta fuori un messaggio di errore dicendo che la scuola non supporta i pagamenti fatti tramite la piattaforma.
Decido allora di provare quella senza codice, trattandosi della stessa scuola. Il sistema mi risponde ânon ci sono pagamenti attivi che possono essere effettuatiâ. Come se la scuola avrebbe dovuto attivare la possibilitĂ di pagare quel servizio online, e non di default.
Spazientito, decido di scaricare lâapp di terze parti, la mia ultima spiaggia. Prima di scaricarla mi sono informato come pagare il bollettino che serviva a me, e lâapp in questione ha proprio un articolo in cui spiegano che è possibile farlo. âOttimo!â â esclamo â âallora sicuramente riuscirò a pagare questa voltaâ.
Mi registro, apro lâapp e⌠ancora una volta, schiaffi in faccia, il sistema mi dice âsi, una volta era possibile pagare anche gli altri tipi di bollettini, ma ora solo l'896â.
Ultima spiaggia: decido di andare in ufficio postale. Mi reco li e scopro che non solo lâufficio postale è chiuso, ma ha un bel cartello appiccicato con su scritto âper i servizi postali, recarsi a 1.5km da qui la mattina, e 1.9km da qui se i servizi vi servono il pomeriggioâ. Per motivi di tempo ovviamente non potevo recarmi lĂŹ la mattina, e il pomeriggio quando ho deciso di effettuare il pagamento avevo i minuti contati.
Ecco un poâ di considerazioni, prima di spiegarvi come pagare la tassa di diploma.
Siamo nel 2025. I pagamenti elettronici sono stati introdotti a forza in Italia, per permettere una quasi-modernizzazione del paese e per combattere lâevasione fiscale.
In un mondo governato dai pagamenti elettronici, non è possibile che per pagare determinati tipi di tasse o tributi debba essere necessario affidarsi alle poste, obbligatoriamente di persona. Ă una cosa veramente assurda e inutile, atta solo a favorire incentivi e giri di soldi verso una determinata azienda, che non è neanche nellâinteresse dei cittadini.
Avrei capito se il pagamento fosse stato possibile effettuarlo online esclusivamente tramite una certa piattaforma, anche se non ne vedo il motivo, tanto i soldi sempre allâagenzia delle entrate vanno. Ma addirittura legare indissolubilmente il pagamento delle tasse e dei tributi alle poste, questo è un comportamento che trovo davvero inaccettabile.
Unâaltra considerazione che voglio fare riguarda il sistema di pagamento âPago in reteâ. Ă notevole il fatto che abbiano voluto semplificare il pagamento di tasse e tributi tramite un sistema di pagamento. Perlomeno non dobbiamo attendere in fila alle poste (sigh) il pagamento di una qualsiasi tassa scolastica. Il problema è che se la scuola non attiva il sistema di pagamento, è completamente inutile.
Non ho dati sufficienti per stabilire quante e quali scuole e di che ordine utilizzino il sistema di pagamento ministeriale, ma che senso ha avere il sistema piĂš figo del mondo e non attivarlo obbligatoriamente in tutte le scuole?
Quindi:
alla pubblica istruzione, invito ad abilitare e forzare i pagamenti elettronici tramite la piattaforma, dando anche la possibilità di pagare di persona per chi è impossibilitato
allâagenzia delle entrate, invito ad abilitare il pagamento di tutte le tipologie di bollettini online, tanto i soldi sempre voi li ricevete, vi è perfettamente indifferente chi li fa
alla scuola stessa, invito ad accettare il sistema di pagamento âPago in reteâ o effettuare i versamenti in autonomia, mettendo a disposizione una cassa in contanti dove posso direttamente versare i soldi e possono essere versati al mio posto
Questa è una storia davvero tutta italiana, con cose allâitaliana.
Ecco come fare:
capire quando la scuola puo riceverti e se hanno ancora il tuo diploma
se non lo hanno, contatta il miur
recarsi alle poste
non perdere tempo (sigh) a cercare altri metodi di pagamento
conto corrente: 1016
intestato a: agenzia delle entrate - nucleo operativo di Pescara
importo: 15.13
causale: tassa di diploma
vai a scuola col documento e la ricevuta
La giungla degli spazi personali
Alla fine è successo: mi sono finalmente deciso a cambiare un poâ la struttura di questo sito web. Ă difficilissimo ritagliarsi degli spazi online senza impazzire. Il mio sito web, sĂŹ, proprio quello che state leggendo, era unâaccozzaglia di roba tra il professionale e il non professionale.
Posso affermare con una certa sicurezza che a partire da oggi:
- la parte musicale adesso ha unâidentitĂ tutta sua, e la potete vedere al solito link dag7.it/music
- la parte professional adesso è scorporata in un altro dominio che ho da un sacco di anni
- la home page è stata pulita, ed adesso contiene i link secondari che prima era impossibile vedere
Spero vivamente di aggiornare la gallery, al piu presto, magari modularizzandola visto che ora è una giungla di html+css+js+foto inserite a casaccio nella cartella static
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Decap CMS Test: svolta o bidone?
Proprio qualche giorno fa mi sono imbattuto nella necessità di dover scrivere un articolo per il mio blog. E mi è totalmente passata la voglia di farlo!
Abbraccio moltissimo la filosofia open source di avere i file in markdown, hostati da qualche parte, essendo il mio un piccolo spazio statico ci sta che sia una cosa piccola.
Ma a volte la semplicitĂ si scontra con la troppa semplicitĂ : non avere unâinterfaccia bella e piena di feature (come ad esempio quella di Wordpress) limita tantissimo il processo creativo. Da una parte non hai il problema di un editor e sei indipendente da tutte le tecnologie. Dallâaltra però, anche lâocchio vuole la sua parte. Soprattutto per le immagini, è davvero una faticaccia scrivere i post in formato markdown, metterci unâimmagine carina ecc.
Sarebbe tutto piĂš semplice se esistesse un software in grado di gestire questa situazione.
Oggi ho scoperto https://decapcms.org/ che per chi non lo conoscesse è un software che fa esattamente la cosa che stavo cercando.
Non è perfetto: non è comunque bellissima lâinterfaccia, e mi piacerebbe che in futuro la situazione migliorasse, però facciamo notevoli passi da gigante.
Ecco uno screenshot di cosa vedo io quando vado a scrivere un nuovo articolo:
Uno screenshot di decap cms
Che dire? Sarà la soluzione finale o dovrò (sigh) migrare da qualche altra parte su Wordpress?
GitLab CI/CD Pipelines Explained with a Fun Tiramisu Recipe
GitLab CI/CD Pipeline Tutorial for Beginners
#
During a DevOps crash course, Iâve been called to teach how to setup a simple GitLab pipeline.
It wasnât easy: the people who took part in that course, were from very different backgrounds: backend in PHP, frontend, people out of school at their first job employment⌠despite of this, Iâve talked to them about what a devops does, who is it, and how pipelines are important.
In this article, you are going to learn how to setup a simple toy pipeline, in order to experiment a little bit with GitLab runners.
I donât care just gimme the recipe and Iâll figure out everything else!!!
here it is
How to do it
#
The first step is to have a GitLab account. You can sign up for a GitLab account here. I personally donât use that much GitLab, but I will move provided my use cases fits GitLab.
Next, you should create a repository:
fill the blanks as you prefer
and click the blue button âcreate a projectâ
#
Now itâs time to write a small pipeline and set the runner.
#
A pipeline is a group of steps (named âstagesâ) that include jobs, what we need to do in each stage.
To understand more this concept, imagine cooking a Tiramisu: you have to first prepare ingredients, then you have to assemble them, there is a cooling part and the final step is service. These all stages.
Jobs can be, in the stage of preparing ingredients: make some coffee, whip cream and sugarâŚ
Stages and jobs together in a file, form a pipeline, that is given to a runner.
#
A runner is a server, running Linux, that will take what you wrote in your pipeline and setup all the processes in order to accomplish what you told it.
For example, if we said âdear runner, compile our application (given a Dockerfile) and publish it on GitLabâ it will exactly do this thing.
The way to communicate between us and the machine, is using a YAML file.
#
A YAML file is a plain text file, with some instructions in there. YAML is a declarative language, meaning that we donât have to write specific keywords in order to describe or achieve something in particular, rather than we focus more on the grammar of the language to reach our goals.
To learn YAML I strongly suggest this amazing website that will teach you in no time how to write some YAML.
#
Left side of the menu, âbuildâ, âpipelinesâ
Next, click on the âtest templateâ
We will be in the pipeline editor: this will create a .gitlab-ci.yml file at the end of our edits.
Click âcommit changesâ at the end and wait for a pipeline running warning at the top of the page.
If you click on the link in blue, you will see something like this:
donât worry if something doesnât have a green tick, it will be a matter of time.
If everything goes well, everythingâs will be marked in green.
This means that pipeline has succeeded.
#
Hereâs the YAML file to copy paste in the pipeline:
stages:
- prep
- assembly
- cooling
- serving
prepare_cream:
stage: prep
script:
- date +%H%M%S
- echo "I beat the egg yolks with the sugar"
- echo "I add the mascarpone"
- echo "I whip the cream and fold it in"
prepare_coffee:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the coffee with the Moka pot (preferably a large one)"
- echo "I let the coffee cool"
prepare_ladyfingers:
stage: prep
script:
- date +%H%M%S
- echo "I prepare the ladyfingers"
soak_ladyfingers:
stage: assembly
script:
- date +%H%M%S
- echo "I dip the ladyfingers in cold coffee"
layer_layouts:
stage: assembly
script:
- date +%H%M%S
- echo "Arrange the ladyfingers in the pan"
- echo "Spread the mascarpone cream"
- echo "Repeat the layers until the pan is full"
- echo "Drizzle the surface with bitter coffee or chocolate"
chill_tiramisu:
stage: cooling
script:
- date +%H%M%S
- echo "I refrigerate the tiramisu for at least 4 hours"
serve_tiramisu:
stage: serving
script:
- date +%H%M%S
- echo "I get the set of plates"
- echo "I plate the tiramisu"
- echo "I serve it to my guests"
- echo ":)"
- echo "Measure blood sugar"
This is the recipe in Italian:
stages:
- preparazione_ingredienti
- assemblaggio
- raffreddamento
- servizio
prepara_crema:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Monto i tuorli con lo zucchero"
- echo "Aggiungo il mascarpone"
- echo "Monto la panna e la incorporo"
prepara_caffe:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo il caffĂŠ con la Moka (meglio se grande)"
- echo "Lascio raffreddare il caffè"
prepara_savoiardi:
stage: preparazione_ingredienti
script:
- date +%H%M%S
- echo "Preparo i savoiardi"
inzuppa_savoiardi:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Inzuppo i savoiardi nel caffè freddo"
metti_strati:
stage: assemblaggio
script:
- date +%H%M%S
- echo "Disporre i savoiardi nella teglia"
- echo "Stendere la creama al mascarpone"
- echo "Ripetere gli strati fino a esaurire lo spazio nella teglia"
- echo "Spolverare con caffè amaro o cioccolato in superficie"
raffredda_tiramisu:
stage: raffreddamento
script:
- date +%H%M%S
- echo "Metto il tiramisĂš in frigo per almeno 4 ore"
servi_tiramisu:
stage: servizio
script:
- date +%H%M%S
- echo "Prendo il set di piattini"
- echo "Impiatto il tiramisĂš "
- echo "Servo ai miei ospiti"
- echo ":)"
- echo "Misurare la glicemia"
Save it into your pipeline editor, commit and�
#
We have cooked a delicious tiramisu and learnt how the pipeline works! đ°đŤâď¸
#
Thanks for your attention, I highly suggest to try it out this simple example to get started with GitLab runners and pipelines. This was a toy example, but many other awesome things can be done.
Try this pipeline in your own GitLab project and share your results by sending me an email!
NOTE: the line âdateâ in script part, is for echoing the date time when the job is executed. This is to figure out if the job execution is done in parallel or in sequence. Figure it out for yourself, which of the two ways.
Come creare musica con il gameboy (Zona Warpa Roma 2025)
Hai partecipato al talk a Zona Warpa Roma 2025? Sei solo curioso di vedere le mie slide del talk che ho tenuto?
Clicca qui e sarai accontentato!
La formula magica per vivere felici
#
âLa Sottile arteâ è un libro che mi ha sempre incuriosito sin da quando avevo 16 anni: ai tempi leggevo tantissimi libri, e mi ricordo che un giorno presi questo libro tra le mani e iniziai a leggerlo, un poâ attratto dal suo contenuto, un poâ perchĂŠ câera una parolaccia nel titolo.
Col passare degli anni i ricordi si sono affievoliti ma appena ne ho avuto lâoccasione ho acquistato questo libro.
Incoraggia ad avere una visione del mondo diversa da quella che uno ha oltre a dare altre visioni, cose che magari conosci e sai, ma non hai avuto modo di rifletterci ultimamente.
Nel libro vengono affrontati tantissimi temi e cosa dovrebbero o non dovrebbero rappresentare nella vita di tutti noi, volendone citare qualcuno: sbattersene, sbattersi per quello che uno vuole davvero e non per lâideale, scegliere bene i valori, Panda Deluso lâeroe che non esiste ma tutti ne hanno bisogno, il segreto della felicitĂ e dellâinfelicitĂ , emozioni, leggi di inversione.
#
Ho trascritto a mano alcune citazioni ed elaborato brevi pensieri eccoli qui:
#
Sbattersi per troppe cose nuoce alla tua salute mentale
â Pagina 12
ed è vero, spesso non ce ne rendiamo conto ma siamo totalmente assorbiti dalle troppe cose che ci succedono, dai troppi stimoli solo perchÊ non abbiamo imparato a selezionarle
#
Si chiama Ciclo di risposta infernale, e appena ti distrai ci finisci dentro e ti manda in pappa il cervello. Non è colpa nostra, è un errore che la societĂ stessa ci porta a fare. Eâ la spinta. Sii il migliore, il piĂš popolare, il piĂš produttivo, il piĂš invidiato, il piĂš ricco, il piĂš attraente, il piĂš ammirato. Sii perfetto, formidabile, poi esci e vai a fare il tuo lavoro ultra gratificante che finirĂ per salvare anche il mondo
â Pagina 15
Fregandotene ottieni i migliori risultati
â Pagina 18
Valori
#
Scegli sempre per cosa batterti
â Pagina 27
Valori di merda: piacere, successo materiale, avere sempre ragione ed essere sempre positivi.
â Pagina 102
In particolare nel secondo punto, racconta della storia del batterista dei Beatles, Pete Best, che fu cacciato dalla band, e fu sostituito da Ringo Starr. Lui trovò il coraggio di ricominciare una nuova vita con la sua compagna e i propri figli.
Racconta anche la storia di Dave Mustaine: un chitarrista bravissimo che faceva parte dei Metallica, ma fu cacciato dalla band. Lui non si arrese e fondò i Megadeth, una band che ebbe un successo incredibile ma che non raggiunse mai i livelli dei Metallica e lui ne soffrÏ molto.
Nel terzo punto invece afferma che è molto piÚ utile presumere di essere ignoranti e non sapere granchè, poichÊ questo permette di imparare e migliorarsi.
Quando abbiamo valori scadenti che applichiamo a noi stessi o ad altri ci sbattiamo per cose di poca importanza. Quando abbiamo valori migliori, ci sbattiamo per cose che contano davvero.
â Pagina 110
Come scegliere dei valori un poâ migliori
#
ResponsabilitĂ
#
Ogni cosa che succede siamo noi a scegliere come reagire
Incertezza
#
La certezza è nemica della crescita. Non câè nulla di certo finchĂŠ non accade â e anche a quel punto, resta discutibile. Per questo motivo perchĂŠ avvenga una crescita di qualunque tipo è necessario accettare le inevitabili imperfezioni dei nostri valori.
â Pagina 145
Fallimento
#
Se una cosa ti modifica la eviti. Ă il motivo per il quale le persone evitano il successo o il fallimento e non fa le cose, come diventare un grande artista o pubblicare video o un libro.
â Pagina 165
Se sei bloccato su un problema, non restare fermo a pensarci sopra; comincia a lavorarci. Anche se non hai idea di cosa stai facendo, il semplice fatto di lavorarci finirĂ per portare nella tua testa le idee giuste
â Pagina 192
Rifiuto
#
Ma dobbiamo rifiutare qualcosa. Altrimenti non diamo importanza a niente. Se nessuna cosa è migliore o piĂš desiderabile di unâaltra, siamo vuoti e la nostra vita non ha significato
â Pagina 204
La gente non può risolvere per te i tuoi problemi. NÊ dovrebbe provarci, perchÊ la cosa non ti renderà felice. Neanche tu puoi risolvere i problemi degli altri, perchÊ analogamente non li renderesti felici. Una relazione malsana si ha quando due persone cercano di risolversi a vicenda i problemi per sentirsi bene rispetto a se stessi.
Al contrario, una relazione sana si ha quando ciascuno risolve i propri problemi per sentirsi bene rispetto allâaltro. Imporre qualche limite decente non significa che non puoi aiutare il tuo partner o sostenerlo, o essere sostenuta e aiutata. Dovete sostenervi a vicenda. Ma solo perchĂŠ scegliete di farlo. Non perchĂŠ vi sentite obbligati o pensate che sia dovuto.
â Pagina 212
Per questo il tradimento è cosĂŹ distruttivo. [âŚ]
O si ricostruisce la fiducia, o ci si saluta. Il problema è che quasi tutte le persone che sono scoperte a tradire si scusano e fanno il discorsetto del Non succederà mai piڝ e basta. Molti traditi accettano questa risposta come dato di fatto e non si chiedono se quei valori e quelle cose lo rendano una buona persona con cui stare insieme.
Se una persona tradisce, qualunque sia il motivo, è evidente che i valori di chi tradisce non sono allineati in modo tale da sostenere una relazione sana, e se questa persona non lo ammette o si rifiuta di accettarlo è priva dellâautoconsapevolezza necessaria a risolvere qualunque problema relazionale.
â Pagina boh
Morte
#
Tu sei un grande, e non perchĂŠ hai obiettivi definiti e beni materiali. Queste cose non definiscono la grandezza. Sei un grande perchĂŠ di fronte alla confusione infinita e alla morte certa, continui a decidere per cosa sbatterti e per cosa no. Questo semplice fatto, il semplice scegliere i valori della tua vita, ti rende giĂ una persona bellissima, di successo e amata. Anche se non te ne rendi conto, se stai morendo di fame o dormendo sotto un ponte. Anche tu morirai e questo perchĂŠ anche tu hai avuto lâenorme fortuna di avere vissuto.
â Pagina 247
Budda
#
Qui non riporto delle citazioni, ma lâautore parla della storia di Buddha, storia che personalmente non conoscevo e ho ritenuto molto interessante.
In breve: Buddha era un principe che aveva tutto, ma non era felice, e un giorno decise di abbandonare luogo, averi e casa e andare in cerca della veritĂ uscendo dalla sua zona di comfort.
#
Panda Deluso ⌠il suo superpotere sarebbe quello di dire alle persone le veritĂ crudeli che hanno bisogno di sentire ma che si rifiutano di accettare. Andrebbe di porta in porta come un venditore di Bibbie, suonerebbe il campanello e direbbe cose come: ÂŤCerto, fare un sacco di soldi ti fa sentire bene, ma non ti farĂ amare dai tuoi figliÂť, [âŚ]. Poi augurerebbe ai padroni di casa una buona giornata e sâincamminerebbe verso lâappartamento successivo
â Pagina 36
Lâautore fa riferimento ad un ipotetico eroe che non esiste, ma vorrebbe che esistesse. Panda non si farebbe problemi nel dire le cose, belle o brutte che siano, sputandoci in faccia la realtĂ .
Soffriamo perchÊ è biologicamente utile, sprona al cambiamento.
Se eviti i tuoi problemi e senti di non averne, ti rendi infelice. Il segreto sta nel risolvere i problemi, non nel non averne
â Pagina 41
FelicitĂ
#
Desiderare unâesperienza positiva è giĂ di per sĂŠ unâesperienza negativa
â Pagina 16
Non sarai mai falice se continui a cercare in che cosa consiste il significato della vita - Albert Camus
â Pagina 17
La domanda giusta non è âcosa vuoi dalla vitaâ ma âquale dolore vuoi dalla tua vitaâ
â Pagina 48
La felicitĂ richiede fatica, cresce dai problemi. La gioia non sunta dalla terra come le margherite.
â Pagina 49
La strada verso la felicità è una piena di mucchi di merda
â Pagina 50
Emozioni
#
Le emozioni sono segnali, suggerimenti, non comandamenti. Le emozioni negative sono una chiamata alâazione, quando le provi è perchĂŠ devi fare qualcosa.
â Pagina 45
Sai chi basa la propria vita sulle emozioni? I bambini di tre anni e i cani. Essere ossessionato dalle emozione e attribuire loro un-importanza eccessiva ci danneggia per il semplice fatto che esse non durano.
â Pagina 46
Sui social
#
PiĂš siamo liberi di esprimerci, piĂš vogliamo essere liberi di non interagire con chiunque possa turbarci e non essere dâaccordo con noi.
â Pagina 72
Essere nella media è perfettamente ok: se fossimo tutti speciali nessuno lo sarebbe.
â Pagina 78
Legge dellâinversione (backwards law)
#
PiĂš ti sforzi di essere certo di qualcosa, piĂš ti sentirai incerto e insicuro
Conclusioni
#
Un libro che offre indubbiamente una panoramica su un modo di vedere le cose diverso al quale siamo abituati. Condivido personalmente molti punti che vengono toccati e spero di riuscire anche il suo seguito molto presto.
Dopo questo trip mentale allâinsegna di Panda Deluso, consiglio di leggere Atomic Habits di James Clear, dopo questo libro recensione piccola che arriverĂ prossima settimana.
Storia del Videogioco: la mia recensione in qualche paragrafo
Oggi ho finalmente finito âStoria del Videogiocoâ, un libro che avevo inziato a Dicembre ma che non avevo terminato.
Il libro è molto corto, ha circa 150 pagine e racconta dagli albori ai videogiochi piÚ moderni.
Secondo me è ottimo per chi non è esperto per nulla e vuole approfondire o semplicemente per gli amanti del retrogaming: sono venuto a conoscenza di importanti figure e di parti delle storie di alcune delle piĂš famose case di produzione videoludiche dellâepoca proprio grazie a questo libro.
Lâinizio è davvero immersivo, racconta la storia del videogioco, partendo da prima dellâesposizione del 1958 di Tennis For Two addirittura.
Verso la fine si perde tantissimo e viene tutto condensato in qualche manciata di pagine: davvero un peccato, secondo me si sarebbe potuta spendere qualche parola in piĂš per lâevoluzione dei giochi e il mercato in generale.
Nel complesso va benissimo da leggere ai fini di accrescere la propria cultura storica sui videogiochi classici e storici, ma non prendetelo come testo di riferimento per i videogiochi dopo il 2010.
Cosa ho imparato da un progetto fallito
Introduzione
#
Per il mio esame di Computer Vision dovevo fare un progetto in una tecnologia che sfruttasse la Computer Vision. Poteva trattarsi di un modello di Machine Learning (da ora in avanti ML), riconoscimento di voltiâŚ
Tuttavia una delle mie passioni piĂš grandi, sin dal 2014, è sempre stata la realtĂ aumentata. Siccome i modelli di ML spopolano al giorno dâoggi, basti pensare a Deepseek a GPT e chi piĂš ne ha piĂš ne metta, mi sono venute in mente diverse idee.
#
Ciò che però ha conquistato la mia scimmia, è stata unâidea tanto semplice quanto complessa.
A Roma abbiamo un grande problema: gli autobus e i mezzi pubblici. Noi li odiamo, loro odiano noi, quindi la cosa è reciproca, ma câè una cosa insopportabile che non ho riscontrato in quasi nessuna altra cittĂ : le fermate dellâautobus (o paline) sono senza le tabelle degli orari previsti e delle partenze da capolinea.
Questa grave mancanza fa sĂŹ che certamente una persona si affida alle app online, ma fattuariamente le app online mostrano solo il prossimo o i prossimi orari previsti o dei bus in arrivo.
Senza contare che ogni volta bisogna geolocalizzarsi o inserire il codice della fermata a mano, o i nomi delle fermate. Non tutte le app infatti supportano lâinserimento del numero identificativo della fermata.
Quanto sarebbe bella unâapp che la apri, inquadri la fermata, lui ci pensa qualche secondo e ti dice in tempo reale che fine ha fatto il tuo autobus, se arriva o meno, prossime partenze da capolinea e⌠insomma tutte le informazioni del quale potresti avere bisogno ma proiettate direttamente sulla fermata?
E da qui inizia lâodissea.
#
La nostra storia comincia con Unity: questo strumento permette infatti, stando alle informazioni che si trovano online di creare esperienze per la XR, la cosiddetta Extended Reality che comprende RealtĂ Aumentata e RealtĂ Virtuale, in maniera abbastanza semplice.
Inoltre è gratuito.
PerchĂŠ non approfittarne?
Bè perchĂŠâŚ
NON ESISTE un altro modo per fare esperienze AR con un motore grafico!
O meglio, esistono altri motori grafici, che però non hanno implementato tutte le funzionalità come Unity. Va da sÊ che per creare esperienze di questo genere si ha bisogno di Unity.
Non lâho mai usato, non conosco i principi del game design e della programmazione dei videogiochi in 3D, ma voglio dire, se Godot provato il giorno prima è cosĂŹ semplice, immagino sarĂ come bere un bicchier dâacqua.
La curva di apprendimento è altissima: non consiglierei mai Unity ad uno sviluppatore alle prime armi, ma neanche ad un programmatore con molta esperienza. Non si capisce dove sono le cose, devi aggiungere componenti intermedi per eseguire qualsiasi azione, insieme a Unity ti viene installato Visual Studio (non Code) che è pesantissimo e scomodo, ogni volta che cambi qualcosa allâinterno del progetto (assets) deve ricaricare tutto e ci mette del tempo, ed infine utilizza C# che non è un grossissimo problema venendo da Python e Java, ma se stai lavorando in velocitĂ lo è eccome se non conosci il linguaggio.
Unity funziona a scene, e in ogni scena ci sono gli oggetti. Gli oggetti possono avere delle proprietĂ , altri oggetti a loro volta (es. Canvas, una tela, può avere al suo interno unâimmagine o anche un bottone).
#
Lâidea alla base è molto semplice: unâapp che preso il flusso della fotocamera, riconosce che si tratta della fermata del bus, estrae il testo, fa una ricerca online della fermata e restituisce tutte le informazioni necessarie.
Scompattiamola in piĂš problemi e soluzioni:
Prendere il flusso della fotocamera: qui Unity ci viene in aiuto, basta inserire un oggetto nella scena del gioco giĂ preimpostato.
Riconoscere la fermata del bus: qui mi viene da dire che o usiamo delle immagini di riferimento e la libreria opencv in modo tale da riuscire a estrapolare lâimmagine, oppure usiamo un modello di Machine Learning opportunamente addestrato.
Estrarre il testo: idem, usiamo un altro modello di ML
Cercare e restituire le informazioni: serve un endpoint intermedio o una chiamata a OpenData. Niente che non possa essere gestito.
#
GiĂ iniziare a settare la camera giĂ fatta e impostata è unâimpresa. Inizialmente avrei dovuto usare OpenXR e AndroidXR salvo poi scoprire che si tratta di un ecosistema non rilasciato. Ho speso la parte iniziale per configurare il progetto e cercare di far funzionare quelle cose, salvo poi scoprire che non servivano. Dopo un poâ di peripezie e ricerche online riesco a capire come fare: basta aggiungere AR Session e AR Camera Manager.
#
E come? Abbiamo detto prima di usare OpenCV la libreria ricca di strumenti per computer vision. Gli unici due risultati che trovo sono questo tool a 50$ e questâaltra libreria qui emgucv che però la prima costa 50$ e la seconda non si trovano esempi.
Devo passare ad un modello di Machine Learning.
Mi imbatto in questo articolo e questa guida che spiegano come creare un riconoscitore di oggetti personalizzato. Proprio ciò che serve a me!
Ă il momento di cercare le immagini delle fermate dellâautobus di Roma: online se ne trovano a bizzeffe per fortuna quindi faccio presto. Ma come faccio a dire al modello di ML che quella è una fermata del bus? Semplice, bisogna riquadrare gli oggetti nelle immagini, usando tool come cvat.ai.
La fase di labeling, questo è il nome tecnico, dura 2 ore, ma devo rifare il lavoro 3 volte.
La prima perchĂŠ lâho fatto in maniera non consistente inquadrando un poâ la fermata e un poâ il contenuto della fermata, la seconda perchĂŠ non ho pulito il dataset da eventuali immagini a bassa risoluzione e unâaltra cosa fondamentale: YOLO supporta, solo rettangoli, e non forme personalizzate.
Di conseguenza, siccome non sapevo di questa cosa e ho pensato di selezionare tutta lâarea del bus, devo fare di nuovo labelling delle immagini.
La terza è quella giusta.
#
Dopo qualche giorno riesco finalmente ad addestrare un modello in 300 epoch, con una precisione altissima. Sono molto soddisfatto ma câè un problema: Unity supporta solo file onnx, non pt, il formato predefinito di pytorch. Decido di convertire il modello e noto che gli output sono sbagliati: che fare?
Dopo moltissime ricerche vengo a scoprire che bisogna applicare dei âcontrolayerâ: ma io non ho la piĂš pallidea idea di cosa applicare.
CosÏ armato di pazienza e motori di ricerca cerco e cerco e cero, finchè non mi imbatto in questo link dagli sviluppatori. La manna dal cielo: basta copiare questo, modificarlo leggermente e⌠FUNZIONA TUTTO!
Il risultato è un disastro: lo script è stato sviluppato per la versione 1.4.0 di Sentis, ma ora siamo alla 2.1, e nonostante ci siano delle guide per modernizzare il codice, cerco di scrivere il codice aggiornato diverse volte, fallendo miseramente.
Mi viene in mente allora una cosa semplice tanto banale: passare a una versione inferiore di Sentis, cosĂŹ che quellâesempio possa girare senza problemi. Per mia fortuna funziona proprio cosĂŹ!
#
Armato di forbici dalla punta arrotondata, capisco che ora il problema è fargli riconoscere la fermata.
Ecco cosa provo:
riaddestrare facendo labelling nuovamente per la quarta volta, questa volta cercando di fargli riconoscere fermata e numero
addestrare 4 modelli diversi su tempi diversi
integrare un altro modello che riconosca le cifre
Inutile dirvi che nessuna di queste funziona: il testo è troppo piccolo nelle foto.
Su unity inoltre, poichĂŠ câè bisogno di quel formato onnx, non riesco ad usare nessun altro modello e tesseract non si può usare perchĂŠ non câè una guida su come usarlo su sentis.
Decido di fare una cosa: delegare a un sistema esterno il compito di tradurre il testo dallâimmagine, mentre allâapp lasciare il compito di riconoscere la fermata.
#
Anche questa cosa si rivela un buco nellâacqua: il sistema esterno è pronto, metto su una piccola app in Flask in Python con la libreria tesseract per lâOCR, ma lâapp non riesce a rilevare cifre su immagini piccole.
Se invece gli dò tutta lâimmagine lâOCR avviene, ma non molto correttamente e i numeri non li rivela mai.
#
Ecco cosa ho imparato grazie a questa esperienza:
prima di iniziare o proporre un progetto valutarne attentamente la fattibilitĂ
quando si gestisce un esempio, sarebbe bene aggiornarlo allâultima versione man mano che le versioni avanzano
YOLOv8 è ottimo per riconoscere oggetti personalizzati
se non hai una GPU potente, linux, e un bel disco capiente, scordati di fare qualunque cosa con il machine learning. Lâalternativa è Copilot ma devi assumere che il modello venga addestrato in tempi brevi.
Yes, the end, vicolo cieco.
Via verso un altro progetto!
Canto di Natale, cucina cinese e DOM clobbering
Ecco tre cose a caso che mi sono piaciute e ho scoperto ultimamente.
#
Il vero canto di natale, non rappresenta come in molti noi crediamo il fatto che âa Natale siamo tutti piĂš buoni e si sta in famiglia e si fa il grande pranzoâ.
Lâimmagine di Babbo Natale, è presa dal fantasma del Natale presente.
Il fatto di festeggiare il Natale, nasce come celebrazione del solstizio: il giorno in cui ci sono meno ore di luce in tutto lâanno. Di conseguenza si è piĂš deboli e fare un pranzo tutti insieme è un modo per rimanere forti perchĂŠ è piĂš difficile sopravvivere: fa freddo!
Quando Dickens scrisse il canto di Natale, era il 1840, in piena rivoluzione industriale: non si stava cosÏ bene, Londra si era appena trasformata in una cappa grigia a causa della rivoluzione industriale. Ai padroni delle fabbriche però questo non importava: stavano bene dopotutto poichÊ loro guadagnavano, e finchÊ un lavoratore fa guadagnare, tutto bene. I poveri lavorano, i ricchi stavano bene.
#
A Milano câè stato il primo insediamento cinese in Italia: questo perchĂŠ dopo la prima guerra mondiale vennero dei cinesi a Milano (quaranta) che via via divennero sempre di piĂš, originari della provincia di Zhejiang.
In Cina hanno un detto: a colazione si mangia tanto, a pranzo si mangia bene, a cena si mangia intelligente.
colazione: si mangia tanto perchĂŠ deve servire una grande energia per tutta la giornata e per lavorare
pranzo: si mangia bene, quindi anche cose piĂš pesanti
cena: si mangia intelligente, ossia leggero poichĂŠ ognuno ha le proprie condizioni e le proprie esigenze (cercando su Google ho trovato âmangiare come un poveroâ)
Una colazione tradizionale è un poâ dolce e un poâ salata, e può comprendere di: pane di soia che deve essere bianco e leggermente dolciastro, bao con verdure miste e carne , latte di soia dolce e latte di soia salata con salsa di soia, pastella fritta, cipollotto e coriandolo.
Un pranzo invece dipende: di solito è 1+1, 2+1, 3+1, 4+1 o 4+2 e significano (numero di portate)+(numero di zuppe). Es. 2+2 vuol dire due piatti principali e due zuppe. Lâacqua non si beve: si prende il tĂŠ e si ordina la zuppa proprio per assumere liquidi. Solitamente è 2+1: pak-choi saltato (verdure) e carne di suino saltato con peperoni e peperoncino piccanti. La zuppa invece, la piĂš popolare, è con pomodoro, uovo e cipollotto. E immancabilmente anche una ciotola di riso bianco. Non câè un ordine.
#
Javascript è molto simpatico: mette tutto dentro collection. Possiamo sfruttare questa cosa per creare oggetti secondo un criterio che vogliamo noi e modificare lâesecuzione di alcuni script.
Ad esempio, se noi abbiamo
<script>
if(window.isSafe) {
console.log("Flag");
}
quel window.isSafe non esiste ma può essere creato aggiungendo da qualche parte nella pagina
<a id='isSafe' name='...' href="onerror=alert(1)"></a>
ma ciò non funziona perchĂŠ il browser fa encoding in automatico; possiamo evitare questa cosa usando lo schema cid, aggiungendo cid allâinizio
<a id='isSafe' name='...' href='cid:"onerror=alert(1)//'></a>
Medium: is it worth your time and effort?
Medium: is it worth your time and effort?
#
It is a paradox: why am I writing an article on Medium about why I donât like it?
I occasionally return to Medium, wondering why I left a place like this. After all, they provide a distraction-free editor, that is appealing, a melting pot of articles, and is full of people who write stories, and I love stories! After all, one right story could change the world.
I wouldnât say I like to discuss whatâs working here; instead, Iâd like to discuss some criticisms and issues, hoping they will be changed soon.
(SPOILER: it is unlikely to happen)
#
Letâs talk about the editor and markdown: I cannot easily import my content into Medium, and vice versa: exporting my Medium content to other formats is a nightmare.
We can import articles from other websites, by clicking âStoriesâ and âImport a storyâ, but they will be badly formatted, at least speaking about markdown.
Though Medium is based on a business model where people pay to read exclusive content on this platform, when I write my content as many people do, Iâm used to writing everything in Markdown format.
This is because Markdown is platform-agnostic. Provided that you have a âMarkdown interpreterâ you can see your content styled everywhere.
By letting people write in a plain text file on something like an old Mac, or even a Commodore 64, and share it in some way, you leave the door open to recycling old hardware that probably was going to be left in the dust in a basement or straight to the dump.
You could even save your Markdown files to a floppy disk and load it into a 80s/90s computer
Being able to import your stories more comfortably, provides access to your platform, potentially increasing the number of people who want to write here.
However, it is understandable that you donât want to people leave Medium: I donât personally share this line of thoughts.
#
Why do I criticize the Markdown editor so much?
It could be more intuitive: to write some source code by using a monospace font, we can use ``` on a newline and a textbox will appear.
This is similar to Markdown: thatâs great, but Medium editor is a WYSIWYG editor (what you see is what you get) therefore I would expect that when you copy-paste and highlight the text, the option âformat as codeâ would be available.
What about links? You should select text and click on the âlinkâ icon: you canât say in advance to create a link like you would with Markdown.
While aiming for simplicity and a distraction-free writing experience, writing articles can be frustrating for users who are more standardized editors. Speaking about code, although using a monospace font for code is clear once you get the hang of the triple backticks (```) or the â+â code block option, these functions
Any action other than formatting text in bold, italics, or underlining, like inserting links, code blocks, and images, requires selecting text or navigating through a â+â menu.
While the editorâs clean, âdistraction-freeâ design is appealing, the non-standard formatting options and limited Markdown support make it tedious for users to work efficiently.
We can sort out these problems by allowing Markdown or adding a few standard optional toolbar icons without cluttering the layout.
#
Letâs say we are writing a guide with some code inside: we cannot place a code block inside a bullet list, because the only possible moves are:
Hit return: this creates a new numbered item. You canât insert a code block within the item itself.
Double enter: this creates a new line where you can insert a code block, but it breaks the list flow. After adding the code block, youâre stuck outside the list and canât continue numbering
Shift and enter: this lets you move to a new line within the same list item without breaking the flow, but you canât add any additional formatting or a code block on that line.
The same thing happens for images as reported by Medium itself: you cannot include an image within a list without breaking the list.
This could be better because I think it would be great if I could create a numbered list for my guides or procedures and place images wherever I want.
Since editors are just a means to express ourselves, we should be able as free as we can, an editor is just a tool; it shouldnât control us. We use it to express our unique spirit.
#
Mediumâs editor has great potential, especially for people who want to jump in and write without fuss.
But for those who like to have a bit more control or are used to Markdown, it can feel frustrating â or a hunt for the right formatting option.
Letâs hope Medium will take step to streamline and maybe even standardize things. With just a few tweaks, it could be a better experience.
If you liked this article, come say hi over at dag7.it or consider supporting my work â every bit helps
Originally published on medium.com on 5th November 2024, at 13:00
AIO Kittens ITA: an italian-only (maybe) unified manual for Exploding Kittens
Have you ever thought about playing Exploding Kittens but you donât feel up to use hundreds of different manuals?
Today, Iâm gonna release âAIO Kittensâ, a unified manual that includes not only official expansions, but also other unofficial ones.
Iâve never tried to print it on a leaflet or something like that, it should be more compact than the official one.
Feel free to reach me through my email to let me know if this is useful for you or you would like to share with me your thoughts on it!
For now is italian-only, in future who knows, if enough interest is reached I can think about an english version.
==Download it now==
New track: Nobody's Sleeping
A new track is finally out!
#
Many years have passed since I did that track.
Iâm happily releasing it for Halloween. Hope you enjoy it!
As always, donât forget to check my music page to stay updated with all my music.
The Rabbit Hole of Curiosity: A Personal Dive into Tech and Security
Starting a new academic year
#
A new academic year has started. Well, not today, but a month ago.
Geez, time flies.
It is strange how every academic year feels like the first one but with the knowledge of the previous ones. It is like a new game plus, but with the same character and more skills: scared of the unknown, but with the knowledge of the past.
Anyway, hereâs the story: Iâve started some brand new courses. I always have been curious about the world, especially for the things that are related in my field of study.
Informatics is divided into many branches, but I think the major ones are:
Backend programming: the part of the software that is not visible to the user, you know, âthe magic under the hoodâ
Frontend programming: the part of the software that is visible to the user, the âpart that the user seesâ
DevOps: the part of the software that is related to the deployment and the maintenance of the software, fundamental skill for a developer, but also for a system administrator
Security: the part of the software that is related to the security of the software, the âpart that keeps the software safeâ
During the years, Iâve explored many of these branches, Iâm currently working as a backend developer and DevOps, but Iâve always been interested in the security part. It is fascinating how a software can be secure or not, and how a software can be exploited by a malicious user.
Because, after all, user is the most unpredictable part of the software.
Knowing how to write a good and a bad software is a fundamental skill. Knowing how to break it, it is even more important because you can understand how to protect it and how to write a more secure software.
#
Yesterday I got up in the morning, and started to study like a fool. I was highly demotivated: this is related to the fact that Iâve attempted a couple of exams in the past, and Iâve failed them. Iâve studied a lot, but Iâve failed them.
I was demotivated, but Iâve decided to try again.
This time is different: Iâve started to study two courses, one about the security of the software and the other one is about malware analysis.
It is impossible to explain how much Iâm enjoying them: the stuff is exactly what I was looking for years, but I never dared to study by myself, because I was scared of its complexity.
Well, they are not easy: they are definitely not easy, but I donât think they are impossible, and being in an universitarian environment, I can ask for help if I need it or if Iâm stuck, while alone at home, I cannot ask for help, and Iâm stuck with my thoughts.
So, until now, Iâve been studying a lot, and Iâve learned a lot of things.
Everytime Iâve finished a lesson, I had a dopamine rush, and I wanted to know more about it, in particular by consuming videos and articles.
It would be a good idea:
to write some articles about security and malware analysis, what Iâm learning, to not forget them
update my notes with the new things Iâm learning
#
I will never understand why I get in love with things I donât know. When I grasp a new concept, I feel like Iâm in love with it, and I want to know more about it, but this is applied to every unknown field and leads me to a rabbit hole of curiosity.
Unfortunately the time is limited, and I cannot explore everything I want with the depth I want.
Iâm a curious person, and I will always be.
xoxo, Damiano
p.s. very soon I will start in reading âAtomic Habitsâ by James Clear, Iâve heard a lot of good things about it, and Iâm curious to know more about it. I will write an article about it, for sure.
p.p.s. Iâm so happy that Iâve finally have found some time to write an article: it makes me feel good.
Django Day 2024: lighting talk on Chiptune
The event
#
Django Day in Copenaghen is an event dedicated to Django, the Python web framework. It was a one-day event, and I had the chance to attend it as a speaker.
Iâve decided to talk about Chiptune, a genre of music that uses the sound chips of old computers and consoles to create music.
#
Iâve presented a small introduction to Chiptune, explaining what it is and how it is made. Iâve also shown some examples of main artists, the demoparties, the Chiptune music, and Iâve explained how to create Chiptune music using a tracker and whatâs the difference between a tracker and a DAW.
#
If youâre here, you probably would like to download the slides of my talk.
Maybe youâre interested in Chiptune, or maybe youâre interested in the talk Iâve done.
Click here to download the slides.
If you donât feel up to download the slides, click here to see a youtube video of me in action.
#
The feedback was great. Iâve received some questions about Chiptune after the talk. I talked with some people who knew artists and discovered new people doing music.
I also make music, take a look if you please!
The organizers were happy with my talk, and theyâve asked me if I would have liked to perform a live Chiptune session. Iâve accepted, and Iâve performed a small live session at the end of the event, using my Gameboy.
Zona Warpa Milan 2024 Tour: what's now?
Milan has been the last Zona Warpa Tour, I took part and here it is a small blog post to share my experience.
#
Everything has started in 2023, when the first Zona Warpa Tour was announced.
Zona Warpa is a self-managed videogame festival, mainly focused on indie and small productions. They are organized in different cities, and the last one in 2024 was in Milan.
As attendee, I had the chance to play some games, meet some developers and also take part in some talks and they were about a lot of different topics, from accesibility to translation.
I also had the chance to meet some people and have a good time with them.
The first time I took part, was in Rome in June 2023.
But this was an important event for me, also because I have the possibility to finally show my composition on stage. I have been working on this for a long time, and I was very happy to have the chance to show it to the public, in collaboration with a friend of mine. We performed together under the pseudonym of âcyrix86mpuâ.
Iâve also been able to code a little cracktro, thanks to the awesome LOVJ that helped me with visuals while performing.
What about now? Iâm looking forward to the next Zona Warpa Tour, and if I will have more tracks ready, I will be happy to perform again.
Stay tuned for more updates!
xoxo
#
The full video is available here: https://video.zonawarpa.it/w/v6SJtA54A5LRm6ay86kJhZ
#
Zona Warpa Torino 2025
Ă stato fighissimo il Gabrio, ed è stato bello suonare per le persone che câerano al suo interno.
Day 5: Videogame's Devlog - Inventory, HP, counter attacks
I am caught up in something else and have been slowing down these days.
The situation has become untenable: I feel the need to write tests and modularize the code further.
Things break and I donât know why.
Anyway, I manage to create a small inventory by deciding to treat the inventory as a dictionary and inserting an object into it every time it is printed in the overlay.
Thereâs a problem: exits are added to the inventory, that it is not what we want, but never mind: this is a problem I will fix another time.
I also decide to implement the fact that enemies counter-attack by assigning each monster an attack and a defense and making it so that when they counter-attack and when I attack, according to small mathematical formulas the hp is decreased or not.
To get around the regeneration problem I temporarily decide to make the character recover one hp every time he moves.
I also decide to implement the fact that the character can die: if the hp is less than 0, the game ends. To start a new game, just press the âRâ key.
The game is starting to take shape, but I have to fix some bugs and make it more playable, for now Iâd like to polish on textures and make the game more enjoyable, so I manage to understand when to use borderâs tileset and when not.
Other wishable features are:
handle items in the inventory
fix enemies texture bug
add proper tiles for the border in the map
invent a story
add a boss / boss room
I am very happy with the progress I made, but I have to keep going.
Day 4: Videogame's Devlog - graphics, minimap and level up
Tonight is the night! I need to implement graphics!
Well, how to do it? Old videogames were made with spritesheets, so I decide to do the same. I downloaded a spritesheet from a free itch.io download link, and I am ready to go�
But whatâs the basic idea? I have to draw the map exactly as I did before, but instead of drawing colored squares, I have to draw textures.
The steps are:
load the spritesheet
while drawing the map, if the tile is a wall then go to the spritesheet and take the 4th square by row and column
for example, if the wall is at row 1 and column 1, then the square is at row 0, column 0, wide 16 and high 16
if the character is at row 2 and column 1, then the square is at row 161 and column 116, wide 16 and high 16, and so on
this is because the spritesheet is 16x16 and every square is 16x16
This is feasible, so I decide to go ahead: I modify the main structure by adding row column and spritesheet where the graphics are saved.
After that, instead of drawing colored squares I decide to draw textures, each 16x16 and⌠itâs a great idea, everything works, I just have to be careful to change the sprites of the enemies.
Wouldnât it be nice a minimap in the HUD too? Of course, it may come in handy for me for debugging purposes but also for the player in the future.
I notice that minimap is the same map I normally draw, but with pixels 1x1 instead of tiles. Basically there is no need to rewrite the code, just to make a function that draws a general map.
Since the code is starting to be a mess, I decide to refactor it a bit: dictionary will store each elementâs characteristics, like this:
{
"enemy": {
"x": 10,
"y": 10,
"hp": 10,
"attack": 2,
"walkable": False,
...
},
...
}
Look how itâs beautiful!
Now itâs time to improve the HUD and set health points and attack points to the protagonist and enemies.
I decide to also change the function that inserts stuff into the map: in case of enemies/living people, it also inserts additional parameters such as residual hp or collected tool, so that I can manage enemiesâ items and death as well.
I finally decide to implement a simple level up (experience) and level up mechanism, by using some math functions and randomness.
Day 3: Videogame's Devlog - HUD, enemies, AI, and more!
Good morning Night City
-Cyberpunk 2077
My morning is not a morning, but an evening, and it starts after a good sip of caffè latte: I am ready to face the day. I have a lot of ideas in my head and I want to make them reality.
I had an interesting discussion some time ago with some friends of mine about the difference of cappuccino, caffè latte, and latte macchiato. I am not a coffee expert, but I knew that the difference is in the amount of milk and coffee. The articles I read on the internet are not very clear, however this article here explained by ânientepopodimenoâ but Caffè Borbone is very clear and I recommend it to you if youâre interested.
We need first to resolve the performance problem: a dear friend of mine advised me to reduce the size of the map since I would make less effort that way. I decide to throw down the whole dungeon generation algorithm and redo it almost from scratch.
Iâve watched some videos and read some codes online, but this excellent video brought to you by âTheZZAZZGlitchâ is really interesting and explains in a visual way an approach to generate dungeons.
The generation algorithm is very interesting: first it generates rooms as I do, then unlike me who immediately tries to connect them, it generates âdumbâ rooms (called 1x1) and tries to connect them with existing rooms. It also does another thing: it generates a special border (soft border) that does not allow it to be crossed or passed in any way.
I reason a little bit about how to do that: generate the rooms, okay, which I already had. I can import the 1x1 idea: sounds good to me!
To my surprise it is an approach that works very well: by increasing the number of 1x1 rooms I can increase or decrease the complexity of a dungeon.
Basically it is like connecting multiple rooms together: an approach that works very well!
Before I re-create the collisions and âthe walkable and the unwalkableâ, I want to make sure that I generate the items and everything that is needed to go from one world to another correctly.
It occurs to me that I have to generate items, money, etc., and these should not be in corridors. Grr, this is difficult.
Going back to the performance problem, I decide to reduce the size of the map to 56x32 pixels. Since I did my algorithm in a way that I can change the size of the map, I can do this without any problem and with some surprise I see that the performance has improved a lot, generations are almost instantaneous.
I am very happy and this is the result!
Things canât stop here:** I have to generate the items and the money**. I have to generate the exit that will take me to the next level. I have to generate the enemies and some elementary game elements: key, chest, exit, enemy, boss, trap. After all, I can treat everything as walkable/not walkable as well.
I create a dictionary of tuples: the name is something I know, the tuple there is number (which I will need in the final map), the âcommonâ name, and a color that will then be replaced by a texture in the future.
{
"key": (1, "key", (255, 255, 0)),
"R#@*JE@": (0, "nothing", (0, 0, 0)),
...
}
The idea is to draw the map and depending on what is in the map, draw something different.
#
It also occurs to me that there might be overlapping problems: however, if I calibrate the spawn order well, I should not have such problems.
The overlapping problem is a problem that occurs when I spawn an item, and then I spawn an item on top of it.
For example, I can safely decide to spawn enemies, chests, etc., and only after stairs, since if stairs replace an enemy, it is less serious than having an enemy replace stairs, it would make the game impossible.
Graphically there is not much changes, but in practice I always have an exit and something on my map.
#
Now we have to move on to movement and collisions: I simply have to make a function that checks if I can move on a certain tile, and if yes then move, otherwise not. It will suffice to treat enemies as blocks and everything else as something walkable.
The next step will be to define each entity behavior. Letâs start with stairs -> I decide that every time a valid movement is made events happen, so I use the strategy of the boolean âmoved and not movedâ. It works.
#
Now I have to deal with the AI of the enemies. I want to define different strategies, but for now I am content with a ârandomâ approach.
A first implementation is this: find all the reds, if they can move go in the direction they randomly choose. This approach in terms of memory sucks: it would be better for me in generation phase to save the position of the enemies and update it as they perform movements.
#
But hereâs some bugs arise:
if I decide to move on a tile that has already been chosen by an enemy, I am not a solid object so both I and the enemy overlap.
solved in a simple way by assigning me the property of being solid
since I have defined that every object when stepped on and is âwalkableâ becomes a normal tile again, enemies do the same thing with stairs. In other words: the enemy steals the stairs! This is not good and to solve it I have to handle the limit case of the stairs (between them they should not kill each other as they are all solid).
Technically, I could also change the order of generation: I now generate the rooms, generate the dumb rooms, connect them, generate the items and game elements, however, to save resources and time, I could generate the rooms, place the player, place the items generate the 1x1 tiles and then connect them.
Another bug: enemies and I move in the same tile and overlap: this is not good, and it is because I was never updating the fact that the area where I was standing was free and I had moved to another area. Instead, every time I move, I have to set the tile where I am as âwalkableâ and the new one as ânot walkable,â which comes from the fact that I occupy it.
Another approach I came up with is to simply define whether the playing field is walkable or not.
#
The time has finally come: define the IA behind the enemies: meanwhile, I want to define three kind of enemies, one that is very stupid and keeps doing what I have been doing so far (wandering around randomly), one that is smart and chases the player, and the other that is greedy and steals everything stealable
I create the AI for the first and the second kind, but not the third: I have to think about how to implement it.
Now I find myself in endless dungeons. I definitely need to implement a quick attack just to make enemies disappear. For now I settle for âlast key pressed is up, so I shoot upâ. I can implement it by writing that the last key pressed âlooksâ in a certain direction, regardless of whether or not you can move.
#
Itâs late but I can make it!
I take a short break, and after a while, I find out about pr.end_mode_2d() which allows you to draw a HUD.
Thatâs fantastic! In the top left corner I want the stats counter in general, and at the bottom I want a textbox: the messages go away after two seconds (120 then, because Iâm at 60 frames per second) and the hud has to disappear.
It occurs to me to make a buffer for the messages, and eventually show it slowly by removing each string.
Hereâs an example and why I told the 120 frames per second thing:
messages_buffer.insert(0, ["Level up! You are now level " + str(player['level']), 120, pr.GREEN])
Messages are placed in a list, and each message is a list of three elements: the message, the number of frames it has to stay, and the color.
At the end of the game loop, I check if the message has to be removed, and if so, I remove it, otherwise decrease the number of frames it has to stay until it reaches 0 and shows the message in the box.
This is the result:
Day 2: Videogame's Devlog - Dungeon Generation and Camera
My original idea was to make a dungeon game.
âDamn bro, you just started and you already want to make a dungeon game?â
Yes, I know, but I love dungeon games, and I want to make my own since ever. The most fun part of a dungeon game is the dungeon itself: the rooms, the corridors, the monsters, the traps, the inventory. Everything is random, everything is different every time you play, and thatâs addicting.
But, letâs go back to the game.
It is time to make my hands dirty on the actual dungeon creation. Where do I start?
Well, I had seen a video a while back on procedural dungeon map generation. The idea was that first you generated rooms, then you generated corridors. I then decide to set a scary size for the map, like 300x300 because I think it is a good size for a dungeon.
Letâs move on the dungeon generator part: it is slow and has problems.
The idea is to generate the whole map first by defining walkable and non-walkable areas, the player (always a yellow square), draw a green square for each ânon walkable squareâ, then I can move on to fill the entire map with monsters, items, and traps⌠you know, the usual dungeon stuff.
It works but⌠the problem is also that I canât see anything this way, because everything is too big.
I find out about the existence of the game âcameraâ which serves just as if it were a separate and detached window to the game world. Very pleased about this, I decide to postpone the problem of optimizing things and make them faster until the next day, not before adding some small debugging controls (W and S keys, zoom in or out the view)
I also implemented a small collider with walls, that does not seem to work properly and the classic directional arrow controls for moving my yellow square around.
Hereâs the result:
Day 1: Videogame's Devlog - Totti's Quest
Finally, after some years, I am experimenting for the first time with making video games.
I have always been fascinated by the idea of creating a video game, but I have never had the courage to start. I have always been afraid of not being able to finish it, of not being able to make it as I wanted, of not being able to make it fun.
But this time things are different: I wanted to make a game for GBA, but thanks to a friend of mine who suggested me to use Raylib, a C library for making games, I decided to start with that.
Honestly I was intimidated by the idea of starting from scratch, because many frameworks nowadays I thought were too complex for me. But Raylib is damn simple, and I like it.
I canât make games from one day to another, it requires a lot of time, work, programming, testing and all the other software development phases. After all I write software for a living, so I know what I am talking about.
Letâs start with a silly thing and make Tottiâs Quest, a red square that if it touches another green square, the other one turns yellow and starts the Roma anthem + an image of Totti
The first problem is drawing a square. Well, just check raylib lib! But raylib is a library in C.
My main language is Python: itâs not âI donât like Câ, itâs more like âI use Python every single day, so I am confident with itâ.
They are programming languages: exactly like with the normal ones, they work in the same way. The only difference is that C is verbose, I need to manage more things (like structs, dictionaries are not native and so on). Python have a lot of gimmicks that make it easier to use. Since the result is gonna be the same, I decided to use the latter.
Fortunately, raylib was ported to Python so you find these âbindingsâ that basically make the library suitable for a language that is different from the original one.
Iâve managed to complete the code with a bit of a problem: I canât get the audio to work because it always clashes.
It occurs to me that I can use boolean variables to indicate states, like âplayedâ or not.
This is an approach that works, and I am happy with it.
Restyling 2024: again and again
Here I am again. Another time, my website has been revamped. Iâm back to Hugo, with a template that resembles Github Homepage.
I wanted to create a lot of things, maybe a Hugo theme would have been suitable, but right now I am no up to do it. I just want to write, and share my thoughts.
There is the problem of the language: I donât know if I should write in English or Italian. I am not a native English speaker, but I like to write in English. I will try to write in English, but I will switch to Italian if I feel like it.
Also enjoy the old posts that I have written in the past. They are not many, but they are still there.
I hope you enjoy this new website. I will try to keep it updated as much as possible.
Proposals for 2024
Dear Santa Claus,
this year I have been a good dev: I have worked hard, and learnt a lot of new things. I have created some projects and I have helped some people.
Iâd like to focus on some projects in 2024, and Iâd like to share them with you. I hope you can help me to achieve them.
Here is the list of the projects Iâd like to work on in 2024:
Mcdonaldâs eCDP Project: still in beta due to failure in finding a free translation platform. I should host the strings on a private Pontoon Instance.
jet-set-radio-theme Jet Set Radio Theme for Mozilla Firefox, it is abandoned since the day I submitted it. I should fix things.
MyBacklog: started in 2023, it is a currently unfinished app to track your videogames.
Evolve this website in a way that I like and donât change it anymore. I should focus on writing, not on the website itself.
Here is the list of the things Iâd like to do in 2024:
Study personal finance and invest some money
Study more about Machine Learning and AI
Visit countries I have never visited before
Improve playing any of the instruments I play
Release tracks on Youtube (and possibly Spotify)
I hope you can help me with these projects. I will try to be a good dev in 2024 too.
Best regards,
Dag
P.S. Iâll update you on the progress of these projects on my blog. Stay tuned!
Plastic Dreams From Another World: cosa ne penso
This article is in Italian. If you want to read it in English, just translate it with your favorite browser.
Arkavoid è un progetto di Davide Panetta (al basso) che attinge direttamente dalla cultura synth anni 80 e la ripropone in chiave moderna. Il genere è conosciuto come synthwave.
Plastic Dreams From Another World ĂŠ il primo album di questo progetto.
#
La copertina ĂŠ molto bella da fuori, ricca di dettagli e colori.
Non rispecchia pienamente i brani dellâalbum, dĂĄ una specie di anteprima sullâeffettivo contenuto. Mi piace molto, anche se forse avrei optato per qualcosa piĂş futuristico (lâattuale ĂŠ abbastanza cyberpunk).
In generale ci sono tantissimi dettagli interessanti come una rappresentazione fedelissima di una mpk mini o una specie di Glados sulla destra.
Non mancano poi anche vari richiami alla cultura pop: un paio di Jordan in basso a destra, delle statuette di He-Man, âKitâ di Supercar, un poster di Terminator, e altri elementi assimilabili comunque alla cultura pop o anni 80/90.
Un poâ tutto è un richiamo a qualcosâaltro, auto-referenziale (nel disco) o meno.
#
Tutti i brani in generale sono facilmente ascoltabili, nel senso che non câĂŠ bisogno di essere dei fan particolari di un qualche sottogenere dellâelettronica.
Un solo brano fa eccezione: in esso ad un certo punto câè un suono acutissimo che non è esattamente molto orecchiabile. Tralasciando questo episodio isolato, non ci sono particolari problemi.
#
Lâalbum inizia subito con Run Forever (1), brano che spicca tra tutti per la sua orecchiabilitĂ , con un motivetto molto coinvolgente.
Seguono poi altre considerazioni su alcune tracce:
Night Sands: insieme a The Scorpion, i brani che mi son piaciute di meno tra le tutte, forse perchĂŠ un poâ lente, forse perchĂŠ stilisticamente diverse dal resto dellâalbum.
Red Horizon: potrebbe essere benissimo spacciato per la colonna sonora di Hotline Miami. Non se ne accorgerebbe nessuno. Molto carino!
Bloodzone: lâintro ĂŠ stranissima, e in generale il pezzo ĂŠ pieno di cose âstraneâ ritmicamente. Ă interessante.
The scorpion: di per sĂŠ il pezzo ĂŠ carino, synth decisamente rivedibile
Golden Tears, oltre a piacermi, trovo sia davvero perfetta come traccia finale
#
5 stelle: per me sono delle hit, sono le mie preferite e sono fantastiche, le adoro
4 stelle: ottimo lavoro: non mi sono piaciute come quelle con 5 stelle, ma rimangono dei pezzi ottimi
3 stelle: ok: non sono di per sĂŠ malvagi, ma qualcosa non mi ha proprio convinto
2 stelle: non mi sono piaciuti, ĂŠ il mio rating piĂş basso
1 stella: non uso mai 1 stella :D
#
In generale è un album godibilissimo, con unâottima varietĂ di tracce e stili, con diverse chicche: un ottimo lavoro sia comparto grafico che sonoro.
Tracce preferite in particolare: Rebecca (6), The Ghost Of The Temple (3)
Honorable mentions: Run Forever (1)
Trovate lâalbum in pre-ordine su Bandcamp o su Spotify.
Ă prevista lâuscita il 30 settembre sulle principali piattaforme di distribuzione (Spotify, Apple Music).
Touhou Project: Playing First 5 games with Retroarch
This small guide aims to become the main guide for all those who would like to play Touhou Project (abbreviated as TH), but donât know where to start and how to set up the right emulator.
Note that I only tested this guide on an Anbernic portable console (I told you about it in another article) precisely because I wanted to test how comfortable it actually was play it and because there isnât much material online, neither in English nor in Italian.
#
The TH Project is a series of games (called bullet hell) created by Junâya Ota, alias ZUN: in 1996 he decided that video games were boring, there was nothing really fun for him, so he decided to create a series of titles on his own, partly for fun and partly to experiment.
Games of this kind are normally difficult for the average player: the skill lies in observing and understanding the patterns that are proposed and the fact of remaining calm while being bombarded with bullets.
However, not all of them will hit the player: it will be up to the latter to understand (and remember) who hits him and who doesnât.
#
During the game, we will take on the role of Reimu or Marisa and we will have to shoot and avoid monsters that will try in any way to knock us down.
Between one chapter and another (episodes) we will have small interludes that will push the story forward, allowing us to understand what is happening.
In Italy it is not very popular, but it is especially so in Japan: in addition to the fandom they even have a manga and an anime.
#
The TH Project has been released in 18 different chapters, not counting the 11 official spinoffs which brings the total number of games to 29.
The first 5 chapters are the only ones to have been released for PC-98 and nowadays have become almost impossible to find, except online. They are:
Touhou 1 - Highly Responsive to Prayers
Touhou 2 - Story of Eastern Wonderland
Touhou 3 - Phantasmagoria of Dimensional Dream
Touhou 4 - Lotus Land Story
Touhou 5 - Mystic Square
This article is about the 5 games listed above, all others are available and released for Windows.
The first game is very different from all the other chapters: it is a kind of arkanoid with tiles.
#
To play the Touhou Project you need:
copy of TH Project games for PC-98
PC-98 emulator (Neko Project II) or
Retroarch configured with NP2 KAI core (Neko Project II Kai)
scissors with a rounded tip
#
Load the Retroarch (RA) core called Neko Project II KAI. The KAI version is essential, in fact nothing will work without it.
Make sure you already have configured the core. If you havenât or donât know how, RA guide will help you
Load a game. What a bummer right? It all jerks and feels crappy. Now letâs go make some improvements.
Open Retroarch menu > Core Options > Core Settings > and make these settings:
PC Model: PC-9801VM
CPU Base Clock: 2.4 MHz
Feature CPU: Intel 80386
CPU Clock Multiplier: 16
RAM Size: 13
Skipline Revisions: 255
Soundboard: PC9801-86
Restart the content, and enjoy.
N.B.: this configuration is specific to the Anbernic 353V: experimenting a bit with the settings I reached a good compromise.
If you have a higher-end computer or console, set the CPU Clock Multiplier to 40 and RAM Size also to 32, and then gradually decrease the CPU Clock Multiplier in case you notice frame drops, or slowness in general.
The minimum values are CPU 24 and RAM 13.
(yes, I had to put 16 otherwise everything was laggy)
#
These settings are obviously also valid when using the standalone emulator.
#
It gives me black screen with a)> how do I fix it?
you are not using NP2KAI, but NP2. I told you Kai was needed đ
The second chapter does not take my input.
you are not using NP2KAI, but NP2. I told you Kai was needed đ
I donât see the fonts
Optional files are missing, official guide tells you how to fix this annoying problem. Or play without fonts.
The zip doesnât work!
unzip the zip and put the hdi file in the rom folder. In case you use Anbernic and similar, this folder is called pc98
I canât stop playing, Iâve become good, Iâd like to start chapters for Windows from Steam. Iâm just here to thank you!
I would have put you my affiliate link to Instant Gaming, but they donât sell TH Project, so I suggest you the 13th chapter on Steam. Or start with whatever you prefer.
The guide in the Bignami version, reduced to the bone, is available on Gist Github.
Have fun!
p.s. maybe you already knew TH Project for Bing of Bongs | Big Ben plays âNight of Nightsâ for the Last time or for [McDonaldâs clown video](https://www.youtube.com /watch?v=Q16KpquGsIc)
Anbernic 353V: retrogaming in a gameboy shaped console
People have many hobbies, such as reading, playing sports, listening to music or gardening. Instead, one of my favorite pastimes is playing video games. For me, it has always been a genuine journey of discovery of new worlds and new characters, a bit like reading a book, but in a more interactive way.
I own many of the best-selling consoles of all time, but I was looking for a solution to my desire to dust off old glories.
#
Playing video games on the original consoles requires you to carry each console with you at all times, unless you own backup solutions or backward-compatible consoles, which may not always be able to run all the games from multiple consoles.
For example, if I wanted to play Game Boy Advance (GBA) and PlayStation Portable (PSP) games, I would have to carry two separate consoles with me.
In addition, the backup solutions available on the market for older consoles, although perhaps cheaper at the time, are not cheap. Try, for example, to take a look at the flashcarts for the Game Boy.
So, what to do?
One option is to use a newer, better console in terms of power and performance to play older games.
I am not considering the Nintendo Switch, which is a console that is still in production, but it is difficult to play old games on it, and the Steam Deck, which is a full-fledged computer that does many things in the area of emulation. Both solutions are not cheap even though they do the job they were designed and created for very well.
Nowadays, the cheapest consoles with a good stock of titles are:
New Nintendo 3DS
PSVita
They allow most of the games of previous consoles to be emulated, but they are hard to find at normal prices, especially the latter.
There are two major problems while playing a recent title:
âNewâ consoles do not always have the same aspect ratio and controls as the original version. For example, Nintendo DS games play on a 3DS but have black bands on the sides, while on a DSi (or DSi XL) they play perfectly.
When home consoles are emulated by a newer device, it is difficult to get used to the controls. The feel of a certain controller on original hardware is often different from that of the target console.
This comes purely from the convenience of using one controller over another.
I have always liked the idea of carrying my entire game library with me and being able to have one console that can play my entire collection instead of having to own many different consoles. However, there are also advantages to being able to have more than one console, such as being able to play games exclusive to each console and having access to different features and services offered by each platform. In general, the choice of owning one or more consoles depends on each gamerâs personal preferences and needs.
Not all Game Boys are perfect: the SP is the excellence of compactness. However, over the years, the controls became small for my gradually growing hands, making it a bit uncomfortable.
A good Game Boy in terms of size might be the very first gray (DMG). However, it has a not inconsiderable weight and is not very portable compared to other consoles, as it is heavy in the pocket.
An excellent alternative to both models is the Game Boy Pocket (GBP), which is an excellent compromise both in terms of size, which is much smaller and more compact than a DMG, and in terms of the size of the controls (d-pad and buttons), which maintain the size of the DMG.
The Game Boy family has always suffered from the non-backlit screen, a serious shortcoming that over the years has been a problem for all those who wanted to play at hours other than daylight, risking losing a few diopters.
Where then can I find a âpowerfulâ Game Boy with a good screen and capable of running recent games?
#
And this is how we arrive at a very good compromise: the discovery of non-emblazoned retro consoles.
In the past, consoles were sold with OpenDingux, which never really intrigued me. On the one hand it was very interesting to have a console with a free operating system that could play many dated games, on the other hand they always gave me the impression that they had problems of some sort (arising not only from overheating, but also and especially from the controls).
In recent years, however, several retroconsoles from brands such as Powkiddy, Miyoo, and Anbernic have emerged.
The peculiarity of these consoles is that they often mount Linux or Android, making them perfect for all the geeks who enjoy adding or removing emulators and testing games.
Around 2019 I used to follow, and still follow with great pleasure, the Dr. Game channel, where there are several reviews of handheld consoles, from Famiclones to Power Player Super Joy to these types of consoles.
Initially, I did not like them at all.
I set out to research the various solutions on the market, and the choice fell on two models in particular:
Miyoo Mini
RG35XX
I searched online what these consoles were capable of doing, and found that they can emulate games up to PS1, but not perfectly Dreamcast, PS1, and Game Cube
The Miyoo Mini is just too small and uncomfortable to hold. Compactness is important, but not being ergonomic it is uncomfortable to use. This is very reminiscent of the Game Boy Advance SP in 2023.
#
Initially I thought the RG35XX was a good choice, but then I found that the power left something to be desired and the stock kernel was not excellent.
In short, not really the best choice.
I honestly would have appreciated if the console had better support from the original manufacturer, although there are custom firmwares.
#
I realized that many of the things I wanted were not available, such as Android support, so I decided to spend more and opt for the Anbernic 353V.
Before making the purchase, I went to look at various reviews on Instagram and Youtube: needless to say, there wasnât much. All of them complained about the buttons on the back being difficult to press and uncomfortable.
I must say that I was quite satisfied with its technical specifications. What surprised me most, however, were the controls and toggles themselves, which far exceeded my expectations.
It is able to emulate many systems, such as Dreamcast and PS1 with a stable framerate, but also PSP titles and they seem to work great. However, it is not perfect, there are some things it cannot do, such as emulating the Gamecube or having a stable Android system (crashes every few minutes of play).
Despite the problems, this console has become my favorite handheld and I use it almost every day, especially to play PS1 titles and something on Android: on the latter, apps crash often, especially games.
Another thing I love is the fact that I can use it as a controller for other things-itâs a priceless feature.
I was a bit skeptical about the feedback of the controls, but I must say that the console emulates the feel of the Game Boy Pocket perfectly. Surprisingly, even after some time, my hand doesnât sweat like it does with some controllers, such as the one on the PS4 or the first Xbox One before they overhauled the controller and put a grip on it.
#
If you are looking for a handheld console that is able to satisfy your need for retro gaming, the Anbernic 353V is a solution worth considering.
Iâm not saying itâs perfect, because it obviously has its pros and cons, but I personally found it to be a good quality portable console that offers a wide choice of emulators at an affordable price.
If you want to know everything, but really everything about Anbernic consoles, I recommend you check out awesome-anbernic, where you can find information about the various consoles, custom firmware, and much more.
New year, new website?
Hi everyone.
Hope you had a good time with your family or friends on New Yearâs Eve.
The act of starting something means hard commitment and sacrifice in our lives.
Maybe not, if you like what youâre doing, but most of the time, if you are not following just one topic at time, you will have plenty of things to do.
Well, when Iâve started this blog, I planned to just have a personal space. Unfortunately this is no more possible: I have started a lot of projects , and I have less time for each of them.
Probably I need to move on some old projects, or just keep them and donât take newer ones.
Anyway, hereâs the thing: I will simply change this homepage. You can still reach these pages at dag7.it/blog but on the main page I will probably build a custom homepage to present myself in a semi-stylish way.
One more thing: not sure about the language. I like to write both in english and in italian, but sometimes I search things in italian, some other times in english.
I frankly donât know what to keep and what I should throw away.
I can keep both of them, but it was hard to consistently post each month.