WEBVTT

00:00:00.017 --> 00:00:03.857
Hi and welcome to another episode of the Option Plus podcast.

00:00:04.237 --> 00:00:11.217
As you can see, and here, maybe you have noticed that these episodes are quite irregular.

00:00:11.717 --> 00:00:18.657
I'm breaking the common wisdom of, you know, release podcasts regularly at the

00:00:18.657 --> 00:00:25.757
same time, like every day, every Wednesday, or every month, and so on.

00:00:26.457 --> 00:00:33.297
But I think it is a good idea to do an episode when I have something interesting

00:00:33.297 --> 00:00:40.577
to say and not to bore you with my rambling when I've already said it in the

00:00:40.577 --> 00:00:43.417
previous episode and I don't have anything new to add.

00:00:44.117 --> 00:00:51.397
This time I've been quite busy with writing a lot of code so that's why I have

00:00:51.397 --> 00:00:55.237
not been speaking to the camera as much.

00:00:56.157 --> 00:01:05.957
And what I've been doing is I've been writing really various programs, mostly open source.

00:01:06.237 --> 00:01:12.837
They're mostly on my GitHub, or at least I publish them when I finish at least

00:01:12.837 --> 00:01:15.797
a version that can compile and run and do something.

00:01:16.917 --> 00:01:24.057
And this is what this episode is also about. With AI, with new models,

00:01:24.317 --> 00:01:30.937
both open weights and closed, we have been given a superpower to create software.

00:01:31.277 --> 00:01:35.157
And by we, I'm expanding the definition of programmer.

00:01:35.777 --> 00:01:38.857
And there are many people who

00:01:38.857 --> 00:01:44.077
were not traditionally coders who can now write code using these tools.

00:01:45.337 --> 00:01:49.697
And in this episode, I'm asking a question today.

00:01:49.937 --> 00:01:53.717
Should we share the vibe-coded stuff?

00:01:53.917 --> 00:01:59.797
Should we write and publish software that is maybe not neat, not perfect?

00:02:00.077 --> 00:02:03.317
Maybe we don't even know how it works?

00:02:04.077 --> 00:02:10.057
And does it make sense to publish it if it will have maybe no users,

00:02:10.057 --> 00:02:18.137
maybe a few users, maybe it's just a buggy piece of code and people will laugh at us and so on?

00:02:18.137 --> 00:02:23.457
So I think writing software, open source hacking is about tinkering,

00:02:23.697 --> 00:02:26.697
it is about playing, experimenting, trying new things.

00:02:26.997 --> 00:02:31.777
It doesn't mean that these things should be perfect from start to end.

00:02:32.960 --> 00:02:37.580
But we can play with them and this talk

00:02:37.580 --> 00:02:41.720
that i will just roll in is

00:02:41.720 --> 00:02:49.380
a recording from devhack day which is a part of btc prague for nerds and last

00:02:49.380 --> 00:02:56.580
year i noticed that not all participants are actually coders which is fine because

00:02:56.580 --> 00:03:01.140
we need many more people than just coders you know the common saying,

00:03:01.420 --> 00:03:04.880
yes, cypherpunks write code, but they also write documentation,

00:03:05.320 --> 00:03:07.120
they make design, they make art.

00:03:07.800 --> 00:03:11.500
They promote, they figure out new ways to use these technologies.

00:03:11.620 --> 00:03:18.260
They participate in social media, organize events, and then they apply and use

00:03:18.260 --> 00:03:23.560
these technologies in various businesses and give us legal help and many,

00:03:23.560 --> 00:03:25.220
many other important things.

00:03:25.600 --> 00:03:28.720
So for hacking and tinkering there is i

00:03:28.720 --> 00:03:31.800
would say i i would expand the definition

00:03:31.800 --> 00:03:34.880
of who is the

00:03:34.880 --> 00:03:37.600
cypherpunk's not only write code but do

00:03:37.600 --> 00:03:42.800
many of these other things so i hoped that there will be some people who are

00:03:42.800 --> 00:03:50.940
not necessarily hardcore coders and i spoke spoke about tinkering and this process

00:03:50.940 --> 00:03:55.280
of experimenting and creating new things. So I hope you like it.

00:03:55.600 --> 00:04:01.340
Let's dive in. I always liked to write code and release it.

00:04:01.420 --> 00:04:07.220
I was an early member of an open source movement, a free software movement.

00:04:08.240 --> 00:04:12.380
And I was coding since I was very young.

00:04:12.600 --> 00:04:19.060
I got my first computer when I was seven years old and the games were shitty.

00:04:19.060 --> 00:04:21.180
So I started to code instead.

00:04:22.240 --> 00:04:30.740
And then sometime I kind of was doing some other things, mainly Linux servers and so on.

00:04:30.860 --> 00:04:34.720
But I got back to playing, tinkering and open source.

00:04:35.380 --> 00:04:38.880
And this talk is about a long tale of open source.

00:04:39.020 --> 00:04:45.900
And I want to encourage you to create software, contribute, write and do it,

00:04:45.900 --> 00:04:51.300
especially if the software is shitty, if you're not proud of it and.

00:04:52.240 --> 00:04:53.920
It has some benefits.

00:04:55.000 --> 00:04:58.120
So, I don't know. Okay.

00:04:58.800 --> 00:05:03.560
So, you can become part of something that I call the GitHub graveyard.

00:05:04.100 --> 00:05:10.180
So, most people, when we speak about open source, we talk about very successful software.

00:05:10.360 --> 00:05:15.160
The Linux kernel is used definitely on more than 3 billion devices.

00:05:15.460 --> 00:05:20.700
It's by far the most used operating system kernel in the world.

00:05:20.700 --> 00:05:28.460
Android phones run Linux kernel, routers, servers, many desktop computers and so on.

