WEBVTT

00:00.000 --> 00:13.240
I have my home lab works, I have an home lab, I have Kubernetes because everybody has

00:13.240 --> 00:17.680
Kubernetes with a lot of important things.

00:17.680 --> 00:23.520
My older workflows was like right code, local test, commitment push, wait for the build

00:23.520 --> 00:29.960
system to build the binary, the build the image, push the image, apply the

00:29.960 --> 00:38.320
update on the flux vapor, flux will apply the update, Kubernetes will pull the image from

00:38.320 --> 00:43.880
the container and then I'll run the application and then loop around.

00:43.880 --> 00:50.360
I wanted to remove the pull push from the registry because it's low and for that I tried

00:50.360 --> 00:57.560
to integrate my build the system with build, build kit and container, that is under

00:57.560 --> 01:01.880
the hood of the Kubernetes node that I use in my home lab.

01:01.880 --> 01:09.400
So the idea is that I wanted to remove the internal registry for the hosting of my internal

01:09.400 --> 01:14.680
tools from the run from the run system.

01:14.680 --> 01:21.720
I also use go for like verify that my commits are signed by me in this case and I used

01:21.800 --> 01:28.440
also go to run the webbook to my build system to start the process and the process

01:28.440 --> 01:35.800
is quite simple because everything I use is built on top of go so I use the container

01:35.800 --> 01:41.320
the client to pull the image from the registry, the base image that I want to use to build

01:41.320 --> 01:48.120
my application, then I start a new client that is the build kit client and build kit

01:48.200 --> 01:53.400
is the service that you can use for like in Docker to build your own images.

01:54.520 --> 02:02.920
I prepared the build environment in that I clone the git repo with Docker files and so on and

02:02.920 --> 02:09.320
the Docker file can use like the credentials that can be like pass it on by the build kit client

02:09.880 --> 02:17.480
and this like is a bit of code that I use to tell build kit to build an image

02:17.480 --> 02:23.640
and I can specify the name of the Docker file that I want to use for that specific build so

02:23.640 --> 02:28.840
instead of the default Docker file I can use like build the dot dot Docker file to use like

02:28.840 --> 02:37.080
multi-step builds and also the image name you can see that I also specified the SSH agent to pass on

02:37.080 --> 02:44.040
to the building container so that in my building container I can have SSH to download my dependencies

02:45.000 --> 02:51.640
the idea of the workflow is that I commit and push git light runs the hoops, hoops

02:53.640 --> 02:59.640
do a webbook to the build system and I get the OK in the meanwhile the build system talks with git

02:59.640 --> 03:07.320
light clones everything container we will have the image pooled and then container build kit

03:07.320 --> 03:15.080
we will start the build process talking with container D then the build system will update the

03:15.080 --> 03:22.760
IEC repository on git light so that flexibility can like apply everything and then cube will

03:22.760 --> 03:29.560
like tell Kubernetes container D to start the container with the image that I have already

03:30.120 --> 03:45.000
the use is this is it thank you your process wife that's how it works here

03:45.000 --> 04:00.040
yeah you wish your microphone the other speakers are now moving closer by the one I go first

04:00.920 --> 04:18.920
hello everyone my name is Alexei and I want you to try to start like and why you should try it

04:18.920 --> 04:25.160
so start like is a programming language which is a subset of titon so you can use a familiar language

04:25.160 --> 04:30.520
syntax you don't have to learn and you language but it's very much simplified you don't have

04:30.520 --> 04:36.840
any classes, any exceptions in that and that unfortunately makes it incompatible with a broad Python

04:36.840 --> 04:42.280
ecosystem but that's all on the downside I promise you it was originally created at google for

04:42.280 --> 04:47.320
basil build and if you don't like basil don't leave the room because you can use a start

04:47.320 --> 04:52.760
large outside of it you don't have to use basil for that for sure it's small simple readable

04:52.760 --> 04:58.600
safe programming language really nice and why I'm speaking about it there because it has an

04:58.600 --> 05:03.960
implementation in goal so you can use it as a embedded language and your goal program

05:04.680 --> 05:09.640
before I talk a bit more about that so you might wonder why not use some other programming language

05:09.640 --> 05:13.640
after all the main implementations of some popular programming languages like

05:13.720 --> 05:20.120
lo of example nice small programming language where I start with one nice small

