Miguel Piedrafita 0:00
My goal for Blogcast was to make it in a week. Like That was my goal. I want to have a finished version of this in a week with like a dashboard and everything. And I ended up making that. And I got my first paying customer in that week, like at the end of the week, which was really great. And that one I worked on for like half a year or maybe a year, I'm not exactly Sure. And that one ended up making like, it was doing $50 a month, which is like, it's not a lot, but like, I was adding a year at that point, I didn't really have any expenses outside from like $5 a month the year I was in service, so it was really, really nice.

Tim Bourguignon 0:52
Hello, and welcome to developer's journey, the podcast, bringing you the making of stories of successful software developers to help you on your upcoming journey. My name is Tim Bourguignon. And on this episode 146 I receive Miguel Piedrafita.

Tim Bourguignon 1:07
Miguel is a 19 years old indie maker. Do I need to say more? Oh, no. Miguel, welcome to DevJourney.

Miguel Piedrafita 1:15

Tim Bourguignon 1:16
So the show exists to help the listeners understand what your story looked like. And imagine how to shape their own future. So as always, let's go back to your beginnings. Where would you place the start of your developer's journey?

Miguel Piedrafita 1:31
Sure. So I like I had an old computer that my parents gave me when I was like, maybe eight or 10. But I liked to play with it and try things. I messed with the Windows registry and deleted temporary files and all those things that you see what happens. I've always been like, interested in computers and technology in general. The real coding, or when I was introduced to coding happened in school, we had these technology class where we basically learned Word and Excel, and PowerPoint and all these things, year after year. And then one day, the teacher got tired of teaching us the same thing over and over again and decided we are going to learn HTML. And I mean, it lasted like two classes, maybe because no one got it. And then he went back to Word. But he, because like, I knew about C, I knew about all these things, but they were like too complicated for me to get started. And something like HTML was a lot more approachable. So I, I once I figured that existed, and I really didn't need needed to run anything special to use it, you could just open a browser. Yeah, I started learning on my own.

Tim Bourguignon 2:43
That is good. That is good. That reminds me of my start as well. One of my uncle's was a programmer. And when I asked him, Hey, can you teach me something, he gave me a book about C and said everything is written here, you just have to follow this. And I read through the book. And I was finding it fascinating. I just couldn't figure out how to compile the whole thing. And so I was just theoretically playing with my book. And that was it. Didn't know what to do with it. So I understand this idea of not having to compile anything just tinkering with with a text file, and just loading it in your browser and seeing what that has. That is, that is very intuitive.

Miguel Piedrafita 3:18
Yeah. I also like I had downloaded some PDFs about C and C++. And they were like university level stuff. And I was like, maybe 10, 11 at this point. So it wasn't really approachable.

Tim Bourguignon 3:30
Okay, but you were a tinkerer? You had said? You were playing with a registry and probably formatting your your hard drive a couple of times, because you messed up with Windows too much.

Miguel Piedrafita 3:39
Yeah, I was the type of kid who Yes, like sees a button. And the best way of learning how things work is just like, try them out and see if it breaks Well, it breaks,

Tim Bourguignon 3:49
which is perfect for html5. You can try it out and see what breaks and then look at the the dev tools and see what what changed and go back. That is cool.

Miguel Piedrafita 4:00
And also you don't break your computer, with this HTML, which is also nice.

Tim Bourguignon 4:06
Okay, so how did you so you put your finger into the machinery there with with a teacher showing you that this weird world exists? How do you get from there? How did you start tinkering and learning about that?

Miguel Piedrafita 4:19
Yes. So the first thing was just like learning HTML basics, which have you in class, then I just went home and continue learning now in HTML, like I look through tables, say we were so for another class, we were using this platform, which had like interactive exercises, and they had an embed pattern in there. And so I basically discovered iframes. And like, putting one site's content into the other and my first web page, I think it was like some interactive content from this site that I made because you could create your own exercises and stuff. Yes, like embedded in a page with a title or something like that. And then my school actually had like an index page, like we had computers and when you open a personal computer, there's a directory of all the links you could do. And it was like really nice with CSS and amazing like, what you hover then the logo spins and stuff like that. So I basically wanted to figure out how they made that. And I mean, the spin and everything took me a while to figure out because like, I didn't know what CSS was, but I, I guess viewed the source see, like, what happens if I change these and I ended up making my own for my computer with like, all my all my links with when that match, but basically I cloned that. And that was like my first design, not only original design, but like full web base with CSS that I copied and stuff.