00:05:29.873 --> 00:05:36.213
The second most popular kernel, which is Windows NT kernel, is not even close.

00:05:36.373 --> 00:05:39.113
It's like way farther in use.

00:05:39.293 --> 00:05:44.593
But I'm not talking about this widely successful open source software like the

00:05:44.593 --> 00:05:52.593
Linux kernel, Bitcoin Core, or many other applications that are used by many people.

00:05:52.593 --> 00:05:56.733
And when you read traditional traditional

00:05:56.733 --> 00:06:03.113
like like cathedral and the bazaar and traditional philosophy of free and open

00:06:03.113 --> 00:06:09.753
source software it usually talks about it is higher quality because given enough

00:06:09.753 --> 00:06:16.613
eyeballs all bugs are shallow people look at it they fix things they contribute things and so on.

00:06:17.153 --> 00:06:20.733
But that's the core. But then there's the tail.

00:06:20.953 --> 00:06:26.133
These are the projects on GitHub that have no users and less than three stars.

00:06:26.573 --> 00:06:32.233
And they're basically failed by all conventional metrics.

00:06:32.753 --> 00:06:39.493
And I'm going to try to convince you that it's still a good idea to publish code like this.

00:06:40.393 --> 00:06:43.253
Maybe we are measuring it wrong maybe this is

00:06:43.253 --> 00:06:46.273
not a success maybe a success is a weekend

00:06:46.273 --> 00:06:50.033
hacking project that you share and this

00:06:50.033 --> 00:06:56.733
also gives information to the community because even if the project fails if

00:06:56.733 --> 00:07:01.473
you tried something and then realize okay this is not a good way to do it if

00:07:01.473 --> 00:07:05.853
you don't share it there will maybe be 10 other people that will try the same

00:07:05.853 --> 00:07:09.553
thing and also fail while they could have just, you know,

00:07:09.753 --> 00:07:13.113
looked at your software or looked at your experience.

00:07:13.953 --> 00:07:16.473
So in science, this is called the dark data.

00:07:17.603 --> 00:07:23.163
So many, many scientific papers try to prove some theory.

00:07:23.403 --> 00:07:28.243
They gather data, they have a theory, they gather data. And with the data,

00:07:28.463 --> 00:07:29.963
they reject their theory.

00:07:30.483 --> 00:07:36.183
So this is basically, people call it a failure of science because they set out

00:07:36.183 --> 00:07:39.143
to prove something and they proved it's not true.

00:07:39.703 --> 00:07:45.043
But if they don't publish this information, then there may be other scientists

00:07:45.043 --> 00:07:48.663
that will do the same thing and they will also prove that it's not true.

00:07:48.903 --> 00:07:52.323
So it's better if they can just read the paper and say, ah, okay,

00:07:52.503 --> 00:07:58.743
someone thought this about reality or about whatever, medicine,

00:07:59.103 --> 00:08:06.963
about something they were investigating in this scientific search and they realized,

00:08:07.163 --> 00:08:10.803
okay, it doesn't work this way, but it's useful information.

00:08:10.803 --> 00:08:12.583
It saves time to other people.

00:08:13.603 --> 00:08:16.603
On the other hand open source

00:08:16.603 --> 00:08:20.323
and hacking is not scientific it's

00:08:20.323 --> 00:08:23.683
about tinkering it's about you know playing with things

00:08:23.683 --> 00:08:26.783
trying to do small changes maybe

00:08:26.783 --> 00:08:32.783
do some some experiments and you can you can see this in a 3d printing community

00:08:32.783 --> 00:08:38.323
oh okay there's a cup what if i do the handle this way and people play and do

00:08:38.323 --> 00:08:44.443
small adjustments and if they share it it's maybe useful to someone.

00:08:46.183 --> 00:08:49.963
But then people say it's the fear of the ship.

00:08:50.323 --> 00:08:53.543
You know, this code is not polished enough.

00:08:53.723 --> 00:08:59.103
I will release it when I write the documentation or when I remove all the to-do

00:08:59.103 --> 00:09:05.643
lines or to-fix lines or whatever very common is. I will rewrite this in Rust.

00:09:05.863 --> 00:09:11.643
Now it's in Python, but I will release it when it will be rewritten in a proper language.

00:09:13.057 --> 00:09:17.517
Then another reason why people don't ship is nobody will use this,

00:09:17.777 --> 00:09:20.697
which might be true. All of them might be true, actually.

00:09:21.757 --> 00:09:25.577
Maybe better projects exist, but then why did you write it?

00:09:25.717 --> 00:09:30.457
Maybe you just wanted to learn something, but maybe you wrote it because something

00:09:30.457 --> 00:09:33.357
was wrong about the original project.

00:09:33.957 --> 00:09:39.157
So maybe there's a better project that exists, but that didn't meet your needs.

00:09:39.157 --> 00:09:45.037
So you wrote the project because there was something wrong about the big project.

00:09:45.877 --> 00:09:50.317
Sometimes also might be true. It's too specific to my workflow.

00:09:50.637 --> 00:09:54.337
For example, I have a software that does one thing.

00:09:54.477 --> 00:09:59.337
It's one button and it opens the gate in our building, which is a relay.

00:09:59.777 --> 00:10:05.397
Very specific to my workflow, but maybe other people want to open doors as well.

00:10:06.517 --> 00:10:10.017
So does it make to release anyway even

00:10:10.017 --> 00:10:14.297
if any of this is true maybe maybe it's

00:10:14.297 --> 00:10:21.357
it's a good idea to release anyway so this is very controversial i i have to

00:10:21.357 --> 00:10:26.077
say i'm a proper programmer i even studied it i have paper with a stamp that