05:21.160 --> 05:25.320
hoem kiddin oh expression of cell language which is a

05:25.880 --> 05:29.560
two real nice expression of which is but not programming language is in general

05:30.360 --> 05:35.720
oh web assembly which is great that will be and will be great next year every year

05:36.440 --> 05:44.360
oh goal because like we all know go and love go in this room but it's actually not really great

05:44.360 --> 05:50.440
and the ball language for interpretation oh maybe write your own and that's what I did

05:50.440 --> 05:55.400
I wrote my programming language and that's another one and both of them have exactly zero users

05:56.440 --> 06:03.000
so what is why start large anyway you can extend your application with interpretal logic as I describe

06:03.160 --> 06:09.880
some battleable language easy to use it's a deterministic hermetic and send box by default

06:09.880 --> 06:14.840
you don't have to worry about like it live in the send box or read in files from a distance

06:14.840 --> 06:19.800
sending your data to someone because there is no built in your at all you can of course

06:19.800 --> 06:27.080
extended and that's for me the biggest reason it's really really easily extensible by just implementing

06:27.080 --> 06:33.160
regular go interfaces you don't have to write some ego code and it's an exact just implement a regular

06:33.160 --> 06:38.520
interface so the small example you just create a thread which is a thread of execution

06:38.520 --> 06:44.600
start like program your executa file you will get the globals and then you just call a function

06:44.600 --> 06:51.640
which in that case is completely implemented in start-lark you just call do a regular go function call

06:52.440 --> 06:59.160
if you want to embed your own value into a start-lark program you just implement a simple interface

06:59.160 --> 07:05.240
it turns a type it turns a string it turns some information what how it's going to be used in

07:05.240 --> 07:10.920
boolean context and if and then you have this handy freeze function which enables modification of

07:10.920 --> 07:16.520
that value so that value is and could be used concurrently in multiple threats and also multiple

07:16.760 --> 07:23.160
go routines and if you want to make your go function available in start-lark you also just implement

07:23.160 --> 07:28.600
a function with sequential exit which just accepts a list of arguments and key word arguments and

07:28.600 --> 07:34.600
Python if you know that's easy and that's it inside the function it's just a regular go code that

07:34.600 --> 07:39.960
could do whatever and then return a start-lark value as I show on the previous slide so that's

07:40.120 --> 07:47.480
my sheet that's a link on GitHub again not by not made by me at all I just love it and I think that

07:47.480 --> 07:52.760
more people should know about it that's it thank you

07:57.880 --> 07:59.080
Ron is now also speaking

07:59.720 --> 08:03.560
almost along

08:08.440 --> 08:15.060
before me it's best

08:25.000 --> 08:27.740
okay so at the end of October the mad scientist

08:27.740 --> 08:33.200
Ron Evans sends me a message with this link and this is destroyed my life because I

08:33.200 --> 08:38.180
haven't slept in three months. Now I don't know how Ron does this and all the

08:38.180 --> 08:43.100
tiny ghost stuff. So if I'm not sleeping I swear there's a double still in

08:43.100 --> 08:48.500
Spain. Okay, so what did Ron do? Ron's not going to tell you this but he wants to

08:48.500 --> 08:56.420
run models up in space and so he decided to map the Lama CPPA PIs with go and

08:56.420 --> 09:03.420
no seagull. He's used pure go and FFI so we have almost 90% coverage of the

09:03.420 --> 09:10.420
Lama CPPA PIs. When I saw that I freaked out. Now I'm going to run an example

09:10.420 --> 09:16.420
of just using Eismacode right now. The smallest one I can do in the time that I

09:16.420 --> 09:21.900
have. Okay, I don't even have time to go through the code but this is all low-level

09:21.900 --> 09:27.900
Lama CPPA PIs. Using a model that I've already downloaded my Wi-Fi is off. All right,

09:27.900 --> 09:33.100
so if I run that example you'll see how fast it is. This is running against a

09:33.100 --> 09:38.340
local model and you can see the raw think tags. I'm using a coin three model. Now

09:38.340 --> 09:41.700
I freaked out because for the last year I've been working a prediction guard

09:41.700 --> 09:49.020
building an open AI compatible model a server and I said shit. If we build an

09:49.020 --> 09:54.820
actual robust go API that has that feel anybody can start building software

