Skip to content

Commit

Permalink
feat: add fosdem slides (#68)
Browse files Browse the repository at this point in the history
* feat: add fosdem slides

Signed-off-by: moul <[email protected]>

* chore: fixup

Signed-off-by: moul <[email protected]>

* chore: fixup

Signed-off-by: moul <[email protected]>

* chore: fixup

Signed-off-by: moul <[email protected]>

* chore: fixup

Signed-off-by: moul <[email protected]>

---------

Signed-off-by: moul <[email protected]>
  • Loading branch information
moul authored Feb 1, 2025
1 parent b8bd6b5 commit afb2e61
Show file tree
Hide file tree
Showing 15 changed files with 170 additions and 1 deletion.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ presentations.

|Date |Title |Speakers |Presentation |Recording |
|---- |----- |-------- |------------ |--------- |
|2025.02.01 |building decentralized apps in go: meet gno |[@moul](https://github.com/moul) |[Slides](https://gnolang.github.io/workshops/presentations/2025-02-01--fosdem--manfred/presentation.slide.html#1) |--- |
|2025.01.09 |Designing Seamless Interconnected dApps with Gno |[@moul](https://github.com/moul) |[Slides](https://gnolang.github.io/workshops/presentations/2025-01-09--buidleu--manfred/presentation.slide.html#1) |--- |
|2024.09.23 |Distributed Communities - How to build timeless and decentralized apps, with Go |[@thehowl](https://github.com/thehowl) |[Slides](https://gnolang.github.io/workshops/presentations/2024-09-23--distributed-communities--morgan/slides.html) |[Video](https://www.youtube.com/watch?v=b3zRbVcJxyE) |
|2024.08.20 |A gentle intro to gno.land |[@leohhhn](https://github.com/leohhhn) |[Slides](presentations/2024-08-20--gentle-intro-to-gnoland--leon/presentation.pdf) |[Video](https://www.youtube.com/watch?v=hTGeG0z09NU) |
|2024.08.05 |Intro to gno.land |[@leohhhn](https://github.com/leohhhn) |[Slides](https://docs.google.com/presentation/d/1tnplCWxhg-RFatDS3w1iJnO0vSfBAuw2ZA0ommNJQOU/edit?usp=sharing) |--- |
|2024.07.13 |Gno: Examples and Comparisons |[@moul](https://github.com/moul) |[Slides](https://gnolang.github.io/workshops/presentations/2024-07-13--nebular--manfred/presentation.slide.html#1) |[Video](https://www.youtube.com/watch?v=Zsl3xu_Edcc) |
|2024.07.13 |Building with Gno.land: A Practical Workshop on Smart Contracts |[@gfanton](https://github.com/gfanton) |[Slides](presentations/2024-07-13--nebular--gfanton/README.md) |[Video](https://www.youtube.com/watch?v=oBQ-t_E0QpI) |
|2024.07.13 |Gno: Examples and Comparisons |[@moul](https://github.com/moul) |[Slides](https://gnolang.github.io/workshops/presentations/2024-07-13--nebular--manfred/presentation.slide.html#1) |[Video](https://www.youtube.com/watch?v=Zsl3xu_Edcc) |
|2024.07.09 |Building a Deterministic Interpreter in Go: Readability vs Performance |[@jaekwon](https://github.com/jaekwon) |[Slides](presentations/2024-07-09--gophercon-us--jae) |[Video](https://www.youtube.com/watch?v=betUkghf_jo) |
|2024.07.08 |Building a Decentralized App on gno.land |[@deelawn](https://github.com/deelawn) |[Slides](presentations/2024-07-08--gophercon-us--dylan) |[Video](https://www.youtube.com/watch?v=lwL2VyjaV-A) |
|2024.06.17 |Envisioning a Go-Powered Ecosystem: The Ultimate Go Computer |[@moul](https://github.com/moul) |[Slides](presentations/2024-06-17--gophercon-berlin--manfred) |[Video](https://youtu.be/dLE2-8QPK64?si=IidxNLGrwwS6jbYL) |
Expand Down Expand Up @@ -47,6 +48,8 @@ presentations.





_This table is autogenerated based on the [./presentations](./presentations) folder._

## Resources
Expand Down
6 changes: 6 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
runx:
cd ..; go run github.com/soypat/go-presentx -http 0.0.0.0:3999 -base ../.presentx

run:
cd ..; go run golang.org/x/tools/cmd/present -http 0.0.0.0:3999 # -base ../..

1 change: 1 addition & 0 deletions presentations/2025-02-01--fosdem--manfred/code/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.png
13 changes: 13 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/code/counter.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package counter

import "strconv"

var counter int

func Incr() {
counter += 1
}

func Render(_ string) string {
return "my decentralized counter: " + strconv.Itoa(counter)
}
5 changes: 5 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/code/hello.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package main

func main() {
println("Hello, Fosdem! It's Manfred.")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package hello

func Hello() string {
return "hello world"
}
5 changes: 5 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/code/interop.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package alice

var x int
func GetX() int { return x }
func SetX(n int) { x = n }
8 changes: 8 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/code/interop2.gno
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package bob

import "alice"

func IncrAlice() {
x := alice.GetX()
alice.SetX(x + 1)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
gnokey maketx call \
-pkgpath "gno.land/r/leon/fosdem25/microposts" \
-func "CreatePost" \
-args "Hello FOSDEM people! Welcome <3" ...
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
we’re building a user-owned internet
where governance is fair,
development is open,
and innovation is rewarded.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/metadata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Date of the workshop
date: "2025-02-01"
# Title of the workshop
title: "building decentralized apps in go: meet gno"
# GitHub usernames of the speakers
speakers:
- "moul"
# Location of the workshop
location: "Brussels, Belgium"
# At which event the workshop took place, if any
event: "FOSDEM 2025"
# Workshop slides link. If the link is local, only put the file name, without any other path parts.
slides: "https://gnolang.github.io/workshops/presentations/2025-02-01--fosdem--manfred/presentation.slide.html#1"
# Workshop recording
#recording: ""
100 changes: 100 additions & 0 deletions presentations/2025-02-01--fosdem--manfred/presentation.slide
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# building decentralized apps in go: meet gno
Fosdem, 1 Feb 2025, Brussels
Tags: golang, gnolang
Summary: TODO

Manfred Touron
VP Eng., gno.land
https://gno.land/
https://github.com/gnolang
@moul

## bonjour, FOSDEM!

.code ./code/hello.go

- manfred touron (@moul)
- built scaleway, berty, now gno
- stuck with go for 10 years
- unapologetically open-source maximalist

## intro

- go is an amazing language: simple, efficient, safe
- not built for decentralized apps (dapps)
- existing decentralized app platforms are complex, fragmented, and unfamiliar
- what if you could write dapps in pure go?
- meet gno: go for dapps, designed for modularity, composability, and safety

## gno in one sentence

gno is a **transactional vm**<br/>
that lets you write **decentralized apps** in **go**,<br/>
with built-in **state persistence** and **safe execution**.

## gno hello world

<br/>
<br/>
<br/>
<br/>
<br/>

.code ./code/hello_world.gno

## the gno paradigm

- **no json, no grpc**: function calls instead of rpc
- **no orm, no db drivers**: state is a first-class concept
- **no external dependencies**: everything is go code
- **no bytecode**: interpreted, readable go syntax
- **no hidden magic**: all code is visible and auditable

\... but it's just like go.

## persistence: counter.gno

.code ./code/counter.gno

- global variables persist across transactions
- no need for external storage or db

## microposts.gno

.image ./img/microposts.png _ 1000

## microposts demo

.image ./img/micropost1.png _ 500

.code ./code/micropost-query.sh

.image ./img/micropost2.png _ 500

[gno.land/r/leon/fosdem25/microposts](https://gno.land/r/leon/fosdem25/microposts)

## interoperability: alice.gno & bob.gno

Another app could use micropost...

.code ./code/interop.gno
.code ./code/interop2.gno

- call functions from other contracts like normal go packages
- no need for low-level calls or address casting

## conclusion

<br/>

.code ./code/we-are-building.txt

<br/>

- gno makes go the first-class language for decentralized applications
- if you know go, you already know gno
- opportunities for developers to contribute and innovate
- -> https://gno.land

<br/>
thank you!

0 comments on commit afb2e61

Please sign in to comment.