00:10:26.077 --> 00:10:32.597
i studied computer science so when i when i say this among my peers.

00:10:32.937 --> 00:10:36.177
They usually don't agree, but I love ugly code.

00:10:36.717 --> 00:10:43.057
Like it's a common story. There's a new engineer that comes to a company that

00:10:43.057 --> 00:10:44.757
had like an internal system.

00:10:44.977 --> 00:10:50.377
They've been developing it in PHP spaghetti code for 15 years and they come

00:10:50.377 --> 00:10:57.817
and they like hold their head and they say, okay, well, this is the worst code ever. And,

00:10:58.716 --> 00:11:02.736
And the only thing you can do with this code is rewrite it.

00:11:03.676 --> 00:11:06.976
When I hear this, first of all, I love the ugly code.

00:11:07.156 --> 00:11:12.376
Like if someone has been working on it for 15 years, even if it's ugly code,

00:11:12.516 --> 00:11:19.336
if it's spaghetti code, it kind of absorbs all the needs over the 15 years, all the specifics.

00:11:19.536 --> 00:11:23.656
And if it works, if it's useful, it doesn't matter that it's ugly.

00:11:23.836 --> 00:11:29.836
I think what matters is if it solves the problem and maybe have ugly user interface

00:11:29.836 --> 00:11:34.216
or, you know, it's not properly abstracted, there are no modules or something.

00:11:34.576 --> 00:11:40.476
But if it solves the problem, I think we should kind of praise the code.

00:11:40.736 --> 00:11:46.296
And what people don't see when they look at the ugly code is that it's quite

00:11:46.296 --> 00:11:49.936
hard because the specifications are changing over years.

00:11:50.096 --> 00:11:55.236
If it's something that's been developed over 15 years, it has a lot of knowledge in there,

00:11:55.236 --> 00:11:59.536
even though it doesn't have beautiful architecture so often

00:11:59.536 --> 00:12:02.376
so i draw here with a with

00:12:02.376 --> 00:12:05.556
a car that has a comma ai which is open source

00:12:05.556 --> 00:12:08.236
free and open source self-driving kit i don't know

00:12:08.236 --> 00:12:11.376
if any of you know comma it's basically

00:12:11.376 --> 00:12:16.956
an ai based self-driving so i don't have to drive it is actually on par with

00:12:16.956 --> 00:12:22.516
tesla self-driving but you can install it in many normal standards cars so i

00:12:22.516 --> 00:12:30.656
have a volkswagen so I draw here and about a month ago I was kind of curious okay this is a.

00:12:31.176 --> 00:12:33.836
Fastly developing field and I didn't get

00:12:33.836 --> 00:12:36.916
an update for the software for one year so I

00:12:36.916 --> 00:12:39.976
looked at their github and they said that they are rewriting the

00:12:39.976 --> 00:12:42.936
code so then I realized okay this

00:12:42.936 --> 00:12:45.876
project is dead so let's look for the forks there is

00:12:45.876 --> 00:12:48.636
a fork that is called frog pilot which is

00:12:48.636 --> 00:12:52.396
up to date released monthly it's not being rewritten

00:12:52.396 --> 00:12:55.116
and it has jumping frogs on the

00:12:55.116 --> 00:12:58.356
screen so it looks like kind of silly makes the

00:12:58.356 --> 00:13:03.476
frog sounds when you engage the autopilot so i

00:13:03.476 --> 00:13:06.156
really hate when someone says okay this is

00:13:06.156 --> 00:13:09.196
all wrong let's just rewrite it because usually people

00:13:09.196 --> 00:13:11.936
will waste a year of their

00:13:11.936 --> 00:13:14.796
time into rewriting and then

00:13:14.796 --> 00:13:17.756
the new requirements start coming in

00:13:17.756 --> 00:13:21.676
and the nice new codes will again not

00:13:21.676 --> 00:13:25.496
be so nice so it's not a permanent solution that's

00:13:25.496 --> 00:13:28.676
just you know freshly graduated engineer

00:13:28.676 --> 00:13:31.736
had a good idea we need to rewrite this because this

00:13:31.736 --> 00:13:34.636
is shit so the problem is the rewrite

00:13:34.636 --> 00:13:40.936
is often never finished so it's just a waste of time and the project dies the

00:13:40.936 --> 00:13:45.816
only thing i hate more is when they say we are going to rewrite it in a rust

00:13:45.816 --> 00:13:50.236
because that means that even if they rewrite it it will have zero contributors

00:13:50.236 --> 00:13:52.956
because no one likes to write rust code or.

00:13:54.270 --> 00:13:57.570
Five percent like compared to python or php

00:13:57.570 --> 00:14:01.190
it's very hard to write in rust so and

00:14:01.190 --> 00:14:03.950
embrace the shitty code doesn't matter that it's

00:14:03.950 --> 00:14:07.090
written in a shitty language if it works and please

00:14:07.090 --> 00:14:10.070
don't rewrite for like maybe there

00:14:10.070 --> 00:14:13.170
are some cases when it's good idea to rewrite maybe some

00:14:13.170 --> 00:14:17.870
cases even when it's good idea to rewrite in rust but just

00:14:17.870 --> 00:14:21.150
you know it's okay don't don't

00:14:21.150 --> 00:14:24.750
worry that it's ugly code just publish it if it

00:14:24.750 --> 00:14:27.750
has users maybe you can fix the

00:14:27.750 --> 00:14:30.670
ugly parts later maybe you will get some pull

00:14:30.670 --> 00:14:33.450
requests but most probably you will not

00:14:33.450 --> 00:14:36.210
get many users and you don't have to make it

00:14:36.210 --> 00:14:39.550
polished and nice now with

00:14:39.550 --> 00:14:42.910
ai coding there's this thing that happened and