Tim Bourguignon 5:37
Okay, so you basically reverse engineered the, the intranet homepage of your school?

Miguel Piedrafita 5:44
I mean, it's not reverse engineer, yes, right click, users a copy, paste, but like, yeah, I try to figure out how it worked. Like, what happens if I change is what happens if I, I did not know anything about CSS, but I managed to figure out more or less how the animation worked. Yes, like, what lined you could remove and it remove the animation that was like the way of figuring out how things work. So yeah, I recreated that.

Tim Bourguignon 6:08
Cool. Really cool. Did you at some point, start learning things from scratch? Or did you go by tinkering like this and try on the error and really trying how seeing how, how you can modify the existing state,

Miguel Piedrafita 6:21
I mean, even now my preferred way of learning anything is yes, like, project-based, like making a project. If I want to learn a new technology and make a prayer with it, and try to figure it out. As I go, now I have like a more a better understanding of how things work in general, like, I had to pick up Java for a project that I did last week, just a small thing. And I had never used Java. And it was it wasn't more like tinkering. Like, I have a general understanding of how programming languages work. So I could pretty easily get into that and know what to search for and stack overflow and things like that. But yeah, at the start, it was more like, I have no idea how any of this works. Let's look through the lines. Let's try to understand what each one is adding. If I'm not sure what one does, let's comment it out, see what changes and stuff like that.

Tim Bourguignon 7:08
That is interesting. When you discovered CSS that was a new world. So did you just like you said, just comment things out and see what changes? Or do you try to understand the whole first the big picture and see you see how CSS is structured and etc, really Tinker at the line per line level?

Miguel Piedrafita 7:30
Yeah, so the thing about CSS is like, I knew CSS existed, I knew text, align center and stuff like that. I didn't really know CSS until much later, like the first projects that I made. were basically pulling in bootstrap and forgetting about it and stuff like that. We can talk about this later. But I actually learned CSS through tailwind CSS, which is this utility based CSS framework. So it was more of like, I mean, I knew at that point, I could write some CSS, but it was more of like, I learned to use tailwind. And then I slowly learned the underlying properties, the tailwind classes apply, which is interesting.

Tim Bourguignon 8:06
So first, using the framework and then slowly or gradually, gravitating back towards CSS understanding what tailwind is really doing in the back.

Miguel Piedrafita 8:17
I mean, the thing about CSS is that you don't have to learn CSS because CSS is yes, like really simple. Here's a rule with a property and a value. And that's it. The thing is, then you have to learn all the different values and how to use them. And that's where because the thing about tailwind is I can just pop in 10 classes on an element, and it will show up, like I can refresh my browser and see it in real time almost. So it was more of like, I know CSS like I could write this on my own. But learning to design in CSS and learning to be seen in the browser was something that I did with tailwind. So going, like I don't think I ever made a project that was like fully CSS I had to write a lot of CSS for I jumped straight from like bootstrap and boom, and all these things to tailwind.

Tim Bourguignon 9:02
I see what's in my mind right now. It's also the, the the analogy with with JavaScript. And something like 10 years ago, jQuery was still really booming. You could see really, developers first doing things in jQuery, and then slowly realizing that you could do that with JavaScript with plain old vanilla JavaScript as well. And seeing when to use which. And really you see, okay, you don't need to have jQuery in this case, you can do it in plain JavaScript, or you really have to use the jQuery in some time. So you could really see the developers going back and forth when they realized how things interface together.

Miguel Piedrafita 9:40
Yeah, I mean, it's not exactly the same. Like I get that analogy I did that with when I got into PHP, which was like my first proper programming language, and we can talk about this in a second. But like, the thing about tailwind is it's it's not really an abstraction it's just, like a layer on top. Basically, they forget. CSS property exists, almost. You get a class like that. Maybe you have to, you want to set padding, you say, PB four, and it has like an inner scale of like values that you can customize and whatever. So it's not like an abstraction, like jQuery would extract a lot of functionality for you. It's more like a one to one mapping. But using tailwind for me helped me to move quicker. And also like, I could. I don't know, it made more sense for me like learning Oh, so I went to make a car they guess either shadow a few borders or like a margin and stuff. And also, tailwind has a really great documentation. And you can you can see, for all the examples, you can see like a for the properties, you can see examples. So it's really helped me like see how can I use all these things together and understanding Flexbox and all these different things?

Tim Bourguignon 10:44
Okay, I see, I see. You. You mentioned PHP? Did you have to go into PHP? How did you choose? You mentioned Java as well? How would you choose to acquire with air quotes and you new new language or new framework?

