Being an Xbox and Windows Insider

After installing a new Xbox OS update on my Xbox One X console, I launched the Xbox Insider application to see what the changes were and if there was any new Quests, Polls, Survey, etc. I noticed that I had been an Xbox Insider for 3 years and 11 months, essentially as soon as there was an option to try the latest features and opt in to new functionality I jumped on it. Along with being an Xbox Insider, I am also a Windows Insider; but I have not been as active in that program in recent months. Checking out the new features and functionality that the teams over at Redmond and around the world working at Microsoft are developing is something that really excites me. I love trying out new gadgets, devices, software, etc. What Microsoft is doing with both their Windows and Xbox platforms, allowing individuals to try new features and provide constructive criticism and feedback is extremely positive and very pro-consumer. It helps ensure that the best product is produced.

However by trying out early builds on either platform is not always fine and dandy. There have been a number of times when simple and basic functionality such as Xbox Live Party Chat did not work at all or installing and/or updating applications completely failed. Luckily to combat this, Microsoft has separated the Insider builds into “Rings” which determine the stability of each build and how new the features you will be getting are. If you are in the Alpha Ring (like I am) then you will get the latest and potentially breaking builds or you could be in the Delta Ring and get a significantly more stable build but not have the newest features. This creates choice for the individual while still allowing them to contribute to the evolution of the platform and assist in bug reporting (something as a software engineer is extremely helpful, the more testers the better). More software companies really need to start providing this feedback process as software is becoming ever increasingly more complex.

Many people will most likely not want to be involved in trying unstable or incomplete builds/features for various reasons. To me though, providing feedback and helping the features become less buggy and complete ready for the masses is rewarding (even though I do not write a single piece of code). To make trying out the new features more enticing and understandable, Microsoft has created Quests and Surveys. Generally if there is new functionality added after an update a new Quest will appear which shows you how to activate and or try it out. It is a very handy way to get your device configured with the new features. The Surveys provide an easy way to communicate how you find the new features (if they even do work as intended) and if there are any issues that you encountered. Reporting bugs and issues is also extremely easy. Each platform as their own Hub that allows you to provide as much detail as possible to help Microsoft resolve your problem, and if others have the same issue then they can piggy back off yours and add further information and diagnostic data.

Overall the entire Insider experience on both platforms has been fun and for someone who is looking to try new features before others, or just wants to help Microsoft out in providing the best possible experience for everyone then the Insider programs are a must. For more information about the Xbox Insiders Program check out the following link. For more information about the Windows Insiders Program check out the following link.

Microsoft Edge and Paid YouTube Content

This evening I decided I wanted to watch some YouTube content on my PC using Microsoft Edge. I have a decent list of purchased movies and TV series through the Google Play Store. After looking over the list of paid content I settled on a movie and I clicked on it ready to watch on my second monitor while I was doing some other stuff on my primary monitor. To my surprise I was greeted by a playback error. To be exact I got the following error message in the video player (I have blacked out some content that I deem not relevant).

YouTube Paid Content Playback Error

The exact message reads, “An error occurred. Please try again later. (Playback ID: MLeXgYpv05LH1Uhq)“.

I decided to click the “Learn More” link which would hopefully provide some informative information as to why I got this error. But in typical Google fashion I have found it was little to no use. I decided to try their troubleshooting steps.

YouTube Paid Content Playback Error Troubleshooting Page

I first closed every tab that I had open except the YouTube tab and tried again. No luck got the same error message, a different Playback ID error code was presented though. The next step was to restart my router, did that and still no luck. I restarted my computer to see if that would help like it said, again the same error message. The second last option was to verify that I was using the latest version of my browser; there was no Windows updates and I am unaware of any other way to update Microsoft Edge (if there is please let me know). The absolute last resort is to use Google Chrome. I’m sorry Google but this isn’t going to happen and really is not a troubleshooting step.

Curiously I decided to try some videos from some of my subscribers and those videos played absolutely fine with no issue on Microsoft Edge. In fact I am watching one of my favourite YouTubers playing XCOM 2: War of the Chosen as I write this. So clearly there appears to be an issue trying to stream paid content through YouTube on Microsoft Edge. I quickly tried my Android phone and using the official YouTube app I had no issue playing the same video (so it was not a licensing issue) and the video plays absolutely fine on my Xbox One X using the YouTube app.

Finally I decide to try Google Chrome. Low and behold the video starts with no issue. I tried again on Microsoft Edge and I get an error message. To me it seems that Google is doing something in back that is restricting content being played on Microsoft Edge or Microsoft has something in Edge that Google does not like, blocking paid content from being played. Perhaps being paid and licensed content I thought maybe there was a setting that was causing issues, but Netflix on Microsoft Edge had no issues playing. Has anyone else had the same issue? If so did you get it resolved or does the problem persist? Generally I have found Google to be near useless when it comes to any support and their response to issues is down right abysmal (the only other company to be close or worse is Valve and Steam Support). Looks like when I am on my PC or laptop I won’t be streaming any paid content from YouTube until this is fixed.