00:14:42.910 --> 00:14:47.790
it happened before in other fields so now everyone who has a smartphone is a

00:14:47.790 --> 00:14:54.510
photographer and everyone everyone one who sets up a blog on Medium or Habla

00:14:54.510 --> 00:14:59.710
or Nostra or X or wherever is basically a journalist.

00:14:59.710 --> 00:15:03.070
We can write about our opinions, about our things.

00:15:03.310 --> 00:15:06.170
We can take pictures of our holidays and so on.

00:15:07.170 --> 00:15:12.510
And like these hobby photographers, they're not afraid to, you know,

00:15:12.750 --> 00:15:18.750
show their photos from their travels to their friends just because they're not

00:15:18.750 --> 00:15:19.850
professional photographers.

00:15:19.850 --> 00:15:25.790
Yes, the photos are not as nice as like super artsy photographers with fancy

00:15:25.790 --> 00:15:29.130
cameras and knowing how to do composition,

00:15:29.130 --> 00:15:33.950
but the professional photographers are not traveling with you all the time,

00:15:33.950 --> 00:15:37.810
so they couldn't have made pictures from your travels, so only you could have.

00:15:38.070 --> 00:15:42.450
And I think it's the same case with the code. Many people are going to write

00:15:42.450 --> 00:15:47.430
code, especially using AI, even people who don't know how to code really well.

00:15:47.530 --> 00:15:50.450
Now it's literally wipe coding. you write a prompt and

00:15:50.450 --> 00:15:53.870
you have a software and like

00:15:53.870 --> 00:15:56.810
if i take my degree out

00:15:56.810 --> 00:15:59.550
of my pocket and i i would look at the code i would say oh

00:15:59.550 --> 00:16:02.570
okay i see this was written by ai there are

00:16:02.570 --> 00:16:05.910
five bugs here and it's a shitty code but i

00:16:05.910 --> 00:16:08.950
don't live your life i would not have written the

00:16:08.950 --> 00:16:11.930
code for you because you wanted to write

00:16:11.930 --> 00:16:15.010
it so why not publish it it's like it doesn't

00:16:15.010 --> 00:16:17.990
matter the same same way as my photos

00:16:17.990 --> 00:16:21.010
when I want to publish them I publish them because

00:16:21.010 --> 00:16:26.150
there's no professional photographer following me around so don't worry about

00:16:26.150 --> 00:16:33.890
ugly code so maybe your hacky script is someone's missing piece maybe your failed

00:16:33.890 --> 00:16:39.130
experiment is someone's free experience and maybe your thinking process is someone's inspiration.

00:16:40.460 --> 00:16:45.860
This one is important because especially with permissionless technology such

00:16:45.860 --> 00:16:50.600
as Bitcoin, Nostra and so on, we can do many experiments.

00:16:51.260 --> 00:16:56.360
And it's maybe not the software that implements the experiment, but the idea.

00:16:56.800 --> 00:17:05.560
But people can see, okay, I will give you a few examples actually.

00:17:06.300 --> 00:17:09.280
Maybe this is a way to do it. maybe I

00:17:09.280 --> 00:17:12.240
won't use the software I will play with the software

00:17:12.240 --> 00:17:16.380
and then I will rewrite it in a way but the

00:17:16.380 --> 00:17:21.340
idea is expressed in the software so that's how you how you can write a blog

00:17:21.340 --> 00:17:25.440
about it but if you have an implementation people can play with the implementation

00:17:25.440 --> 00:17:31.460
and then write it properly so that's another reason to release it so I give

00:17:31.460 --> 00:17:33.300
you first example I have a few.

00:17:34.040 --> 00:17:37.020
So i have this device called pulsetto it's

00:17:37.020 --> 00:17:39.920
a vagal nerve stimulator vagal nerve is the

00:17:39.920 --> 00:17:42.720
longest nerve in the body that relaxes your body

00:17:42.720 --> 00:17:45.400
and i went to a

00:17:45.400 --> 00:17:49.140
music festival and there was a giant storm like portable

00:17:49.140 --> 00:17:52.640
toilets were flying around it's really windy so

00:17:52.640 --> 00:17:55.800
i went into my camper van electricity was off

00:17:55.800 --> 00:17:58.580
cell towers were off i was a little

00:17:58.580 --> 00:18:01.400
bit stressed you know i was looking if my friends

00:18:01.400 --> 00:18:04.840
are safe i couldn't contact them because the mobile network

00:18:04.840 --> 00:18:08.500
was off so i said oh perfect time for vagal nerve

00:18:08.500 --> 00:18:12.280
stimulation i need to calm down so i put it on i started

00:18:12.280 --> 00:18:15.700
the app the app basically sends the comment via bluetooth

00:18:15.700 --> 00:18:18.520
to the device to turn on uh but it

00:18:18.520 --> 00:18:23.060
needs to connect to internet to verify my account there's no subscription but

00:18:23.060 --> 00:18:27.220
it just didn't start because i was not online so i said okay this is fucking

00:18:27.220 --> 00:18:32.080
stupid i don't want this you know device to connect to the internet just to

00:18:32.080 --> 00:18:36.680
send signal to start electric stimulation so i released.

00:18:37.300 --> 00:18:40.960
An open source software i think it has three

00:18:40.960 --> 00:18:43.940
users me my wife and maybe one more user i

00:18:43.940 --> 00:18:47.080
i've heard someone used it for me it's

00:18:47.080 --> 00:18:50.320
not about how many users it has it solves my problem it runs

00:18:50.320 --> 00:18:53.240
on my phone it's published online so if i

00:18:53.240 --> 00:18:56.480
buy a new phone i i can just get it through obtainium

00:18:56.480 --> 00:18:59.440
on on my phone again and i learned how

