Living with a Google Home Hub

Some Background

When Google announced the Google Home Hub at their Google Pixel event in October, I was intrigued. Do I use Cortana? Yes. Do I also use the Google Assistant? Yes. The more I watch Microsoft’s assistant play in the consumer space, the more I get attracted to Google’s offering. I’m sorry Microsoft, I really like you and your products but your play in the consumer space is not great (non-existent really). Not only is the Google Assistant superior to Cortana on Android, it feels far more complete and functional. Cortana on Android has been of a little bit of a mess for me anyway (you can read my post on that here).

Looking at what the Google Home Hub can do and what some of the smart device offerings are on the market currently really made me decide to pick one up. I did not decide to pick up a Google Home or Google Home Mini because they did not have screens. I have never considered picking up any of the Alexa enabled devices such as the Echo or Echo Dot either. Having audio only results presented is not ideal in all situations, for example if I ask the Google Assistant what the weather is going to be like for the remainder of the week it shows me the next several days, the highest and lowest temperature and what the expected conditions will be. Another bonus of the Google Home Hub compared to other smart devices with screens is the distinct lack of a camera.

Unboxing

When I went to my local JB Hi-Fi and asked for the Google Home Hub in charcoal, the box that it came in was small as is the actual device. I originally thought that the device was going to be a little bigger, but it being this size has really not bothered me. If it was a little bigger then placing it on my bedside table (where it currently sits) would make it look out of place and too big. When you open the box you get the device, some paperwork and the cable that connects to the wall. Overall it was a pleasant experience (clean and there was no wasted space or materials), much like other premium device boxing like the Surface Book 2.

Setup and Configuration

I commend Google in making the setup process of the Google Home Hub so easy. Downloading the Google Home app on my Android phone and then following the prompts on the Google Home Hub and the Google Home app made it seamless. As someone who is security conscious with access control enabled on my wireless router and my wireless network does not broadcast its name, having the Google Home Hub connect and then allowing it to communicate on the network was easier than some other wireless devices that I have connected on my network. The Google Home app on Android has all the settings that you will need to make sure that your Google Home Hub is properly configured. From the downtime options to alarms and the brightness of the screen when the room is dark. Everything is there for you to configure and is clearly laid out when you select the device on the Google Home app. Simple and easy to use which is always a nice to have for a device that can do so much.

Clear Display with Decent Speakers

With a smaller display than the other smart devices on the market you would think that the quality of the screen and resolution would be poor. But I find that it is just about right. Images look acceptable, they are not the best I have seen but they are also not the worst. The screen can also go really bright and really dark, plus the ambient light sensor at the top makes the brightness change accordingly and it works great.

For a device this small I would have thought the speakers would be worse. But I am pleasantly surprised at how loud and how clear the speakers are. They don’t have much bass to them, but that is to be expected. Overall the music, radio and standard alarm that get blasted through the speakers is acceptable, but don’t expect it to be amazing.

The Google Assistant Shines Bright

With no other smart devices purchased currently the main use of the Google Home Hub for me is to use it as a bedside clock, alarm and informational device. As a bedside clock, the Google Home Hub does a very good job. I have a clock displayed when the hub is idle (not cycling through my Google Photos) and depending on the ambient room brightness the display on the hub changes brightness. At night it is not bright at all and I can easily make out the numbers and during the day it is just like any other clock.

Configuring the Google Home Hub to have an alarm is super simple and you can also set a radio alarm. On the Google Home app on Android you can check to see what alarms you have but you cannot modify them which is a little unfortunate (maybe in a future update); the volume of the alarm appears to be the only thing you can change. The actual Google Home Hub cannot modify the alarm volume with the volume rocker that is on the back right of the device, that seems to just adjust the media volume level.

One of the first things I do in the morning is turn my alarm off and then say “Ok Google, good morning”. The morning routine that I have set for my Google Assistant provides me with the information to see what is on my calendar, what tasks I need to complete, what reminders are set, what the weather is going to like, how my commute to work will be and then it plays my favourite radio station while I get ready for work. I love this feature because it gets me ready for the day and I know what I need to do.