Miguel Piedrafita 10:58
Yes. So basically, I have been doing like HTML for I don't know, around a year, it wasn't like consistently over the years, like I was starting, I was now in on some breaks, I would go to the library and try to code on the computers they have there. And also at home play that playing around with stuff like I knew I had a pretty good understanding of like, this is server, this is client, like the difference and that you can there are some things that you can just not do with clients like authentication, for example. So I wanted to learn to actually make apps like HTML by itself doesn't really do that much. And like I was already down the web track. So PHP seemed like one of the best choices that I could make. And the thing is, like, I, I remember, I took the Code Academy course on PHP when it was free. And I basically, speed run through that in like, one Friday, when I got a pretty general understanding of things. I like I did the whole thing, including object-oriented programming and stuff, I didn't really get that I just, like, understood what they told me and completed the exercises. But even really, like I didn't really know how to use it. And then I, I built like a few test things like I remember building, like our license manager app, something that you could connect to a database, I was writing the queries by hand and everything. And verify if it has an API endpoint, that you could verify if a license exists or not. I didn't even know JSON existed at this point. So I made kind of made my own format for it to return things, which wasn't great. And then pretty fast actually, I only made like, one complete app in PHP, I mean, complete app, it was like three PHP files, like all the database and application code was mostly copied from the PHP docs. And then I stumbled upon Laravel, which is a PHP framework inspired by rails, and all these different things. But that was the thing that really clicked for me. And really, actually what I've been building until just recently, I build all my products and apps with Laravel.

Tim Bourguignon 12:39
Okay. You mentioned projects and apps, quite a lot of times and I looked at your, your homepage before, there's a whole bunch of projects there. How do you, I assume you are really project driven, you take a project, and you say that as well, you take a project and do something and through doing this, you will learn something new. And so the question I have is, how do you choose the projects you want to do? And how do you make sure that those projects enable you to learn what you want to learn?

Miguel Piedrafita 13:36
Yeah, so at the start, it was like, like, I remember, as I mentioned, I started learning Laravel, I found this great site called Lara cast, which is basically a course platform. Yes, for Laravel. And they have free courses for learning level from scratch. And everything is a really, really great resource. They also update it every year and stuff. And after learning the basics, the model view controller model and stuff. I said, like okay, I want to try out something I'm basically I guess, made I think it was like a profile. I don't remember what it was, it was just like it wasn't a real thing it was just like a combination of things I want to figure out how to do. I can remember at some point, there was a way to upload avatars because I wanted to learn file uploads. There were also endpoints with validation and stuff, authentication codes, that comes out of the box and stuff like that. But after that, after I did that for like, a week, and then I got tired of that. And I, I asked myself, like, what can I make that will actually teach me like, I wanted to make it foolproof basically, um, around that time I was participating in in Google Code-in, which is like competition that Google organizes for teenagers to learn to code and stuff. This was in December, and I noticed that all these organizations where you had one of the first tasks you had was like, okay, so you create a GitHub account you request to join our organization, someone approves you. And then you basically star a few repos and stuff like that. And the thing was, like I mentioned, even before learning HTML, I read a lot of stuff out C and stuff. So I had a pretty good understanding of like API's and servers and stuff. And I noticed like, there's a pretty big bottleneck with like, everyone having to basically fill out a Google form with your GitHub username, and then someone has to come in and manually add you to organization. And so I thought, there's probably some endpoint on the GitHub API that allows people to invite others to organisations. So it would be really cool if I made an app that basically allowed you to have people auto-invite them into your organization. And I took I made a few important decisions with this, basically, I decided the project would be open source. And my reasoning for that was basically I'm making my like, second ever Laravel app, third PHP app, like well this is probably going to be awful. I want people to be able to look at the code and tell me there's a better way to do this and contribute. And yeah, and around that time, like when I got into Laravel, I started like, Laravel has a Notion community with lots of packages. And so I started to contribute to some of those I contribute to the Laravel framework a few times as well, free was really into, into open source at that time. And that was also how I got the first people to follow me on twitter and started building my audience. And so I started working on that I managed to get it working, it was ugly, but it was, it worked, which was nice. And it also a few big organizations started using it. I even got some, like, there's this organization called FOSSASIA, which is like, like, you know, open sourcing SEO organization that organizes a lot of events and stuff. Also, the open source design organization, they actually designed the logo for the application for free, because like it was open source and stuff. And yeah, that was really cool. That got me into it was like a big break. Because I had to make a dashboard, they had to make authentication, I started adding new things. At first, he asked to enter your username and click the button and you were invited, then you had to log in with GitHub, and you were redirected to the invitation and stuff like that. And I actually ended up redesigning the thing a couple of times, now, it looks a little bit better. Like that was the first point that I picked up when tailwind actually came out to figure out how I could implement the design. So yeah, and after that, it was more of a kind of, like, I know, I will probably learn something with anything I make. So basically, just I had a cool idea that I think this would be cool to work on. This would be fun. Or I was playing around with stuff and figured like, Oh, this would be interesting to do this with this. And then I guess went with it.