00:18:59.440 --> 00:19:02.420
to reverse engineer bluetooth lower energy so that

00:19:02.420 --> 00:19:05.680
that was a learning experience for me for me the code

00:19:05.680 --> 00:19:08.820
is very shitty it is written in some framework that

00:19:08.820 --> 00:19:11.820
i don't even know it was completely wipe coded i

00:19:11.820 --> 00:19:17.380
did only the reverse engineering part but then everything else the gui was written

00:19:17.380 --> 00:19:23.060
by i think chat gpt i don't even know so yes it's a software doesn't have many

00:19:23.060 --> 00:19:30.760
users but i put it out there if anyone has this problem they can they can use it they can google it and.

00:19:31.891 --> 00:19:39.131
Do it. So I think we should be building for the joy of building the same way

00:19:39.131 --> 00:19:43.591
as people are taking pictures even though they're not professional photographers.

00:19:43.891 --> 00:19:50.511
I encourage you to write software just because it's fun and these days it's

00:19:50.511 --> 00:19:54.491
incredibly fun even if you're not very tech-savvy.

00:19:55.351 --> 00:19:59.151
So what should you release? Gists.

00:19:59.411 --> 00:20:03.491
Gists are a special thing on GitHub that is just one file, usually one script

00:20:03.491 --> 00:20:07.791
with documentation in comments for things you do daily.

00:20:07.931 --> 00:20:12.431
So you solve something once and you share it and people can use it.

00:20:12.571 --> 00:20:15.711
They just install it usually as a shell or python script

00:20:15.711 --> 00:20:18.691
for example i have just called whisper

00:20:18.691 --> 00:20:22.271
file so you get any video or audio

00:20:22.271 --> 00:20:25.451
file and it will transcribe it

00:20:25.451 --> 00:20:28.611
locally using open source whisper speech to

00:20:28.611 --> 00:20:33.111
text models but it does all the auto conversion so it doesn't matter what the

00:20:33.111 --> 00:20:38.211
format the the file is in you just you do just whisper file and then path to

00:20:38.211 --> 00:20:47.091
to an mp3 or m4a or m mp4 or whatever and you will get txt file and.

00:20:48.151 --> 00:20:52.691
Srt file with the subtitles which includes timing and you have a transcription

00:20:52.691 --> 00:21:00.091
then i've another one is yt whisper which is the same thing but it takes a youtube

00:21:00.091 --> 00:21:04.931
url so it downloads the video extracts audio and then transcribes it.

00:21:05.071 --> 00:21:11.831
So if you want just to look in some video, see what they've been talking about and so on.

00:21:12.611 --> 00:21:16.231
Venice IMG was used to generate all these images.

00:21:16.571 --> 00:21:20.011
So basically when you have these AI image generation models,

00:21:20.111 --> 00:21:22.991
you need to type the prompt, you press enter and you wait for,

00:21:23.031 --> 00:21:25.311
I don't know, half a minute, one minute.

00:21:26.264 --> 00:21:33.364
This one uses API and does it in parallel. So what I did, I took the PDF of this presentation.

00:21:33.704 --> 00:21:38.604
I gave it to four different AI models and I said, describe me cool pictures

00:21:38.604 --> 00:21:41.624
that could go along with this presentation.

00:21:41.724 --> 00:21:47.084
I just set the aspect ratio for vertical because I have the space on the right side.

00:21:47.844 --> 00:21:51.884
And then I just generated all of them in parallel. So in two minutes,

00:21:52.124 --> 00:21:56.844
I got 400 images and I just chose the nice ones.

00:21:57.024 --> 00:22:01.304
So you can do it. It's just literally one short Python script.

00:22:02.044 --> 00:22:06.904
I've been publishing my .files. It's all the macros in the shell and things

00:22:06.904 --> 00:22:09.224
that makes your shell more useful.

00:22:09.584 --> 00:22:13.524
Another thing you can release are weekend experiments.

00:22:14.284 --> 00:22:18.304
What if? So I will show you this one a little bit later. But for example,

00:22:18.584 --> 00:22:24.764
I'm in many signal groups with a lot of messages and sometimes I want to have

00:22:24.764 --> 00:22:26.724
an overview of what is happening.

00:22:27.004 --> 00:22:32.884
So I have a software, I give it one month of messages from a signal group.

00:22:33.044 --> 00:22:37.884
It uses AI to basically summarize it, extract all the links,

00:22:38.044 --> 00:22:43.724
describe images, transcribe voice messages, and it basically creates one nice

00:22:43.724 --> 00:22:45.924
summary of what has been going on.

00:22:45.924 --> 00:22:48.844
So my friend is using this for a newsletter. He's writing...

00:22:50.049 --> 00:22:55.169
It's a Liberation Travel newsletter, and it basically summarizes discussions

00:22:55.169 --> 00:23:02.209
from many groups that this company, Liberation Travel, has for its clients.

00:23:02.229 --> 00:23:09.349
I think we have, I don't know, 10, 12 signal groups, and that's the source of the content.

00:23:09.549 --> 00:23:14.829
So it's a nice weekend experiment. This weekend lasted for four months.

00:23:14.829 --> 00:23:18.669
Actually, it's not as easy as it sounds, but it's out there.

00:23:18.669 --> 00:23:27.149
I will talk about this one later personal automation basically your workflow is someone's.

00:23:27.809 --> 00:23:30.869
Inspiration so for example rss to

00:23:30.869 --> 00:23:33.689
podcast i want to read blogs but i don't have

00:23:33.689 --> 00:23:36.429
time to look in the on the screen so when

00:23:36.429 --> 00:23:39.489
i'm driving or actually when my car is driving

00:23:39.489 --> 00:23:42.569
itself i have time to read blogs but

