I have my home lab works, I have an home lab, I have Kubernetes because everybody has
Kubernetes with a lot of important things.
My older workflows was like right code, local test, commitment push, wait for the build
system to build the binary, the build the image, push the image, apply the
update on the flux vapor, flux will apply the update, Kubernetes will pull the image from
the container and then I'll run the application and then loop around.
I wanted to remove the pull push from the registry because it's low and for that I tried
to integrate my build the system with build, build kit and container, that is under
the hood of the Kubernetes node that I use in my home lab.
So the idea is that I wanted to remove the internal registry for the hosting of my internal
tools from the run from the run system.
I also use go for like verify that my commits are signed by me in this case and I used
also go to run the webbook to my build system to start the process and the process
is quite simple because everything I use is built on top of go so I use the container
the client to pull the image from the registry, the base image that I want to use to build
my application, then I start a new client that is the build kit client and build kit
is the service that you can use for like in Docker to build your own images.
I prepared the build environment in that I clone the git repo with Docker files and so on and
the Docker file can use like the credentials that can be like pass it on by the build kit client
and this like is a bit of code that I use to tell build kit to build an image
and I can specify the name of the Docker file that I want to use for that specific build so
instead of the default Docker file I can use like build the dot dot Docker file to use like
multi-step builds and also the image name you can see that I also specified the SSH agent to pass on
to the building container so that in my building container I can have SSH to download my dependencies
the idea of the workflow is that I commit and push git light runs the hoops, hoops
do a webbook to the build system and I get the OK in the meanwhile the build system talks with git
light clones everything container we will have the image pooled and then container build kit
we will start the build process talking with container D then the build system will update the
IEC repository on git light so that flexibility can like apply everything and then cube will
like tell Kubernetes container D to start the container with the image that I have already
the use is this is it thank you your process wife that's how it works here
yeah you wish your microphone the other speakers are now moving closer by the one I go first
hello everyone my name is Alexei and I want you to try to start like and why you should try it
so start like is a programming language which is a subset of titon so you can use a familiar language
syntax you don't have to learn and you language but it's very much simplified you don't have
any classes, any exceptions in that and that unfortunately makes it incompatible with a broad Python
ecosystem but that's all on the downside I promise you it was originally created at google for
basil build and if you don't like basil don't leave the room because you can use a start
large outside of it you don't have to use basil for that for sure it's small simple readable
safe programming language really nice and why I'm speaking about it there because it has an
implementation in goal so you can use it as a embedded language and your goal program
before I talk a bit more about that so you might wonder why not use some other programming language
after all the main implementations of some popular programming languages like
lo of example nice small programming language where I start with one nice small
hoem kiddin oh expression of cell language which is a
two real nice expression of which is but not programming language is in general
oh web assembly which is great that will be and will be great next year every year
oh goal because like we all know go and love go in this room but it's actually not really great
and the ball language for interpretation oh maybe write your own and that's what I did
I wrote my programming language and that's another one and both of them have exactly zero users
so what is why start large anyway you can extend your application with interpretal logic as I describe
some battleable language easy to use it's a deterministic hermetic and send box by default
you don't have to worry about like it live in the send box or read in files from a distance
sending your data to someone because there is no built in your at all you can of course
extended and that's for me the biggest reason it's really really easily extensible by just implementing
regular go interfaces you don't have to write some ego code and it's an exact just implement a regular
interface so the small example you just create a thread which is a thread of execution
start like program your executa file you will get the globals and then you just call a function
which in that case is completely implemented in start-lark you just call do a regular go function call
if you want to embed your own value into a start-lark program you just implement a simple interface
it turns a type it turns a string it turns some information what how it's going to be used in
boolean context and if and then you have this handy freeze function which enables modification of
that value so that value is and could be used concurrently in multiple threats and also multiple
go routines and if you want to make your go function available in start-lark you also just implement
a function with sequential exit which just accepts a list of arguments and key word arguments and
Python if you know that's easy and that's it inside the function it's just a regular go code that
could do whatever and then return a start-lark value as I show on the previous slide so that's
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
more people should know about it that's it thank you
Ron is now also speaking
almost along
before me it's best
okay so at the end of October the mad scientist
Ron Evans sends me a message with this link and this is destroyed my life because I
haven't slept in three months. Now I don't know how Ron does this and all the
tiny ghost stuff. So if I'm not sleeping I swear there's a double still in
Spain. Okay, so what did Ron do? Ron's not going to tell you this but he wants to
run models up in space and so he decided to map the Lama CPPA PIs with go and
no seagull. He's used pure go and FFI so we have almost 90% coverage of the
Lama CPPA PIs. When I saw that I freaked out. Now I'm going to run an example
of just using Eismacode right now. The smallest one I can do in the time that I
have. Okay, I don't even have time to go through the code but this is all low-level
Lama CPPA PIs. Using a model that I've already downloaded my Wi-Fi is off. All right,
so if I run that example you'll see how fast it is. This is running against a
local model and you can see the raw think tags. I'm using a coin three model. Now
I freaked out because for the last year I've been working a prediction guard
building an open AI compatible model a server and I said shit. If we build an
actual robust go API that has that feel anybody can start building software
without the need of a model server. And so the next step for me was to be able
to write code like this. Now I'm just going to show you the part here where we
can basically go into a chat where the user input we use a Tritit. This is a map
but we call it a model D and then we can perform a chat, stay in a loop and
handle the model responses. This is a very idiomatic go API sitting on top of
that and so now what we can do is you can start building robust applications and
here's a really simple just chat app. Hello model and I'm already parsing
out the think tags. It has GPT support for all of that and then it even has two
calls. And you'll see a two call come out in that open AI structure. Now we have
to build a lot of stuff on top of this with templates and stuff and I said how
am I going to prove this API scalable? Well I decided to go crazy and build an
Olamma feature complete model server using all of this. In fact, Cronk is faster than
Olamma locally if you want to run agents. So what we're going to do right now with the
last little bit of time I have. I'm going to start Cronk. This is the model server.
It's built on the same APIs that you have access to. Highly concurrent ready to go
incremental message caching batch processing. It's all there. Now look at this here.
I'm going to do something really quick. I'm going to go back to VS code and I have
client up here. I'm going to ask client a question about this project. Something simple.
How many how many lines of code are in this project? Just to make it fast. Just.
Give me the total number. This is going to be talking to. This is fine. This is a free
sort of agent that you can use and you can attach it to anything. Cloud models but I'm
all about local. I'm all about the local developer experience here. I want to work on
a plane. I want to be able to be really effective locally. Now this is an M4 with 128
gig of memory. It can use client to do basic things like these types of questions. Summaries
I can do really small code edits on this little machine. Thanks to the level that Cronk
has gotten to right now. The M5 with 512 gig is just around the corner. I can't wait
for that. I don't care. My focus is like can we with $10,000 or less be able to do things
with local agents that we're able to do with agents in the cloud. My five minutes are over
and this is still cranking it out. But if I were to I got to go because I don't want to
take anybody's time. But in about another 30 seconds this is all going to start working and
we're going to have and it's doing tool calling now and there it is and it's going to finish
because client always likes to do that. I just did that locally. A llama will not do that. I'm
telling you right now. A llama will not do that. Anyway, Cronk is the project. Easima, if you want
to go lower level and just check it out. It's ready to go.
Yeah. Open AI is that. We now all just saw it. Sell your open AI stock right now.
All right. My name is Eduardo Vaki. This is right. I'm a conservist in five minutes. We'd go
web assembly and was zero. I'm a contributor of was zero. I like web assembly and also running
web assembly on my batch thanks to one of the debt programs projects. So this is a hell of word.
And imagine you have this yellow word on screen and you have this special syntax here to pass
on argument. So you can also say hell of word but also hell of fuss them. And why does syntax?
This is the code. You're familiar with this. Why is special syntax? Well, because if you also
print not just hello but also this content type and you run the problem. You will see content
type and then hello work content. I've had low fosters. So far so good. There's one little
thing called CGI you might be familiar with. You know a pretty edge technology. And if you run
this through CGI you will say hello word in your browser and if you use that syntax
on the URL you will be able to see in the browser hello fast in which is pretty cool. All right.
So how does CGI work? Essentially environment variables program arguments and standard input
gets passed into the executable and then it returns the standard oven standard error and that's
this plays as an HTTP service server. Let's guys. So it's pretty cool. But the problem is even
though it's super simple and that's one of his pros. The concept is it runs the same privilege as
a web server every request of spawns in your process. Basically there's no send boxing at all so
it's not cloud native. So what can we do about that? Now some people in the here about send box
and say oh I know what that is. It's a container but that's not all that can be send boxing about.
So for instance why them is one of that technology allows you to send box code. You can
pause the web assembly and then your code will run in a safe environment. So but unfortunately
why's one sounds a browser? There you just not to be a set of APIs you could invoke to
interact with the system and that's what why is essentially virtualizes some of the
capabilities of your system so you can interact safely with it so you can print to standard output
and sound support. So what do we do? Wasm, wasm, wasm and CGI and we will something and some
people call wagi and other people will call wcgi. So we can follow our executables to web assembly.
We can still write using any programming language as we do old CGI but it's safe and send box
because we virtualize the deal instead out and the data. And we're going to use was zero which is
an awesome project. I contribute to it's go library, pure go, no sego and it's the interpreter and
just in time compiler for web assembly, pure go. And so you get right to miss with five
minutes, we'd go web assembly with zero, CGI, web assembly, wasm and something that is totally
not a horrific thing. So you compile we tiny go your hello word that we have the beginning
and it just works, you can run it through with zero, was zero run and it would just work and then
you can use this tiny project that essentially has the tiny wrapper to what zero to instantiate
a session, it will instantiate your web assembly module, you hook the basically all we do.
He's hooking up standard output and started into a buffer, so it insults virtualize and then
you instantiate the module, this is all this happening under the hood in that library and then
it will just work and there you have it, five minute web assembly microservice.
We admit it's just there, are there any questions? Thank you.
Next speaker in the row.
First day, first up.
Here we just, and be very good, please, we're running a bit over time, it's not work, we're a little more.
Again, is there a wailant engineer in the room?
We have changed our color from black to white.
Maybe double screen? Yeah, I was, oh, that's a very bad cursor actually.
It's like, oh, no, you're on the look.
Is this the desktop thing with the ringo? Yes.
Okay, be very quick about this. Go!
A better start the, I can't read my type.
this was this was supposed to be merge
yeah that's it okay so a little bit of a spoiler that guy there will come up
and the the egg has a five minute gestation so I'm gonna have to take five minutes
oh no where'd it go what the heck
this is this is uh okay let's just forget him
hmm
I can still laugh all three of you forgot
try your best otherwise you'll welcome next year
promise
um yes anyway sorry time I got you does anybody remember
these things
excellent excellent um for anybody who doesn't it was a super addictive electronic toy
I'm gonna say it was in the late nineties because I just don't want to know when it actually was
three little buttons at the bottom and the display which is perhaps a little bit hard to read
um was a 32 by 16 pixel readout with a couple of icons around it
and what I have there in the one that I bought recently
uh is Gen 2 because it has a better game than Gen 1
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
reimagine
um so I have built as you saw that I mean if one thing worked on that desktop
it was the the pet that was running
um I decided to build this with go because it's most productive language
um I picked fine because you know I mean I probably should assess how my name is Andrew
I work on fine
um it's a really powerful way to build applications for all different platforms
but I can't draw so I use chat GPT to generate a few images
that's supposed to be a Tamagotchi egg shell inspired by the fine logo
um and we got five face and beeping there for some sound
which in brackets because I haven't actually pushed that part
uh lots of easy stuff images overlays
it comes together quite nicely but those pixels in the middle
um that egg I didn't reverse engineer the firmware
I had to draw that by hand and that would be a real pain in the back side
actually I said it's 32 by 16 that's just a lot of pixels maybe I can
maybe I can tap them
so I made an editor for the pixels on the screen so that I could frame by frame
recode the animation
um so again a little nice little fine app where we got the same screen
widget scaled up
uh and a custom widget taper so you can turn pixels on and off one at a time
and the top left
copy button takes that as a
16 sized in 64 array which then I can just dump into the source code
and that's one frame of the animation
and that same screen widget is displayed inside the
the Tamagotchi application as well
uh nice thing about having this
uh running with a finesse engine is there's going to work across all different platforms
so your desktop devices mobile that's an android running right there
embedded in the web with wasm and embedded devices as all about six months ago
so you can actually run it on hardware that has none of the traditional things of a
uh computer
um this has been an eye-apologised for the glitches they're presented
on fined desk as well so that's my fine pet running on a desktop where everything else is a fine application as well
um and it doesn't uh normally have graphical glitches but I have never used that port on this laptop before
uh and lastly just because uh my business is now abstracts you can visually edit your applications
and this is the the same Tamagotchi loaded in an editor you can preview it on different devices
and then deploy it across to I mean currently all of your colleagues because everybody needs a Tamagotchi on their device
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
um on GitHub at the top there you can track me down i'm anti-dot XYZ most places
hang out in a fine channel on most things
um but I've got a website with a blog and I'm doing some videos and stuff
fishers is a distribution of Linux with all this stuff crammed into it in a very nicely sized
ISO and you can find my business at attrix.io
thank you very much come to try find I have stickers
thank you we're doing a bit over time so doing really really really quickly
oh this is a Mac no worries
I am a Linux user by the way
so fun fact basically I tend to do weird stuff with go but that's thanks to many gentlemen in this room
and that basically means I've been putting it on the on drones
I've been putting it on live a Commodore 64
I've been putting it on a game boy which is again tiny go so very cool things
now the problem is right now everybody's talking about AI and that and not whatever
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
on GPUs and then I was thinking what do you have and go
but you can actually interact with us so it's like okay we were talking to the pop today so you could do inference
okay interesting smarter people than we are working on this game development interesting to be thought about on
on tiny go it's kind of fun
graphics and rendering okay web UI is basically a normal UI but you would use and go to
show to you to be user and last thing crypto we don't talk about that so
graphics and rendering and go this I basically sat next so funfig this was something that happened two months ago
on Reddit I don't know if all of you read this but basically let's do better go
gois and go and this is a new thing is you I'm not contributing to this I just happened to use it
I was like this is really cool I would like to talk about it and basically this is your hello
okay kind of simple go code nothing special you get this fantastic not doing live coding don't have time
then you do something like this triangle and please
okay not bad very very basic but you're writing pure go no see go nothing and you're like
this happened before this is nothing new I will talk about that in a second but basically this is the architecture
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
but they're working on the UI part which should make things actually usable for users so if you're designing an app
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
hundred thousand lines of go code so it's impressive that we wrote this without any see go and again
I don't care about good I right now so good as to that team but you're going to be like
wait a second we have this somebody did go graphics
last commit looks to me five years ago so it's interesting I think if you're doing weird stuff like
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
I think we could do some fun things and these are all the links that's it thank you
see you next super hello and now are very lost picker
I see the you're going to just stop a second screen
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
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
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
contributors to find we have now quite nice solution and I played with it to see if it was a really nice
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
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
and they have like different clients they should go and deliver and so now they have a whole system where they can
just like follow on Google Maps to get the coordinates and for that I'm not going to go into the architecture but basically
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
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
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
on the official tutorial and it's like three page long with like a really weird name of that on really not explicit
so that's what I would love to not have to deal with anymore when I develop mobile app on go on Android
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
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
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
so now open API generates that and I also generated a go client that connects in HTTP with caching because it works offline first
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
we have also widget for pictures and gallery and on desktop it works but you just get a go for
and then I want to create intense launcher to launch a more intense in Android to be more integrated
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
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
look out first application on mobile thank you thank you so much
there has been a lot last minute submission for a lightning talk which is for me
okay I will stand in the frame again because it's very important for the video
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
you all were an amazing audience I had an amazing team of volunteers making this as smooth as possible
that was not a single incident I was not a single fight in the hallway this year which is completely unseen
that was that so a plus for the whole tears what is starting right now
I'd like to thank everyone again I'd like to thank the for the more organization for making this possible
thank the video team who made this stream possible which you're now seeing thank you everyone
thank you for being here and I'll see you all next year
and I think we're actually forgetting one person to thank for the 12th time already
so thank you to my heart for doing this for all of us and again putting work online for everything
thank you