It took months: months of stolen spare time there and here but Merlo 4 is finally available on the App Store.
Is it completely done? Yes and no.
I wish I could add many other features, improve and optimize the code over and over but sadly I can’t have that luxury.
You see, the main issue here, is that I love building apps.
I love it so much that after finishing my full time job as a mobile developer, I go home and I work as a indie developer on my personal projects.
Sounds crazy right? I agree, but I cannot get enough of that feeling of building something with my own hands.
What it’s more crazy about it, it’s that Merlo is not the only personal project I’ve worked on, in the last year.
I’ve developed at least 8 different projects in parallel, some of them already available, others coming in the near future (and I’m really excited about them) and some others stopped halfway trough.
So here I am, today, presenting Merlo 4 to the world: an app written in my spare time, with a full time job to handle, some contractor work that helps paying the bills, a wedding in the middle, family and friends to handle and everyday life to tackle.
Why Merlo?
If you are asking about the name, well, that’s easy.
Merlo in Italian means Blackbird and in case you don’t know, it’s a type of bird. Nothing special about it, I just liked the sound of it and since Twitter is somewhat related to birds, I decided to use it.
If instead you wonder why I developed merlo, well that’s a different story.
Personally I never felt comfortable using the Twitter client.
There is so much noise, not enough useful informations about my tweets and I always have that lack of freedom feeling.
In addition, I am definitely not the standard Twitter user and I am also a data nerd: I want to know as much as possible and even more about my content and account.
So after switching to a thirt party twitter client that better suits my needs (tweetbot) I started developing an app to fill the gap and give me the informations I wanted.
Ok but, what about the 3 previous versions?
I’m glad you asked. The first two iterations of Merlo were just for personal use only, never designed to be used from someone else except myself and were completely different from what Merlo has become now.
Actually, it has changed so much that there is not much of the original code in it.
Version 3 was released last year after some friends saw it on my phone and wanted to try.
I spent few months of spare time work to make it usable for everyone.
It was not a big success but I’ve learned so much from it.
Ok so, what is Merlo?
Short version: it’s an iPhone app that connect to your twitter account, every day analyzes your twitter activity and generates a report, with stats and trends and a bunch of useful informations.
Personal opinion: it’s a cool app, but it’s not for everyone.
A twitter account is obviously required and you need to be active on twitter to get the real benefits out of it.
It’s a niche app that will help you understand a lot more about your twitter interactions and maximize the way you use the social network.
I like to check my daily report in the morning just after waking up, sometimes it’s cool to see a high score and check all the previous day interactions; other days the reality is more harsh but it helps to get me more motivated and active.
I also like statistics and having so much data to analyze is exciting: every day more data gets added and analyzed, a new report get created and so on, it’s cool!
When I select a range of dates, it feels good to see the graphs and stats revealing me everything I want to know, I feel complete.
But it’s not just about data, a big feature of Merlo it’s related to followers and following.
In the report it’s easy to check new followers and lost followers.
Clicking on it will list them so that it’s possible to read their profile and directly follow back or… unfollow-back (because revenge sometimes is what we want!).
The people tab instead, shows the complete list of people not following you back, or people you are not following back.
Again, most users will probably not need this, but people with many followers and following do know how crowded a timeline can be.
How about having a full time job, unrelated to my apps?
This is probably the (second?) main point of this article.
Having a full time job means working at least 40 hours per week, and maybe more considering extra hours.
Luckily here in New Zealand the work environment is way more relaxed than Europe and the US: the peace it’s slower and it’s quite common to take days off anytime during the year, 1 month holiday it’s common if not the minimum.
But still, it’s not easy to find time to develop side projects when having a full time job and a normal life.
As a matter of fact I happen to have got married recently, and consequentially, a wife.
In my case then, other than a full time job, I also do some contractor work , which leave me with even less time to work on my personal projects. So how a normal person can do it?
Short answer: persistence and time management.
Let’s do the math and analyze it in detail:
1) there are 24 hours in a day here on Earth (we can all agree on that)
2) 9 hours are spent at work (including lunch time)
3) 2.30 hours for commuting, waking up, shower, breakfast and small stuff
4) 7 hours of sleep
5) 1.30 hours for dinner (I like to cook and have dinner with my wife every day)
6) 1 hour for news reading, social networks, emails, etc
So this leave me with 3 hours per day where I can fully work on spare projects plus weekends, unless I have some contractor work to do.
Is it enough? Well.. if you are committed to it, it has to be enough.
It’s not much but it’s the best I can do and I need these hours to be as much productive as possible, I can’t waste time to think about specs, design patterns, code syntax.
This means that I need to have everything right from the beginning, there is no room (and time) for errors or second thoughts.
I need to have everything right from the beginning, there is no room (and time) for errors or second thoughts.
Step One: Get a complete idea of what you want
This is the most complex and stressful part for me.
I have an idea, now I need to think about how to make it happen and what I really what.
I spend days thinking and rethinking about it, visualizing it, writing down specs, issues that could arise and possible solutions.
In my “ideas notebook” I draw a detailed mockup of it (by hand because I’m old fashioned) and try to connect all the dots.
I then try to imagine the user interface and research other apps to get a better picture.
Finally I split everything is tasks (or stories if you like) as much as I can.
Step two: Sticking to it
The most hard step to achieve.
Every time I start working on something, I find new features and designs I want to adapt.
The problem is that this would make me waste time and resources. I don’t ignore them, I write them down in the “future release features” and try to forget about it.
When I cannot forget about it, it’s probably too important as a feature and I have to implement it.
Yep I know, I am not sticking to the initial plan but well.. if a feature it’s stuck in my head for days and I am excited about it for so long, it’s probably because it will solve a big problem and it deserve to be taken in consideration.
Every time I start working on something, I find new features and designs I want to adapt.
Step three: Optimizing the time
Luckily, my full time job is to be a mobile developer, so I don’t need to spend time on researching, I can use my knowledge and apply it to my project.
It’s a two way channel that works great but I need to set proper rules or it can escalate quickly:
1) I cannot use directly the code I write during my full time job.
2) If I have to implement something new I’ve only briefly researched, I need to have something demonstrable by the end of the same day, otherwise it’s wasting too much time and I need to find something else.
3) Learn at work what is useful for work and apply it to the personal project, not the other way around.
There are probably more rules I should add but these are the most important to me.
It’s hard to not reuse the same code but it would be ethically wrong even if I wrote it in the first place.
Step four: Code, code and expect the unexpected
Not much to explain about coding. You just have to do it and do it right from the beginning.
Always, always expect the unexpected: it’s a personal project, spending 3 hours on it every day and 6 in the weekend it’s definitely a stretch.
You know, life happens! Every day! Heck, some days I cannot write a line of code and do anything about it.
This means that the code needs to be as good as possible and work as better as possible because you don’t want to waste time around nasty bugs.
We all know, shit happens, and especially in programming, it always happens.
So instead of trying to fix a bug that affects the whole project, think about this: every project is just a bunch of small modules connecting to each other. You just need to make them as independent as possible and rely on a good communication system.
I will not delve into programming patterns, coding principles etc, I am not the best person to talk about that, but doing it the right way from the beginning, will take you less time in the long term.
If then happens to have a supporting and understanding wife, it helps a lot.
Always, always expect the unexpected. We all know, shit happens, and especially in programming, it always happens.
Step five: Don’t rush it
You see, when the product is almost complete, you will feel the rush to finish it to show it off.
It’s a big issue, especially since it’s impossible to work on it full time and rush never lead to good results.
I’ve learned it over the years: it’s easy to loose the catch toward the end of the project when you see the light at the end of the tunnel.
But this is when mistakes happens, bug arise and frustration kicks in.
So close, yet so far away: it’s the worst feeling.
The way I handle it, it’s trying not to think about it till all the features have been implemented and tested.
Only at this point I can relax and get excited about it.
Keeping it together till the end and not losing focus is more hard than you would think.
Eventually it’s finally time to submit the app to the public and wait for the first thousands of bugs reports to kick off.
The future
I’ve noticed that many developers, once the app is finished and delivered, forget about it and the support is really lacking: months before important updates and no features in future version.
It’s a big mistake which I happened to make as well.
So it’s important to plan some time ahead to take care of bugs, support request and any issues that could and will arise.
It would be also important to have some roadmap of features that you think to implement in the app.
I’ve already planned Merlo 4.1 and 4.2 with many new features, including PDF and Infographic report generation, unfollow advices, 3D touch support, online reports backup and more.
It’s important to keep it realistic, it’s more than expected that your app will not have the success you hope. Don’t feel down but keep working hard.
I don’t expect Merlo to be downloaded from more than 100 people, and maybe even less. But this will not stop me to keep supporting it and developing.
But I will also know that some features that I wish to implement would only take time from my life and not add real benefits.
I wish I could have an ipad version, a more optimized engine and maybe implement a different database, add a twitter client functionality, more in depth statistics and data comparison.
But as cool as these features sound, I can’t spend too much time on a project that it’s a niche app, so it’s important to focus on the important features and cut the ones that will not give you any real benefit.
When finally most of the important features are implemented, it’s time to jump on a new project.
If you are like me, you probably have already started many projects in parallel, because programming is fun and it’s a never ending learning story where you can only do better day after day.
programming is fun and it’s a never ending learning story where you can only do better day after day.
Pro Tip: Merlo 4 is available on a discounted price for the next two weeks, go grab it!