{"id":21620739,"url":"https://github.com/miku/workshops","last_synced_at":"2025-04-11T09:13:44.096Z","repository":{"id":37770298,"uuid":"157425713","full_name":"miku/workshops","owner":"miku","description":"A level of indirection.","archived":false,"fork":false,"pushed_at":"2024-12-18T15:12:59.000Z","size":5977,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T06:33:15.531Z","etag":null,"topics":["data","golang","python","talks","workshop"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miku.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-13T18:19:15.000Z","updated_at":"2024-12-18T15:13:03.000Z","dependencies_parsed_at":"2023-11-23T13:46:45.047Z","dependency_job_id":"c16684f5-ca35-4198-82a0-03a94f1599bf","html_url":"https://github.com/miku/workshops","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fworkshops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fworkshops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fworkshops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miku%2Fworkshops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miku","download_url":"https://codeload.github.com/miku/workshops/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248365281,"owners_count":21091760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data","golang","python","talks","workshop"],"created_at":"2024-11-24T23:12:35.739Z","updated_at":"2025-04-11T09:13:44.087Z","avatar_url":"https://github.com/miku.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workshops and Talks\n\nOver time I prepared various presentations and workshops, with their content\nscattered over gists and repositories. This is merely a metarepo keeping track\nof a few things, in rough chronological order (with\n[some](https://github.com/miku/mdma-slides),\n[things](https://github.com/miku/zeromq-slides),\n[left](https://github.com/miku/elasticsearch-slides),\n[out](https://github.com/miku/siskin/blob/master/docs/ai-overview/slides.md)).\n\n* [Cloning isn't just for sheeps and galactic empires (git)](https://github.com/miku/workshops#cloning-isnt-just-for-sheeps-and-galactic-empires-git)\n* [Complex workflows with Luigi (Python)](https://github.com/miku/workshops#complex-workflows-with-luigi-python)\n* [Neural Nets intro (Python)](https://github.com/miku/workshops#neural-nets-intro-python)\n* [Exploring Readers and Writers (Go)](https://github.com/miku/workshops#exploring-readers-and-writers-go)\n* [Hands-On Lab: Build Your Own Index (data)](https://github.com/miku/workshops#hands-on-lab-build-your-own-index-data)\n* [Hello Golang (Go)](https://github.com/miku/workshops#hello-golang-go)\n* [PyTorch Tour (Python)](https://github.com/miku/workshops#pytorch-tour-python)\n* [Data Processing 101 (Python)](https://github.com/miku/workshops#data-processing-101-with-python)\n* [Hello Golang One Day Tour (Go)](https://github.com/miku/workshops#hello-golang-go-1)\n* [Turn data into Go structs (Go)](https://github.com/miku/workshops#turn-data-into-go-struct-go)\n* [Machine Learning with Go (Go)](https://github.com/miku/workshops#machine-learning-with-go-go)\n* [Packaging Python Applications (Python)](https://github.com/miku/workshops#packaging-python-python)\n* [Batch data processing with Luigi (Python)](https://github.com/miku/workshops#batch-data-processing-with-luigi-python)\n* [Git bits (git)](https://github.com/miku/workshops#git-bits-git)\n* [Intro to Go modules (Go)](https://github.com/miku/workshops#intro-to-go-modules)\n* [Go in 6 hours (Go)](https://github.com/miku/workshops#go-in-6-hours)\n* [A short tour through net and net/http (Go)](https://github.com/miku/workshops#a-short-tour-through-net-and-nethttp)\n* [IO in 15 minutes (Go)](https://github.com/miku/workshops#io-in-15-minutes)\n* [Review of Concurrency in Go (Go)](https://github.com/miku/workshops#review-of-concurrency-in-go)\n* [Creative Jupyter (Python, data)](https://github.com/miku/workshops#creative-jupyter)\n* [Beautiful I/O (Go)](https://github.com/miku/workshops#beautiful-io)\n* [Writing robust concurrent programs (Go)](https://github.com/miku/workshops#writing-robust-concurrent-programs)\n* [Library Carpentry UBL (git)](https://github.com/miku/workshops#library-carpentry-ubl)\n* [HTTP Getaway 1 Extension Points (Go)](https://github.com/miku/workshops#http-getaway-1-extension-points)\n* [HTTP Getaway 2 Intro to Proxies (Go)](https://github.com/miku/workshops#http-getaway-2-intro-to-proxies)\n* [Library Carpentry AALS (git)](https://github.com/miku/workshops#library-carpentry-aals)\n* [Haystack (Go, data)](https://github.com/miku/workshops#haystack)\n* [Productive Go (Go)](https://github.com/miku/workshops#productive-go)\n* [Fast filters in Go (Go, Unix)](https://github.com/miku/workshops#fast-filters-in-go)\n* [(Fuzzy) Matching with command line tools and Go (Go, data)](https://github.com/miku/workshops#fuzzy-matching-with-command-line-tools-and-go)\n* [Seeking Data (Go, data)](https://github.com/miku/workshops/#seeking-data)\n* [Go for programmers (Go)](https://github.com/miku/workshops/#go-for-programmers)\n* [A data web service (Go, data)](https://github.com/miku/workshops/#a-data-web-service)\n* [The rsync for the cloud era: Rclone (Go)](https://github.com/miku/workshops/#the-rsync-for-the-cloud-era-rclone)\n* [Glamorous command line apps (Go)](https://github.com/miku/workshops/#glamorous-command-line-apps)\n* [State of Go in 2022 (Go)](https://github.com/miku/workshops#state-of-go-in-2022)\n* [Go energy efficiency (Go)](https://github.com/miku/workshops#go-energy-efficiency)\n* [Sustainability and security in the Go ecosystem (Go)](https://github.com/miku/workshops#sustainability-and-security-in-the-go-ecosystem)\n* [Cgo experiments (Go, C)](https://github.com/miku/workshops#cgo-experiments)\n* [Ollama Testdrive (Go, data)](https://github.com/miku/workshops#ollama-testdrive)\n* [Notes on Prompt Engineering (data)](https://github.com/miku/workshops#notes-on-prompt-engineering)\n* [1BRC in Go (Go, data)](https://github.com/miku/workshops#1brc-in-go)\n* [Exercises in Performance Optimizations (Go, data)](https://github.com/miku/workshops#exercises-in-performance-optimizations)\n* [Run your own VPN with headscale (Go, net)](https://github.com/miku/workshops#run-your-own-vpn-with-headscale)\n\n\n## Cloning isn't just for sheeps and galactic empires (git)\n\n* 2014-12-16, internal presentation\n* [https://gist.github.com/miku/430b9ea1b4f18f7dc88a](https://gist.github.com/miku/430b9ea1b4f18f7dc88a)\n\n![](images/git.png)\n\n\n## Complex Workflows with Luigi (Python)\n\n* [LPUG](https://www.meetup.com/Leipzig-Python-User-Group/) -- Nov 10, 2015\n* [https://github.com/miku/lpug-luigi](https://github.com/miku/lpug-luigi)\n* Thanks to [kampfschlaefer](https://github.com/kampfschlaefer) for introducing\n  me to [Nix](https://github.com/kampfschlaefer/nix-topartists), the [purely\nfunctional package manager](https://nixos.org/nix/).\n\n![](images/marc.png)\n\n\n## Neural nets intro (Python)\n\n* At [Leipzig Python User\n  Group](https://www.meetup.com/Leipzig-Python-User-Group/) Meeting at\n[Basislager](https://www.basislager.co/), 2016-11-08, 7PM CET, with\n[Philipp](https://github.com/philipphanemann)\n* [https://github.com/miku/nntour](https://github.com/miku/nntour)\n\n![](images/nntour.png)\n\n\n## Exploring readers and writers (Go)\n\n* [Golab.io](https://www.golab.io/), January 21, 2017, Prato (IT)\n* [https://github.com/miku/exploreio](https://github.com/miku/exploreio)\n\n![](images/exploreio.png)\n\n\n## Hands-On Lab: Build Your Own Index (data)\n\n* three-hour lab at [*Deutscher Bibliothekartag*](https://de.wikipedia.org/wiki/Bibliothekartag#Bibliothekartag), 2017-06-02, Frankfurt am Main, with [Tracy](https://twitter.com/nabatz)\n* [https://github.com/miku/siskin/blob/master/docs/btag-2017/btag-2017.md](https://github.com/miku/siskin/blob/master/docs/btag-2017/btag-2017.md)\n\n![](images/ai5.png)\n\n\n## Hello Golang (Go)\n\n* Material presented at [jenadevs\n  meetup](https://www.meetup.com/de-DE/jenadevs/) 008, June 8, 2017 18:00 CEST\nat [Friedrich-Schiller-Universität Jena](https://www.uni-jena.de/).\n* [https://github.com/miku/hellogolang](https://github.com/miku/hellogolang)\n\n![](images/jenadevs.png)\n\n\n## PyTorch tour (Python)\n\nA short tour through PyTorch.\n\n* At [Leipzig Python User Group](https://www.meetup.com/Leipzig-Python-User-Group/), 2018-02-13 19:00 at [Basislager](https://www.basislager.co/).\n* [https://github.com/miku/pytorch-tour](https://github.com/miku/pytorch-tour)\n\n![](images/autograd.png)\n\n\n## Data Processing 101 with Python\n\n* 2018-04-15 14:00-15:00, Input session for [Coding da Vinci Ost\n  2018](https://codingdavinci.de/events/ost/)\n* [https://github.com/miku/sundaypython](https://github.com/miku/sundaypython)\n\n![](images/cdvost.png)\n\n\n## Hello Golang (Go)\n\n* 2018-10-12, 09:00-17:00, at [devopenspace](https://devopenspace.de/), [Basislager](https://www.basislager.co/), Leipzig\n* A one day introductory Golang workshop, exploring Go through the [Go tour](https://tour.golang.org/)\n* [https://github.com/miku/golangintro](https://github.com/miku/golangintro)\n* [binpic](https://github.com/miku/binpic) was inspired by one of the many\n  interesting conversations at devopenspace\n\n![](images/hellogolang.png)\n\n\n## Turn data into Go struct (Go)\n\n* Lightning talk at [Golab](https://www.golab.io/) 2018, 2018-10-22, 18:00\n* [https://gist.github.com/miku/39e4273d15abfd7e4297071338da3349](https://gist.github.com/miku/39e4273d15abfd7e4297071338da3349)\n\n![](images/99.png)\n\n\n## Machine Learning with Go (Go)\n\n* A short tour through ML libraries in Go, [golab 2018](https://golab.io), 2018-10-23, 10:30-12:00, Florence (IT)\n* [https://github.com/miku/mlgo](https://github.com/miku/mlgo)\n\n![](images/117570.png)\n\n## Packaging Python (Python)\n\n* Dists, zips, debs and docker, 2018-11-17 at [PyconBalkan](https://pyconbalkan.com/), Belgrade (SRB)\n* [https://github.com/miku/packpy](https://github.com/miku/packpy)\n\n![](images/gradient.png)\n\n## Batch data processing with Luigi (Python)\n\n* 2018-11-17, 17:00-18:30 at [PyConBalkan](https://pyconbalkan.com/), Belgrade (SRB)\n* [https://github.com/miku/batchdata](https://github.com/miku/batchdata)\n\n![](images/batch.png)\n\n## Git bits (git)\n\n* 2019-02-25, 12:30-13:30 at [UBL](https://www.ub.uni-leipzig.de), Leipzig\n* [https://github.com/miku/gitbits](https://github.com/miku/gitbits)\n\n![](images/gitbits.png)\n\n\n## Intro to Go modules\n\n* 2019-04-15, 19:00 at [Go and Cloud Native User Group](https://www.meetup.com/Leipzig-Golang/) [#3](https://golangleipzig.space/posts/meetup-3-wrapup/), Leipzig\n* [https://github.com/miku/gomodintro](https://github.com/miku/gomodintro)\n\n![](images/version-select-list.png)\n\n## Go in 6 hours\n\n* 2019-04-27, 10:00 at [Spartakiade 2019](https://spartakiade.org/), Berlin\n* [https://github.com/miku/golang6h](https://github.com/miku/golang6h)\n\n![](images/golang6h.png)\n\n## A short tour through net and net/http\n\n* 2019-04-28, 10:00 at [Spartakiade 2019](https://spartakiade.org/), Berlin\n* [https://github.com/miku/golangnetpkg](https://github.com/miku/golangnetpkg)\n\n![](images/golangnetpkg.png)\n\n## IO in 15 minutes\n\n* 2019-06-14, 19:00 at [Go and Cloud Native User Group](https://golangleipzig.space) [#5](https://golangleipzig.space/posts/meetup-5-wrapup/), Leipzig\n* [https://github.com/miku/io15min](https://github.com/miku/io15min)\n\n![](images/readerfrom1850.jpg)\n\n## Review of Concurrency in Go\n\n* 2019-09-27, 19:00 at [Golang User Group](https://golangleipzig.space) [#7](https://golangleipzig.space/posts/meetup-7-wrapup/), Leipzig\n* [http://github.com/miku/cignotes](http://github.com/miku/cignotes)\n\n![](images/cigch1topics.png)\n\n## Creative Jupyter\n\n* 2019-10-04, 11:30 at [PyCon Balkan 2019](https://pyconbalkan.com/), Belgrade\n* [https://github.com/miku/creativejupyter](https://github.com/miku/creativejupyter)\n\n![](images/creativejupyter.png)\n\n## Beautiful I/O\n\n* 2019-10-21, 11:15 at [GOLAB 2019](https://golab.io/), Florence\n* [https://github.com/miku/beautifulio](https://github.com/miku/beautifulio)\n\n![](images/golab2019.png)\n\n## Writing robust concurrent programs\n\n* 2019-10-22, 14:30 at [GOLAB 2019](https://golab.io/), Florence\n* [https://github.com/miku/concgo](https://github.com/miku/concgo)\n\n![](images/sleep5mu.png)\n\n## Library Carpentry UBL\n\n* 2019-11-04 \u0026mdash; 2019-11-05, 09:00\u0026mdash;16:30,\n  [Library Carpentry](https://librarycarpentry.org/),\n  [Bibliothek\n  Medizin/Naturwissenschaft](https://twitter.com/ubleipzig/status/1191676882099593217),\n  Leipzig\n* Introduction to Git, with [RG](https://github.com/geyslein/) (shell), [TH](https://github.com/thoffma) (OpenRefine), [olf42](https://github.com/olf42) (Python)\n* [website](https://ubleipzig.github.io/2019-11-04-leipzig/), [repo](https://github.com/ubleipzig/2019-11-04-leipzig), extra [material](https://github.com/miku/lc-extra)\n\n![](images/isilapi.png)\n\n## HTTP Getaway (1) Extension Points\n\n* 2020-02-21, 19:00 at [Leipzig Gophers](https://golangleipzig.space) [#9](https://golangleipzig.space/posts/meetup-9-wrapup/), Leipzig\n* [https://github.com/miku/httpgetaway/blob/master/ExtensionPoints.md](https://github.com/miku/httpgetaway/blob/master/ExtensionPoints.md)\n\n![](images/yof8.png)\n\n## HTTP Getaway (2) Intro to Proxies\n\n* 2020-09-17, 19:00 at [Leipzig Gophers](https://golangleipzig.space) [#12](https://golangleipzig.space/posts/meetup-12-wrapup/), Leipzig (remote)\n* [https://github.com/miku/httpgetaway/blob/master/ProxyIntro.md](https://github.com/miku/httpgetaway/blob/master/ProxyIntro.md)\n\n![](images/knots_5_sm.gif)\n\n## Library Carpentry AALS\n\n* 2020-10-09, 15:00\u0026mdash;19:00,\n  [Library Carpentry](https://librarycarpentry.org/),\n  [AALS](https://www.igwbs.ch/),\n  Remote\n* Git Intro, with [RM](https://github.com/RabeaMue), [KUF](https://github.com/konrad), [TS](https://github.com/Tillsa)\n* [website](https://zbmed.github.io/2020-09-21-LC_IG_WBS_online/), [repo](https://github.com/zbmed/2020-09-21-LC_IG_WBS_online/), extra [material](https://github.com/miku/lc-extra)\n\n![](images/gitcal.png)\n\n## Haystack\n\n* 2020-10-16, 19:00 CET, [Leipzig Gophers](https://golangleipzig.space/) [#13](https://golangleipzig.space/posts/meetup-13-wrapup/), Leipzig (remote)\n* [Haystack Object Storage and Go Implementation (seaweedfs)](https://github.com/miku/haystack)\n\n![](images/assembly_pic13.png)\n\n## Productive Go\n\n* 2020-12-08, 18:30 CET, [Developer Group Leipzig](https://www.meetup.com/Developer-Group-Leipzig/events/273876459/), Leipzig (remote)\n* [Productive Go](https://github.com/miku/productivego)\n\n![](images/goadvent.png)\n\n## Fast filters in Go\n\n* 2020-12-18, 19:00 CET, [Leipzig Gophers](https://golangleipzig.space) [#15](https://golangleipzig.space/posts/meetup-15-wrapup/), Leipzig (remote)\n* [Faster filters in\n  Go](https://gist.github.com/miku/738f361c8156264626c74f9b717927ff#fast-parallel-filters-in-go),\nlightning talk on [Software Tools](https://openlibrary.org/works/OL4617639W)\nand [parallel](https://github.com/miku/parallel)\n\n![](images/swtools.png)\n\n## (Fuzzy) Matching with command line tools and Go\n\n* 2021-04-20, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#17](https://golangleipzig.space/posts/meetup-17-wrapup/), Leipzig (remote)\n* [Lightning Talk: (Fuzzy) Matching with command line tools and Go](https://gist.github.com/miku/fb429faad8b856caf6bba5305af024df)\n\n![](images/6dSaW2q.png)\n\n## Seeking Data\n\n* 2021-05-25, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#18](https://golangleipzig.space/posts/meetup-18-wrapup/), Leipzig (remote)\n* [Lightning Talk: Seeking Data](https://gist.github.com/miku/6dcffb5c104bc44709c330ec90682189#seeking-data)\n\n![](images/seek-0.png)\n\n## Go for programmers\n\n* 2021-06-11, 9-16 CEST, [Spartakiade](https://spartakiade.org/), Leipzig (remote)\n* [Go for Programmers](https://github.com/miku/goforprogrammers)\n\n![](images/gotool.png)\n\n## A data web service\n\n* 2021-11-23, 19:00 CET, [Leipzig Gophers](https://golangleipzig.space) [#23](https://golangleipzig.space/posts/meetup-23-wrapup/), Leipzig (remote)\n* [Lightning Talk: A data web service](https://github.com/miku/dwstalk)\n\n![](images/Untitled-2020-06-15-1740.png)\n\n## The rsync for the cloud era: Rclone\n\n* 2022-04-26, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#26](https://golangleipzig.space/posts/meetup-26-wrapup/), Leipzig (remote)\n* [Lightning Talk: The rsync for the cloud era: Rclone](https://github.com/miku/rclone-lightning-talk)\n\n![](images/rclone-ncdu.png)\n\n## Glamorous command line apps\n\n* 2022-06-21, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#28](https://golangleipzig.space/posts/meetup-28-wrapup/), Leipzig (remote)\n* [Glamorous command line apps](https://github.com/miku/glamline)\n\n![](images/confetty.png)\n\n## State of Go in 2022\n\n* 2022-06-30, 19:00 CEST, [Leipzig Software Craft Meetup](https://www.meetup.com/le-software-craft-community/events/286403431/), Leipzig\n* [State of Go in 2022](https://github.com/golang-leipzig/state-of-go-in-2022)\n\n![](images/go1022.png)\n\n## Go energy efficiency\n\n* 2022-11-29, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#32](https://golangleipzig.space/posts/meetup-32-wrapup/), Leipzig\n* [Go energy efficiency](https://github.com/miku/goenergy)\n\n![](images/rplbee10.png)\n\n## Sustainability and Security in the Go ecosystem\n\n* 2023-03-11, 14:00 CEST, [Chemnitzer Linux-Tage 2023](https://chemnitzer.linux-tage.de/2023) [L234](https://chemnitzer.linux-tage.de/2023/en/programm/beitrag/234), Chemnitz\n* [Sustainability and Security in the Go ecosystem](https://github.com/miku/goeco)\n\n![](images/clt23.png)\n\n## Cgo experiments\n\n* 2023-04-18, 19:00 CEST, [Leipzig Gophers](https://golangleipzig.space) [#35](https://golangleipzig.space/posts/meetup-35-wrapup), Leipzig\n* [Cgo experiments](https://github.com/miku/cgosamples)\n\n![](images/cgo-s.png)\n\n## Ollama testdrive\n\n* 2023-11-21, 19:00 CET, [Leipzig Gophers](https://golangleipzig.space) [#38](https://golangleipzig.space/posts/meetup-38-wrapup), Leipzig\n* [Ollama testdrive](https://github.com/miku/localmodels)\n\n![](images/three-genai-haiku.png)\n\n## Notes on Prompt Engineering\n\n* 2024-02-29, 11:45 CET, [Writing Day](https://www.ub.uni-leipzig.de/aktuelle-ausstellungen/schreibtag/) 2024 at [UB Leipzig](https://www.ub.uni-leipzig.de)\n* [Act as a helpful writing assistant / Notes on prompt engineering](https://raw.githubusercontent.com/miku/ubl-wd-2024-pe/main/UBL-WD-2024-PE-MC.pdf)\n\n![](images/wa-miku-1.png)\n\n## 1BRC in Go\n\n* 2024-04-30, 19:00 CET, Lightning talk at [Leipzig Gophers](https://golangleipzig.space/) [#42](https://golangleipzig.space/posts/meetup-42-wrapup/), Leipzig\n* [1BRC in Go](https://github.com/golang-leipzig/1brc-in-go)\n\n![](images/1brc.png)\n\n## Exercises in performance optimizations\n\n* 2024-11-11, 14:30 CET, Workshop at [GOLAB 2024](https://golab.io), Florence\n* [EXPO](https://github.com/miku/expo) \u0026mdash; going from 179s and 2T CPU instructions (2004 inst/line) to 1.11s and 165B CPU instructions (165 inst/line), about **162x** speedup (using 12% of inst)\n\n![](images/swar.png)\n\n## Run your own VPN with headscale\n\n* 2025-03-25, 19:00 CET, Lightning Talk at [Leipzig Gophers](https://golangleipzig.space) [#49](https://golangleipzig.space/posts/meetup-49-wrapup/)\n* Slides: [LGO49-RYOVPN.pdf](https://golangleipzig.space/downloads/LGO49-RYOVPN.pdf)\n\n[![](images/ryovpn-net-globe.gif)](https://golangleipzig.space/downloads/LGO49-RYOVPN.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiku%2Fworkshops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiku%2Fworkshops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiku%2Fworkshops/lists"}