About two years ago I decided to take on a large hobby project. I was not a stranger to hobby projects, in fact I had worked on one or another throughout my whole career. You can see some of them on my My Projects page. You'll notice a certain trend to them though. All of the projects that you can see on that page are small. So it looks like I've never challenged myself to try to build something larger, something more ambitious. Well the reality is that I had always worked on both small and large projects, it's just that none of my larger ones were ever released. This is a place where many hobby software developers find themselves.

Building apps as a hobby has its ups and down and after a while projects get boring no matter how excited you were when your idea originally came about. The problem with ideas is that they fog your mind with excitement and make you forget how much work is actually required to materialize it. This is why many developers rarely finish their large hobby projects. And for me, if I don't consider something to be production-ready I will not make it public. And thus I have many half-finished large projects on my hard drive and zero on my website.

Since I already knew the pitfalls of large projects by the time I had the idea for Personal Assistant, I knew that I had to take a different approach if this project was to ever see the light of day. So I came up with the following. Personal Assistant would not be a single large application, it would be a collection of small specialized apps supported by a single large back-end. On the surface they would be separate applications hosted on separate domains, each one solving a different problem, but they would all use the same back-end API. This way I would never get bored with the project because if I got bored with one of the apps I could just focus my energy on another one. They would all be small enough to be finished in a reasonable amount of time but they would not be trivial in their feature-set so that I could still learn a lot from each.

So how come a single back-end? I'll get back to this question later.

The original idea behind Personal Assistant revolved around two apps. The first one would be, cue eye-roll.. a to-do list manager. Yes, the app that every developer on this planet has done at least once in order to learn a new technology, stack, or programming language. My intention with this app wasn't to make it easy on myself, rather I wanted to build something comparable to Wunderlist. If you're someone who tends to use a to-do app like myself you probably already know of Wunderlist. I (and apparently Microsoft) consider it the holy grail of to-do apps and I wanted to make something which had the same feature-set, only different. I don't use all of Wunderlist's features and there were some features that I needed and it didn't have so me being a developer why not develop my own? This wasn't the only reason I wanted to create a to-do app. For me, the only way a developer can create a good product is if they have good user feedback or they themselves use the product. In my case, I knew that I would have very few people using whatever I built so decided to build something that I use myself on a daily basis. That way I could give myself feedback and improve the product until it becomes comparable to the popular ones out there.

The other app I wanted to build was a recipe app. I had just moved out of my parents house and needed to cook for myself so I decided that I wanted an app that allowed me to store recipes. And here's where I come back to that "why the single back-end" question. The core idea behind Personal Assistant was specialized apps that are cooperative. The to-do app would for example have a shopping list and the recipe app would have recipes which have ingredients which are linked to the to-dos in the shopping list. It sounds convoluted but bare with me. If a to-do is not completed in the shopping list it's considered a missing ingredient in the recipes app. So the recipes app could show whether you have the required ingredients to prepare a meal. That was the original idea from which the whole thing came about. I wanted to build specialized apps that are good at a single thing but which can collaborate with other apps under the Personal Assistant umbrella to offer a more advanced feature-set. One that is not available in other specialized apps like Wunderlist.

I wanted Personal Assistant to be an ecosystem.

Today, a year and 10 months since I begun working on it I finally have a production-ready version (took a while). Currently there are only two apps - To Do Assistant and Cooking Assistant, but I already have ideas for a few more. The first two apps are never really going to be considered finished either. There's a lot that can be done to improve them. For example, for Cooking Assistant I have planned a lot of upcoming features revolving around nutrition that I think will transform it from a simple recipe store to a full-fledged dietary assistant.

There isn't much more left to be said on this side of things and there's a lot to be said on the technical side. But that's a topic for a future post. So without further ado, PersonalAssistant.site.