Tim Bourguignon 17:47
That's fascinating. You said something you said, I want to figure out how this works. So that really sounds to me like you have some experiments in your mind that you want to know or try out. You want to understand how logging works, you want to understand how how authentication works, etc. And then you find you find a way to do that. That is really cool. But how do you go over the problem that the usual problem of finishing things, of not just trying it out understanding how that works, and then leaving it be and leaving it to rot and not finishing the project? And you seem to really go the extra mile of finishing things and pushing stuff really on the internet so that people can use it. That is fascinating to me. How do you how do you do that? How do you manage?

Miguel Piedrafita 18:33
Yeah, so a lot of it is basically that I'm a perfectionist. And yes, in general, like for example, one of the latest projects I released which we can talk about later which is Sitesauce it took me eight months to finish and it is not to implement the parts of matter, I had that on the first month, it's because I redesigned the whole front end four times and actually five times now because I redesigned it again, just in December. Like I didn't really and even more now that I got into design I really obsess over every detail. It's like the thing about the finishing projects is that I don't finish a lot of projects like I have a I start a lot of things The thing is you usually just see me talk about the things I finished because like the old things don't last more than a week so I may make one tweet about it but the one that guarantees tweets like for weeks and then actually has a finished project is the one you see it's kind of like survival off the best, even the project list so my website is kind of like I only add things in there that I released in some form. So yeah, I play with a lot of stuff. Like for example, usually every summer I I start from three to five different project ideas, and then pick one to continue after. So yeah, I I just play around with a lot of stuff and if you if you follow me on Twitter, you'll see that. Because I'm always talking about things that I'm learning and discovering. But the things that people know about because they are, they are the ones. They're the ones that I talk about the most. And that's because they're the ones that actually don't die in the first week.

Tim Bourguignon 20:12
Okay, and the list is still long, I must say. I'm impressed. So if that is just the tip of the iceberg, I have no idea how big the iceberg really is. But that's really cool. That is really cool. Awesome. You said you took part to the OSS community. So, submitting pull requests to Laravel - when did you do that? And how did you decide that it was the right time to submit something? You also made the comment that it was when you pushed this first open source project, that it was your second Laravel project? And you were afraid people would, or you were hoping people would would correct you and tell you how to do things. So how did you muster the courage to submit a pull request?

Miguel Piedrafita 20:56
So what I started doing is I started reading through lots of code, like because the great thing about open source is that you can go to all these awesome packages, and you can just read the code, and it's going to be PHP, and it's usually going to be more or less understandable. And if it's not, you can either I opened a few issues like hey, great project, I'm just wondering, like, I am just learning new stuff. And I'm wondering why you did this, why you took this approach and stuff. And people are usually like, obviously, they take more time to reply than actually bug requests, because it takes more time. But especially in the larger community there, they were really helpful. And they helped me a lot. And I started like there was like a few years maybe where I basically read through every pull request that came through for Laravel. Like every day, I would check my GitHub notifications and say, Oh, so these people PR'd this in and then it got accepted, or it got rejected and stuff. And so at some point, I had like a pretty good idea. At first, it was more like, I guess quick fixes, I think I'd be like, I'm gonna go in sick now. But probably the first one was like a typo, or something like that. And then eventually, as new features were added, like I remember Laravel has this templating language called blade, which is like HTML with a few sprinkles inside, you actually don't have to write PHP in it, you can just do add if and it is a conditional block. So you have like open bracket, PHP, if whatever return and the thing about that is that got added. And then we got like directives, you could make your own add if things. And I thought I'm doing if the user is authenticated a lot, so maybe I should add auth to check that. And like, that's something that literally every Laravel app uses today. Which is pretty crazy. To me, like, yes, a person through applications in the wild and seeing some code that I contributed five years ago.