Software Development: Crunch

Nearly everyone in their working life will experience at some point a very tight deadline, significantly increased pressure to complete a specific task, and/or an insanely amount of extra hours that are expected of you to do. In the software industry (could also be used in other industries not too sure) this is referred to as “crunch“. There are many articles out there about crunch, especially in the video game industry. It is a time where you rarely see your family and friends, you eat and drink way too much junk food, your regular exercise regime is thrown completely out the window, and you may even dream about the code you had written (and not in a good way).

Currently during my software engineering career I have only ever experienced this crunch period twice. I wouldn’t consider the first time really crunch though. I did have to work towards a really tight deadline, longer hours, but it was only for a very short time. The second crunch I experienced was recently and it was for a longer period with an insanely tight deadline, a significant amount of work, and very long hours both during the normal work week and weekend. Personally I think crunch every so often, but not too frequently is a good thing. A little stress and hard work can be beneficial. In saying that though, working in an environment where you are in crunch mode every couple of weeks is probably not great for your well-being and highlights a potential problem with the operations of your organisation.

During my crunch I had to unfortunately stop attending my BJJ classes, working on my side projects, playing video games and even going out with friends and having a couple of beers. After my crunch period ended, I was exhausted but I made a commitment to myself to go back to my BJJ classes and attend my usual social gatherings at the minimum. With the software engineers that I worked with during this crunch period, I asked them how did they cope with all the stress, what techniques they used to mitigate feeling like garbage, and do they have any tips or tricks to make crunch not feel like a massive drain? All of them essentially came back with the same or similar responses:

  1. Breathe and take everything one step at a time:
    • Don’t panic as panicking will only make things worse.
    • Rushing or not paying attention to what you are doing will only cause you to make more mistakes and then cause you to panic even more.
  2. Switch off after your day is done:
    • You most likely won’t work for 24 hours so when you are done for the day and have worked close to 20 hours, clock off.
    • Focus on something you enjoy and do not bring your work home with you.
    • Be with your family and/or friends, or enjoy what little sleep you can get.
  3. Communicate and do it early:
    • There is nothing worse than needing help and not asking for it, you will only then fall further behind, rush and make mistakes and/or panic.
    • Others may be able to help you solve the problem faster and you will less likely panic if you know that others are here to help.

Along with all of these handy little tips and tricks I remembered some of the useful information that was presented in “The Clean Coder: A Code of Conduct for Professional Programmers” Chapter 11 – Pressure. That chapter essentially had the same information as what my colleagues had said to me.

Come the next crunch (which I know will happen at some point in the future) I will be better prepared mentally and will ensure that when I do get some time to myself\ I spend it making sure my body gets the rest it deserves or spend it with the people I enjoy being around. Keep my mind and body sane and happy 🙂

What I Enjoy The Most As A Software Engineer

The last two weeks or so I have been thinking about what I enjoy the most about being a software engineer. Do I love implementing new and exciting features for the customers to use? Absolutely. Do I enjoy designing and building new tools to make lives easier for the software engineers and testers where I work? Of course. Out of all the tasks that I perform on a daily basis, nothing beats fixing bugs.

The way you need to think is completely different in my opinion when you are fixing bugs compared to designing and implementing something from scratch or adding a new component. I treat this process much like a problem solving game where I assume the role of a detective trying to find out where the problem is happening, why it is happening and what is the best way to fix it so that in the future it won’t break again. With the use of logs, breakpoints and tests I ensure that the problem is fixed.

Why you may ask that I prefer to fix bugs over performing other tasks? It is extremely challenging, rewarding and you need to pay even greater attention to what you are doing. It really is the ultimate problem solving challenge in some ways. Your absolute attention to detail and focus is imperative and the amazing feeling you get when you successfully fix the bug is satisfying.

In the future will I still love fixing bugs over other tasks? I don’t really know. Most likely though I would say yes. I have always enjoyed a challenge, the problem solving game and that feeling you get when you succeed. Only time will tell, but right now any time I look at the Kanban boards or have issues assigned to me and it is a bug I get excited no matter how small or large the problem may be.

Goodbye 2017, Hello 2018

2017 I bid you farewell, and I welcome 2018 with open arms.

Overall 2017 was a great year for me, I started a number of things such as Brazilian Jiu-Jitsu and this very blog site. But with having done everything there was still a couple of things that I would have liked to have done such as release my app to the Windows Store, read a couple of more books and learn some new technologies that are not directly related to my work.

So now that 2018 has rolled in I am going to start making quarterly goals with mini goals in those quarters. With these quarterly goals I am hoping it will allow me to focus, reach some more milestones and achieve everything that I want to in 2018. If I was to give 2017 a label, it would be the year that I started many things. With 2018 I want it to be the year that I not only start new things but continue and finish a number of other things.

