Loading...
Loading...

This week Jonathan chats with Johannes Millan about Super Productivity and Parallel Code! Those are two very different projects, but both aiming for helping us get our work done. Super Productivity is a scheduling and time tracking suite, while Parallel Code is an almost-IDE for managing and isolating AI coding agents. This episode has something for everybody, so check it out!
You can join the conversation in the Hackaday Discord, watch live or get the video version of the show on Youtube, as well as getting the full story and show links from Hackaday. Oh, and follow the official Mastadon account!
Theme music: "Newer Wave" Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
http://creativecommons.org/licenses/by/4.0/
This is Floss Weekly, episode 868, recorded Tuesday, April the 21st, remove the noodles.
Hey folks, it's time for Floss Weekly, that's the show about free Libre and open source
software.
I am your host Jonathan Bennett, and today we're going to talk about programming.
We're going to talk about, is it fair to call it vibe coding?
See, that's become sort of a parodgative pejorative, excuse me.
And I don't know that it's entirely accurate, hopefully not accurate for what people are
doing in open source projects.
Right?
Anyway, the tooling is getting better.
The tooling is getting better around this, and one of the fun things is that there's a
lot of open source tooling around this, and that is what we're talking about today.
I'm chatting with Johannes Amillen about parallel code and something he calls super productivity.
Let's go ahead and bring him on, and we'll dive into it.
Johannes, we're going to the show.
Yeah, hi, Jonathan, thank you very much for having me.
It's good to finally have you.
This has been scheduled for like a month and a half now, quite a while, and yeah, it's
good to have you here.
So your project is parallel code?
Exactly.
Yeah, two big projects, I say one super productivity, which is an source project, I've been working
on for I think nine years now, and just recently, I think two months ago, I started to work
on parallel code, which is by comparison much, much smaller, but yeah, also at the moment
I'm dividing my time equally for both projects.
So these are two very different projects, aren't they?
Yes.
Yeah.
Let's talk about first the older one, which is because there are some people that are
going to go AI and just check out.
So we'll talk about the not AI stuff first, and then we'll dive into the the LLM coding,
and maybe how those two go together more than you think.
So what is super productivity?
Yes, super productivity is an open source to do time track app, which I started like many
years ago, because I'm working as a freelance programmer for, yeah, I don't know, 15 years
now, or something like that, and for some project, it was required to do gyro time tracking
and, yeah, as most programmers, I don't like to do repeatable stuff, so I thought, oh,
there must be a smarter way to do this, and this is how it all started, and yeah, I don't
know, somehow I stuck with it, it's like sometimes we came a little bit of an obsession
of mine, and yeah, it was even though there was never like making money with it, or something
like that was never, never like, yeah, a focus of it, yeah, somehow, I don't know.
I use it myself every day, that's probably a big part, and I really enjoy tinkering
with my tools like to make my day a little easier for myself, and so that's probably the
reason why I couldn't just drop it, and yeah, I don't know, and then in the last year,
that's probably worth mentioning, like it grew quite a lot, I think maybe also a little
bit, well, there are also many new people on the project who contribute stuff, who, yeah,
do testing, write back reports, and it's really interesting how this changed, but for the
most part of the solvent years, I think, or for the nine years, yeah, it has been mostly
a sort of project, not totally, they were all of a sudden people, but, yeah, yeah, I've
not met many open source developers that wouldn't say that they like to tinker with tools,
that sort of seems to be something that's true of all of us, that's why we're here, right,
we like tinkering with the tools, yeah, okay, so this is a setup for you to answer this
question, because it's going to sound a little mean, I don't mean it that way, but it's
just a time tracker, how hard can it be? Surely that was like you programed it in a day
and it was done, right? Yeah, it's a good question, because like I think the first prototype,
back then was much worse to Wilson, was out AI and everything, it was done, I think,
in maybe a week or something like that, and I don't know, I can't really say like what
happened, but there is like the complexity grew, I think, one part of it is the integrations,
like that it's connected to other tools like GitHub, like gyro, like GitLab and many more,
that's one part of the complexity, and the other part is like the more, yeah, also maybe
a little bit typical for sources, like if people requesting stuff and then there gets added
more and more, and hindsight, I'm not sure that was always a good decision, I have to say,
because it's much harder on many levels to remove stuff than to edit, because like you also
people get angry sometimes, like if you remove stuff, yeah, there's definitely some tension
there, I've found myself using, I'm sure you're familiar with XKCD, I think a lot of our
audience is, one of the XKCD comics is entitled Workflow, and it's a bug that was fixed in an
imaginary program, that holding the space bar was causing, you know, unlimited CPU cycles or
just spin and spin, and the guys, like I finally fixed the bug, and you had multiple users writing
in and going, no, that broke my workflow, I've used that comic multiple times in the last two days,
yeah, yeah, there's something to it, I think for the most part, like it's really a great community,
and like people are really friendly, and there are many people that are very understanding also
of the limitations of the project, like sometimes I maybe, or they have been okay, since like when
I broke stuff, and it's usually people, yeah, they're friendly through it, some maybe panic a
little bit, but yeah, it's really, really surprising in a way to see like that there, people coming
together and to, yeah, to work on something, which is not yet their own, so to say, and then
yeah, being just, just friendly, and good, how do you say, good, good, good building or well
intention about it, that's really, was really a nice surprise again and again, yeah, so using super
productivity, I'm seeing a term here that I'm not super familiar with, Pomodoro, it works as a
Pomodoro timer, yeah, that's one of the many features, like Pomodoro is a technique for
focus work, or also an anti-procrastination technique, so it's pretty simple, like you take like
these red Pomodoro timers, the sketching clock you have sometimes, and then you set it to
25 minutes, and then you try to focus as much as possible for those 25 minutes, and
yeah, when this helps some people, and this also was, I think, an important feature for many,
I don't use it as much as myself, but this, yeah, also I've always been a part of the product
to not only be it to do app, but to bring in productivity methods, to play with them, and to
really make it easier to work, and also more enjoyable, I think, that's also a part of it,
and yeah, now it's still there, the feature, it's a little bit extended, it has also like a
flow time timer, and you can switch between these different methods, yeah, it's also maybe
explanation like why it grew, like recently to pay a little respect to it, like last year,
I think it was, I also added a plugin system, so the idea is like to have a strong core, but that
people, because I think productivity is very much about experimenting with stuff, and
things, everyone is different, and for everyone, there are different methods that work better,
and also like it changes for everyone individually, like maybe for some specific task, or for
some time in your life, I don't know, the Pomodoro method works very well, but at another time,
maybe you're facing different problems, and so I always think it's good to experiment with
a staff, and like with the plugin system, it's also a swipe coding, which is now pretty open to
everyone, everyone can adjust this tool like, yeah, at a very deep level, which I think, yeah,
it could be an interesting direction, like where the project is heading,
like so far, I think, yeah, some 20 plugins, or something like this, there's stuff like,
how to put it like, yeah, it's a gamification of YouTube, yeah, it's just an experience system,
and yeah, I think it's really cool, honestly, I don't use it myself, because I don't need
at the moment, but I think it's really cool that you have the option to do that.
Yeah, interesting, I'm poking at the web version right now, which is pretty fascinating,
I found a coffee counter, I may have to get that going.
Yes, so there's versions of super productivity for all of the desktops, and also Android,
and iOS, and running on the web, is that all one code base?
Yes, yes, it's electron-based, okay, gotcha.
Electron, and for mobile platforms, it's capacity.js, and yeah, that's what makes it possible.
It's still quite a hassle sometimes, so I have to say, like, especially on Linux, unfortunately,
and it's also like not the fun part, I have to say, like this very special knowledge involved,
and knowledge you don't use for anything else, and then just some day it breaks again,
it's what I will tell you, the secret that I found to making this work
is to find somebody in your community that actually uses it on Linux, and hand the packaging
duties over to them. Yeah, that's probably a smart idea, that's the way to do it.
Not everybody can pull that off, but when you can, man, it's great.
Yeah, I have to say, well, that's it, it's really a great idea.
Yeah, I just think I can find somebody that actually uses it on that platform.
All right, so we support on all these different platforms, and this immediately brings to mind,
and I know it's in here, because I've seen it, being able to sink between those different platforms,
because it's not very useful to have it to do list on your phone, and have a different one
on your desktop, and a different one on your Windows desktop, specifically if those don't talk to
each other. So what's the answer here? Yeah, there's also a long story to it.
For some reason, like many years back, I decided I don't want to have a back end,
because honestly, also, because I didn't want to deal with illegal stuff, I didn't want to do
deal with the risks of losing the data of other people, and so I decided to go with the
yeah, how it's called, I have a specific term for it, I forgot. It's not self-hosted.
Yeah, I don't remember, but there's a specific term for these kinds of apps.
Not many who do it like this, but well, so I decided like people have Google Drive,
it's not that complicated of it. The data's not so complicated, and so why not just
make the sync file-based, and yeah, and that's what I did, like I think I started with Google Drive,
and then I added Dropbox, and also file-based sync, and in hindsight also maybe that was not the
best decision, because also like, like with the integrations and many channels where they
are available, this was a third party getting involved, and there were problems, and also like
using services which are not really meant for it, cause problems, and also I had to
cancel Google Drive at some point, because they changed their policies, and also then I added
WebDF file support, which opened the door, a whole other bunch of problems, but yeah, it's still,
I think it works well for most people, but all these ongoing problems led to the decision to
work on a dedicated backend service, which you can self-toast if you want, but yeah, that's
specialized on unthinking the kind of data this application produces, it's called SuperSync,
just because of the super init. Actually, I'm not so happy about the name, if I'm honest, but
it is what it is, and it doesn't make sense to change it, probably would have liked something clever,
more like maybe banana tasks or whatever, but yeah, here we are, it's Google Bill, so that's
what it has going for it, I think. Yeah, there you go. So you're hosting SuperSync for right now.
Yeah, yeah, I see a note here, this service is free for now, but we'll likely cost money in the
future, which having servers is not free, somebody's going to pay for it. It's unfortunate, true,
and also, personally, I would really like to work on the app full-time. I'm doing it now,
but I'm doing it from my savings, so this won't work forever, especially now, that I have a
family to sustain. So this was an idea like how it could work, it's really a tricky subject, I
think, like monetization for source projects, especially if you want to be as ethical about it as
possible, but I think like providing this service, which costs money, like as you mentioned,
like the service are not for free, the legal risks you enter by having that are not free if you
want, and so I think it's fair compromise to go about it, and nobody has to use it, I won't
remove the other sync options that are already there, but yeah, I'm hoping that it will become a
source of income, which is enough to sustain myself, but at this point, it's not clear if it will
happen. Yeah, no, that's understandable. All right, super, super interesting, and then there's,
let's look, there's password-based encryption. I am, as we talk, I am sitting here poking at this,
trying to set up a little account for myself, so. Yeah, like it like hands on,
I think it's a good sync. Yeah, yeah, exactly, it's another sync, like,
also we see all sync providers, but with the new one, it's kind of mandatory. You do like
enter-enter encryption, which means like you enter password locally, and the data gets encrypted
on your machine, and so I can't, I and also nobody who maybe, I don't know, hex a server,
or something like that, will be able to read the data, given you don't have like, I don't know,
a two-letter password or something, or someone use a quantum computer, I don't know how this will
play out honestly, but yeah, it's, so it should be pretty secure, so you don't have to worry about,
yeah, other people doing stuff you don't want with your data, which I think is a good sync.
And also, I think, a important point, actually for many people,
that you don't just send all your data to the cloud, and that you know what happened with it.
I mean, you don't have to be a dogmatic about it, but I think like, at least having an idea
of what's happening with it, this is probably what's saying.
And so, as I'm poking around at this, I'm seeing that you have just your simple task list,
you have a time tracker, but you can also set it up as a productivity suite.
So what's the, what all do you get with the productivity suite that's beyond just time tracking?
Yeah, there is, there is a habit tracker, which is pulled in, you, I have to look at the,
yeah, you have, you have like a notes feature, you have all the integrations,
you have, you have a planner, which is, which is, yeah, for planning obviously over time,
and then you have a schedule, which is like a timetable. So, super predictive, one build in feature
is timeboxing, which you also don't have to use, but it's there. And if you timebox your task,
if you assign a certain estimation to them, like the schedule will automatically like
generate an overview, like a timetable, how it would play out.
That's also another thing. And you get a board feature, which allows you to, yeah, configure
our kinds of boards like Kanban, like Eisenhower matrix, like, yeah, basically whatever you want,
it's pretty flexible. And, yeah, lots of stuff. And like coming back to it, like it's with
productivity, I think you don't, I often use this saying, oh, I don't think I'm using a
to its full potential. Or maybe it gives me a little bit excited or something like that.
But it's really about having the options for experiment when you need it. So, I think for
many people, probably like who never had it to do list at before, like just doing this is probably
will work very well. I think it will really change how you go about your day.
If you need something more specific, or for example, you feel like, I don't know where my time went,
that's, you also have options for that. And, yeah, that's what I personally, or maybe also what
what they explain this obsession a little bit, or why I didn't get bored of the app is like,
how I use it evolved a lot through the years and changed a lot. And, yeah, and I'm hoping to
strike a balance that it's still like very accessible for, I don't know, non-power users or first-time
users. But there, yeah, there really are a lot of options if you want to experiment.
Yeah, I'm finding more and more the ability to like connect it to a Google calendar,
the ability to pull tasks from GitHub and a bunch of other integrations here. But GitHub is the
one that really is most interesting to me. I'm trying to get some of these things set up because
it looks really cool. I probably have to use this. Yeah, try it out. I kind of recommend it.
My current time tracking solution is unfortunately just a website that I think is probably entirely
closed source. Maybe not. Maybe they have some open source stuff. I don't know. I won't
mention the name of it then because I don't remember. But this looks like it's more featured than that is.
So what's your reason for doing taptricking?
I have gone full-time with the MeshTastic project as a programmer but also a business person.
And just trying to understand how much time I'm putting into that is fairly important as
some things develop and trying to track which pieces of hardware I'm working on.
And so that's sort of what I'm working on. But the ability to, it would be really interesting
to be able to say, okay, let's pull in the GitHub issues that are assigned to me. And then,
okay, I'm working on this one. All right, now I'm working on that one and to automatically
get that time tracking. Like, that's a cool idea. I could get behind that.
That'd be very neat. Like, I've spent, I mentioned it before the show. I spent some time
today. This is a little go two watch S3 plus which is a cool little piece of hardware. So it's got
a lower radio in it. And ESP32 has three GPS IMU, you know, all the normal stuff that you would
expect out of a MeshTastic device. And someone sent in a pull request because one of the buttons is
wired up directly to a power control unit inside of there. And so we didn't have any, you know,
we couldn't observe the button and somebody sent in a pull request and said, hey, here's how you
observe the buttons that you can turn the screen on and off. And it's like, oh, cool. So I pulled the
pull request down and started testing it and the device crashed. It's like, oh, that's not cool.
Well, come to find out the device crash was even without the pull request and we just had noticed it.
So this is why we have alpha software. So I've been most of the morning. I've been playing with that
trying to understand why and how we are crashing. I think I'm, I'm just about there making progress
on it. But yeah, that's been fun. Oh, anyway, let's see. It looks like things like the Google
calendar sync don't necessarily work from the the web app. I know. Yeah, there was Google. The problem
is, yeah, it's something I started for my little break and it's actually a Google thing. You,
it's a legal thing. I need to, I don't know, I need to send them a video about the permissions and
these kinds of things. And hopefully I get to tomorrow and then it probably will take another
week or two for them to check it and then hopefully it will work for everyone again. Yeah. Yeah,
I could share my screen and show you I'm getting the message access block to this app's request
is invalid. Yeah, yeah, it looks scary. It does. If you, if you're not familiar with what's going
on under the hood. Yeah. All right. So that is super productivity, which is a very cool project
in and of itself. I now, I want to pivot for a minute and talk about the new project and that's
parallel code. And what, what is, but what is parallel code? Let's start there and then we'll
talk about why it exists and what you're using it for. Yeah, a parallel code is a wrapper for
a genetic coding clients like code code like codecs like Gemini's here. I
and yeah, it also came to life because I saw a gap like when working with these tools more
and more myself. I think at some point where I started like was using them within my IDE.
And then they got more powerful and you could trust them a little bit more to run on,
yeah, to let them run on their own. And so it developed that I just had multiple terminals
side by side with each other. And I mean, that describes the Linux experience for me,
multiple terminals side by side. Yeah. Which is, which is a wonderful thing there. I don't
have anything bad to say about it, but I thought like it's repetitive. And as I said, like being
a programmer that doesn't feel good. Sure. So no, I got it. I got it. So I thought, yeah, let's,
let's add, it makes this easier, like also like this, using Git workflows for it because it
just makes sense to have isolated context when you're working on stuff in parallel. And to add
information, which I need all the time, also not like, like with Timox, you can also do all
the stuff, but you have to configure it again, again, every time, or I don't know, maybe,
maybe you don't, but that's as far as I got with Timox. And so I thought, yeah, it's,
I like the terminal, but there's also something to be said about the good user interface. So
I thought, yeah, it's not too complicated. And I needed for myself. And so it started. And yeah,
then I thought maybe this is useful for other people too, because I really thought it's
pushing my workflow to another level, really. Because, yeah, I think with agente coding,
now it's still for some people still very controversial, subject and rightfully so.
But I think for most programmers, it's already in reality. And it's a very exhausting way
of coding, especially if you're doing stuff, if you're doing multitasking, it's not really what the
human brain is built for. And it's really exhausting. Like after you have to have a high concentration,
and what connects to this or what is the reason for that is that you, yeah, that these
context switches are kind of hard. For example, like in my previous workflow, I was switching
at the terminals running side by side. And then maybe I had another bunch of terminals,
open side by side. And then I wanted to check the changes. And then I opened my IDE again.
Then I wanted to check in the browser and open that. And while there still is like this,
you're still doing this multitasking, it's a little bit softer because you don't have like as
harsh of a change with this parallel code, because you have it on one screen. And it doesn't feel
as disconnected as switching to another app does. And yeah, and yeah, basically I'll build around
my own use case. There is like a changed file view, there you can fire up sub terminals,
like for example, to run your tests with, or you just quickly check something with the
command line, you can, yes, it's not too crazy for a feature, but there's a notes panel,
which is surprisingly useful because I find myself opening a dedicated application just to make
notes all the, like K-Rite is usually I have usually multiple instances K-Rite to either, you know,
pop a quick note in or, you know, to, I've got, I think I have two of them open right now,
or one K-Rite with two tabs with a couple of crash outputs. Now, I have note, little, little,
you know, throw away notes open all the time. So yeah, is, is parallel code an IDE then?
I don't know what the correct term is. Actually, it's the source basis so new in a way.
I, I don't know, I don't know what the correct technical term is. Maybe I would call it a
wrapper, like, very pretty generic term, but it's a wrapper like for, for different,
agentic, uh, see the eyes. And so it, it lets you want to make sure I have my, my understanding
of this is right. It's, it's almost just a container for terminals, although there's obviously
some more slots in it than that, but as you first look at it, like looking at the screenshots here,
it's just multiple terminal instances side by side. But what this is doing is it's letting you
load up your different coding agents. So, you know, whether you're working with Gemini or
Claude or whichever, whichever ones you have access to. And so is the idea here that you would have,
you have one task that you're trying to get done and you want to give that same task to both
Claude and Gemini to see how they approach it differently. Is it sort of a lot to do that?
You use what, like, I'm, I've only begun dipping my toes into the water of letting the AI
write code. I had good success with it so far. Um, but I am not the, I'm not the power user for
this yet. So I'm, I'm still trying to understand like, what all can you do with it? What, so what is
your workflow look like when you have a programming task to get done or multiples, let's say, how do,
how do you use parallel code to make that happen? Yeah. A reason for why multi-tasking,
this is becoming a, well, it has become a reality for me is because you wait for,
for the agents to finish. They are doing better thing, whatever they're doing.
And so for me, like, I'm an impatient person and I don't know, maybe I watched many YouTube
videos or something like that, but I get distracted really fast. Like, if I have this downtime in
between, uh, I, uh, maybe I start surfing with them that and, and it's always, uh, requires,
like, willpower to go back from that. So it's also another thing which, which is sourcing.
And so I started, like, opening up these terminals on different tasks at the same time.
Sometimes you can, uh, do, at work, it's on the same stuff at the same time, but it's
tricky because it gets messy. Like, for example, you have two agents writing the same file and, um,
and then you can get it and it could possibly go wrong. Or the file change. Let me change it back.
Yes. So the file change. Let me change it back. And, um, so it's, for, for me personally,
you can use it. There's also a, maybe you can come back to this later. There's also feature for,
for letting agents do the same thing. Uh, but for me personally, it's mostly about this doing
the same thing, uh, doing different things in parallel. So for example, there's like, uh, it's also
GitHub integration. So I, I just drop GitHub link from, from bug report. I drop it onto the interface.
And then, um, and then it spins up and it analyzes. Um, uh, and, and so then I don't know,
this maybe takes like five minutes and I can maybe open up five sessions. And then I can check,
ah, okay, it's that in that output. And, uh, okay, we probably should proceed like this. And, um,
yeah, that's, that's how, how I use it. And, um, what's, what, uh, it doesn't do something completely
new, but it does all those things. I would usually do like to open, um, having another good work tree
and a branch for that. And, um, all this is, uh, yeah, much, there's much less friction.
And, um, and so you can, uh, work step by step, uh, at, at these things, it was all,
hopefully getting, uh, yeah, losing track of what you're doing last because, um, the, the UI is
built around specifically, specifically that, um, there's, uh, yeah, super interesting. And so I,
I, one of the, one of the features that I saw here is, uh, that parallel code actually does
isolation between agents so that you can have multiple agents working on the same code base at
the same time without doing exactly what you described. Oh, it's something changed this file. Let me
change it back. Yeah. How does that work? What's the approach? Um, you have to get work through
so this is what I usually do, but you can also, there's also a feature which, if you need more
isolation and also more security, um, you can also, uh, use Docker container. You have a completely
isolated session, um, that are the two options. You can also work, um, on the main branch if you want,
but, uh, like the, how, how I use it the most often during days, just having this good work
trees, um, alongside each other. Mm hmm. Uh, you know, I've never used to get work tree and I
immediately, I immediately feel that I need to look into this. I Google it. Me neither before.
I Google it. One of the first things I see is I was doing this and normally I would just stash it,
but that gets really obtuse. Yes. Yes. I have, I have multiple stashes and sometimes you lose track
of which one is which? Yeah. Yeah. For good work trees, it's basically good copies like your
whole code base into another folder. So like your, yeah, also like with your sort of party dependencies
and everything. Um, so you really have, uh, no conflict there if you're working on, on that.
Nice. I will have to look into this in and of itself, but, um, back to the, back to the AI's. So
I'm, I'm still I'm curious about the actual like editing step. So I've, again, I've, I've dipped my
toes into working with AI's and learning them right code. I, I still find that I have to go in to
some extent and clean it up. Uh, we, we talked about, we talked about the fact that the AI likes to
make lasagna makes too many layers. Like it'll do, it'll do functions with, you know, single line
functions just to be able to get a prettier name on it. It's like, no, no, no, no, I understand what
you're trying to do. But man, that makes it difficult to actually read the code. So I talked
about needing to go back in after the AI and remove some of the noodles out of the lasagna to make
the code better. How does, how does that part work? Yeah. Yeah. That's, uh, it's, uh, important
thing to, um, to, to still like check the output. Um, like, uh, probably people, my assumption
would be that people don't do it as, uh, so really anymore because of the sheer amount of code.
Here, you have to deal with this is like, uh, for example, like before when, uh, working with the
team and, and someone wrote a pull request and let's say there may be their 10 changes,
the 10 lines changed. I, I review it so really I can, I can say something about that. But if,
if I see like he has written, uh, my coworker has written like a thousand lines of code, then maybe
I'm a, uh, maybe I'm looking at this like really quickly or, um, sure, yeah, looking at this
differently. But, uh, yeah, I think it's still important to do and what parallel code adds is
also not like a brand new crazy concept, but it adapts, uh, like, uh, the changed,
a changed file tree you have, um, which you would have also like for, for example, if you do a pull
request, um, on GitHub and, and you can quickly go into this files. Um, um, I don't know, maybe
a side question. Does it make sense to share my screen to show stuff, uh, hands on or, um,
uh, if you, if you can do it inside of, uh,
inside a video ninja, I can probably capture that. Yes.
So, yeah, I hope this, this,
is it big enough? I don't know. Can you see something there? Yeah, I've got to pull
up and make it a little bit bigger. Um, so, uh, yeah, there, um, like for from the UI level,
what parallel code does is just, uh, like this diff you, uh, you can select stuff here and you
can comment in, for example, uh, this is stupid. Wow. No, this is great. I, so the, the integration
with all this stuff is, is a lot slicker than I expected it to be. Um, to be able to just
click on something and immediately go to the code and be able to write it, it, it, it feels a lot
like, uh, working inside of, uh, the GitHub web actually. Yeah. Yeah. That's, let's, the inspiration
because like they're, uh, the, the, the professionals about it. So, um, yeah, that's an
adaption basically of what, what they do. You can also open like your local editor if you click
here, um, you can also, uh, for example, you cannot just comment, but you can also ask like, uh,
please explain this to me. I don't know anything. Okay. Um,
uh, and then it's syncing and, uh, and hopefully it, at some point, it gives you like this. Oh,
so, uh, so when you, when you do an ask, it, it is an immediate query, but when you do comments,
you then got to hit the button to send to agent. Okay. Yes. What, what it does is just, um,
executes. Oh, yeah. There you go. Uh, these three lines, uh, small unit tests for the
discussion component. Here's what they do. Who would have thought. Yeah. Um, and, um, yeah,
that, that I find it pretty handy feature. Um, but as I said, like it's not something super
innovative or something innovative. Um, yeah. Um, and what I also like, maybe you can also
show this. Sure. Uh, so I can just drop in GitHub things. Um, yeah, I didn't want to see this.
This sounded pretty cool. And for some, maybe let's take this, like this is a super
productivity work. And then, uh, yeah, it pre-fills it. It auto detects the project. Um, it, um,
uh, uh, yeah, pre-figure the branch. Yeah. Yeah. And you can choose like which, which tool
you want to use. Um, then you can decide if you want to use work tree. Um, and you can also run
it in a Docker container. And yeah, you can skip all confirms if you really feel brave. Yeah.
And then it does its thing. And also, um, another layer like for these getting more
a better feel. Or maybe let me start like this. Like another thing I currently dislike about
coding with AI is like, um, the feeling of losing control. Because you're, you are at least maybe
there are people better than me who don't do it as much. But I'm, I'm not as thorough as I was
before AI, because as I said, there is so much code you have. And, and, and, and you kind of
delegate you, you kind of have to delegate. Um, also like part, parts of the responsibility.
Um, but, um, they're layers to, to meditate this. And, and of course, like one, one, one is testing.
And, um, so what parallel code starts you, you can like, um, create terminal shortcuts for,
which could be basically everything. But here for for this, what makes sense is like to have,
uh, like the test command run, which runs a unit test or the end-to-end tests. And so you have this
all like clustered in this block, which belongs to this task. So you don't have like a terminal here,
which belongs to this task and another terminal there, which also belongs to the same task.
But you have it like, uh, clustered UI wise, which, which hopefully makes it, uh, which
sync does make it either for the brain to, um, yeah, to don't feel as as lost when doing these kind of
things. Um, this is very interesting. Uh, what, what, what have you found is, uh, the, the most helpful
for, you know, you talked about the difficulty in reviewing all of this code. Um, what, what have
you found that really helps to try to make sure that not only your work, but also pull requests
that are, um, vibe coded. How, how do you best, uh, make sure that the quality stays high?
Yeah. Uh, there are multiple layers, I say like, um, there is stuff, um, or it's good to have
layers, which, which don't require your own mental capacity, I think. Like you can, uh, you have
unit tests, you have end-to-end tests. You also have like, um, from, from the AI workflows,
I, for example, I've different skills for, for cloud code. I'm using like, which then in turn,
fire up multiple agents and, and different, um, models, like my, my, my multi-view task,
I'm using for, for most stuff is like, it fires up five regular agents for different aspects.
And then it, um, uh, it fires up also codex and co-pilot. And so you have, um, hopefully,
hopefully they're producing something useful, but usually I think it, uh, it helps to identify
problems, um, before, before I have to step in. So the idea is like, um, uh, you, you try to
reduce like the amount of stuff you, you need to, um, think about yourself as, as much as possible.
And, um, so this means like, uh, I, I, hopefully, when I start reviewing, um, uh, AI has done
the best it could. And so I just have to do with the stuff which is left over after these,
obvious, uh, yeah, these layers beforehand. Do, do you ever do things like let one AI review
another? This is something that we do quite a bit actually in the, in the, in the
MessChastic project because, yeah, all of that has went through GitHub and, uh, in GitHub,
there's the co-pilot reviews. You can ask co-pilot for review. And we found that to be useful,
actually, like it, it, it, it, it, it sometimes would be a little too nitpicky, but it usually finds
really good stuff. Like I, I wrote a, uh, I wrote a pull request just the other day. I was doing
notifications. We wanted in the desktop app. We wanted notifications. And I, I was feeling lazy
that day. And so instead of using lib notify, I just used the binary that comes with lib notify.
And, uh, you know, just built the string and pushed it all out as a, as a command. And,
you know, then did the pull request? I'm like, yeah, it works. And then we asked co-pilot to review
it and co-pilot. It's like, you probably shouldn't use untrusted user strings on the command line,
like this. And I went, oh, of course, I can't do it that way. Yeah. No, definitely.
But I have to say, it's something, um, they're, they're already people like on GitHub for the project
who, who think, uh, who are thinking further about like this and how to integrate it within the
application. But for me at this point, this is something I try to figure out on the model level,
which, which means like, for me, most of the time, uh, uh, using, uh, creating cloud code skills
for that. Maybe I can quickly show like how this looks. Uh, more to review. That's it.
Um, yeah, I hope this is readable somehow. Yeah. Basically, what I have is, uh, um, file, which
defines like, uh, which, which other agents to start for, for this kind of review. Um, so like,
there's one specifically checking for correctness, um, like it's a change really does what it's
supposed to do. Then there's one for security. Then there's one for architecture and design. Then
there's one for exploring alternative approaches and then the current one. Then there's one for
performance. Then there's one for simplicity. And then there's one, um, codex reviewer,
like using another model, which just like a, uh, general review of everything and, um, yeah.
That's, that's basically like, uh, how, how I, at the current time, find it best to work because
also like, uh, uh, yeah, uh, full of philosophy of, um, of the, of the, of the app is like not to, um,
not to be its own ecosystem. Like, like, open, um, how it's called open code is like where you have
like another, like, it's own model of, of, of how do I have to structure all this AI stuff.
But just to be a rapper about the workflows you already have. So for example,
this means like if, uh, maybe in a two months, time or something, like, uh, I don't know,
jet brains, maybe, uh, brings out a totally crazy new, um, um, IDE just for agente coding. Then
you don't, you don't lose anything by working with parallel code now. And this is also important,
I think, uh, for me at least because like this space is moving so crazy fast or I hasn't been moving
crazy fast for the last year, um, that it for me doesn't like much sense, um, yeah, to, to re develop
the wheel and, um, yeah. Yeah, absolutely. Um, let's see, I was going to go a certain direction.
And of course I, uh, something dinged on my computer and I've completely squirreled and
forgotten the, uh, the direction that I was going to go. Let's see, um, oh, oh, pushback from the
community. I'm, I'm super curious. Like in, so you've got the, the existing project. Have you
gotten pushback for the people said, ah, none of this AI on, get off my lawn with your AI tooling.
Yeah. Yeah. Cause I mean, you've seen projects out there that are, uh, I've seen one project that
have completely closed pull requests to anyone outside the organization. I've seen other projects
that are talking about going closed source because of the AI thing. It just, um, you know, some of it,
I think is really, um, a step too far in some of those cases. But what, what's your experience
been with that? I, I really had to say like I, from a, from all standpoint, I don't have like,
I don't have a clear opinion about it. Like they're, but from how I personally work like I,
was skeptical also in the beginning, like when the whole AI wave started, but it is currently,
like for me, there's no doubt that it's more efficient at the moment. It's the most efficient
tool to use while coding is using AI. And, uh, to come back to your question, like I, I don't have
any, um, yeah, I've, I've, uh, emotional connection to my code, of course, but I don't feel like I
don't, uh, also the license super productivity has, for example, is MIT. I'm, I'm really okay with
people doing what they want with it because, uh, yeah, if, if somebody takes it and does something
better with it, I'm, I'm fine with it. I know that's probably not, um, doing this subject
justice because there are other aspects to it. But, um, yeah, I, have you incidents? Yeah.
Have you incidents? Think it makes much of a difference. Like, um, in a total like, if, if,
uh, the models, uh, you, I, I overload have, overloads have, uh, access to the code of
super productivity or not. It doesn't make probably a difference. Have you, have you seen an uptick
in low quality pull requests? Because of AI? Yeah. Yeah. Is it pretty bad or, or just a little bit?
Just a little bit. Yeah. It's me on the, on the other hand, the stuff is, uh,
better documented. It's more about like, uh, also like, there's sometimes it's too much
information because AI likes to produce so much text. Like, if you have a pull request, like,
with a long technical specification and, um, uh, to be honest, I don't always read it very carefully.
Yeah. But yeah, on the other hand, like, it's, uh, two, two, two sides to it. On the other hand,
like, it, it, it, it, it enables people like who are not programmers or who would never have the
time to submit code to do it, like, to, to say, oh, there's a problem I'm seeing. And, um,
the very least it does for me is like, um, to, uh, yeah, to, to, uh, to get attention like
that, oh, there is, there is this problem. And even with the code, like, it's, it's horrible.
Um, I, I, I know about this and, um, and especially the part like getting more people involved,
I think it's a, it's a, um, generally a great thing, uh, even if it comes with some, um, uh,
challenges. Yeah. Yeah. You know, the, some of the most interesting and terrible, but also
interesting, uh, AI pull request is where people ask the AI to do something that we didn't think
was possible. Or we thought would be extremely difficult. And sometimes you've got people,
I'm thinking of, I'm thinking of one pull request in particular, where we, we had told people
for the longest time, there's really not a way to do this. It would be such a huge lift. And
somebody apparently had the tokens to burn on it and has what may or may not be working,
probably, honestly, probably working at this point, uh, a pull request to make the thing happen.
And it's in this case, it's running meshastic as a part of Zephyr, which, you know, if you're
in the embedded space, you know what I just said. And if you're not, then, you know, that doesn't
make any sense to you. But it was, it's, it's, it's something a lot of people have asked for. And
it was going to be a hairy, uh, a hairy thing. And it's like someone ignored the fact that we
said that this would be really hard and just went out and said, I'm going to do it and made the AI,
sort of tortured the AI and doing it for them, right? And now you look at it, it's like, well,
okay, first off, I told someone sort of offhandedly a couple of months ago, I'm like, if you actually
want to do this, here's the way to do it. And that's the, that's the way the AI approached it as well.
And so that was interesting to me. But just like the fact that it, um, it lets people challenge
these, uh, pronouncements is interesting. Um, sometimes it's a good thing. Maybe sometimes not
such a good thing because they're, you know, in some cases, there were reasons the project didn't
want to do that. Uh, I don't know. It's just, it, it does. It's really, it's changed the game.
It has. It's changed open source. AI has changed open source in ways that I don't think we fully
understand yet. But there's no putting that genie back in the bottle. Yeah. Yeah, definitely. Uh,
totally agree that, um, they're, it changed a lot like for, for example, four before, before
a year ago, um, I really put a lot of effort into merging every pull request because I wanted
to get people involved. And, uh, like there, there haven't been so many, um, contributions for
other people. And, and these days, uh, I find myself more and more having to, to say no to stuff,
to say like, oh, yeah, it's well done. It's totally, it's, yeah, it's great code. You did
really well. And, but it's, uh, it's, uh, it's too much. It's, it's, uh, it's a feature. Um,
use many features. You did it. You did a great job prompting your AI to write this code.
Good work. But yeah, it's like for me personally, I, I, I still feel ownership for all the
things I'm doing. Uh, of course, it's, it's losing something. Like, um, I don't know, back then,
when you wrote code by yourself, it's, uh, it's satisfying. Like, it's, it's, there's a lot of
beauty in, in, in, in, in, well written code. And in a lot of status, at least I got a lot of
satisfaction out of just key and beautiful code. Like a clear concept behind it. And, and you can
tap yourself on the back. Well done. Sure. And this is, uh, different now. This is, uh,
yeah, you, it's more, it's on, uh, more on an architecture level, maybe, and more on, uh,
it's for, for, for super productivity, it's more on a product level that, um, the, the decisions
of the stuff I do, um, uh, this, more about the decisions, uh, you, you feel ownership, uh,
to, and I think rightfully so, uh, then for, for the, uh, intricate details of the code itself,
because you, you might not, uh, always, uh, operate on the level anymore. Yeah.
Um, do you, do you think there's a danger that, uh, so one of, one of the, one of the problems
people suggested is that, uh, you have to treat, and I, I don't know if this is true anymore,
things have developed so, so rapidly, but people said you have to treat the AI as though it's a
junior program, junior programmer, maybe an intern, and you have to be the senior programmer.
Uh, and then there's this question that comes about, well, then how do we get new senior programmers?
Right? Yeah. This is, this is a, this is a reasonable concern, but I think the question is,
will we run out of senior programmers first or will, will AI get good to the points to where it
can then also be the senior programmer? Yeah. I'm not sure which of those is worse.
I also don't know. Like for the time being, I have settled for, I, I just don't know because, uh,
it's, yeah, it's, uh, all involving so fast. And I think there are points to be made for, um,
yeah, for things just change, but, uh, they still need for programmers. Um, I don't know.
Uh, yeah, I think a couple of days ago, I read like that there may be, uh, I'm probably
quoting the number wrong, but that there may be one one percent of the global population or 1.3
percent of the global workforce for our programmers. And actually to me, if I think about that,
I think that sounds like quite a lot. Actually, do we need this much software like, um,
for, for, for, like, so maybe there will be some sort of adjustment there. Maybe we'll be
a little bit less programmers, but at the moment, like from my own experience and how, how,
the past year working with AI has been, um, I still think like the, the technical decisions
behind that, that's, uh, yeah, I made people smarter than me, uh, said like that that AI is not yet
a good architect. And I hope, I hope it stays this way.
Job security. All right. So the big question I've got to ask is, do you, do you,
do you dog food this? Do you use parallel code to work on parallel code and super productivity?
And while you do so, do you use super productivity to track your time doing both of those things?
I do. I do. That's, that's the beauty of it. Yes it is. You know, I've worked, uh, very many years
as a programmer and, uh, it should be honest, I, apart from the code itself, uh, for most,
to most products, I, I was, uh, involved with, I didn't feel a strong connection. I didn't,
to be honest, I didn't, for, for much of the stuff, I don't think it's, has been necessary to do it all.
So, um, it's, it's really, for me, it's really nice to, to work on, yeah, on, on, on my tools,
on, on things I'm, I'm using daily and that's, uh, it's, I think it's, uh, also, uh, and I
thought for the project, like, uh, I am, I'm thinking much differently about super productivity,
than, than I would for, uh, about some, some, uh, yeah, freelance gig project. Sure. Sure.
Sure. Are you, are you still freelancing? Yes. Yes. That makes sense. All right. Well, we, uh,
we've hit the bottom of the hour. I've got two questions, two final questions. I've got to ask,
I got to ask this to everybody. Uh, what is your favorite text editor and scripting language?
Uh, yeah, also my, it's, I don't know if it's the right answer, because it's an IDE,
but I have used, uh, uh, jet brains, like, uh, yeah, IntelliJ idea for many years, and I,
I really liked it. Um, but to be honest, I, I haven't used it as much in the past months.
Um, well, I mean, uh, parallel code is almost an IDE.
Yeah, it's sort of like, it's, it's my favorite and it's the best one.
There you go. And then, uh, the script, scripting language, scripting language. Um, yeah,
I think I, uh, type script, just because I'm most comfortable with the language. There's some
stuff I'm doing with Spanish and some stuff I'm doing with Python. And a Python is very
intelligent. It's a beautiful language, but, uh, I'm, I, I like to work with tools. I'm comfortable
with. So it's, it's type script. Yeah. Yeah. Very cool. All right. If people want to find out more
about these two projects, where is the place to go? Yeah. Um, probably the easiest way to find
both is to go on on my GitHub profile. They're both projects linked. Okay. And, um, yeah. And
you, you find all the other stuff from there. Okay. We'll make sure and get some of those links
in the show notes as well. Uh, thank you, Johannes, for being here. It's been, uh, it's been a delight
to get a chat with you. Yeah. Likewise. Thank you. Thank you very much for having me.
That's, it has been a non-a. Yeah. It's been a lot of fun. And, uh, I've got a couple of projects
to check out here. One that I'm in the middle of checking out. The other one I'm going to have,
I might talk myself into, uh, doing some more AI work. I'm still tipping, dipping my toes into it.
But it's fun. All right. Uh, that has been Johannes Malone talking about parallel code and
super productivity, which I already have a super productivity account spun up here and got it
installed. I'm going to play with that some. Uh, next week, if everything goes according to plan,
we will not be live, but we will instead be recording a show on location at a, uh,
a particular place down in Texas. Hopefully we can make that work. And then it'll come to you,
not those that watch live, but those that, uh, that get the download at the normal time,
we hope. Um, but, uh, it's been great to be back after missing a couple of weeks. And, uh, yeah,
we'll be back next week. All things, uh, all things go well. And after that, the schedule is still
looking a little bare. So if you want to be on the show or know somebody that needs to be hit us
up, let us know. You can email us at floss at hackaday.com or, you know, you can get a hold of me
at the various places where I hang out. Uh, appreciate everybody that's here. Those will get us
live and on the download. And we will see you next week on floss weekly.