09:54.820 --> 10:01.020
without the need of a model server. And so the next step for me was to be able

10:01.020 --> 10:07.820
to write code like this. Now I'm just going to show you the part here where we

10:07.820 --> 10:13.020
can basically go into a chat where the user input we use a Tritit. This is a map

10:13.020 --> 10:17.580
but we call it a model D and then we can perform a chat, stay in a loop and

10:17.580 --> 10:23.780
handle the model responses. This is a very idiomatic go API sitting on top of

10:23.780 --> 10:32.060
that and so now what we can do is you can start building robust applications and

10:32.060 --> 10:41.340
here's a really simple just chat app. Hello model and I'm already parsing

10:41.340 --> 10:46.780
out the think tags. It has GPT support for all of that and then it even has two

10:46.780 --> 11:01.660
calls. And you'll see a two call come out in that open AI structure. Now we have

11:01.660 --> 11:05.060
to build a lot of stuff on top of this with templates and stuff and I said how

11:05.060 --> 11:10.180
am I going to prove this API scalable? Well I decided to go crazy and build an

11:10.180 --> 11:16.340
Olamma feature complete model server using all of this. In fact, Cronk is faster than

11:16.340 --> 11:21.220
Olamma locally if you want to run agents. So what we're going to do right now with the

11:21.220 --> 11:28.540
last little bit of time I have. I'm going to start Cronk. This is the model server.

11:28.540 --> 11:33.860
It's built on the same APIs that you have access to. Highly concurrent ready to go

11:33.860 --> 11:40.580
incremental message caching batch processing. It's all there. Now look at this here.

11:40.580 --> 11:44.380
I'm going to do something really quick. I'm going to go back to VS code and I have

11:44.380 --> 11:49.380
client up here. I'm going to ask client a question about this project. Something simple.

11:49.380 --> 12:03.340
How many how many lines of code are in this project? Just to make it fast. Just.

12:03.340 --> 12:13.300
Give me the total number. This is going to be talking to. This is fine. This is a free

12:13.300 --> 12:18.140
sort of agent that you can use and you can attach it to anything. Cloud models but I'm

12:18.140 --> 12:23.020
all about local. I'm all about the local developer experience here. I want to work on

12:23.020 --> 12:28.900
a plane. I want to be able to be really effective locally. Now this is an M4 with 128

12:28.940 --> 12:34.660
gig of memory. It can use client to do basic things like these types of questions. Summaries

12:34.660 --> 12:39.620
I can do really small code edits on this little machine. Thanks to the level that Cronk

12:39.620 --> 12:46.420
has gotten to right now. The M5 with 512 gig is just around the corner. I can't wait

12:46.420 --> 12:53.900
for that. I don't care. My focus is like can we with $10,000 or less be able to do things

12:53.900 --> 12:59.020
with local agents that we're able to do with agents in the cloud. My five minutes are over

12:59.020 --> 13:04.460
and this is still cranking it out. But if I were to I got to go because I don't want to

13:04.460 --> 13:09.500
take anybody's time. But in about another 30 seconds this is all going to start working and

13:09.500 --> 13:16.540
we're going to have and it's doing tool calling now and there it is and it's going to finish

13:16.540 --> 13:23.340
because client always likes to do that. I just did that locally. A llama will not do that. I'm

13:23.420 --> 13:28.540
telling you right now. A llama will not do that. Anyway, Cronk is the project. Easima, if you want

13:28.540 --> 13:40.940
to go lower level and just check it out. It's ready to go.

13:40.940 --> 13:54.540
Yeah. Open AI is that. We now all just saw it. Sell your open AI stock right now.

13:54.540 --> 14:07.420
All right. My name is Eduardo Vaki. This is right. I'm a conservist in five minutes. We'd go

14:07.420 --> 14:11.260
web assembly and was zero. I'm a contributor of was zero. I like web assembly and also running

14:11.260 --> 14:20.380
web assembly on my batch thanks to one of the debt programs projects. So this is a hell of word.

14:20.380 --> 14:24.220
And imagine you have this yellow word on screen and you have this special syntax here to pass

14:24.220 --> 14:29.420
on argument. So you can also say hell of word but also hell of fuss them. And why does syntax?

14:30.300 --> 14:34.940
This is the code. You're familiar with this. Why is special syntax? Well, because if you also