Asking the Google Assistant information such as the weather, travel time, locations of certain shops, etc is really easy too. You don’t need to yell, as the hub can easily pick up your voice from the other side of the room (my bedroom is about 5 meters by 5 meters). I find that the Google Home Hub’s Google Assistant performs near identically to the one on my Android phone. A bonus here is that information from the Google Home Hub can also be relayed to your phone, for example if you ask for departure times or how to get someone, the information will be presented to you ready for Google Maps.

Well Worth It

Overall for $220 Australia dollars, I feel that I have gotten my money out of it. I got a brand new bedside clock, a new radio alarm, and also a little assistant I can get to let me know in the morning what I need to get done before I go to bed and also ask it any information that I need to know without touching a screen.

Issues with Cortana on Android

Until very recently I was using Cortana on my Nokia 8 Android phone, but I have been noticing some odd behaviour. Previously when I would ask Cortana for something like “will it rain tomorrow?” or “what will the weather be like for the remainder of the week?” I would get a visual representation of what the weather would be like, along with the metrics I am after. Now all I get are web links. What happened?

I decided to turn Google’s AI assistant on again and use that for a little while to see if that works as per my expectation. Low and behold, Google’s AI assistant is working far better. When I ask the same questions that I ask Cortana to the Google AI assistant, I get a pleasant response without me having to click on various result links to get the information I want. The usability and overall experience is far better.

What Microsoft has done to Cortana on Android has me confused. Is it a bug? Is that how Cortana is going to be behaving on Android from now on? I even tried using the Cortana assistant that comes with the Microsoft Launcher. The same issue still occurs. Right now I have it uninstalled Cortana and am using Google’s AI assistant. Until Microsoft has resolved this functional issue, Cortana will remain uninstalled from my Android phone and will be used even less now on my main desktop PC and Surface Book 2. Google’s assistant has now taken its spot.

My New Blue Light Blocking Tinted Glasses

For the past two weeks while I am at work or at home working on a computer, playing video games, etc. I am wearing a pair of prescription glasses with a blue light blocking tint to them. After a number of different articles came out saying how blue light being emitted from our screens is causing harm to our eyes and sleep, I thought it would be best to ask my optometrist about getting a pair of glasses that block out the blue light.

What I have noticed in just these few weeks of using prescription glasses with a blue light blocking tint was my eyes were less tired at the end of the day, slightly less red and irritated looking, and I fall asleep a little easier. Is this just a placebo effect and something that I am just noticing now because of my new glasses? Perhaps, but in my mind I would rather have “healthier” eyes and an easier time falling asleep with a better sleeping pattern than the opposite. With so much negativity in the world, having something positive is essential.

My original pair of glasses were fitted with transitional lenses (they get darker depending on the amount of UV light detected) and unfortunately I could not get them equipped with both transition lenses and blue light blocking lenses. So now while I am indoors working on a PC or playing Xbox I wear my new glasses, but when I do anything outdoors I wear my older pair of glasses with the transitional lenses.

If you stare at a computer or screen all day then I suggest you take a look at getting a pair of blue light blocking tinted glasses, either with a prescription or not. Previously I believe the glasses lenses that were available had a yellow hue to them, but now (well mine anyway) are clear and depending on the angle you hold them you can see a blue fade to them. To me the eyes are one of the most important body parts and I would absolutely be devastated if something seriously injured them if I could have prevented it. These glasses are one type of protection and prevention that I am more than happy to have obtained.

Portrait or Landscape Monitors when Programming

Recently we moved to a new office and I decided to change the orientation of my primary programming monitor from landscape (the default way you would see a 16:9 monitor) to portrait. Another colleague of mine had done this some time ago and I asked him how his experience was programming like this and he enjoyed it. I have also spoken to a couple of other individuals who have also recommended it. After trying it out for over three weeks I am really enjoying the orientation of the monitor as well.

