Feed

👻 Guest User
Aggregodo, Š 2025 OctoSpacc

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.
Home on Dag's home about 2 months ago
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.
Home on Dag's home about 2 months ago
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
Home on Dag's home about 2 months ago
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
Home on Dag's home 2 months ago
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Home on Dag's home 2 months ago
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?
Home on Dag's home 2 months ago
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.
Home on Dag's home 3 months ago
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!
Home on Dag's home 5 months ago
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.
Home on Dag's home 9 months ago
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.
Home on Dag's home 10 months ago
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!
Home on Dag's home 10 months ago
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>
Home on Dag's home 12 months ago
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
Home on Dag's home about 1 year ago
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==
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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 #
Home on Dag's home about 1 year ago
Zona Warpa Torino 2025
È stato fighissimo il Gabrio, ed è stato bello suonare per le persone che c’erano al suo interno.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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!
Home on Dag's home almost 2 years ago
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).
Home on Dag's home about 2 years ago
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)
Home on Dag's home over 2 years ago
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.
Home on Dag's home over 2 years ago
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.
Home on Dag's home almost 3 years ago
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.
Home on Dag's home about 2 months ago
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.
Home on Dag's home about 2 months ago
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
Home on Dag's home about 2 months ago
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
Home on Dag's home 2 months ago
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Home on Dag's home 2 months ago
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?
Home on Dag's home 2 months ago
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.
Home on Dag's home 3 months ago
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!
Home on Dag's home 5 months ago
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.
Home on Dag's home 9 months ago
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.
Home on Dag's home 10 months ago
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!
Home on Dag's home 10 months ago
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>
Home on Dag's home 12 months ago
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
Home on Dag's home about 1 year ago
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==
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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 #
Home on Dag's home about 1 year ago
Zona Warpa Torino 2025
È stato fighissimo il Gabrio, ed è stato bello suonare per le persone che c’erano al suo interno.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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!
Home on Dag's home almost 2 years ago
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).
Home on Dag's home about 2 years ago
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)
Home on Dag's home over 2 years ago
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.
Home on Dag's home over 2 years ago
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.
Home on Dag's home almost 3 years ago
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.
Home on Dag's home about 2 months ago
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.
Home on Dag's home about 2 months ago
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
Home on Dag's home about 2 months ago
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
Home on Dag's home 2 months ago
Questo è un altro test sulle now pages
Aspetta, fermi tutti, mi state dicendo che posso fare un insieme di now pages?
Home on Dag's home 2 months ago
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?
Home on Dag's home 2 months ago
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.
Home on Dag's home 3 months ago
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!
Home on Dag's home 5 months ago
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.
Home on Dag's home 9 months ago
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.
Home on Dag's home 10 months ago
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!
Home on Dag's home 10 months ago
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>
Home on Dag's home 12 months ago
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
Home on Dag's home about 1 year ago
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==
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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.
Home on Dag's home about 1 year ago
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 #
Home on Dag's home about 1 year ago
Zona Warpa Torino 2025
È stato fighissimo il Gabrio, ed è stato bello suonare per le persone che c’erano al suo interno.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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:
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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.
Home on Dag's home over 1 year ago
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!
Home on Dag's home almost 2 years ago
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).
Home on Dag's home about 2 years ago
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)
Home on Dag's home over 2 years ago
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.
Home on Dag's home over 2 years ago
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.
Home on Dag's home almost 3 years ago