00:23:42.569 --> 00:23:46.329
i don't want to look because i want to look on the road so this

00:23:46.329 --> 00:23:50.069
software will create personal podcast for

00:23:50.069 --> 00:23:52.929
for me from the blogs that i want to read i also

00:23:52.929 --> 00:23:55.829
release it online as a service which is called loaded for

00:23:55.829 --> 00:23:58.869
dot me so if you want to read some blogs

00:23:58.869 --> 00:24:02.129
in audio form this will this will basically do

00:24:02.129 --> 00:24:05.649
text to speech in a very fancy way it's also

00:24:05.649 --> 00:24:08.609
quite nice inspiration of how it's done it's not

00:24:08.609 --> 00:24:12.189
it's quite fancy actually then there's

00:24:12.189 --> 00:24:15.509
like video summarize so if someone like

00:24:15.509 --> 00:24:18.449
wants to hear a summary of this talk they can

00:24:18.449 --> 00:24:21.649
take the transcript and get the main

00:24:21.649 --> 00:24:24.589
points so it's a command line utility i use oh there's

00:24:24.589 --> 00:24:27.689
a nice talk i want to just see what they're talking about

00:24:27.689 --> 00:24:31.149
so i download it transcribe it summarize it

00:24:31.149 --> 00:24:33.949
and i have like a one pager to see if i want.

00:24:33.949 --> 00:24:37.929
To actually see the video some stupid

00:24:37.929 --> 00:24:40.769
ideas so so i i

00:24:40.769 --> 00:24:43.909
wrote a software that sends cashew tokens over

00:24:43.909 --> 00:24:46.849
a long-range radio over reticulum it's called

00:24:46.849 --> 00:24:49.949
not bent i have a very nice video showing

00:24:49.949 --> 00:24:53.169
how you can contact your 3d printer filament

00:24:53.169 --> 00:24:56.549
dealer in case of apocalypse and you can you

00:24:56.549 --> 00:25:02.949
can play with this my very recent project i think started working about a week

00:25:02.949 --> 00:25:09.469
ago was creating any cashew tokens for any fiat currency so if it has a price

00:25:09.469 --> 00:25:14.069
feed you can do check rounds over cashew or anything like that on my github

00:25:14.069 --> 00:25:16.449
or read about it on my nostril.

00:25:18.289 --> 00:25:24.029
So then we have the discovery problem, and this is something that is not solved.

00:25:24.769 --> 00:25:34.129
So GitHub search is broken for small projects. If you are trying to look for something,

00:25:34.349 --> 00:25:41.809
it is very difficult to see if someone has written this software or something like that.

00:25:41.809 --> 00:25:48.269
There is almost no curation for niche tools like my Pulseto software.

00:25:48.709 --> 00:25:55.069
There's a lot of signal lost in even more of noise. So what works?

00:25:55.409 --> 00:26:00.969
Personal blogs, notes, you can just share, okay, I built this and people can play with it.

00:26:02.009 --> 00:26:06.929
Then there should be, I have a friend and he used to do this thing.

00:26:06.929 --> 00:26:09.909
He would open facebook and he would say oh

00:26:09.909 --> 00:26:13.489
let's let's show the our female friends

00:26:13.489 --> 00:26:16.369
to each other but i never got to show him mine because

00:26:16.369 --> 00:26:19.269
he was showing me his so i started doing

00:26:19.269 --> 00:26:22.229
this on github i was just showing people oh these

00:26:22.229 --> 00:26:25.569
are my 50 repositories that i that i've

00:26:25.569 --> 00:26:28.829
done and people just sharing this which with

00:26:28.829 --> 00:26:32.589
each other crowdfunding is very useful

00:26:32.589 --> 00:26:35.529
for discovery actually because with crowdfunding you

00:26:35.529 --> 00:26:38.669
have to do marketing it gives you users buying

00:26:38.669 --> 00:26:41.849
so basically what i did i i've done one software

00:26:41.849 --> 00:26:45.629
which is called llama like venice i did

00:26:45.629 --> 00:26:50.789
crowdfunding basically if you if you supported the project you could get the

00:26:50.789 --> 00:26:55.929
source code right away and then it was released as free and open source when

00:26:55.929 --> 00:27:00.849
it reached the funding goal so this gives makes it more marketing intensive

00:27:00.849 --> 00:27:04.909
you have to focus okay you need to promote your crowdfunding campaign it's not easy.

00:27:05.489 --> 00:27:08.869
But you will write much better code because people paid

00:27:08.869 --> 00:27:12.389
for it so you're not gonna you know give them of course

00:27:12.389 --> 00:27:15.229
uh but also when people invest it

00:27:15.229 --> 00:27:18.009
in your code they will at least try it maybe they

00:27:18.009 --> 00:27:20.969
will not use it but that it's this notion of oh

00:27:20.969 --> 00:27:23.829
okay i paid i don't know 10 000 sats

00:27:23.829 --> 00:27:26.529
for it so at least i'm going to download and play with it

00:27:26.529 --> 00:27:29.729
so so it's actually creating this

00:27:29.729 --> 00:27:34.349
barrier was very helpful for for this then

00:27:34.349 --> 00:27:37.409
if people are doing something and and you

00:27:37.409 --> 00:27:40.589
have solved it in a software that is like

00:27:40.589 --> 00:27:45.429
when i see something doing something on a linux machine and and they're not

00:27:45.429 --> 00:27:50.889
very good i i have this urge to kind of punch them and you know steal their

00:27:50.889 --> 00:27:55.789
keyboard and show them how it's done so share your software like this oh i why

00:27:55.789 --> 00:27:59.969
are you transcribing a video so So, so complicated way,

00:28:00.069 --> 00:28:02.449
just run the script and it does everything for you.

