official blog

Goodbye progress indicator

2018. Jun 22.

One of the most annoying UI element is the progress indicator. Sometimes it’s inevitable, but mostly it’s just a poor developer performance.

Media message sending progress indicator was one of the most shameful parts of my chat application. It was time to make the necessary changes.

Since I planned to refactor the offline message sending for a while, it was reasonable to solve both issues at the same time.

As a result of my latest activity, we have a brand new offline (and online) message sending engine so users no longer need to see the needless progress indicator while sending out a media message.

The recent changes are available for everyone including the developers using the free version.

Is Parse dead?

2018. May 15.

Usually I think Parse is over. I just don’t feel the power behind the development team. They show up some life signals, but if I check the trend of the related GitHub issues or the number of commits, for me it seems more like a dying sparrow than a flying eagle.

Nevertheless I like Parse. Sometimes I like Parse better than Firebase. So it was hard for me to let go my Parse supported chat application.

Since I found some free time, I rechecked Parse iOS SDK, especially the Parse Live Query. It turned out that, it’s not hard to implement the same application with Parse Server (including Parse Live Query) what we have now with Firebase.

So if you find it useful or necessary to maintain your own backend instead of using Firebase, you can have a Parse Server supported chat solution with absolutely the same functionality what we have with Firebase.

As always, just send me a mail for more details.

Group chat is back

2018. May 2.

After several months of working on something else, I finally had some time to work on Group chat functionality. Focusing on something else was fruitful for me to solve this Group chat mystery. Once I started to work on it, the solutions just revealed.

Anyway Group chat is back. It works very similarly to Private chat, so every user has the group related messages in his own Message path. It means that everybody can control his own messages without touching the other users’ messages.

The Group chat is only available as custom development. It’s not part of the free version, and it’s not part of the Premium version either. If you would like to use this feature, then please send me a mail.

AI powered chat interface

2017. Dec 12.

I have always wanted to work with AI. Or we shall say, I was born to work on AI projects. This exciting journey (for me) starts here and now.

Integrating an AI-powered chat interface into an existing iOS application was not a big deal. It’s more or less the same than adding any other 3rd party API. As far as I see, the challenging part will be the server side implementation.

The current setup is not very smart, it knows only some basic small talk. But as they say, the first step is always the hardest. Let’s see where this path leads…

Sometimes less is more

2017. Oct 22.

It was a hard decision, but finally, I have made it. I have removed the Group chat functionality from the code. This is not permanent, but for now, this is the case.

There are two main goals I want to achieve in my work. I would like to deliver as many features as I can, but at the same time, I would like to provide a clean, robust and more or less easy to understand code. Sometimes it’s not easy to find the balance.

In this case, it was impossible for me. The user management needed to be refactored, and the Group chat functionality did not find a way to work together with the new database structure. I haven’t given it up. I will try to bring the Private and Group chat functionalities together in the future again. But now we shall continue with the new and polished Private chat.

As I mentioned the user management and especially the way how we store the user related info at Firebase has been completely refactored. The current database structure is much more suitable for using the app with a large number of users.

Several smaller changes have also been performed along with a few bug fixes. Please check the latest implementation and let me know what you think.

Database changes

2017. Jul 19.

When I started to implement my first chat application I really didn’t have any clue how the database structure should look like. Of course, I had made several changes through the years, but the basic Message and Recent item structure remained the same. Although the original structure caused several issues which became more and more annoying.

With version 3.1 these database related issues are solved now. We don’t store Recent items at Firebase anymore. The conversation related information is generated and stored only locally. Also, every user has his own Message path now. So everybody can control his own messages without touching the other users’ messages.

Several UI changes have also been performed along with few bug fixes. Please check the latest implementation and let me know what you think. :)

Chat user interface

2017. Jul 17.

I like JSQMessagesViewController. I really do. But as we can see now, JSQMessagesViewController is no longer officially supported or maintained. It’s sad. I would have been really happy if I could use a well-maintained chat user interface as I did before.

Anyway I was wondering how difficult it would be to implement a chat UI from scratch. I had started to design my solution a few weeks ago, and now it seems to be a lifesaver to have a ready to use implementation.

RCMessageKit is definitely not as complex as JSQMessagesViewController was, but it might be an advantage instead of a disadvantage. You can have the 1.0 version now. I hope more and more features will be implemented in the near future.

Chat solutions

2017. Jun 2.

It’s been more than three years now, that I have started to implement my first chat application. Don’t ask why I don’t know the answer either. But it’s a fact, implementing chat applications became a part of my life.

There were lots of different variations. First I started with a Parse only chat, then I continued with a Parse + Firebase combination, and when Parse was shut down I switched to a Firebase only solution. Since Firebase local data store was not reliable enough, so I started to use Realm for local caching.

Later on, I added Audio and Video calling features, this way the app started to look more like an all-in-one messenger rather than a simple chat application.

Here we are now. But there are lots of things to do. I am currently working on version 3.0. More and more features are coming up. Stay tuned. :)