Tim Bourguignon 21:03
That must be awesome.

Miguel Piedrafita 22:53
In general, yes. Like I thought, or maybe someone made like, there was a thing where people were adding, like string helpers. So string between the strings that and like, eventually the Taylor, which is like the creator to go to a tail of it, and he was like, no more helpers, there's, we're not going to accept those anymore. And it became kind of a meme. But I also PR'd, I think, one or two of those, because it was like low hanging fruit. I can also I like to review, like I was reading through PRs anyway. If there was something duplicate and stuff, I would comment on it or review it. And eventually, that helped people start to know me, as well. And I started understanding more. And maybe the things that I was reading through a few months ago that I didn't really understand I understood now. And things like that.

Tim Bourguignon 23:41
That is fantastic. And you were 16 when you started? Or 15, when you started with those open source communities?

Miguel Piedrafita 23:47
Most of the Laravel community started knowing me at 16. So that's like, more or less the age.

Tim Bourguignon 23:52
This is amazing. That's really cool. Good for you. One question about the projects again, when do you decide that a project is going to be more of a learning project? And so you can take the time and really start with a new technology? For instance, take up Java and start with it. Or when do you have a feeling, "No, I really want to get this project out the door. And so I should maybe go back to Laravel and Tailwind because I know those and I'm really, really efficient with it."

Miguel Piedrafita 24:20
So going back to the the first way that I made these GitHub things after I kind of finished that or it was like a usable state, I decided, Okay, now let's try something else. And I basically like you know, these I don't know how familiar with like GitHub dependabot, this bot that basically PRs your dependencies. So someone had made the first one of those for JavaScript dependencies. Like I think it was green tech related or something like that. And he thought it would be really cool if you have something like this for PHP. And I made that I actually, like I really knew the GitHub API. And that was mostly the GitHub API. So I made something like that. That was called DependenCI, which is a pretty great name. And I'm, I'm mad that no one else has made a project with that name because it's really great. And I decided to go closed source for that one. Because I, I had tried the open source thing, I was more confident with my code. And I was hoping to like I was seeing people in the Laravel community made paid products. And I was hoping to eventually made software as a service app. And like, that got to production kind of. It was like, beta. Like I opened access, but I never launched it. I think I may have launched it on Product Hunt. But like, it didn't really take off. And there was like this pretty big issue with like, we updated your dependencies file, but the lock file wasn't updated. So you have to pull it down and redo that, because I basically was doing all the updates from memory, I wasn't using the file system at all. So yeah, so I kind of gave up on that. It was like the beta got released, it had users, I think it got like 100 users at some point. But I was playing with, I basically was playing more with like, UIkit that I found. And I thought this would be like it was like a documentation UIkit. And I thought this would be really nice to have it automatically generate documentation for people with this, like Laravel. Laravel has really, really great documentation, like everything is designed and the documentation is open source. So anyone can PR and stuff like that. I thought it would be really nice if the barrier of entry for these kinds of quality was lower. So I thought I have all this design for a documentation, it would be really nice if I could get like connect it to GitHub, because I had been using GitHub a lot for the API. And you could just like have a repository full of markdown files that just generated this. And so it was like the first commercial break that I made was called UnMarkDocs. And the really great thing about this project is that I basically made my own markdown parser. So people could embed videos and stuff like that that markdown really does not allow. So I can talk more about like building projects and trying to figure out how to actually make money with with learning projects in a second. But the thing about this is that for these first ones, there was basically like I had like a lot of ideas, because that's easy. Coming up with ideas, at least for me is easy. I had like an endless list of them. So I just picked something that was fun to work on wouldn't get me completely out of my comfort zone. Like I was doing things with the GitHub API, which I was comfortable with. I was doing things with Laravel. But also I would learn something new, for example, in this new period, I would learn markdown and also I ended up learning a lot of regex for parsing Markdown. So I tried to find something that was first of all fun. And then that would also teach me something while not having to start from scratch every time.

Tim Bourguignon 27:52
Okay, so you try to keep many variables the same. So you saw that you're really confident in what you do. And you change one variable completely. Maybe it's the domain learning markdown and how to handle this. Or maybe it's the GitHub API and etc. and really trying to have one variable where you're really gonna learn something.

Miguel Piedrafita 28:09
Yeah, I basically wanted to allow myself to have a prototype of this in like a week or two weeks out. And then after I have that, that is the core, I can do more things like I remember, before I learned CSS for UnMarkDocs, there was this like, dashboard. thing, I think it was like YUI kit or something like that, which was just like CSS for dashboards. And I thought, Oh, it would be nice to use this or something like that. And so I started with a template. And so I, I added another more things after that. But it was like, on top of that, so I'm always learning something new, but I have the foundation.

