Note: this list does not include projects made as a contractor for other companies or individuals. Just the projects I built for myself as a solo founder / indie hacker / maker
I started programming when I was 15, and since I’m now 36, I have a long list of projects I built that eventually failed, but all contributed to creating the 36 years old solopreneur I’m now.
The first time I met programming was with the Amiga that came included with the encyclopedia package 😄. There was something called RexxMast which you could open and you could type anything. The only thing was I didn’t know what to type. There was no Internet at the time to find tutorials. Not as we know it today.
In 1997, I became a huge Linux fan, when Linux was sold in 4-CD packs. I could not really download it from the Internet from home, as I had a 33.6Kbps connection and it would take maybe 3 days to download them, blocking the telephone line which was the only way to contact someone - plus, sometimes the connection just broke in the middle of the download. Plus, the Internet contract had a limit on the hours I could use (good times!)
I learned PHP 3 which at the time was really advanced, printing the entire reference manuals (a lot of wasted paper). I think I ended up with a 15cm self-printed book.
Here is the first project I ever published: a website dedicated to Linux, in italian. I wanted to be a resource for the italian scene, which was very, very small at the time. The site launched on my ISP servers, which thanks to a friend (and co-founder of the project) that worked there. Today we’d probably call it a startup. Domains and hosting used to cost a lot back then, but they were using Linux at that ISP, they supported the project and we ended up with a nice subdomain:
You can see the design was “inspired” by Yahoo.
In this image, it’s 1999 and the site had 5902 visits (visitors counters were a cool thing, and Webrings too!).
The next project I remember was a website dedicated to programming. Written in italian, started while I was at the university.
At the time I knew some C, some Java and dabbled with Web stuff.
I wrote a few articles and shared in a forum (I remember one about AJAX), only to be told they were poorly written, so I stopped (we can talk on the importance of getting good feedback early on…).
In 2005 I got my first a Mac, it was an awesome little machine, an entry level iBook 12”. So white. So small. So nice. I just liked the product and I wanted to install Linux on it, which I was using as a desktop OS at the time, but a friend of mine over a beer said “try OSX and you’ll never go back to Linux”. He was right!
Now it looks very old school, but I remember how cool it was that it could talk, out of the box! Spent a while playing with the “isn’t it nice to have a computer that will talk to you” thing that OSX did.
Notice how the apps, 14+ years later, are still nearly the same - iTunes, iPhoto, iMovie, GarageBand, Mail, Safari. An early OSX version made me buy a huge, used Cocoa Programming book which was way too complex to digest (on the importance of getting the right book at the right time…).
I started getting into automation, and as I was an ebook collector I figured I could create a website using a CMS, and generate pages automatically by scanning through my huge ebook list, pick a phrase from one book, one from another, and combine lots of them to form a page that looked legit but was completely unreadable.
Somehow this site started to rank, as I got an email from a published saying I was violating some trademark on their books, so I put it offline.
Anyway this got me into CMSs, which were also the topic of my thesis. Immediately after getting the degree I started my own company to freelance.
I already had a blog, in italian, where I wrote about Web Development (recurring pattern here).
The idea, in addition to client work, was to get an audience and then write books.
I started with a premium product first, an online course about Joomla.
Back then there was no real platform to host courses, so I built mine (on a site based on Joomla). It was a fairly complex website with quizzes, video playback, text lessons and more.
The course did pretty well, but not super well, but since the course site was a pain to write, it gave me the idea of making a platform for others to use.
I wrote it and used it to host my Joomla course, and I had the idea of making more courses on it but when I finished writing the software I also lost motivation to do courses (lesson learned).
If you read Joomla and laugh, at the time it was the only decent alternative to Drupal, which was the other big Open Source CMS. WordPress was only capable of making a blog. It was good at that, but only at that.
It’s not the beast that it is today.
I used it to host my blog, so I wrote my first free WordPress plugin which was some kind of Search Engine Marketing tool, as it detected the keyword that people used to get to your site (which at the time was freely given to you by Google), and based on that keyword it could show a different message.
A very nice marketing tool, one could say, but didn’t get much traction.
After a couple years I created my first Joomla plugin, and this time it was a paid plugin. It did something very easy: at the time when you registered on the site, you then had to log in separately, which was a nonsense in my opinion. The plugin took me 1 hour to write, while on the sofa, and sold really well for the ROI.
Encouraged by the initial success, the products strategy then revolved around creating a more widespread portfolio of plugins. I launched 15 of them (now unmaintained any more).
One of these was JooCommerce, which I considered the best and simplest to use Joomla e-commerce extension.
The logo was created via a design contest on 99designs.
Another one is a way to add Google Maps to your site.
Overall those plugins have been purchased by thousands of developers.
Many of them use Ember.js for their admin-side interface, and of course PHP as they are built on top of a PHP CMS.
I created about 2 dozens iPhone and iPad apps and games. Now I removed them all from the store. I remember a windsurfing sessions tracker, and a Naval Battles app which was amazing to make. Countless hours learning Objective-C and iOS.
I made a nice 2D graphics game involving birds and a squirrel with a cool usage of game physics to emulate gravity (Cocos2D).
I wrote a few apps about music, showing lyrics and song previews of artists using the iTunes APIs, but was asked to remove them due to copyright issues.
I later rewrote a couple apps with Swift, but apps never really took off. They paid the yearly Apple membership and maybe a coffee from time to time.
Then I decided to migrate my Joomla eCommerce plugin to WordPress, as the user base of Joomla was going down and my plugins sales slowed down.
I released it with a splash, no one seemed to download it even if it was free, so I removed it after a few months. It was called CommerceKit. A cool name, until Apple released a library with the same name. It had an innovative approach. While all WP plugins were going into the “more complex” route, I aimed for simplicity and integration. No addons, for example, was a big decision.
I created and released half a dozen utility OSX apps based on a web stack (Ember.js and MacGap), before Electron existed, most notably a code snippets database
a text notes app, a recipes app, a devices management app (a database for your devices), and a bills manager:
For years they sold a few units per week, but basically none created a relevant income stream.
While I was working for the Grav CMS as a core developer, as a contractor, I migrated my Joomla ecommerce plugin idea to that CMS, and created an open source ecommerce plugin with commercial addons. I called it GravCart:
I now don’t actively maintain it, as adoption was slow and I envisioned a bit more collaboration from the community as well, but that didn’t happen.
The last public project I built was Gitometer, a Git repository stats visualization tool. My idea was to have a private portion of the app for companies, and a public part for individual users.
It used the GitHub GraphQL APIs to gather the data. I wrote it in Laravel first, then migrated to Go to make it faster, but after pitching the idea to some GitHub users it was not well received, and I just used it for some tutorials.
It’s now been 2 years since my last public project release, and I decided to stop making software projects with the goal of making them profitable businesses.
After more than a decade, I found my way and maybe true calling in teaching all I know to beginners, so I am now focusing on creating educational material, projects just for fun, things to help other people and empower them to create their own vision for the future.
This website and my books and courses, basically.
More lab tutorials:
- The stack I use to run this blog
- 8 good reasons to become a software developer
- SEO for developers writing blogs
- Review of the book The 4-Hour Work Week
- Build a lifestyle business
- Build your own platform
- As an indie maker, what kind of product should you build?
- Create your own job security
- Developers, learn marketing
- The freedom of a product business
- Generating value
- Have a purpose for your business
- The idea is nothing
- The niche
- Remote working for software developers
- Product / market fit
- The best podcasts for frontend developers
- Why should I create an email list?
- Disconnect time from money
- The scarcity principle applied to software products
- The social proof principle
- How I added Dark Mode to my website
- My notes on the Deep Work book
- The pros of using a boring stack
- How to estimate programming time
- On going independent as a developer
- How to learn how to learn
- Why interview questions for programming jobs are so difficult?
- Do I need a degree to be a programmer?
- Everyone can learn programming
- How to be productive
- How to get the real number of pageviews of a static site
- Have you filled a developer bucket today?
- How I record my videos
- All the software projects I made in the past
- Tutorial purgatory from the perspective of a tutorial maker
- Every developer should have a blog. Here’s why, and how to stick with it
- Having a business mindset for developers
- How to write Unmaintainable Code
- What is Imposter Syndrome
- How to work from home without going crazy
- How I prototype a Web Page
- You should be the worst developer in your team
- How to start a blog using Hugo
- Write what you don't know
- How to block distractions using uBlock Origin
- Coding is an art
- I wrote 1 blog post every day for 2 years. Here's 5 things I learned about SEO
- Dealing with the fire
- On being a generalist
- The Developer’s Dilemma
- My plan for being hired as a Go developer. In 2017
- Productivity gains of using a Mac and an iOS device
- How to go from tutorials to your own project
- This is my little Digital Garden
- How to start freelancing as a developer
- Sharing the Journey Towards Building a Software Product Business
- Subfolder vs subdomain
- How I use text expanding to save time
- Software is a superpower
- I love books