00:28:02.889 --> 00:28:04.809
And lightning talks are really nice.

00:28:06.379 --> 00:28:11.039
Okay, and now we are approaching the end. This is one of the projects.

00:28:11.439 --> 00:28:14.759
This generates, it's basically an Oster client.

00:28:15.099 --> 00:28:21.659
This is the NPUB version for things when you want to share something,

00:28:21.659 --> 00:28:24.399
but you don't want to share it under your own name.

00:28:24.939 --> 00:28:30.559
But creating one-time use NPUB doesn't make sense because no one will read it.

00:28:30.759 --> 00:28:33.939
So this is a shared identity. the private

00:28:33.939 --> 00:28:37.459
key is derived only from the password so basically

00:28:37.459 --> 00:28:40.419
here you write what you want to write when you

00:28:40.419 --> 00:28:44.979
write the password the private key is is derived you press this button and it's

00:28:44.979 --> 00:28:49.359
published under this shared identity and then you just spread the password among

00:28:49.359 --> 00:28:55.459
the cool people and you have a community of anonymous microblog of people no

00:28:55.459 --> 00:28:57.979
one knows who it is and so on,

00:28:58.719 --> 00:29:01.219
So wipe coding is very cool.

00:29:01.719 --> 00:29:05.539
Please ship. I will skip over this a little bit.

00:29:06.399 --> 00:29:10.719
But basically, we are all going to run our own AI inference.

00:29:11.319 --> 00:29:16.379
And the only challenge I only ask is when you wipe code something,

00:29:16.879 --> 00:29:19.659
please write how to use it and how to deploy it.

00:29:19.859 --> 00:29:24.239
No one knows how to install your specific version of Node.js.

00:29:24.459 --> 00:29:28.939
It can be actually generated also. So write good documentation.

00:29:29.699 --> 00:29:35.579
So building in public, why? Code diary, you enable serendipity.

00:29:37.179 --> 00:29:42.819
You create breadcrumbs for other people. And the thinking process is also interesting.

00:29:43.299 --> 00:29:49.299
Maybe you learn about some better and bigger software that solves the same problem.

00:29:50.979 --> 00:29:54.059
And how to do it? Write a good readme.

00:29:54.279 --> 00:30:01.119
Why I build this? How to deploy? And so on. share failures and the ask you are

00:30:01.119 --> 00:30:06.659
a coder now if you have ai ship at least one useless project per month and share

00:30:06.659 --> 00:30:10.999
it on nostr thank you very much this is how you can contact me and what you

00:30:10.999 --> 00:30:14.219
can talk with me about so thank you very much.

00:30:19.739 --> 00:30:24.179
Yeah we could do i didn't see you were there we could do one extra questions

00:30:24.179 --> 00:30:27.539
maybe if you're still around for five minutes we could take that out the break

00:30:27.539 --> 00:30:34.999
if you're interested anyone has any questions for you man there's one there's

00:30:34.999 --> 00:30:37.499
two down here there oh i'll take it.

00:30:40.903 --> 00:30:45.043
As you mentioned earlier, there's a search engine in the GitHub is broken.

00:30:45.423 --> 00:30:47.243
And what about the white coding?

00:30:47.723 --> 00:30:53.563
There should be a tool to filter the repository that has been white put because of the searching.

00:30:53.883 --> 00:30:59.403
I think maybe the next step should be there should be a tag,

00:30:59.523 --> 00:31:01.923
at least I white put it in this record.

00:31:02.223 --> 00:31:09.303
So maybe don't spend maybe 12 hours to just look at the code because maybe even

00:31:09.303 --> 00:31:12.003
the owner doesn't know what to deploy.

00:31:12.323 --> 00:31:16.123
I think that's not the problem. The problem is finding. Like you are doing something

00:31:16.123 --> 00:31:19.343
super niche like my, you know, Pulseto device.

00:31:19.663 --> 00:31:25.483
And how do you even find for it? Because when you search, you find 50 projects

00:31:25.483 --> 00:31:27.583
that don't solve the problem that you are solving.

00:31:27.823 --> 00:31:34.483
So one of the solutions we were trying was using this kind of software to just

00:31:34.483 --> 00:31:38.223
share cool projects. But the problem is that the domain is too wide.

00:31:38.863 --> 00:31:44.143
So it is very hard to find if someone has even tried to wipe code something.

00:31:44.583 --> 00:31:48.443
As I said, you know, I'm not against shitty code. It's okay.

00:31:48.663 --> 00:31:54.083
Like I can look at the code. You can ask AI to see if there are any backdoors and so on.

00:31:54.203 --> 00:31:57.083
So run it in a virtual machine. It doesn't matter.

00:31:57.383 --> 00:32:03.943
The problem is to actually see if someone has done anything related to what

00:32:03.943 --> 00:32:05.383
you want to do to save you time.

00:32:05.783 --> 00:32:09.003
Maybe you will not use the code, maybe you will just use the ideas,

00:32:09.243 --> 00:32:13.683
maybe you will just take the README and wipe code it yourself or something like

00:32:13.683 --> 00:32:15.103
that. So that's not a problem.

00:32:15.283 --> 00:32:20.903
The discovery problem is there are hundreds of thousands, millions of projects

00:32:20.903 --> 00:32:25.703
and there will be many more because of wipe coding and how do you find if you

00:32:25.703 --> 00:32:29.823
have to actually code something or just use someone else's software and improve it maybe.

00:32:31.325 --> 00:32:36.885
All right, we got one more question here. So I really like this project. I'm not a developer.

00:32:37.245 --> 00:32:40.265
I'm a marketer, but I really like the idea of shared identity.

00:32:40.605 --> 00:32:44.465
So how can I actually use it in real life?

00:32:44.585 --> 00:32:48.465
Can I deploy this to Instagram, to X, or some social media?