Tim Bourguignon 28:49
Okay, did you recreate some projects with other technologies, just to see how another technology handles the use case you had in mind?

Miguel Piedrafita 28:57
I wanted to have like real projects. So I didn't really do a lot of rebuilding. I recently like when I told you, I'd rebuild the SiteSauce interface again, I basically it was Vue, and I just ripped it all off, like I deleted the code, restarted from scratch, and I remade it in React. So I did that. And also for SiteSauce as well. There was like a part, the actual most important code of the app, the code that actually does the thing that the app is supposed to do. And maybe I can talk a little more about that. So SiteSauce, we have jumped a few projects, I can maybe talk about a few of the other ones because they are interesting as well. But SiteSauce basically takes dynamically generated sites like site with a back end like a WordPress site, for example, and make some static sites from them. And the cool thing about this is that it basically watches for changes. So maybe when you publish a new entry on your own your WordPress site, and then it updates the static site. So you basically get all the cool things about dynamic sites. Like you have a dashboard, you can have a team, everyone adds things. But you get all the benefits from static sites, which is like they load much faster. Servers are incredibly cheaper they scale a amazingly and also like, you can't really hack them because they are plain HTML files. And so the parser actually generates the site was originally in PHP. And it wasn't great. And I wanted something that was really fast, like I wanted the conversion of almost any site to be done in less than 30 seconds. And so like I made it, I remade it in Go. And this was like, this was my first ever Go project. Like I had never touched Go. And it's like, also way outside with my scope. Because I had been doing like PHP, some Python and Node but Go is like way low level like you had to, to clean your own, you have to do garbage cleaning yourself. All the errors, they are not thrown, you just have to catch them and stuff. So that was fun. That was a fun challenge. I ended up figuring it out with like, goroutines and, it's a really different paradigm. And I really enjoyed that. So basically, I usually don't rebuild stuff in another language. Yes, for fun to learn, I try to make it when it makes sense. And if it doesn't, I maybe try to build something new with that technology, instead of like rebuilding something. The thing about this is that what keeps me motivated to do all these things is like having fun with the project. So I try to do things that interest me.

Tim Bourguignon 31:27
What decided you to go in for this example with Go and not with a scripted language, or any other?

Miguel Piedrafita 31:33
I mean, it wasn't really like a studied decision, I just thought, oh, maybe this will be fun with Go and then I did it. But also, like I know that Go has a really... first of all, you can compile it to a binary, which is really great for the infrastructure that I ended up using. So at first I was running everything on my own server, but now like the binary runs on Vercel's server, and I offload all of that, and I can just ship the binary without worrying for people stealing my code and stuff. So that's nice. And also I have to make a lot of we have web requests for this. And I had been hearing about goroutines and goroutines are like... basically my understanding is like a better implementation of async await and promises. And so I thought maybe these would be like, I know, a lot of scrapers are either Python or Go, and especially more Go now. So I thought, this is probably one of the best languages to build this in. And so again, now we just have to figure out how to do it.

Tim Bourguignon 32:36
"Just" - big air quotes. Very cool. Yeah, really cool that it worked out. And you're making money with it.

Miguel Piedrafita 32:42
Right? So like I said, from that second project, the DependenCI one, my dream was to like basically make a SaaS app, a software as a service app that makes money. So DependenCI was an idea that I never launched and then there was this other Markdown thing, which was called UnMarkDocs, which I made free for open source projects, because that's what like,

