Leipzig Gophers
blog

🔗Meetup #31 wrap-up

Personal Cloud

On 2022-10-18 19:00 CEST we had our #31 meetup, this time at Basislager Coworking and with a hybrid setup (that still needs some improvement, but we’re getting there).

Max Eusterbrock and his colleague Aavash Shrestha told us about The personal cloud and the monster that makes it. In this presentation they gave us a preview on one of their new platforms that provides one-click hosting of applications, which they demonstrated with the deployment of a note taking service. One of the great things about this new platform was that anyone is able to install services, without requiring preliminary knowledge on cloud services, and that the client also owns the data that is produced by the installed service. This is in contrast to common cloud services where you just create an account and all your data is owned and stored by whoever runs the service. Aavash gave us a deep dive on the architecture of the new platform, explaining how they isolate workloads, and also how they designed it to easily scale with increased load.

Misc

One of our meetup attendees asked about creating PDF files in Go, which is a potential topic for a future meetup, but because of the lack of experience with this domain we could just recommend an article that was featured in a recent golangweekly issue called How To Create a PDF in Go: A Step-By-Step Tutorial (medium).

Also, someone stumbled upon a very common Go gotcha which is about value references in range loops. There was a Go language proposal by Russ Cox, just a couple of days ago, to implicitly redefine loop variables. Assume we have the following code

xs := []*string{}
for _, v := range []string{"a", "b", "c"} {
    xs = append(xs, &v)
}

what do you think will be the value of xs after the loop? It’s not what most people would expect, that is ["a", "b", "c"]. To get the expected output you need to redefine the loop variable

xs := []*string{}
for _, v := range []string{"a", "b", "c"} {
    v := v
    xs = append(xs, &v)
}

which is not obvious (playground).


Join our meetup to get notified of upcoming events!