There are a couple of reasons why I feel that changing your primary programming monitor from landscape to portrait is beneficial. These include:

  1. Writing “better” code – now when I mean “better” code, I do not mean more efficient or optimised code. What I mean is code that just plain looks better and is easier to understand and ready. In IntelliJ (the primary IDE I use at work) there is a right margin or hard wrapping guide that is displayed by default. I tend to write code that does not cross this line anyway, but having code that flows down and not across the screen I find is easier to read. Plus it forces you to think long and hard about how you structure your methods and what they do. For example, you cannot have too many nested if statements, for loops, etc. because if you do your entire method’s body is slowly getting shoved into the middle of your IDE. It certainly will cross the margin and wrapping guide, and if you have your monitor in portrait mode it becomes difficult to read the entire method’s content without scrolling horizontally.
  2. More code – not only is there “better” code written, but you get to see more code. When I am creating classes and methods, I tend to think about how they should be constructed, and what they should have in them. Typically they do not bloat out to more than one thousand lines of executable code for a class for example. If they do then I need to rethink what is actually trying to be implemented and potentially refactor and restructure the class (and/or classes) better. Being able to see more of the methods used in a class, etc. can be super helpful when trying to work within a class that needs to be refactored or have new methods added to it.

However with these some of these benefits that help improve the structure of your code and what you see, there are some pain points and frustrations that may arise which can be fixed or mitigated. The main ones are:

  1. Your IDE tabs – these include such things as your Project tab, Structure tab, your Maven Build tab, etc. By default these tabs sit on the left and right hand side of your IDE (for IntelliJ by default anyway). If you are a fan of keeping these open (I am not) then you will lose even more real estate to write code. But you can either move them to the bottom bar where generally your Terminal, Output, Debug, etc. tabs are stored or you could even pop them out to a new window. I generally tend to move them to the bottom but I have had them floating as separate windows as well. Both options work with minimal issue.
  2. Horizontally written code – not all the code you will see in a project’s repository will strictly enforce the use of the right margin, especially old and legacy code. Sometimes you will see code that requires you to scroll even if your monitor is oriented in horizontally, this I generally find will come in the form of the parameters passed into a method (the method should probably be refactored as it most likely is doing too much with too many things) or there is a long block of string that has no break. Unfortunately this is more difficult to fix. Methods with a large number of parameters and variables passed in should send alarm bells ringing that this method may be doing too much and needs refactoring, but you can add new lines after ‘x’ number of variables. For long strings you can keep it, but you can also split the string up. So there are solutions but will require a little work.

Overall I am fairly happy with the new switch in monitor orientation. Do you code with a monitor oriented in portrait mode? If so how are you finding it. If you moved from horizontal to vertical and then back, what did you not like and why did you switch back? Let me know in the comments below.

Revisiting Google Chrome VS Microsoft Edge on my Microsoft Surface Book 2

Just under a year ago I wrote about the my experience using Google Chrome and Microsoft Edge on my Microsoft Surface Pro 3 (it can be found here). Several months later once I purchased my Microsoft Surface Book 2 I did a very similar comparison between the two browsers (it can be found here). Now I am revisiting my experience using Google Chrome and Microsoft Edge on the same Microsoft Surface Book 2. The good news I can tell you is that Google has caught back up to Microsoft in my books.

With my original Microsoft Surface Book 2 (and Microsoft Surface Pro 3) experiences blog posts there were two areas that I was fairly critical of Google’s Chrome browser when comparing it to Microsoft’s Edge browser and why I chose to use Microsoft Edge over Google Chrome. Those were (and I am not the only one to notice these pain points when using Google Chrome):

  1. Negative impact on the device’s battery
  2. Resource usage and management

The current version of Google Chrome that I am using on my Microsoft Surface Book 2 is version 68.0.3440.106 (Official Build) (64-bit). With this build I can say for 100% certainty that Google has made some improvements in regard to battery life (well I notice better battery performance). Using Microsoft Edge I could easily get 8 hours (1 full work day) of battery life no problem (this includes browsing the web, consuming different media, etc). With the version of Google Chrome I am using now (and the ones in between), I can get roughly the same amount of hours, performing the same tasks. I tested this over a couple of weeks and made sure that I was having my device fully charged before use and browsing roughly the same sites and watching similar content. So kudos to Google in fixing this. If you have a mobile device like a laptop then battery life is very important. The difference between using an application that drains the battery faster than another application that does the same tasks could be whether or not you need to bring your charging cable. I can safely say for me, I don’t need to bring my charging cable with me when I am now using Google Chrome.

