Realm Blog

Furkan on Flows

Flows App Screenshots

Furkan Cengiz is an iOS developer from Istanbul and the creator of Flows, a new app that enables people to chat with others around them without an Internet connection. We’ll go right out and say this is a really nicely buttoned-up app. After learning more about the inspiration behind it, we can’t wait to see how it evolves as more people adopt it.

Tim Anglade, VP of Product at Realm: How’s the mobile development scene in Istanbul?

Furkan Cengiz: It’s growing. It’s growing every day. Right now we don’t have many apps that are used worldwide, but in Turkey there are two or three big companies with more than 50 workers and lots of small, boutique companies that work in the mobile world. It is growing, but we could use some worldwide apps.

Tim: In a previous job I used to do a little bit of work with Turkcell, and they seem to be pretty active and pretty mobile focused. I know they were building a lot of interesting stuff for mobile as a big national operator.

Like most places, I assume a lot of people have mobile phones and smartphones now and it’s an ever-growing market. Are people primarily using Android or iOS, or is it a mix of both?

Furkan: Mostly Android. But I don’t have many Android developer friends. All my friends are iOS developers. [Laughter]

Furkan Cengiz

T: Most developers want to use iOS. It’s like that in every market. It’s funny, I was in Korea and the market is 90 or 95 percent Android of course, with Samsung and LG there, but all the developers were using iPhones and they wanted to build apps in Swift. It’s crazy.

How did you get into app development?

F: I started working on iOS development when the first iPhone came out — I bought one and tried working with it. But my first job was as a Web developer. I worked at a company for two years, then I started to get some freelance jobs for iOS. Then I quit and built my own company, and after three years I left that as well. Right now I’m a developer working on my own stuff and freelancing at the same time. So it’s been, like, six years.

T: You jumped in there early. Have you been primarily doing Objective-C development for iOS?

F: Yeah. I still haven’t had the chance to get in deep with Swift.

T: Do you think you’re going to take a look at it?

F: I think I will work on Swift with my next client because I need to learn.

T: It’s pretty fun. It’s a cool environment, so I definitely recommend it. Let’s talk a little bit about the app. How did you get the idea for Flows?

F: We actually started when the protests happened here in Turkey about one and a half years ago. After the protests, I learned about the application FireChat, and I got so excited about it. I decided to try building something like it. I started working on it and when it seemed like I could build it, I started to think about some of the features of the application. I came across the color idea — a unique color for every person.

A friend, Kirill, was working on it with me, and we decided to make it without any servers, so it would be more anonymous and more secure, in a way.

T: I immediately fell in love with this idea of a private chat application, this centralized chat application. I never connected it to the protest in Taksim Park.

F: The first thing I tried to do was relay the entire connection between people, but it was very hard; I’m still working on it. So then I moved to the chat part.

T: You were trying to relay an Internet connection so that people could get full Internet access and connect to websites or apps? Like through mesh networking?

F: Yeah. If someone has a connection, all the people have a connection. But it needs a bit of work.

T: I used to study that when I was doing my Master’s degree, and it was fun because mesh networking is a very interesting idea. A lot of people want to do it, but the science behind it is very tricky. Just being able to route things properly and share resources properly, mesh networks are very, very brittle. But if somebody finally found a way to do it for something relatively low maintenance like chat, I think it could be really good.

F: Obviously you’re sharing your connection, and so it should be super secure.

T: Exactly, the security aspect is another element on top of that. You should keep trying. I think it would be really cool to be able to do that and go beyond chat.

How would you explain Flows to people?

F: It’s simple. You can chat with other people without needing an Internet connection.

T: So it doesn’t matter where you are. It doesn’t matter if you have 3G or LTE or WiFi; you can have none of that. Can you be in airplane mode almost, or do you still need Bluetooth or local WiFi?

F: You need Bluetooth or WiFi. One of them should be on.

T: Then you would be able to talk to people who are around you. How far does it go? Can you just talk to people within immediate proximity of you, or can you also talk to people in proximity of people you’re talking to?

F: Theoretically if there are lots of people, you can talk with anyone who is connected to the chain. If I’m connected to a person 30 meters away and he connects to another person 30 meters away, you can connect — you can send a message.

T: So you’re using ad hoc connectivity for that?

F: I’m using the Multipeer Connectivity framework. You open Flows and it can search other devices near it and it tries to connect with them. When it’s managed the connection, it stops and waits for the other devices to connect. It tries to create a mesh network, basically.

T: So right now it’s available for iOS, and people use it for chat messaging functionality. Do you have plans to add more features?