the idea was:
to allow people to have better documentation. But I also made a paid plan for paid projects, that one person ended up subscribing to. Which I mean, it was amazing, because it was like my first money earned on the internet. And after that, I made something called Blogcast, which basically used AI and text to speech (but like good text to speech, not Siri), to convert articles into podcasts. And you could just give it the URL of any article, and it would convert it into audio. And you'll see this a lot recently. There have been like 20 projects launced with this, and some newspapers have started to use it. The amazing thing is like when I started doing it, there was maybe one other project doing it. So I feel like some of it is inspired by this, which is really great. Not like the newspaper thing, but all the these people aren't seeing projects on Product Hunt. My goal for Blogcast was to make it in a week. Like That was my goal. I want to have a finished version of this in a week with like a dashboard and everything. And I ended up making that and I got my first paying customer in that week, like at the end of the week, which was really great. And that one I worked on for like half a year or maybe a year I'm not exactly sure. And that one ended up making like it was doing $50 a month, which is like it's not a lot but like I was at in a year at that point. I didn't really have any expenses outside from like $5 a month for the hosting service so it was really really nice. Yeah, so after that the thing that I made after that, which is that these SiteSauce thing, that was something that I knew would be a lot bigger. Like after I basically I learned say it is going to we're coming up on a year on that. But like after the second month, which was when I started getting like my friends into the app I already have one person paying me. And the plan was like 19 a month. So it was like a lot more already. And that one is it's an open startup. So what that means is that you can go to sitesauce.app/open and see all the metrics. like yeah, that's, that's actually been doing really good. I mean, I don't really do any marketing outside of like, tweeting about it. And when I come into podcasts, I talk about it. So for that, for not doing for just word of mouth, it's doing pretty, pretty good. And yeah, that was, that was how I started making money on the internet.

Tim Bourguignon 35:36
That is cool. And is this your plan, as much as there can be a plan, to create many small, "small" with with air quotes, again, projects that at some point really enable you to to do whatever you want, and have fun with what you do? Or are you trying to go after the big one project? How do you want to continue? Because you're not employed, right? You're really on your own.

Miguel Piedrafita 36:01
Yeah, so I'm not sure. That's what I'm figuring out. Because like, the original plan was to like, go to university, and I mean, university this year, but then like COVID happened. So what I'm thinking like, I obviously still want to be an indie maker and have projects and work on them. I think I may try to get to get a job for the next year just to try it out. Because that's something I've never done. And like, I can't really tell what I prefer to do, if I don't know what the options are. Like that's related to another thing that I've been really into recently, which is crypto. And if you read up on all this decentralization and stuff, and I have like a few places that I'm interviewing for, and they are all crypto because I think like, that's the closest to the future that I can work on. So yeah, but my plan is to keep building all these different things. Because like even with crypto, that's how I learn. Like, I recently wanted to figure out how does this login with your crypto wallet work? And I ended up recreating, making my own crypto library, like my own cryptography, not cryptocurrency, like you know how everyone says like, don't roll your own encryption and stuff. So I did. Yes. I made an elliptic curve library, yes, to learn how it worked. Okay, I probably will never release that. Because like, why? maybe I'll put it up on GitHub. But it's how I tried to understand and learn about things.

Tim Bourguignon 36:01
Yeah, that is that is fascinating.

Miguel Piedrafita 36:41
And also, even with the employment and stuff, I've been working on a new thing that I've announced, but I haven't really onboarding anyone into, which is dm.link, which is a really interesting project, because it allows people to basically subscribe to a newsletter inside of Twitter. So for example, if you want to receive updates about dm.link, you go to dm.link, there's a subscription button there. That brings you into my Twitter DMs. And there's a button in the DM that says, just subscribe to this newsletter. And then every time I tweet about dm.link, you receive that tweet in your DMs.

Tim Bourguignon 38:09
That's an interesting idea.

Miguel Piedrafita 38:09
It's a really interesting approach for like, I mean, it's great for a few reasons. The advice everyone gives for building an audience on Twitter is like, stick to one topic. And I never really liked that. Like I tweet about tech I tweet about crypto I tweet, about marketing, I tweet about I've been learning through this and recently, and I tweet what they thinks that I make I, I was like the pay the patent lease for a Apple and Google all these things and tweet about interesting patterns when I see them. So I tweet about a lot of different things. And the cool thing about this is that I can make like, dm.link list for any any of these, and people can just subscribe to the ones that they care about. And because I know that there are people who really don't like there are non technical and follow me for like, marketing to it. Because like, as I learn in the open, like a when I'm learning something, I'm building something, I tweet about it. And so that's helpful. Some people and these people could subscribe to a marketing list. And then they receive notifications when I tweet about marketing, and they don't have to have their feed full of tech stuff, basically.

Miguel Piedrafita 38:10
That is fascinating. Yeah, I had to look at dm.link as well, I need to look into it a bit more to understand really how that works. That is really cool.

Miguel Piedrafita 39:26
Yeah, and the thing is, I know Twitter employees talked about it in like meetings, and a few are subscribed to the list, which is really, really great. Like, I mean, it means that they are not going to shut it down, hopefully, because like, there were some projects with API rate limits, because I was DMing a lot of people and they basically Pump me up so that I don't hit those. Okay, let's do the thing. So it seems like Twitter likes these kind of things which is great. So yeah, I'll be working more on that soon. And hopefully getting a few people in.