Right now I am in the process of thinking about and starting to write my quarterly goals. The very first item I put on that list was to release the alpha version of my artificial intelligence app to the Windows Store around April, some more information about the app currently can be found here. I also have picked out the first book I am going to read for 2018, Astrophysics for People in a Hurry; more information about the purchasing the book can be found here.

Let the 2018 adventure begin 🙂

Intrusive and Abusive Website Ads

Many consider this to be a controversial topic and there are generally only two camps that most people fall into. There is the “content creators live off the ad revenue they receive and the ads are not that bad” and then there is the “ads are ruining my browsing experience, so they are going to have to go when I browse“.

My position on the ads that are shown on websites has changed over the years. At first I was extremely annoyed by them (no matter the type of ad) so when the various ad blocking extensions arrived for Google Chrome I jumped right on them. Later on I took the position where the ads were not too annoying so I did not use any ad blocker. Now I have come back into the camp where ads on sites are just plain intrusive, in your face and annoying, that ruin your browsing and content consumption experience. If I was a major content provider I would make sure that the ads that I was offering were non-intrusive.

The type of ads that I don’t mind are the ones that sit in the background, don’t play any audio or video, and absolutely do not change the way that the website is presented; YouTube ads obviously are a different story and because I subscribe to YouTube Red I don’t see YouTube ads. What I found while not using an ad blocker extension recently was that there are more and more ads being shown on the various sites that I visit that completely rearrange the website’s content and either have intrusive audio playing or banners popping up. The worst experience that I have had was on mobile where the page’s content would load and then all the ads would load which rearranges the content or there is a pop up that has a difficult close button to press.

If content creators were so concerned about the ad blockers being used then maybe the ads that they show should not be so intrusive. A good example of intrusive website ads from a couple of weeks ago was on the video gaming site IGN and there was a promotion running. Not only was the home page of the site littered with ads for the promotion (banners on the top and both sides), but a large pop up ad was shown that played a video with muted audio. If you did close the pop up and started scrolling a small banner would follow that detailed the same promotion. This situation right there is intrusive and in my opinion should not be allowed. It ruined my browsing experience, slowed the site down, and also made actually viewing the content much more difficult. With the ad blocker on the page loaded significantly faster, there was no banner ads and the annoying pop up ad was gone.

As long as these types of practices for ads being displayed on websites continue then people are going to use ad blockers. I am fine with the top and side banners displaying the ads as it did not take away from the content itself and they did not ruin the experience. Having an ad pop up play a muted video and then have a banner ad follow you as you scrolled through the page is not consumer friendly and intrusive. So for the foreseeable future if websites continue to provide these intrusive ads then I am going to continue to use block the ads. If a site however is providing consumer friendly ads then I will white list the site and allow the ads to be shown. What are your experiences with ads on certain sites? And do you use an ad blocker while you browse the Internet?

Java Deprecation Annotation

An annotation that is near and dear to my heart; as someone who constantly evolves their classes it is vital that if I cannot remove some old methods and/or fields at a single moment, I correctly identify that they should no longer be used and a new method or field should be used instead. I have also been seeing it more and more the last couple of days on the open source projects that I am viewing (which is strange as this is not the first time I am thinking about a certain concept and then it appears everywhere).

The reason why I really appreciate the @Deprecated and @deprecated Java annotations are because as your classes evolve you sometimes have to signal to the developers working on the project that “hey this should no longer be used, it has been superseded by another method and you should use that one instead”. Both these annotations do just that.

@Deprecated vs @deprecated

If you take a quick look at the annotations then you may not see the difference. But having a capital letter ‘D’ instead of a lower case letter ‘d’ is important.

The @Deprecated annotation is to let the compiler know to generate a warning whenever your program is using the class, method or field that has the annotation.

The @deprecated annotation is specifically used for the Javadoc and notifies to the developer to not use the class, method or field and use the appropriate superseded one.

Generally I use both. @Deprecated to actually deprecate the class, method or field and then the @deprecated annotation in a comment to highlight which superseded class, method or field to use instead, and also very importantly note why the class, method or field was deprecated.

I have seen plenty of times only @Deprecated is used with no information as to what to use instead, which is slightly frustrating. It is always worth spending a small amount of time to correctly document why something has been deprecated and what to use instead, it makes everything much easier for you and everyone else.

Using @Deprecated

It is very simple to use the annotation.

To deprecate a class:

public class Person { ... }

To deprecate a method:

public class Person {
	public String getName() { ... }

To deprecate a field:

public class Person {
	private String name;

Using @deprecated

Just as important as deprecating a class, method or field I believe in documenting what to use instead and why the original class, method or field has become deprecated. This annotation is sometimes missed by many developers from the open source projects that I have looked at.

To document a deprecated class, method or field:

 * @deprecated
 * Replaced by {@link #Entity}
 * No longer valid as a Person objects are replaced by Entity objects.
public class Person { ... }

Official Documentation

For more information about the two annotations then take a look at the official Oracle documentation, here.