F: Yeah. The first thing is images — I will add an image function so people can send images. After that, I don’t know; I’m still working on relaying the Internet connection, but I don’t know yet if I can do it or how long it will take me. It’s really a tight project for me. I don’t work on it a lot.

I’m also thinking about some other stuff, maybe connecting people from far away, like real peer-to-peer networking, from IP to IP.

T: For a side project, it looks really cool, I have to say. The design is amazing. The icon, the website, just the amount of thought and work and detail that you’ve put into it is incredible. So I’m surprised you’re just calling this a side project.

F: It’s a side project for me and a friend. Kirill Ross is the designer of the project.

T: You all did some really amazing work. What are you most proud of about Flows today?

F: First of all, making it live. We didn’t have much time because of clients and other stuff, but we worked hard to make it live.

The second thing I really like about it is the color feature.

T: So people can choose a few colors to identify themselves on top of whatever name they choose to put on their account, right?

F: They don’t choose the colors. They’re generated automatically. The idea is not a unique one. Really I got inspired by FireChat, but I tried to make it a bit more personal. I removed the server part because when you open FireChat, it’s too complicated. There are lots of channels, lots of incoming messages, and there is a sign-up. So I removed all that stuff.

T: I can’t say enough about the work you all put in. I’ve seen apps here in Silicon Valley that have had a lot of funding that don’t look as good or function as well as Flows, so congrats on the work again.

What technologies do you use internally? You mentioned Multipeer and I know you’re using Realm, but are you using anything else to build the application?

F: Yeah, I’m using ReactiveCocoa. And I built the whole app using MVVM. I think Microsoft created the pattern, but I like it and it’s universal, so I’m using it.

T: You’re definitely not alone; MVVM is a very popular pattern for frontend development in general.

Are you using ReactiveCocoa with Realm? I know historically people have had some issues using ReactiveCocoa and Realm together.

F: In my application they’re pretty isolated because they are on their own servers. They’re not really connected right now.

T: It’s very tricky to do today because of notifications and the way Realm objects work, but it’s one of the things that we’ve been trying to improve for a long time.

F: Previously for the models, I was using Mantle, the framework. I had some problems with that. I think I created two more models — one for Realm and one for my internal stuff.

Right now I’m using Realm for another project, kind of a bigger one. It’s a startup and it’s going pretty well. I’m using one model: it’s the Realm model.

T: Realm models everywhere. [Laughter]

Maybe we can talk a little bit about what you like about Realm so far. What are some of the things that you really enjoy and what were you using before you were using Realm?

F: I was using a simple library because I just have the messages, hashtags, and users, basically. So I needed something really simple. The library was working pretty well, but after a while I started having some crashes and I couldn’t fix them. So I decided to change to Realm because it looked cool and I really liked the docs. And you use CocoaPods. I also liked the browser. It’s good to have a browser.

T: We’re working on really improving it now. We have some exciting stuff coming for the browser, so stay tuned. I think if you like the current version, you’re going to like the next one a lot more.

F: I had just one difficulty with Realm. I couldn’t use NSNumbers. That was a pain.

T: Yeah, we don’t know what to store them as, so those encapsulating types are a bit tricky for us to store efficiently. Eventually maybe we will do something there, but for now we just ask people to use standard primary types.

Do you remember how you heard about us?

F: Product Hunt, I think.

T: That’s great. Usually it’s through Hacker News or something like that, or a friend. It’s nice to see we’re getting some users from Product Hunt as well.

You mentioned ReactiveCocoa and Mantle. Are there any other cool libraries you like or technologies that you’re excited about right now?

F: Currently I’m using Classy. It’s like a CSS, with techniques to make UI elements easier. I was using Masonry for auto layout. Right now I’m using Masonry with Classy.

T: I’ve never heard of Classy.

F: It’s the same developer who built Masonry.

T: It looks really cool. I like asking about that to learn about all the libraries people may want to use.

We’ll stay tuned and look for that startup that’s coming out soon. Good luck with all the projects.

Follow Furkan on Twitter, LinkedIn, and his website.

Realm Team

At Realm, our mission is to help developers build better apps faster. We provide a unique set of tools and platform technologies designed to make it easy for developers to build apps with sophisticated, powerful features — things like realtime collaboration, augmented reality, live data synchronization, offline experiences, messaging, and more.

Everything we build is developed with an eye toward enabling developers for what we believe the mobile internet evolves into — an open network of billions of users and trillions of devices, and realtime interactivity across them all.

Get more development news like this