14:34.940 --> 14:42.780
print not just hello but also this content type and you run the problem. You will see content

14:42.780 --> 14:48.700
type and then hello work content. I've had low fosters. So far so good. There's one little

14:48.700 --> 14:59.580
thing called CGI you might be familiar with. You know a pretty edge technology. And if you run

14:59.660 --> 15:04.460
this through CGI you will say hello word in your browser and if you use that syntax

15:05.180 --> 15:09.740
on the URL you will be able to see in the browser hello fast in which is pretty cool. All right.

15:11.340 --> 15:15.820
So how does CGI work? Essentially environment variables program arguments and standard input

15:15.820 --> 15:20.540
gets passed into the executable and then it returns the standard oven standard error and that's

15:20.540 --> 15:29.260
this plays as an HTTP service server. Let's guys. So it's pretty cool. But the problem is even

15:29.260 --> 15:33.580
though it's super simple and that's one of his pros. The concept is it runs the same privilege as

15:33.580 --> 15:39.580
a web server every request of spawns in your process. Basically there's no send boxing at all so

15:39.580 --> 15:48.220
it's not cloud native. So what can we do about that? Now some people in the here about send box

15:48.220 --> 15:54.940
and say oh I know what that is. It's a container but that's not all that can be send boxing about.

15:54.940 --> 15:58.940
So for instance why them is one of that technology allows you to send box code. You can

15:58.940 --> 16:04.300
pause the web assembly and then your code will run in a safe environment. So but unfortunately

16:05.100 --> 16:12.540
why's one sounds a browser? There you just not to be a set of APIs you could invoke to

16:12.540 --> 16:17.020
interact with the system and that's what why is essentially virtualizes some of the

16:17.820 --> 16:23.180
capabilities of your system so you can interact safely with it so you can print to standard output

16:23.180 --> 16:28.700
and sound support. So what do we do? Wasm, wasm, wasm and CGI and we will something and some

16:28.700 --> 16:34.940
people call wagi and other people will call wcgi. So we can follow our executables to web assembly.

16:34.940 --> 16:39.980
We can still write using any programming language as we do old CGI but it's safe and send box

16:39.980 --> 16:45.500
because we virtualize the deal instead out and the data. And we're going to use was zero which is

16:45.500 --> 16:52.220
an awesome project. I contribute to it's go library, pure go, no sego and it's the interpreter and

16:52.380 --> 16:57.180
just in time compiler for web assembly, pure go. And so you get right to miss with five

16:57.180 --> 17:02.700
minutes, we'd go web assembly with zero, CGI, web assembly, wasm and something that is totally

17:02.700 --> 17:10.220
not a horrific thing. So you compile we tiny go your hello word that we have the beginning

17:10.220 --> 17:14.780
and it just works, you can run it through with zero, was zero run and it would just work and then

17:15.580 --> 17:19.980
you can use this tiny project that essentially has the tiny wrapper to what zero to instantiate

17:20.140 --> 17:25.340
a session, it will instantiate your web assembly module, you hook the basically all we do.

17:25.340 --> 17:31.100
He's hooking up standard output and started into a buffer, so it insults virtualize and then

17:31.100 --> 17:35.740
you instantiate the module, this is all this happening under the hood in that library and then

17:35.740 --> 17:40.860
it will just work and there you have it, five minute web assembly microservice.

17:41.820 --> 17:49.820
We admit it's just there, are there any questions? Thank you.

17:53.820 --> 17:55.820
Next speaker in the row.

17:59.820 --> 18:01.820
First day, first up.

18:02.780 --> 18:22.780
Here we just, and be very good, please, we're running a bit over time, it's not work, we're a little more.

18:27.900 --> 18:30.220
Again, is there a wailant engineer in the room?

18:32.780 --> 18:39.500
We have changed our color from black to white.

18:45.180 --> 18:50.060
Maybe double screen? Yeah, I was, oh, that's a very bad cursor actually.

19:01.900 --> 19:05.580
It's like, oh, no, you're on the look.

19:09.020 --> 19:11.180
Is this the desktop thing with the ringo? Yes.

19:13.580 --> 19:15.740
Okay, be very quick about this. Go!

19:24.380 --> 19:28.220
A better start the, I can't read my type.

19:28.220 --> 19:33.220
this was this was supposed to be merge

