TinyGo, petit mais costaud ! đŸ’Ș

A presentation at Voxxed Days Luxembourg in June 2024 in Luxembourg by Thierry Chantier

Slide 1

Slide 1

TinyGo, Petit mais costaud đŸ’Ș đŸŒ Thierry Chantier - @TitiMoby

Slide 2

Slide 2

Thierry Chantier DevRel @OVHcloud TitiMoby@mamot.fr TitiMoby 🔗 https://noti.st/titimoby

Slide 3

Slide 3

Celle sans qui ce talk n’aurait pas vu le jour

Slide 4

Slide 4

Aurélie Vache @aurelievache Les Productions de MOA

Slide 5

Slide 5

La petite histoire đŸŒ

Slide 6

Slide 6

La petite histoire đŸŒ

Slide 7

Slide 7

La petite histoire đŸŒ

Slide 8

Slide 8

La petite histoire 🐼 - Wow!!! FOSDEM 2020

Slide 9

Slide 9

La petite histoire 🐼 - sĂ©rie d’Article sur Go

Slide 10

Slide 10

La petite histoire 🐼 - ExpĂ©rimentations TinyGo @conejo

Slide 11

Slide 11

La petite histoire 🐼 - sĂ©rie d’Article sur Go

Slide 12

Slide 12

TinyGo Go compiler for “small places”: - Microcontrollers - Web Assembly https://tinygo.org/docs/reference/microcontrollers/

Slide 13

Slide 13

TinyGo 7/06/2018 : Le tout premier commit grĂące Ă  Ayke, TinyGo est nĂ© ! 🎉

Slide 14

Slide 14

TinyGo 01/02/2019 : PremiĂšre release v0.1. 03/02/2019 : Au FOSDEM TinyGo est mis en avant & l’évangĂ©lisation est alors portĂ©e par Ron Evans (@deadprogram).

Slide 15

Slide 15

TinyGo 02/02/2020 : Toujours trĂšs visible au FOSDEM, TinyGo devient un projet sponsorisĂ© officiellement par Google. L’arrivĂ©e de WASM en cible de compilation confirme le succĂšs de TinyGo.

Slide 16

Slide 16

TinyGo Le projet sur GitHub a dépassé les 14K ⭐

Slide 17

Slide 17

Go vs TinyGo vs

Slide 18

Slide 18

Go vs TinyGo go build -o hello-go main.go 1,9M hello-go | tinygo build -o hello-tinygo 33K hello-tinygo

Slide 19

Slide 19

TinyGo: les petits secrets

Slide 20

Slide 20

TinyGo CLI: comment l’installer ? https://tinygo.org/getting-started/install/

Slide 21

Slide 21

demos!

Slide 22

Slide 22

Microbit ● ● ● CrĂ©ation en 2016 Ă  l’initiative du gouvernement UK Simple mais complĂšte Programmable par bloc, Python
 https://microbit.org/

Slide 23

Slide 23

GopherBadge ● ● ● ● ● ● ● ● ● CrĂ©ation en 2023 par Daniel “@conejo” Esteban PensĂ© pour promouvoir TinyGo BasĂ© sur un Raspberry Pi RP2040 1 LED bleue 2 LEDs RGB Neopixel AccĂ©lĂ©romĂštre LIS3DHTR Ecran 320x240 IPS TFT 6 boutons buzzer https://gopherbadge.com/

Slide 24

Slide 24

Game Boy Advance

Slide 25

Slide 25

Game Boy Advance ● ● ● ● Ecran 240x160px 32 768 couleur (15-bit) Un pad multidirectionnel, boutons “A”, “B”, “L”, “R”, “START” & “SELECT” Core ARM7TDMI 32 bits avec mĂ©moire intĂ©grĂ©e

Slide 26

Slide 26

Game Boy Advance > demo

Slide 27

Slide 27

Game Boy Advance > demo 2,7K 3 jan 18:42 06-Eyes/eyes.gba https://github.com/titimoby/tinygo-examples/tree/main/gba/06-Eyes

Slide 28

Slide 28

Game Boy Advance > demo