Tim Bourguignon 39:55
That is very, very cool. And a very interesting list of projects that you have. We'll link that in the show notes so that people can find all the projects you mentioned. That is fascinating to me. We have unfortunately reached the end of our time box. What would be the one advice that you would give to, to listeners, if they wanted to start stepping a bit more into this indie making scene and making projects like this? What What is the one advice that you think would be really important to hear.

Miguel Piedrafita 40:24
So I think something that a lot of people overlook, because it's not really a part of the product. But it's also important is community. Not only community for your project, which is also incredibly important to start doing marketing before you start building even, but like a community of indie makers that supports you. And you can build together and it serves like as a collective knowledge service. You don't have to fail to learn, you can learn from the failures of other people. But it also helps with motivation. Like there are there are these communities, my friend Sergio, started Makerlog, which is basically like, it's a social network based off todo lists. So instead of posting, like tweeting out, you post you to-do items, and then complete them, and they have this great, really great community of people cheering into each other helping out, when someone launches something, they all tweet about it. So it's really great for like motivation, meeting people, and all of these things. And I think that if you were starting, like, if you've never worked on a project by yourself, and you want to basically learn something, it's a great place to be in, you can just go to getmakerlog.com. It's free to join. And it's free to use, you can pay for like dark mode and stuff. But it's free, you're going to find a lot of people who are in the same position as you and a lot of people who are ahead of you and behind you. And then you can just talk about it and another great community is Indie Hackers, which is more of a forum style. There's also wip.co, which is more... it's a paid community. And it's a little bit more advanced for people who are I would say, a few years into indie making. So yeah, and also in Twitter, there's like a pretty big maker community on Twitter, mostly the getmakerlog people and stuff, you can start interacting with them. And then people tweet about the things they do, that's another quick tip. if you build in the open, like you tweet, what you're doing, do you have motivation to continue. You have like, if you don't ship for a while, people will tell you, Hey, why are you not working on it? It has like an accountability. And also people get excited about your project. And maybe you are already doing marketing without really realizing it. So that's I think that's the most non-technical, technical tip that I can give.

Tim Bourguignon 42:39
Thank you very much for that. So Miguel, where can people find you online?

Miguel Piedrafita 42:43
Yeah, so the center of everything is my Twitter that's @m1guelpf. Instead of the first I it's a one, like difficult to spell, I assume it will be in the show notes somewhere.

Tim Bourguignon 42:57
Yes definitely.

Miguel Piedrafita 42:58
I also have a website with custom newsletter but I haven't sent anything in two years. But you can still subscribe, you should receive something at some point. Maybe like in five years. Yeah, it was a blog with a few technical articles. I haven't written anything in like a year. I've been starting to write. My goal is to do one post about crypto a week. Maybe I have another blog for that separately. But it's linked from my website. I also live code and live market and live design, sometimes on Twitch. I do a lot of things, the best way is to follow my twitter and I talk about all the things that I do there.

Tim Bourguignon 43:39
Then people, you know what you have to do. Miguel, oh, fascinating. Thank you very much for this. And people, really go on to his on his project site and look at all the things he created. And try to understand how fast you create new things. This is just amazing. Miguel, thank you very much.

Miguel Piedrafita 44:02
Yeah. Thanks for having me.

Tim Bourguignon 44:03
And this has been another episode of devjourney. And we'll see each other next week. Bye.

Tim Bourguignon 44:10
What an inspiring story. Miguel is so young, yet he has done so much already. I really love how he casually said, "Well, I decided to make this project open source because this was my second PHP app and my first Laravel app, and my code was probably going to be awful. So I wanted people to be able to tell me how to make it better". This is absolutely the right things to do. Yet, it is an astonishingly hard barrier for most developers. I am abashed. Did you check his projects already? If not, you really, really should. And how did you like his story? Right after the recording, I had to contact a colleague of mine and talk to him about why we don't manage as a company to create small projects like that. By the scores. This is really, really fascinating. I'd love to hear more about your thoughts, listening to me with a story. You can reach me on Twitter - I'm @timothep, or use the comments section on our website, devjourney.info.

Tim Bourguignon 45:19
Now, you are up, it's time to start a new project. So please decide on what you want to learn. Give yourself a short deadline, how about the end of the week? And deliver something. And if you do, and if you tweet about it, link me to it and I'll push it further. Deal? Have a great week, full of learnings. Bye.