19:33.220 --> 19:38.220
yeah that's it okay so a little bit of a spoiler that guy there will come up

19:38.220 --> 19:44.220
and the the egg has a five minute gestation so I'm gonna have to take five minutes

19:44.220 --> 19:50.220
oh no where'd it go what the heck

19:50.220 --> 19:55.220
this is this is uh okay let's just forget him

19:59.220 --> 20:01.220
hmm

20:21.220 --> 20:23.220
I can still laugh all three of you forgot

20:23.220 --> 20:27.220
try your best otherwise you'll welcome next year

20:27.220 --> 20:29.220
promise

20:29.220 --> 20:34.220
um yes anyway sorry time I got you does anybody remember

20:34.220 --> 20:36.220
these things

20:36.220 --> 20:41.220
excellent excellent um for anybody who doesn't it was a super addictive electronic toy

20:41.220 --> 20:46.220
I'm gonna say it was in the late nineties because I just don't want to know when it actually was

20:46.220 --> 20:50.220
three little buttons at the bottom and the display which is perhaps a little bit hard to read

20:50.220 --> 20:55.220
um was a 32 by 16 pixel readout with a couple of icons around it

20:55.220 --> 20:59.220
and what I have there in the one that I bought recently

20:59.220 --> 21:04.220
uh is Gen 2 because it has a better game than Gen 1

21:04.220 --> 21:09.220
and the new stuff is not really a Tamagotchi so I grabbed one of these and I thought it would be a little bit fun to

21:09.220 --> 21:11.220
reimagine

21:12.220 --> 21:16.220
um so I have built as you saw that I mean if one thing worked on that desktop

21:16.220 --> 21:18.220
it was the the pet that was running

21:18.220 --> 21:22.220
um I decided to build this with go because it's most productive language

21:22.220 --> 21:27.220
um I picked fine because you know I mean I probably should assess how my name is Andrew

21:27.220 --> 21:29.220
I work on fine

21:29.220 --> 21:33.220
um it's a really powerful way to build applications for all different platforms

21:33.220 --> 21:38.220
but I can't draw so I use chat GPT to generate a few images

21:38.220 --> 21:43.220
that's supposed to be a Tamagotchi egg shell inspired by the fine logo

21:43.220 --> 21:47.220
um and we got five face and beeping there for some sound

21:47.220 --> 21:50.220
which in brackets because I haven't actually pushed that part

21:50.220 --> 21:54.220
uh lots of easy stuff images overlays

21:54.220 --> 21:57.220
it comes together quite nicely but those pixels in the middle

21:57.220 --> 22:00.220
um that egg I didn't reverse engineer the firmware

22:00.220 --> 22:04.220
I had to draw that by hand and that would be a real pain in the back side

22:04.220 --> 22:08.220
actually I said it's 32 by 16 that's just a lot of pixels maybe I can

22:08.220 --> 22:09.220
maybe I can tap them

22:09.220 --> 22:15.220
so I made an editor for the pixels on the screen so that I could frame by frame

22:15.220 --> 22:17.220
recode the animation

22:17.220 --> 22:21.220
um so again a little nice little fine app where we got the same screen

22:21.220 --> 22:23.220
widget scaled up

22:23.220 --> 22:28.220
uh and a custom widget taper so you can turn pixels on and off one at a time

22:28.220 --> 22:29.220
and the top left

22:29.220 --> 22:33.220
copy button takes that as a

22:33.220 --> 22:39.220
16 sized in 64 array which then I can just dump into the source code

22:39.220 --> 22:41.220
and that's one frame of the animation

22:41.220 --> 22:45.220
and that same screen widget is displayed inside the

22:45.220 --> 22:48.220
the Tamagotchi application as well

22:48.220 --> 22:51.220
uh nice thing about having this

22:51.220 --> 22:56.220
uh running with a finesse engine is there's going to work across all different platforms

22:56.220 --> 23:00.220
so your desktop devices mobile that's an android running right there

23:00.220 --> 23:04.220
embedded in the web with wasm and embedded devices as all about six months ago

23:04.220 --> 23:09.220
so you can actually run it on hardware that has none of the traditional things of a

23:09.220 --> 23:11.220
uh computer

23:11.220 --> 23:15.220
um this has been an eye-apologised for the glitches they're presented

23:15.220 --> 23:21.220
on fined desk as well so that's my fine pet running on a desktop where everything else is a fine application as well

