Skip to content

Commit afb2e61

Browse files
authored
feat: add fosdem slides (#68)
* 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]>
1 parent b8bd6b5 commit afb2e61

File tree

15 files changed

+170
-1
lines changed

15 files changed

+170
-1
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ presentations.
99

1010
|Date |Title |Speakers |Presentation |Recording |
1111
|---- |----- |-------- |------------ |--------- |
12+
|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) |--- |
1213
|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) |--- |
1314
|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) |
1415
|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) |
1516
|2024.08.05 |Intro to gno.land |[@leohhhn](https://github.com/leohhhn) |[Slides](https://docs.google.com/presentation/d/1tnplCWxhg-RFatDS3w1iJnO0vSfBAuw2ZA0ommNJQOU/edit?usp=sharing) |--- |
16-
|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) |
1717
|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) |
18+
|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) |
1819
|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) |
1920
|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) |
2021
|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) |
@@ -47,6 +48,8 @@ presentations.
4748

4849

4950

51+
52+
5053
_This table is autogenerated based on the [./presentations](./presentations) folder._
5154

5255
## Resources
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
runx:
2+
cd ..; go run github.com/soypat/go-presentx -http 0.0.0.0:3999 -base ../.presentx
3+
4+
run:
5+
cd ..; go run golang.org/x/tools/cmd/present -http 0.0.0.0:3999 # -base ../..
6+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.png
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package counter
2+
3+
import "strconv"
4+
5+
var counter int
6+
7+
func Incr() {
8+
counter += 1
9+
}
10+
11+
func Render(_ string) string {
12+
return "my decentralized counter: " + strconv.Itoa(counter)
13+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package main
2+
3+
func main() {
4+
println("Hello, Fosdem! It's Manfred.")
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package hello
2+
3+
func Hello() string {
4+
return "hello world"
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package alice
2+
3+
var x int
4+
func GetX() int { return x }
5+
func SetX(n int) { x = n }
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package bob
2+
3+
import "alice"
4+
5+
func IncrAlice() {
6+
x := alice.GetX()
7+
alice.SetX(x + 1)
8+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
gnokey maketx call \
2+
-pkgpath "gno.land/r/leon/fosdem25/microposts" \
3+
-func "CreatePost" \
4+
-args "Hello FOSDEM people! Welcome <3" ...
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
we’re building a user-owned internet
2+
where governance is fair,
3+
development is open,
4+
and innovation is rewarded.
Loading
Loading
Loading
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Date of the workshop
2+
date: "2025-02-01"
3+
# Title of the workshop
4+
title: "building decentralized apps in go: meet gno"
5+
# GitHub usernames of the speakers
6+
speakers:
7+
- "moul"
8+
# Location of the workshop
9+
location: "Brussels, Belgium"
10+
# At which event the workshop took place, if any
11+
event: "FOSDEM 2025"
12+
# Workshop slides link. If the link is local, only put the file name, without any other path parts.
13+
slides: "https://gnolang.github.io/workshops/presentations/2025-02-01--fosdem--manfred/presentation.slide.html#1"
14+
# Workshop recording
15+
#recording: ""
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# building decentralized apps in go: meet gno
2+
Fosdem, 1 Feb 2025, Brussels
3+
Tags: golang, gnolang
4+
Summary: TODO
5+
6+
Manfred Touron
7+
VP Eng., gno.land
8+
https://gno.land/
9+
https://github.com/gnolang
10+
@moul
11+
12+
## bonjour, FOSDEM!
13+
14+
.code ./code/hello.go
15+
16+
- manfred touron (@moul)
17+
- built scaleway, berty, now gno
18+
- stuck with go for 10 years
19+
- unapologetically open-source maximalist
20+
21+
## intro
22+
23+
- go is an amazing language: simple, efficient, safe
24+
- not built for decentralized apps (dapps)
25+
- existing decentralized app platforms are complex, fragmented, and unfamiliar
26+
- what if you could write dapps in pure go?
27+
- meet gno: go for dapps, designed for modularity, composability, and safety
28+
29+
## gno in one sentence
30+
31+
gno is a **transactional vm**<br/>
32+
that lets you write **decentralized apps** in **go**,<br/>
33+
with built-in **state persistence** and **safe execution**.
34+
35+
## gno hello world
36+
37+
<br/>
38+
<br/>
39+
<br/>
40+
<br/>
41+
<br/>
42+
43+
.code ./code/hello_world.gno
44+
45+
## the gno paradigm
46+
47+
- **no json, no grpc**: function calls instead of rpc
48+
- **no orm, no db drivers**: state is a first-class concept
49+
- **no external dependencies**: everything is go code
50+
- **no bytecode**: interpreted, readable go syntax
51+
- **no hidden magic**: all code is visible and auditable
52+
53+
\... but it's just like go.
54+
55+
## persistence: counter.gno
56+
57+
.code ./code/counter.gno
58+
59+
- global variables persist across transactions
60+
- no need for external storage or db
61+
62+
## microposts.gno
63+
64+
.image ./img/microposts.png _ 1000
65+
66+
## microposts demo
67+
68+
.image ./img/micropost1.png _ 500
69+
70+
.code ./code/micropost-query.sh
71+
72+
.image ./img/micropost2.png _ 500
73+
74+
[gno.land/r/leon/fosdem25/microposts](https://gno.land/r/leon/fosdem25/microposts)
75+
76+
## interoperability: alice.gno & bob.gno
77+
78+
Another app could use micropost...
79+
80+
.code ./code/interop.gno
81+
.code ./code/interop2.gno
82+
83+
- call functions from other contracts like normal go packages
84+
- no need for low-level calls or address casting
85+
86+
## conclusion
87+
88+
<br/>
89+
90+
.code ./code/we-are-building.txt
91+
92+
<br/>
93+
94+
- gno makes go the first-class language for decentralized applications
95+
- if you know go, you already know gno
96+
- opportunities for developers to contribute and innovate
97+
- -> https://gno.land
98+
99+
<br/>
100+
thank you!

0 commit comments

Comments
 (0)