Town: Realtime Public Communities for iOS (2016)

Aaron Ng
Aaron Ng
Mar 3, 2017 · 4 min read

Town was an attempt at a public communities product built around connecting people with other people who shared the same interests. I started toying with it at the start of 2016 and ended up putting the bulk of my work into between June 2016 and October 2016. It was scrapped at the end of October 2016. (About 6 months ago now.)


I learned all of my skills, found my interests, and made most of my friends online when I was younger– so I wanted to build a realtime platform that connected people by interest– reminiscent of the ones I grew up on. A place that would eventually turn into a place you could just “hang out” online with people who liked the same things.

There were a few other products tackling communities from different angles: Discord, Slack, Facebook Groups, Twitter, Instagram– but none of them really solved the problem and brought back the sense of community I had when I’d get off of school and rush home to log into my clan’s IRC, TeamSpeak, or BBS Forum.


Town is an iOS app for realtime chat communities. People congregate and chat in large-scale communities focused on a particular interest like Biohacking, Final Fantasy, Food in San Francisco, etc. Town then statistically derives the most interesting discussions in each community daily– so everyone can go back in time and see what the most important discussions around Food In San Francisco were on any given day.

It focused on three distinct concepts (each corresponding to a screen below):

  • Discovering and quickly switching between communities.
  • Getting an algorithmic daily ranking of the happenings in a community by importance. This becomes a light touch way for people to get an overview of a community without sitting in the chat all day.
  • A place to hang out, send media, play games, join voice chatrooms, and so on.

This was one of the more interesting technological components of the project. Generating daily rankings for each chat wasn’t perfected, but the rough idea is built around these core concepts:

  • Actual discussions are primarily punctuated by time in large chatrooms.
  • Active (message sending) users divided by the number of total users online within that time punctuated block represent how engaged the community was.
  • Additional signals include images expanded within a conversation, links clicked, and media engaged with.
  • You can additionally do some interesting things like tag an old post with some symbol (probably a #) to preserve nesting at some point in the future.

Ending Town

Town was about 80% to alpha when I decided to stop working on it (for a number of reasons).

The biggest reason though, was absolutely hating how people were treating each other in onlinepublic spaces online pre-election. These kinds of comments weren’t anything particularly new– but it was more apparent than ever and I was worried that my product was something that would contribute to the problem more than solve it.

While some of the technology was interesting, I decided that this wasn’t a 10x solution, and maybe not even the problem I had originally set out to solve. I ended up scrapping it and moved on to tinkering with other social apps, VR ideas, and so on.

The general idea is still one I’m interested in, and might try and tackle again in the future.

  • Swift3
  • Django Rest Framework

End Notes

I think Discord is doing some very interesting stuff and could end up being what I was looking for all along. I’d love to see them do more things around community discovery. Additionally, some of Instagram’s new features around explore, stories, and messaging have me really interested. I think Facebook Groups has a ton of potential too.

Online communities might’ve dissapated for a while (a common joke seems to be that is the only active forum left on the internet), but it looks like they’re coming back– and that’s awesome.

Aaron's Blog

Aaron Ng's Medium