Google Chrome is known to be a resource hog as well, and I make note of this in my original experience blog post (there are plenty of memes out there that make fun of Google Chrome and how it handles RAM and CPU usage; this one here is one of my favourites). Has it gotten better with the later releases? Yes, sort of. When I see what processes and services are taking up what resources, I can see that Google Chrome is sitting high on this list compared to Microsoft Edge (even now with the build that I am looking at). However comparing it to the last time I was monitoring my resources, Google Chrome is no where near consuming as much RAM (even with the same extensions, websites, etc running) and the load on the CPU is smaller. Microsoft Edge still uses less resources so in the long term you will get slightly more battery life than if you used Google Chrome (but not by much), and you get slightly more heat generated on the device but nothing that makes it difficult or uncomfortable to use on your lap.

Google Chrome now performing very similar to Microsoft Edge in regards to battery life and resource management, there is very little reason to stay on Microsoft Edge. Google Chrome is leaps and bounds ahead of Microsoft in regard to:

  1. Extensions – so, much more options. You just get a large number of options. The popular ones are appearing on Microsoft Edge but even the ones that are there, the Google Chrome ones are updated more frequently and seem to be treated like first class citizens compared to the Microsoft Edge counterparts. The situation here is just like any app on the Windows Store in general.
  2. Rendering web pages – Google Chrome has no issue rendering if not all but most web pages (probably 99.99% of them) whereas Microsoft Edge I find sometimes does not correctly render web pages correctly and I either have to refresh or switch browsers for it to load. I am not the only one to experience this with Microsoft Edge, I have found some friends say the same thing to me when using Microsft Edge.

So in the end, Google Chrome is being used as my primary web browser on my Microsoft Surface Book 2 again, until something breaks the Google Chrome build that returns it to the battery draining and RAM usage hog of the old days. I’m sorry Microsoft, but Microsoft Edge is just not worth using anymore even with all the improvements and changes made (which I really like too). There is nothing wrong with changing what products you use, what products you like, etc. as they are always changing and your situations also change. I constantly switch what Android apps I use and on my Windows PC this is no different. I will continue to use products that help me be more productive, and for longer periods. In this case Google Chrome is that browser. Let me know what you think. Have you seen improvements in the same areas with the later Google Chrome builds? Let me know in the comments.

Software Development: On A Need to Know Basis

A good clear principle for any software engineer and developer is that any class, method or function that you create and use should only have the bare minimum number of necessary arguments passed into it to correctly operate and not know more about the system than it should. Recently I have been doing some merge reviews and too many times I have seen the below case from both junior and (surprisingly) senior engineers:

...
Object object = getObject();
Date objectDate = getObjectDate(object);
...
private Date getObjectDate(Object object) {
    ObjectReader objectReader = new ObjectReader(object.getId());
    return objectReader.getDate();
}
...

As soon as I see the above I leave a comment on the merge request, something along the lines of “Why does the getObjectDate(Object) method need to take the entire object instance?“. This then forces the one who submitted the merge request to stop and think what is being done, and should it be refactored in someway.

In this case, the method only uses the object’s id to build a reader and get the date from the object. The actual object is not being used at all. Instead of passing the entire object into the method the id should only be passed in. There is less overhead. We should be seeing something like below:

...
Object object = getObject();
Date objectDate = getObjectDate(object.getId());
...
private Date getObjectDate(String objectId) {
    ObjectReader objectReader = new ObjectReader(objectId);
    return objectReader.getDate();
}
...

By only passing the bare minimum to the methods or classes then you are ensuring that your system does not know more than it needs to. By enforcing this rule, IMO you are ensuring that the system is:

  1. Cleaner – you know exactly what is being used and for what purpose.
  2. Safer – you are ensuring that only what you want to be manipulated can be manipulated and where.
  3. Modular – there are clearer separations between what needs to be done with what and where.

So when you are creating new classes or methods then consider what you are using as your arguments, what the method needs to do, and what exactly you need to pass in. Taking the time to logically structure your code and think through what is necessary for the method to do its job will save you massive headaches in the future. Short term pain, for long term gain 🙂

Microsoft or Google’s Productivity Apps

