RIP Blob Emoji 🙃

BREAKING NEWS! Google is getting rid of the blob emoji in Android O and replacing them with monstrosities!

While this may be a polarizing issue for some, I firmly believe that the flat design of the blob emoji is superior to what they will be replaced with in the next Android version. Flat Design, and its offshoot Material Design, have become synonymous with all things Google. Whether it’s the Inbox app, or stock Android itself, the design style is so prevalent that you instinctively know where its from.

It’s recognizable, and a stamp of quality. I’m applying Material Design to my app (which is available for anyone who wants to test it 😉 ) because it makes it look and feel a lot more clean and professional, while still allowing a lot of room for creativity.

The new emoji design is the opposite of recognizable… lets take a closer look.

emoji comparison chart

emoji comparison chart. Source: Emojipedia

I will admit that the police officer in Android 5.0 looks like a slug, but the Android O emoji look like Google is trying to be more like Apple, and failing. They added unnecessary lines, colours, and gradients, which just make the design more complicated for nothing.

I’m a fan of simple, concise design. Take a look at this pillow and wall decal from Montreal’s STM:

stm pillow

STM themed pillow that I really really want to buy.

STM metro station wall decal

Wall decal in the style of Montreal’s metro map.

It’s simple, enduring, and as far as I’m concerned, beautiful. All things that the new Android O emoji are not.

On the positive side though, the weird blob shapes will finally be gone! While I have grown fondly attached to them, I recognize that they are super strange and a sore spot for many Android users. For me, the ideal emoji refresh would involve killing the blobs, but keeping the same flat style that makes them great!

Or better yet: letting users change their emoji sets on their own without having to install sketchy themes or other non-native workarounds.

What do you think? Do you care about how your emoji look? Let me know in the comments, and if you like this blog post, don’t forget to subscribe! 😄

 


Giving Back 🎁

Lately I’ve been building something in my app called a Floating Action Button (FAB). It’s just like any other button, except it’s round and it’s supposed to trigger the main action in an app. It was also notoriously long to build.

Despite being part of the Material Design Spec, which is backed by Google, many part of it were not included in the Google libraries used to build most Material Design features. For anyone who isn’t a programmer, it was kind of like getting a piece of furniture from IKEA, and finding a note in the box that says “some pieces are missing… figure it out! 😂 “.

I essentially spent the better part of a month diving through tutorials and documentation in order to figure out this fancy button. It was a total pain, and all the easy solutions out there felt a bit too much like duct tape for me to be comfortable with them, so I figured instead of just keeping my solution to myself, I should share it with the world!

Some time in the next two weeks, I’m going to publish a tutorial to build a FAB like in Inbox, Google Fit, or Google Calendar on Android. I’ll also make a public GitHub repo with all the code available for anyone who wants it.

This of course begs the question:

What can we do to make our industries better?

Publishing free code doesn’t really help me build my app, but I’m really thankful for other people doing it, and I feel like it’s important to contribute as well. No field is perfect, and there’s always ways in which they can be improved.

It’s up to us to figure out how 🎁




Meet Compass ❤️️

 

Last week, I made a commitment that kind of scares me. A commitment that takes me out of my comfort zone. Today, I’m following through, and finally showing you my app! But first, a bit of context… (or you can just skip ahead and see the app right away!)

Human working memory, our capacity to process different pieces of information at the same time, is generally accepted to be capped at around 4 to 7 things. That’s not a whole lot. Add a cocktail of cognitive biases to the mix, and suddenly we aren’t very good at seeing the big picture.

However, when we look at a puzzle one piece at a time we can generally figure out how to put it together. It just takes us a while because we can’t process all the pieces simultaneously. We aren’t machines after all! 🤖

As I mentioned in my first blog post, two years ago I was having a lot of trouble juggling everything in my life. It was really easy for me to optimize for a few things at a time, but past two or three my focus would fade and my ability to keep track of my progress along with it. I knew that If I hadn’t been to the gym in a week, that I should go, or if I was eating out a lot, that I should cook more. These were all checks that I could make myself, but they all took time, and I still had to remember to make them.

So I though, why not take this checking process, and offload it somewhere else? We don’t realize it, but in any given day we actually do a ton of number crunching, and a lot of it follows some pretty specific patterns. I’m oversimplifying, but for a question like “should I go to the gym today?”, things like how you’ve been eating lately and how active you’ve been will almost always weigh heavily towards your decision. Imagine a program that can crunch that data for you, and use it to come to the same decision you would.

If you can imagine it, you can create it. If you can dream it, you can become it.

–William Arthur Ward

And this is what I’m creating:

Compass is a life-logging app that helps you maintain balance in your life. It shows you what you need to work on the most right now, with a single glance, and it does this by gathering data and comparing it to the goals that you set in advance.

The Name:

I imagine my app as a compass for your life, thus the name. It’s something that can instantly point you in the right direction, but it’s not going to keep harassing you to do stuff or try to run your life. It’s also a reference to an incredible device known as the alethiometer, from the fictional His Dark Materials trilogy, but that story is a whole blog post in itself!

