Tagged with: [ projects ]
I’m full of ideas. Most of them are stupid, though. But sometimes, some of these ideas get stuck in my head like an itch I must scratch, and voila: a new side-project is born.
I don’t start projects with a direct goal. Sometimes it’s just to figure out: “how hard could it be” (hint: always), or sometimes: I could get rich with this (hint: never).
Even though I’m making a good amount of money as a freelance consultant, I would love to have a project that I love to work on, which generates money even when I’m not working on it directly. As a freelancer, I can only bill for the hours I make, and typing twice as fast doesn’t reflect in getting paid twice as much.
Because I make good money, I also have the opportunity to take a few months off in a year and focus full time on my side projects. For me, this is also a perfect way to wind down after hectic months of working against deadlines, so it helps me destress, feeds my curiosity, allows me to use new untapped technologies, and maybe make a bit of money.
If we talk about the first few reasons: all my projects succeed, whether I finish them, get bored with them, or
find they are not feasible to keep alive. However, making money is much harder to achieve, yet
it is becoming the main reason I want to start a new project.
Here is a list of projects I have worked on for a significant amount of time from 1998 until 2021.
- CybOS - an operating system from scratch.
- Saffire - a programming language.
- EZShopping - An e-commerce SaaS.
- Techanalyze - an online assessment and reporting tool.
- DutchTechRecruitment - a recruitment platform crossed with a dating app.
- Seams-CMS - A headless CMS system.
- Symfony Rainbow Series - A 7-part series about the Symfony framework.
- Rest cookbook - A recipe site about REST.
- Commodore64 simulator - A working commodore 64 emulator written in PHP.
- BitMealum - A e2e encrypted email alternative.
- Leita - a web security scanner
CybOS - an operating system from scratch.
I’ve always been fascinated with assembly and low-level programming. Back in 1998, I’ve started to begin writing an operating system in C (with some assembly). Back in these days, we didn’t really have any (good) emulators, so most of the time was spent compiling, writing code to floppy disk, booting up another PC, and seeing if it works.
It uses a custom bootloader (so no grub), and it’s capable of most of the basic functionality like memory management, scheduling, disk I/O and having a VFS capable of loading ext2, cybfs (custom simple format), and fat.
The system is/was at a point it was ready to get a toolchain running on it. Instead of writing your custom C compiler and linker, you could use newlib for this, where you only need to provide the “glue” between your OS and newlib. It should be “simple”, but it wasn’t at that time, so I kinda lost interest in the project.
Source code can be found at: https://github.com/jaytaph/cybos
Saffire - a programming language.
I bought the purple dragon and obviously, when you have the purple dragon, you MUST create your own programming language.
I wanted a language that felt like PHP, but somehow would work more like Python and ruby. So I’ve created a language that was interpreted, dynamically strong typed, and with everything as an object.
It was one of the first projects I worked on, where some people (some of which I didn’t know) gathered around an IRC channel back then. It didn’t result in a lot of extra hands on the code, But having a few people around allows discussing the issues I tend to ran into (a lot). When you hit a snag, it’s good to have people around that think about the problem differently or provide solutions you by yourself never thought about. But ultimately, being alone in writing code gets lonely and can destroys the enthousiasm quickly.
Source code can be found at: https://github.com/saffire
EZShopping - An e-commerce SaaS
In 2003/2004, I started my first real company with my brother and a common friend of ours. We created a platform to create your own e-commerce site easily. Even though it seems a very common piece of software now, there weren’t many options back then. OSCommerce was there, but no real SaaS solutions. We spend about a year or so building the software, with me writing the software and the two others doing sales and marketing. We had a few customers but ultimately didn’t gain a critical number of customers to hit it off. (as a few young kids without any form of money). Eventually, we had some internal conflicts and closed down the company.
Even though commercially a failure, I learned so much about running a business. In hindsight, we should have been more proactive towards prospects (we had a really cool information package, which we send out a lot to interested companies every week by post), but we didn’t got people into actually buying our subscriptions.
Techanalyze - online assessments
Techanalyze was a company I started with a colleague freelancer I have known for a while. We occasionally worked together on projects, and we were thinking about writing a system that could assess developers (and others) based on technical interviews.
We started this as a business, and we worked on the platform. Things were kept simple: a PHP/Symfony platform running on a VPS kept our costs very low. Since we are both developers and not sales/marketing people, we (again) hit a wall on getting clients for our platform. We spent a lot of time and effort getting people to use our platform, but it didn’t gain much traction. Fortunately, one customer for who we created a white-label instance of our platform was willing to buy our intellectual property, so in the end, we were bought for an ok sum of money. We didn’t get rich from it, but we learned the harsh lesson that having a platform doesn’t mean you can sell a platform.
We had a wild idea where we wanted to do recruitment the same way as dating apps. Based on your preferences, we would match job openings to your likings. Codewise, this was a pretty decent system, where we calculated scoring based on your preferences.
We had a few problems getting this up and running: first of all, we ran into a chicken and egg problem: we needed job openings and users, but getting one without the other was difficult to pull off. Then, again, our lack of sales/marketing skills didn’t help either.
Seams-CMS - A headless CMS system.
While I was doing a job for a client, one of the things we needed to do was to implement a headless CMS system into our current platform. Unfortunately, during the time we spent finding the correct CMS system, we found that many of them,.. well.. suck. So we were playing with the idea of how hard it would be to create our own?
I asked a frontend developer to join me, and together we started working on a system. Unfortunately, we didn’t
I learned that you need a partner or partners with the same idea or mindset you have. While my mindset was more on - getting things out as soon as possible - my partner’s was more about: let’s try neat and new tech and see what happens. Both visions are understandable: mine was about creating a project that would make money, his idea was about creating a project where he had the freedom to use tools and techniques he couldn’t use in his daily work.
Once we had our platform up and running: you might already guess - no customers. I’ve dived into learning a lot about marketing and sales, but ultimately decided I couldn’t do it alone. I’ve asked a few marketing companies nearby to see what they could do to help out. Still, the amount of money they asked for was just way too much I could spend, and most of the ideas I heard were: doing a bit of SEO, paying a lot of money to google ads, and setting up a Facebook account. I’m not sure that would be the wisest way to spend my money, so I ultimately decided not to try such a significant (financial) risk.
Symfony Rainbow Series
I LOVE spending time in the depths of software, figuring out how things work. One of the things I kept on hitting was that I could not completely understand how Symfony’s framework security component worked. So, I’ve created a blog post about it, which is a way to try to understand things. However, this post was getting so ridiculously large, and I turned it into a 200+ page book published on LeanPub.
I’ve already got some experience with writing, as I’ve written a book before and was published by phparchitect.
So I’ve done the publishing myself, and I’ve released the book on Leanpub but also created hard copies with a local printing press. The book sold pretty well, especially given the niche market. So I’ve decided to write more. I’ve written another book about the Symfony Console component (a lot fewer pages). And I’ve spent a lot of time writing the third book about Symfony Forms. I’ve written about 300 pages, at which point I’ve hit writer’s block (it’s a real thing!). I’ve turned around the book’s structure maybe ten times. Rewritten complete chapters, but I couldn’t finish it anymore. Ultimately, I’ve decided to let the book rest and started on a Symfony form recipe book, where I wrote solutions for about 25 common problems with Symfony forms. I hoped this would reboot my writing on the main Symfony forms book. But this never happened. I never completed the book, although it was finished for about 95%.
One thing that I loved about the books is that they worked well for me as a freelancer. I was suddenly seen as a go-to expert for all things complex with Symfony, which resulted in many (high-paying) consultancy jobs. So even though the books themselves probably didn’t make a profit, considering the hours spent on them. I think I got a lot of revenue by getting a lot of excellent projects in the end.
Rest cookbook - A recipe site about REST.
Back in the days where APIs should be RESTful, I’ve created a simple (static) site with a few recipes about how to do things restful. There are about 15 recipes on there, and my idea was to create at least one recipe per week. Resulting in over 100 recipes over two years. This, plus all the contributions from the people, would help me write more recipes, as the site itself was open source.
Over time, I think I’ve got only a handful of pull requests, and even those were mostly fixing spelling errors. I lost interest in writing recipes myself, so the site itself is just a small list of recipes. Funny though: it’s my most visited site and has a lot of backlinks from stackoverflow and even Wikipedia. So somehow, people have seen to find their way to the site.
See the cookbook at: https://restcookbook.com/
Commodore 64 simulator
My first computer was a C64, and on occasion, I fire up an emulator and dabble a bit in 650x assembly. Just for fun, I tried to see if I could write an emulator of a C64 in PHP. It turns out: you can.
The emulator itself runs a completely functional C64, so you can play games, and it even runs a dedicated 6502 CPU test suite with all the valid (and invalid) opcodes and addressing available.
One of the downsides of writing such a thing in PHP is that PHP doesn’t have a real output system. There is PHP GTK, but this needs to be compiled, which most people haven’t. So I’ve written a python/pygame window that outputs the video “signal”, where the signal was an IPC memory block between the PHP code and Python.
It was very slow, but still fast enough to see running some games. There were two main problems: first, I never got around writing the SID sound code, but more importantly, I got stuck with keyboard mapping (basically emulating the IO chips). Second, I couldn’t make sense of the actual schematics and documentation, and basically, the few people I went to for advice told me this was way above their heads. So I got stuck and never finished it.
Find it here: https://github.com/jaytaph/c64php
BitMaelum - A e2e encrypted email alternative.
This is still one of the coolest projects I’ve started. It’s an email alternative that deals once and for all with address ownership, privacy, spam, and many other things. I’ve started writing this in Go. I’ve got one contributor with me (Thanks, Antonio!), which helped me with good ideas, testing, bug fixing, and the occasional code. It made me happy to find that I could talk to somebody with the same enthusiasm about a project.
I still think this is a super sweet project, and though it still has a few problems to solve, it’s capable of a lot of things already. Unfortunately, however, I couldn’t work on it for a while due to time, and the project faded away.
Leita - a web security scanner
I’m currently working on another project: a website security scanner. Basically, we run all kinds of tools automatically and generate a nice report to reflect the state of your website/domains.
We will add more stuff, like application testing and OWASP stuff so that you can get in-depth scans of your systems at regular intervals.
Again, this is also a project I work on in my spare time, with the help of one person who helps me around a bit, but in a much slower speed and less enthousiasm. I’m grateful, though, but I feel we could get more out of it.
Find it at: https://leita.io (still in early stage beta testing).
Enthousiasm and loneliness are killing factors
There are two reasons why these projects mostly fail in my experience. First, I work in two modes: complete standstill and lightning speed. When I’m starting a new project, I’m so enthusiastic; I spend every free hour working on the code, thinking about new ideas and such. I think this pace is way too fast for everyone who wants to join me, which complicates things a lot. People don’t seem to keep up and lose interest quickly.
Another reason is the lack of - well - friends, I guess. I have a severe form of autism which not only controls the way I need to work (both professionally and for fun), but it also puts me a bit in social isolation. Not to complain, though, I like being on myself, and I have a lovely wife and kids, so I never feel or am alone. However, when it comes to “computer stuff”, I don’t have anyone I can talk to. This makes it harder to talk about issues and problems I’m facing. Often, in my professional work, I’m the expert/consultant who comes in when things get too tricky, so by default, I don’t have a lot of people around me to ask for help. Bummer.
So this reflects in my projects as well. I start something, hoping to get others enthusiastic about it as well, but I have no idea how to reach those people. I suck at marketing/sales, even when I’m selling myself I guess :)
Any project, aimed as a hobby side-project or trying to make money, needs more than just a good idea, enthusiasm, and code. It needs to be sold. It needs to be tailored to potential customers, and it needs to be marketed in the right areas for the right people. Otherwise, it will be just another entry in a (long) list of projects that didn’t go anywhere.
I’ve got the technical side covered. I just don’t know how to find people who can help with the “rest”.