My original post was going to be about the two different AI assistants that Microsoft and Google offer, Cortana and Google Assistant respectively. However while writing and reviewing the post the theme of productivity and how the two assistants are making life simpler kept appearing. So instead I discarded that post and started this one. I try to streamline and make my life easier by looking for ways to automate, digitally organise, and remove redundant or boring tasks while taking advantage of applications on both mobile and PC to keep everything together.

As someone with an Android phone and has/is still using Google’s products on a number of platforms it would make sense that I lean towards Google’s ecosystem and productivity apps. But, Microsoft’s own products are just as good (if not better IMO) than Google’s. Are there other productivity products out there that do the same job or better? There could be but I generally only like using first party products because I don’t like giving other applications access to my account information. If others have suggestions about other apps that are useful let me know in the comments and I’ll potentially take a look at them and break my rule.

Email

Be it personal or for work, I use email a good amount. On my Android phone I have disabled the Gmail app and have opted for the Outlook app. There are several reasons for this. Aesthetically the Gmail app is pleasing and the performance is great, you never see any slowness or lag. Outlook is not as visually pleasing and appears more formal but it too performs well with little to no lag or slowness. If you are on PC then you can use both Gmail and Outlook through your web browser of choice, and if you subscribe to Office 365 (like I do) you can get access to the Outlook application where you can have both your Gmail and Outlook accounts synced up. The features that you get with Outlook on their apps and the web are also far superior than what Google offers. Outlook can be far more complicated and daunting with all your options, etc while Gmail is more user friendly, streamlined but lacks the options that Outlook offers. Score one to Microsoft here with the number of email features on offer when using Outlook.

Calendar

This one is a no brainer. For some reason Google has a separate app for your calendar which is a little bit of a pain. But the calendar app they do have is like the Gmail app aesthetically pleasing. Not only does it look good but it also performs very well. However the major draw back is that it will only sync with your Gmail account (perhaps I have not found the right setting but I cannot sync other calendars to it). Microsoft’s Outlook app has an inbuilt calendar (yay, less apps) and it has all the features the Google Calendar app offers. On the PC you can again use a web browser to access both Google and Microsoft account calendars. The Outlook app to manage your calendar on PC is a power user’s dream. There are a number of features that are either really hard to find in Google Calendar or are not present. So again Microsoft takes the win here by making Outlook such a powerful app on both Android and PC.

Tasks, To-Dos, and Reminders

I decided to bundle tasks, to-dos and reminders together because I generally treat and use all three in a similar way. Microsoft allows you to handle these either through the dedicated To-Do app (would have loved to be able to do this through the Outlook app like everything else unless you use Outlook on PC) or the AI assistant Cortana, plus there is the Microsoft Launcher, but I won’t discuss the details about that app here. I just want to point out that aesthetically Microsoft’s apps on Android feel very corporate and formal, but the To-Do app feels very consumer friendly and welcoming like Google’s apps. Google handles tasks, to-dos and reminders in a much similar fashion. Google has Google Keep and a new Google Tasks app, plus there is the Google Assistant. I previously used Google Keep and it did the job really well, but after moving to Office 365 and Microsoft’s products I found that Google Keep was/is fairly basic. From what I have read about Google Tasks, that product is also basic and has only the very bare minimum features with more coming the future. If you want a number of features for your tasks, to-dos and reminders then Microsoft’s products are the way to go, but what Google offers do the job just fine.

AI Assistant

The AI assistant of choice really depends on which ecosystem you are using. If you are in the Google ecosystem using Gmail, Google Calendar, Google Tasks, Google Keep, etc. then the Google Assistant is the one you should be using IMO. If you use Outlook and To-Do then Cortana is the AI assistant you need to use. Google Assistant on Android is integrated so well it is really a shame that Cortana does not integrate as well. If I could identify one area where Google is leaps and bounds above Microsoft is the quality, performance and appearance of the app on Android. I believe Cortana does not look as good as Google Assistant and also is not as responsive. There have been graphical issues when I launch the app at times, there is the occasional lag, etc. However with every new update of Cortana on Android it gets better. Cortana on PC however does not have the same issues as it does on Android in regard to performance and appearance. Both AI  assistants perform very similar when I ask them questions in my day to day use so if you’re worried about not being able to answer or perform a task during day to day use then you shouldn’t. They have their own ways to perform the same task but it is just a matter of getting used to it. Google’s feels a little more natural than Microsoft, but it is not a major issue. If I had to lean one way, Google’s integration with all their platforms, products and services, aesthetics and performance makes this one a win for it.