The Logo:

While not strictly necessary when you app hasn’t even launched yet, logos are cool. I wanted something really simple, but with powerful symbols. It’s not quite done yet (I literally just used the shape builder tool in Photoshop), but I’ll have plenty of time to tweak it later.

Some Screenshots:

    

The most important screen is the one with all the coloured circles on it. When things are going well in an area of your life, the symbol moves closer to the centre of the screen, becomes greener, and also a bit smaller. If thing aren’t going so well, the symbol moves towards the edges, becomes redder, and also a bit bigger. If you press on one of these symbols, a popup will appear and let you add your data. The position of the symbols in Compass is affected by your data and your goals, which can be changed in the Edit Goals panel.

The design still needs a lot of polishing, and there’s a lot of features left to build, but it works and so far I’m happy with it. 🙂

Sketches and what’s to come:

  

  

I want to clean up the interface a little bit, with three distinct screens: your Compass, goals, and stats.

I’m also planning on adding: automated data tracking, more options for your goals, custom goals, data exporting, notifications, iOS support, more stuff you can track, correlations between your data, etc… What you see is just the tip of the iceberg!

The Data:

Right now, the data you log is stored both in the cloud and on your phone. It even works offline! I’m using something called Firebase to handle all of this, and as far as security goes it seems to be pretty good. You can’t access my data for example, unless I give you my email and password. I’d also like to use data in aggregate at some point, but only to benefit the people who are using the app. I will never sell your data, or give it away without your explicit consent, and I want to make it impossible for anyone to try to obtain it forcibly. I think it’s time for our personal information to start being used by us and not just by the Facebooks and Googles that are collecting it.

So, what do you think?

What’s good about it? What’s not? Would you use this app? What would you add? Why am I asking so many questions?

Your feedback would mean a lot to me, and is invaluable in helping this project grow 🌱. You can start a discussion in the comments section, or you can send me an email from the blog’s contact page. Either way, I cant wait to hear from you! 😀

If you’d like to follow along with this blog every week, you can also subscribe to my mailing list.




I promise, next week’s blog will be shorter.  😉

 

For the crazy ones:

Do you have an Android phone and want to try out Compass for yourself? Just fill out this form and I’ll add you to the list of approved testers! You’ll then get a link to download the App from the Google Play Store. If you find any bugs don’t be alarmed! Just let me know and I’ll fix it as soon as I can! I typically release updates 3-4 times a week

Eureka! 💡

One of the services that I use to make app making easier is Firebase🔥 . It’s backed by Google, and in a nutshell it lets you write software without having to deal with a lot of the complexities that would normally come with it. It handles your database, authentication, analytics, and a ton of other stuff that look like they’d be a pain to write. To give you an idea, last summer I spent a week trying to figure out how to use a local SQL database on Android. With Firebase, I set up a realtime database in the cloud, with local redundancy so the app would work without internet, within just a few hours.

That being said, sometimes there’s a tradeoff for all of this simplicity. The offline redundancy of the database only takes one line of code to set up, but erasing the cache is nearly impossible, and one of the most powerful features, the realtime part of the database, is not as simple as it seems. For the past few months I’ve been trying off and on to fix the same stubborn bug. I’d press a button in my app to add to a list of data, which would run methods to push it to Firebase (and theoretically detect a change in data and update the local list), then I’d run methods to update parts of the UI to reflect the new data.

//   sets the positive button
           .setPositiveButton(dataPointMethods.getAddDataButtonText(), new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   //                logs the data
                   dataPointMethods.logData();
                   DistanceManager.calculateActiveDistances();
                   ((MainActivity)getActivity()).updateCompassDisplay();
                   closeDialog();
               }
           })
//    logs data to Firebase
public void logData(){

    //        Creates new Water object
    int numberOfGlasses = 1;
    Water water  = new Water(numberOfGlasses);
    DBManager.dbRef.child(DB_DATA_ROOT).push().setValue(water);

}

All the data was stored properly, but the UI wouldn’t update how it was supposed to unless I added some data again. Turns out, I was overestimating the “realtime” part. Firebase has this really cool way to retrieve data using something called a ValueEventListener. It pulls what you want from the database, and then runs your code to put it wherever you decide. What’s cool about it is that it will do this every single time the data changes! So keeping this in mind, I figured I’d avoid doubling my code by just counting on my ValueEventListener to update my lists locally.

My ValueEventListener:

dbRef.child(WATER).addValueEventListener(new ValueEventListener(){
// some code that updates my local lists.
}

What these three snippets were actually doing:

Firebase saves you a lot of time by handling threading for you, and it handles it so well that you kind of forget it’s a thing you need to consider! It’s definitely worth using, especially since it lets you spend more time making the interesting parts of your project, but it has its quirks sometimes.

Alright, lets get back to coding! 😉