23:21.220 --> 23:27.220
um and it doesn't uh normally have graphical glitches but I have never used that port on this laptop before

23:27.220 --> 23:33.220
uh and lastly just because uh my business is now abstracts you can visually edit your applications

23:33.220 --> 23:38.220
and this is the the same Tamagotchi loaded in an editor you can preview it on different devices

23:38.220 --> 23:44.220
and then deploy it across to I mean currently all of your colleagues because everybody needs a Tamagotchi on their device

23:44.220 --> 23:50.220
I have no idea what the time is but I appreciate you with uh you sticking with the presentation there you can find the repo

23:50.220 --> 23:55.220
um on GitHub at the top there you can track me down i'm anti-dot XYZ most places

23:55.220 --> 23:58.220
hang out in a fine channel on most things

23:58.220 --> 24:02.220
um but I've got a website with a blog and I'm doing some videos and stuff

24:02.220 --> 24:07.220
fishers is a distribution of Linux with all this stuff crammed into it in a very nicely sized

24:07.220 --> 24:10.220
ISO and you can find my business at attrix.io

24:10.220 --> 24:13.220
thank you very much come to try find I have stickers

24:14.220 --> 24:22.220
thank you we're doing a bit over time so doing really really really quickly

24:26.220 --> 24:28.220
oh this is a Mac no worries

24:28.220 --> 24:31.220
I am a Linux user by the way

24:36.220 --> 24:42.220
so fun fact basically I tend to do weird stuff with go but that's thanks to many gentlemen in this room

24:42.220 --> 24:47.220
and that basically means I've been putting it on the on drones

24:47.220 --> 24:50.220
I've been putting it on live a Commodore 64

24:50.220 --> 24:54.220
I've been putting it on a game boy which is again tiny go so very cool things

24:54.220 --> 24:59.220
now the problem is right now everybody's talking about AI and that and not whatever

24:59.220 --> 25:04.220
what I care about is the interface okay so you're what are you going to do you're going to write code and it's going to run on what

25:04.220 --> 25:07.220
on GPUs and then I was thinking what do you have and go

25:07.220 --> 25:12.220
but you can actually interact with us so it's like okay we were talking to the pop today so you could do inference

25:12.220 --> 25:18.220
okay interesting smarter people than we are working on this game development interesting to be thought about on

25:18.220 --> 25:20.220
on tiny go it's kind of fun

25:20.220 --> 25:25.220
graphics and rendering okay web UI is basically a normal UI but you would use and go to

25:25.220 --> 25:30.220
show to you to be user and last thing crypto we don't talk about that so

25:30.220 --> 25:36.220
graphics and rendering and go this I basically sat next so funfig this was something that happened two months ago

25:36.220 --> 25:41.220
on Reddit I don't know if all of you read this but basically let's do better go

25:41.220 --> 25:48.220
gois and go and this is a new thing is you I'm not contributing to this I just happened to use it

25:48.220 --> 25:53.220
I was like this is really cool I would like to talk about it and basically this is your hello

25:53.220 --> 26:00.220
okay kind of simple go code nothing special you get this fantastic not doing live coding don't have time

26:00.220 --> 26:05.220
then you do something like this triangle and please

26:05.220 --> 26:12.220
okay not bad very very basic but you're writing pure go no see go nothing and you're like

26:12.220 --> 26:18.220
this happened before this is nothing new I will talk about that in a second but basically this is the architecture

26:18.220 --> 26:24.220
which these guys the go GPU guys started to do so there's multiple layers to this I'm not going to talk about everything

26:24.220 --> 26:30.220
but they're working on the UI part which should make things actually usable for users so if you're designing an app

26:30.220 --> 26:37.220
right now we get triangles as the best it is it's fine it's a good demo we can work with this but everything else is like

26:37.220 --> 26:43.220
hundred thousand lines of go code so it's impressive that we wrote this without any see go and again

26:43.220 --> 26:47.220
I don't care about good I right now so good as to that team but you're going to be like

26:47.220 --> 26:51.220
wait a second we have this somebody did go graphics

26:51.220 --> 26:59.220
last commit looks to me five years ago so it's interesting I think if you're doing weird stuff like

26:59.220 --> 27:06.220
I was thinking about doing good game and go it looks like this is picking up steam again so if you're interested in this have a look