Overall Google and Microsoft offer a number of products and services that can pretty much handle everything that you throw at them. Google’s products are simpler, easy to use and are very consumer friendly. They perform very well and visually are superior to the ones offered by Microsoft. Microsoft’s products feel more business, formal and professional oriented. The number of features that they have is also far superior to that of the features the Google products have. If you are a power user and really want to streamline, organise and stay on top of all your things then Microsoft has you covered. At the end of the day you cannot go wrong with either ecosystem and it is all about what you want out of your apps.

Moving to Visual Studio Code

I performed a clean install of Windows 10 on my Surface Book 2 recently and I have not installed my default go to Java IDE, which is IntelliJ. Instead I have now moved to using another tool, which I am finding is much more versatile and beneficial; Visual Studio Code. I have previously used Visual Studio Code but mainly as a way to edit my various data files such as XML, XAML, JSON, etc. and not any of my source code files like Java, C# or C++. I treated VS Code as a text editor only previously.

Visual Studio Code comes with a crazy amount of extensions which is great because that gives you options. To get started with Java, the extensions that I suggest you get is:

  • Java Extension Pack – this comes with all the necessary Java dependencies for Visual Studio Code such as proper language support for Java, Debugger for Java, Java Test Runner, Maven for Java.

On top of that extension you will need a JDK installed. If you want to know how to setup the environment for Java then have a look at the comprehensive page that Microsoft has created here. Microsoft also has a pretty sweet tutorial about how to build a Spring Boot application that can be found here.

One thing that IntelliJ made super simple was the compilation of Java code and managing all the dependencies, not to mention providing some really convenient debugging tools and project management. This makes it a really powerful development tool. When I was at university I primarily used a terminal or command console with a basic text editor for developing software, but as I moved towards writing commercial software for the company I work for I relied less and less on the terminal and command console and more on the IDE for the heavy lifting. Now that I use VS Code I am using the terminal and command console more again, and all of the necessary information such as the class path, dependencies, etc to ensure everything complies correctly is critical. Looking at this now, I really appreciate what the IDE does to simplify development process but realise how important it is to know the fundamentals.

I wrote about a similar scenario a month or so ago regarding Git (this can be found here) and how important it is to actually be really familiar with the Git commands through a terminal and/or command console because it is cross platform but it allows you to truly understand what is going on. Using a GUI is fine but all that does is issue the same commands you would use if you were using a terminal or command console. Using VS Code and the terminal to compile and execute my Java applications has allowed me to really appreciate what the IDE does to simplify the development process but also familiarise myself with the fundamentals and important concepts that can be carried between platforms.

 

Just A Small Update

I have not posted in a little while and there have really been two good reasons why. I have been a little busy the last month (mainly due to work) and also I have not really been happy with the quality of my writing so I just kept them all as drafts and never published them (want to get away from this though).

In the last month or so I have obtained my third stripe on my white belt in Brazilian Jiu-Jitsu, I have been reading some interesting articles on LinkedIn about how to be a better team leader, specifically in the technology and engineering sector, and I have been beavering away at some little side projects that will probably never see the light of day for others to use because I will probably get bored of working on them and start something new soon.

On the gaming side, with the release of The Sims 4 Seasons I have been playing that whenever I have the chance. I absolutely love that expansion and it really adds time and some more realism to the game. PUBG has officially been dropped by me, I probably only have played it once in the last couple of months to try out the new map. Was not too impressed; the server I was playing on was full of people outside my region, had stability and network issues, etc. Not much has changed on the performance side and that is my major gripe with that game. So my multiplayer fill has been Age of Empires 2 HD with my mates and it has been a blast.

With the end of the 2017/2018 financial year and the start of the 2018/2019 financial year, I am re-evaluating all of my subscriptions and I may be dropping some services (looking at you Netflix). Plus I plan on trying to achieve some more personal and professional goals (closer to what I set myself at the start of the year).