loading...

Graveyard update: Human Bingo lives!

isaacdlyman profile image Isaac Lyman ・2 min read

First I wrote this:

Then this happened:

Please finish the Human Bingo app ;)

So I decided to see how quickly I could turn Human Bingo, formerly a jQuery-based web app, into a native Android app (with little prior experience).

As it turns out, the answer was "about three days." That includes the time it took to learn Kotlin, since I don't like Java.

Here's the finished result: Human Bingo on Google Play

And here's the GitHub repository (the app is open-source): human-bingo-android on GitHub

This is a really simple app with no login, no online features, no high-def graphics, no on-device data storage, and no permissions needed. I'm sure a more experienced developer could have finished it in a day. But I learned a few cool things by taking the time to do it myself.

  • Android Studio, the IDE used to make Android apps, is really great (and so much better than it was four years ago, the last time I tried to make an Android app).
  • The problem of supporting legacy browsers (like IE8) doesn't disappear when you leave the web. To reach a large audience, Android apps have to target many different versions of the OS. Luckily, the development ecosystem comes with a lot of backwards-compatibility baked in.
  • Kotlin is a fun and elegant language with an astoundingly useful and comprehensive standard library.
  • Most of the tutorials and Q&A about Android apps are written for Java, so sometimes you have to figure out the equivalent Kotlin yourself. But if you copy and paste Java code into Android studio, it will offer to transpile it for you.
  • Creating and publishing an Android app is about as easy/hard as creating and publishing a website.

If people-watching is your thing, pick up the app and try it out, or feel free to head over to GitHub and make a contribution.

And thanks for your encouragement, everyone.

Discussion

pic
Editor guide
Collapse
andy profile image
Andy Zhao (he/him)

This is hilarious and awesome.

What was learning Kotlin like? I've been meaning to dive into it some time for Android development, but am on the fence about whether I should learn that or Java.

Collapse
isaacdlyman profile image
Isaac Lyman Author

I love Kotlin. Part of it is that I'm a big JetBrains fan, and I truly believe everything they touch turns to gold. Part of it is that I don't like Java, so any alternative will benefit from that bias. But objectively speaking, Kotlin is a lot more concise than Java (when you paste in Java code from the web, sometimes it will get ~50% shorter as it transpiles to Kotlin). And Kotlin's standard library is super developer-friendly. I like all the functional programming features (map/filter/reduce, lambdas, etc.) and the super-compact data classes. The built-in array functionality is superb. A lot of things about Kotlin resemble TypeScript, for better or worse. And the Kotlin documentation is awesome.

All that said, if you want to piece together an app using code from Stack Overflow and blog posts, Java's the better option. Kotlin is the new kid on the block and there isn't as much free code floating around for it. And if you're a C-style syntax kind of person, you may prefer the traditionalism of Java--Kotlin's syntax is unusual to say the least. But if you intend to write any kind of logic on your own, I strongly recommend Kotlin for convenience, readability, and intuitiveness.

Collapse
andy profile image
Andy Zhao (he/him)

Awesome, thanks! I've only worked with Ruby and Javascript, but I've looked at some Swift, which I heard is similar enough to Kotlin. Hopefully I won't have to learn much Java for Android dev since I plan on making native apps that will wrap a web app.

Thread Thread
jeyj0 profile image
Jannis Jorre

Well, the fp features exist in Java too, just to mention it. Kotlin is awesome though, but it basically is Java in newer and better and, as you mentioned, shorter. It feels a lot like Java with Lombok and everything unnecessary removed. Plus a little TS-feel, that's true.

Collapse
stargator profile image
Stargator

Way to go! That's great! Downloading the app now :)

Quick question without looking at the app page, does it support two people using the same device?

So my wife and I can have different boards and can switch between them? She can't install anything new on her phone.

PS: If you created it in Flutter, you could publish it on Android and iOS!

Collapse
isaacdlyman profile image
Isaac Lyman Author

No, it only supports one board at a time. However, my wife and I have shared a single board several times and it's really fun as a collaborative game.

I hadn't thought about using Flutter. Maybe someday.

Collapse
ben profile image
Ben Halpern

I love this outcome!