27:06.220 --> 27:11.220
I think we could do some fun things and these are all the links that's it thank you

27:11.220 --> 27:19.220
see you next super hello and now are very lost picker

27:19.220 --> 27:41.220
I see the you're going to just stop a second screen

28:11.220 --> 28:29.220
all right let's go all right so sorry it's not completely done for the five minute talks which now is compressed in three it was a 25 minute talks so

28:29.220 --> 28:40.220
sorry about that so I'm going to talk about mobile development and go I've been working on an app for the past year and I was playing with it because

28:40.220 --> 28:47.220
I would love to be able to create more apps in go and currently it's still a mess but thanks to Andrew and all the

28:47.220 --> 28:54.220
contributors to find we have now quite nice solution and I played with it to see if it was a really nice

28:54.220 --> 29:03.220
so the work is the app is about logistics and so it's to deliver a power cell like sign when it's done take pictures of the

29:03.220 --> 29:11.220
parcel if there's an issue so I don't know if you see but yeah we we get like basically like people go for one week

29:11.220 --> 29:18.220
and they have like different clients they should go and deliver and so now they have a whole system where they can

29:18.220 --> 29:27.220
just like follow on Google Maps to get the coordinates and for that I'm not going to go into the architecture but basically

29:27.220 --> 29:35.220
you know I guess I need to be to stay here so there is like an ERP that connects to the server that I've developed

29:35.220 --> 29:45.220
with my library resting piece to not spend too much time we connect to OSM talk creator to get like the thumbnail of the map

29:45.220 --> 29:54.220
and anyhow and so this is I won't go through this I won't go this is just fun because this is how you get contacts on Android

29:54.220 --> 30:02.220
on the official tutorial and it's like three page long with like a really weird name of that on really not explicit

30:02.220 --> 30:09.220
so that's what I would love to not have to deal with anymore when I develop mobile app on go on Android

30:09.220 --> 30:17.220
and so I use fine even if it was like a risk you know it's like a textile technology that I have not experimented with

30:18.220 --> 30:29.220
and to go that's so I decided to use my library to go fast and create a rest API and I needed to interact with the server

30:29.220 --> 30:42.220
and so I created open API auto generation from my system so then we can just very quickly have open API because the client needed like PHP code to connect

30:42.220 --> 30:52.220
so now open API generates that and I also generated a go client that connects in HTTP with caching because it works offline first

30:52.220 --> 31:03.220
because truck divers might be lost in the PEMPA and so I developed like a signature widget on fine the first edition was not that great now it's a little bit better

31:04.220 --> 31:11.220
we have also widget for pictures and gallery and on desktop it works but you just get a go for

31:11.220 --> 31:18.220
and then I want to create intense launcher to launch a more intense in Android to be more integrated

31:18.220 --> 31:26.220
but it's a big giant mess but I'm going to try to figure it out and upstream it to fine and I think that's it

31:27.220 --> 31:38.220
yeah well that's it the rest is okay so I'm going to try to upstream that and share whatever I found out and all the libraries that could help you develop

31:38.220 --> 31:44.220
look out first application on mobile thank you thank you so much

31:45.220 --> 31:53.220
there has been a lot last minute submission for a lightning talk which is for me

31:57.220 --> 32:02.220
okay I will stand in the frame again because it's very important for the video

32:02.220 --> 32:10.220
no actually not thank you very much for the 12th edition of this go to everyone we've been doing this for 12 years already

32:14.220 --> 32:21.220
you all were an amazing audience I had an amazing team of volunteers making this as smooth as possible

32:21.220 --> 32:27.220
that was not a single incident I was not a single fight in the hallway this year which is completely unseen

32:27.220 --> 32:35.220
that was that so a plus for the whole tears what is starting right now

32:37.220 --> 32:41.220
I'd like to thank everyone again I'd like to thank the for the more organization for making this possible

32:41.220 --> 32:46.220
thank the video team who made this stream possible which you're now seeing thank you everyone

32:46.220 --> 32:50.220
thank you for being here and I'll see you all next year

32:53.220 --> 32:59.220
and I think we're actually forgetting one person to thank for the 12th time already

32:59.220 --> 33:07.220
so thank you to my heart for doing this for all of us and again putting work online for everything

33:07.220 --> 33:12.220
thank you