Slide 29

Slide 29

Game Boy Advance > demo 33K 4 jan 13:50 03-Gopher/gopher.gba https://github.com/titimoby/tinygo-examples/tree/main/gba/03-Gopher

Slide 30

Slide 30

Game Boy Advance > demo

Slide 31

Slide 31

Game Boy Advance > demo 14K 3 jan 20:55 08-LetsDraw/telecran.gba https://github.com/titimoby/tinygo-examples/tree/main/gba/08-LetsDraw

Slide 32

Slide 32

Game Boy Advance Commande : Emulateur : https://mgba.io/

Slide 33

Slide 33

Outils pratiques

Slide 34

Slide 34

TinyDraw Permet de dessiner des figures géométriques (basé sur la librairie Adafruit GFX). https://github.com/tinygo-org/tinydraw

Slide 35

Slide 35

TinyFont Permet d‘afficher du texte/d’utiliser des “fonts” (basĂ© sur la librairie Adafruit GFX). https://github.com/tinygo-org/tinyfont

Slide 36

Slide 36

TinyFont > 2ttf playground Permet de tester des fonts avant de les utiliser. http://2ttf.com/typetest.php?id=HCQ3PvcaQ4U

Slide 37

Slide 37

TinyGBA Librairie pour TinyGo permettant de développer pour la Game Boy Advance. < Without tinygba With tinygba > https://github.com/tinygo-org/tinygba

Slide 38

Slide 38

TinyGo playground https://play.tinygo.org/

Slide 39

Slide 39

VsCode extension

Slide 40

Slide 40

Ressources ● https://github.com/titimoby/tinygo-examples/ ● https://dev.to/aurelievache/learning-go-by-examples -part-5-create-a-game-boy-advance-gba-game-in-go-59 44 ● https://tontoncodeur.fr/tinygo/ ● https://k33g.hashnode.dev/wazero-cookbook-part-onewasm-function-host-application https://gophers.slack.com/messages/CDJD3SUP6/

Slide 41

Slide 41

Conclusion

Slide 42

Slide 42

TinyGo, un monde parfait ? DĂ©buter est un peu difficile : - Documentation en progrĂšs mais pas encore parfaite

Slide 43

Slide 43

TinyGo, un monde parfait ? Débuter est un peu difficile : - Documentation en progrÚs mais pas encore parfaite - Des exemples 
 pas forcément mis à jour et clairs

Slide 44

Slide 44

TinyGo, un monde parfait ? DĂ©buter est un peu difficile : - Documentation en progrĂšs mais pas encore parfaite - Des exemples 
 pas forcĂ©ment mis Ă  jour et clairs - Mais, des progrĂšs ont Ă©tĂ© fait grĂące Ă  Gopher Badge et @conejo đŸ’Ș https://github.com/conejoninja/gopherbadge/tree/main/tutorial/basics

Slide 45

Slide 45

TinyGo, un monde parfait ? DĂ©buter est un peu difficile : - Certains drivers sont encore en version “expĂ©rimentales” donc soumis Ă  changements (GBA
)

Slide 46

Slide 46

TinyGo, un monde parfait ? DĂ©buter est un peu difficile : - Certains drivers sont encore en version “expĂ©rimentales” donc soumis Ă  changements (GBA
) - Certaines fonctionnalitĂ©s sont commencĂ©es mais pas terminĂ©es

Slide 47

Slide 47

TinyGo, un monde parfait ? Pourquoi c’est tellement cool de se lancer : - Apprendre un nouveau langage

Slide 48

Slide 48

🐼 TinyGo, un monde parfait ? Pourquoi c’est tellement cool de se lancer : - Apprendre un nouveau langage - Bricoler et s’amuser avec de l’ Ă©lectronique

Slide 49

Slide 49

TinyGo, un monde parfait ? Pourquoi c’est tellement cool de se lancer : - Apprendre un nouveau langage - Bricoler et s’amuser avec de l’ Ă©lectronique - 
 Faire vivre sa GBA c’est tellement cool !

Slide 50

Slide 50

TinyGo, un monde parfait ? A vous de jouer !