00:32:48.705 --> 00:32:53.045
So this is Nostro only, but this website is called NPUB Pro.

00:32:53.225 --> 00:32:56.925
You get it for free from any Nostro identity. and this

00:32:56.925 --> 00:33:00.705
is one html file where you basically say you

00:33:00.705 --> 00:33:03.565
basically just paste the npub so in

00:33:03.565 --> 00:33:06.625
in the readme of my project called anon microblog there's

00:33:06.625 --> 00:33:10.765
a how-to it's very easy to set up it takes like five minutes so if you want

00:33:10.765 --> 00:33:16.825
i can help you even write me and i i've set up there are i think three yes at

00:33:16.825 --> 00:33:21.745
least three instances of this no four that i know of that are that are running

00:33:21.745 --> 00:33:24.005
and it's literally super easy.

00:33:24.165 --> 00:33:27.285
So you need a profile picture and an idea.

00:33:28.405 --> 00:33:32.865
And basically, Enpa Pro gives you a link up there for posting.

00:33:33.205 --> 00:33:37.225
And it can be used from the web. So this is a Nostre account.

00:33:37.225 --> 00:33:41.425
So you can follow this account on Nostre and repost, reply, everything.

00:33:41.985 --> 00:33:46.185
But most users even don't know that there is Nostre behind because this looks

00:33:46.185 --> 00:33:48.965
like a blog and there's a website where you have,

00:33:48.965 --> 00:33:51.865
okay this is where you write what you want to post

00:33:51.865 --> 00:33:54.585
and this is where you write your secret password and and you

00:33:54.585 --> 00:33:57.605
click publish there's no back end everything is on nostril

00:33:57.605 --> 00:34:00.725
relays so you don't have to worry about any

00:34:00.725 --> 00:34:06.225
kind of infrastructure if you can host one html file which i can host for you

00:34:06.225 --> 00:34:11.805
which is this one then you get everything else in the ecosystem for free so

00:34:11.805 --> 00:34:16.265
i'll i'll gladly help you just write me email or whatever and I'll set it up

00:34:16.265 --> 00:34:18.305
for you. It's super easy. Thank you.

00:34:19.625 --> 00:34:21.225
Is there any other questions?

00:34:22.805 --> 00:34:27.045
No? There's, there's, there was one here. It is.

00:34:29.534 --> 00:34:33.834
You mainly talk, I think, about like personal projects of yours.

00:34:34.114 --> 00:34:38.514
Does your mentality change when you actually come to an existing project,

00:34:38.674 --> 00:34:41.094
even if it's also a very small one?

00:34:41.234 --> 00:34:47.334
Because there are other people involved who maybe don't like the idea of a key or a bike code.

00:34:48.714 --> 00:34:53.674
Yes, definitely. The first thing that you need to do is to understand how to

00:34:53.674 --> 00:34:56.394
wire it in and how the people do.

00:34:56.394 --> 00:35:02.054
So, for example, the fiat with Cashew that I was doing, first I had to learn,

00:35:02.194 --> 00:35:04.634
okay, how are actually tokens issued here?

00:35:04.834 --> 00:35:06.894
What's the structure of the project and so on?

00:35:07.314 --> 00:35:12.374
And you are aiming for minimal changes. So, if you want to incorporate in there,

00:35:12.474 --> 00:35:19.374
you don't want to change too much of their code because then it's a maintenance hell and so on.

00:35:19.574 --> 00:35:25.074
So, you want to concentrate your code in like a separate module and do the minimal

00:35:25.074 --> 00:35:28.374
changes there. So it definitely changes how you look at the project.

00:35:28.674 --> 00:35:33.914
You can use AI to understand the project itself as well. It can look at the

00:35:33.914 --> 00:35:36.074
code and tell you, okay, how things are done.

00:35:37.054 --> 00:35:43.014
You should also include the documentation in the prompts so the AI understands

00:35:43.014 --> 00:35:44.914
what the project is about.

00:35:46.274 --> 00:35:50.934
So I'm not saying you should wipe code everything. I also write some code.

00:35:51.214 --> 00:35:54.694
So mainly the boring things like parsing command line options.

00:35:54.694 --> 00:35:58.174
I don't want to write the stupid parser, you know, I just say,

00:35:58.314 --> 00:36:02.634
this is how I want to call it, please parse it and put it into variables.

00:36:02.634 --> 00:36:07.034
And that part is great, like I wouldn't have written it any better.

00:36:07.354 --> 00:36:13.774
So it doesn't like, I think AI writes better code than 90% of programmers.

00:36:14.494 --> 00:36:19.054
So I'm not bashing the output of the AI is actually quite nice.

00:36:19.374 --> 00:36:24.014
So yeah, but it changes like if you're interacting with some other code,

00:36:24.014 --> 00:36:30.394
and you eventually want it merged, then you need to do it the way they do it, basically.

00:36:31.354 --> 00:36:32.514
Thank you very much.

00:36:33.654 --> 00:36:39.094
Thank you for listening. I hope you enjoyed this episode of the Option Plus podcast.

00:36:39.474 --> 00:36:42.914
This is a value-for-value production. If you liked it,

00:36:43.134 --> 00:36:50.734
I hope you used service such as Fountain.fm or any other app or podcast player

00:36:50.734 --> 00:36:56.094
that supports giving value back and that you were streaming some sets.

00:36:57.054 --> 00:37:03.454
I appreciate feedback and in the value for value ecosystem you can attach feedback

00:37:03.454 --> 00:37:12.094
to something that is called a boost so you can send however many sets you like and give comments,

00:37:12.434 --> 00:37:13.914
questions and so on.

00:37:14.094 --> 00:37:16.874
Thank you very much for listening. Bye.

