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).

Bethesda Press Conference E3 2018 Impressions

E3 started off with a whimper. EA had a horrible showing, they probably should not have done a press event this year. In stark contrast, the next day press conferences, Microsoft and Bethesda, were fantastic and there are way too many games that I am interested in coming out in 2018 and 2019. My bank account is not going to like me and I probably won’t have time to play them all either unfortunately.

Bethesda showcased a number of games that I was interested in and also talked about games that I have little interest in playing. To quickly run down some of those games that I am not interested in:

  1. Elder Scrolls Legends: I really forgot that this game was even out. I don’t really play any of the digital card games that are available. I have occasionally played Hearthstone but never bought the expansions, and I have only played Gwent in the Witcher 3. Nothing will get me to play Legends unfortunately.
  2. Elder Scrolls Online: Here is another game where I never got into at the start and there have been a number of expansions released now. So jumping in right now I feel would be a little daunting. The only MMO games that I really do play are WoW and GW2. There is only so many MMOs out there that one person can play.
  3. Quake Champions: I do miss the days of hardcore arena shooters. Halo 5 Guardians is very close to this and scratches my arena shooter itch. I still remember the days playing Quake 3 Arena, but again Quake Champions I have little interest in playing. Plus I doubt the support in early access/beta (whatever they are calling it in its current state) will have servers in Australia and I don’t fancy playing an online arena shooter with at least 300 ms ping. Maybe when the game officially comes out and there are dedicated servers here in Australia I will pick it up.
  4. All the VR titles: I am not sold on VR for a number of reasons which I will not go into detail here, I much prefer AR and mixed reality. I don’t have a VR headset and I don’t plan on getting one anytime soon. So as cool as the VR titles Pete Hines talked about, I will not be playing them.
  5. All the mobile games: Fallout Shelter (now out on more platforms) and the new Elder Scrolls Blades are two mobile games which I don’t plan on playing. As was stated in my EA impressions post, my mobile is a tool so that I can be more productive. And if I do have a tablet, PC or console to play games on, a mobile game is not one that I would be playing unfortunately.

Now with all the items that really didn’t do anything for me, time to cover what did. And boy there was a number at this press conference. First off there was Rage 2. It was the title that started the press conference off and everything that they showed was great. Before I go into more detail about what I liked, I would just like to say that could we please not have any more musical numbers at E3. It was awkward to watch the live music but it appears that the fans watching live really seemed uninterested in what was playing. Other than that, my takeaways from Rage 2 were:

  • The game looks beautiful. From the landscape to the character and gun models. The explosions and fire also look really good.
  • The gameplay looks significantly different from the original game which I don’t know how to feel about. I really thought that id nailed the gunplay in the original, it just got a little too repetitive. This one looks like you have more options and various ways to neutralise the enemies which is always good, but it seems to play so different to the first.
  • The driving and driving combat also looks improved. Driving in the original game felt tact on, but this one feels like it is part of the experience exploring the large dystopian, post apocalyptic open world.
  • Overall it looks like it is going to be a fun game which is what I am after.

“If you can see it, you can drive it” – Rage 2

From one fast paced shooter to another. Doom Eternal. They should have just called this Doom 2. The remake of Doom was down right near perfect as first person shooters go. The story was minimal (that was fine for me, the original and sequel didn’t have much of a story either and I am not talking about Doom 3) but the gameplay was fast paced, brutal and extremely addicting. The CGI trailer they showed looked like Hell on Earth and the sound track matched it perfectly. To make a Doom sequel you need the following checked:

  1. Doom slayer more powerful than the previous game?
  2. More badass demons?
  3. Hell on Earth?

And all three of these were checked. We will have to wait until Quakecon in August to see more about the game, but this was a perfect tease.

Prey was a fantastic reboot. With free updates and new content coming it was a pleasure to hear this news. I look forward to playing Mooncrash with the near infinite replayability, and Typhon Hunter (which I feel is a derivative of Prop Hunt from Gmod). If there is one type of enemy that I enjoy killing more than the aliens, mutants, and monsters, it is the Nazi. Wolfenstein 2: The New Colossus was another perfect sequel to a a near perfect FPS game. Wolfenstein Youngblood puts you in the shoes of BJ’s twin daughters and best of all you can play the game in co-op. Now you can kill Nazi scum with your best friend, as BJ’s twin daughters. The mayhem will continue on.

The real reason why most if not all the people tuned into the press conference was for Fallout 76. And boy did it not disappoint. I have to give it to Mr Howard, he is a true showman. He knows how to excite the crowd, make them laugh and keep them interested. The main points that I got from the reveal through the trailers and clips shown (I absolutely love those Vault Tec videos) are:

  • Prequel to the other Fallout games.
  • 4 times the size of Fallout 4 (hopefully 4x as detailed and populated, there is no point in having a larger world with less content).
  • Set in West Virginia with a number of distinct regions and home to creatures based on actual West Virginian folklore (great way to incorporate the history and location).
  • New lighting and rendering techniques making the world 16 times more detailed.
  • Completely online (some people are hesitant about this, but I have no real problem with it).
  • The game can be played solo but it is easier to group up with friends and tackle the wasteland together.
  •  There will be no server options and your characters will move with you whenever you play (I take it that it behaves very similar to DayZ where there is an official hive that allows character persistence no matter what official server you are on).
  • Building is now not limited to several locations and can be taken nearly anywhere with the new C.A.M.P. toolbox.
  • Scattered across the wasteland there are nuclear missile sites where the players once they have the necessary codes can activate the nuclear missile causing havoc on the environment where hit.
  •  Coming out October 27, 2018 (really did not see this coming).

“There is no ‘i’ in nuclear wasteland” – Fallout 76

Closing the event, two trailers for what appear to be next generation games were shown. Starfield a brand new IP from Bethesda. Interested and want to learn more. And The Elder Scrolls 6. Loved Oblivion and Skyrim, so another ES game that is not an MMO is always a lovely addition. Overall I think Bethesda done a fantastic job showcasing games that interested me and continued the solid performance after Microsoft’s press event.

You can see the Bethesda event here.

EA Play 2018 Press Conference Impressions

I woke up at 4am AEST to watch the EA Play 2018 Press Conference and then again before I left to watch UFC 225. During the second watching I wrote down some notes about what interested me, what got my attention and what I am looking forward to that is coming in 2018 and in 2019. Unfortunately there does not seem to be much on that list so this post may be a little small and light on content. Before I go into that list I am going to highlight games, etc. that were announced but I am not interested in playing or I felt the announcement did little to excite me:

  1. FIFA 19: I have not bought a FIFA game in a really long time. I have EA Access and am more than happy to wait for the title to come into The Vault.
  2. Star Wars: Battlefront 2: I enjoy the Star Wars games that get released but with the mess that was SWBF2 at launch, I stayed away from this title. No improvements made by DICE will get me to buy this game or play it anytime soon.
  3. Unravel Two: I never played Unravel and I am not really into platformer games. I can appreciate what the developers have done but it is just not up my alley.
  4. Sea of Solitude: Another title that did little to excite or interest me. I hope the developers find a market for their game though, and good luck to them in finding success.
  5. NBA Live 19: Basketball is not a sport that I follow so I completely ignored this title.
  6. Madden 19 and Young Kiv: NFL is one of the leagues I do watch as a New York Giants fan, but like the FIFA games I don’t buy them. Also the eSports personality of Young Kiv did not do anything but get me to say “who is this and why should I care”.
  7. Command and Conquer Rivals: What I would do for a C&C game that is for the PC. A mobile game is an automatic turn off. My smartphone is primarily a tool for me to be more productive and communicate with people, not play games.

With those items out of the way, the only remaining announcements are the ones that managed to interest me or were different enough that they got my attention.

Battlefield V

So there was barely anything revealed and talked about. More will be shown at the Microsoft Xbox E3 2018 Press Conference which is good. But my takeaways from what did get revealed and talked about which interest me were:

  1. Superior mobility (dive and smash through windows).
  2. Stationary turrets are now moveable.
  3.  Even more destruction. Could we be going back to the days of Bad Company 2? I hope so.
  4. Plenty of customization. From the guns to the tanks.
  5. No more loot boxes and no premium pass. Thank God. Nothing worse than fracturing the community and having people buy gameplay advancements.
  6. War Stories. Unfortunately will have to wait until the Microsoft Xbox E3 2018 Press Event to learn more about the first one.

Some elements that made me roll my eyes and say “really” include:

  1. Battlefield Battle Royale mode. Not every game needs to copy the success of Fortnight, even if they try to put their own spin on it.
  2. Again no proper in-game, live, actual footage from a real match. I don’t want to see in-engine footage trailers. I want to see how the game actually plays.

Cloud and Subscriptions

When Andrew Wilson (CEO of EA) came out I knew there would be some new business practices and plans revealed. A cloud streaming service from EA will be coming in the future and an early version of it is playable at the event. I don’t see this taking off anytime soon, especially if it uses EA servers but I can appreciate the technology behind it.

There was the mention of EA Origin Premier as well. I was really hoping that they would allow people who have EA Access and EA Origin Access to have a single subscription to play EA games on both Xbox and PC. But no, instead it is a way to play (it would seem) brand new EA published titles without purchasing the game through EA Origin Access, much like Xbox Game Pass and Microsoft published titles. I cannot see myself buying this subscription service however.

Star Wars: Jedi Fallen Order

This got me interested because I generally like Star Wars games and I really enjoyed Titanfall. Vince Zampella teased a new Star Wars game set between Star Wars Episodes 3 and 4, where the Jedi are hunted. Unfortunately the game will be released in 2019, if it does not get delayed or pushed out. Not much else was said about the title.

Anthem

To start the Anthem portion of the event there was a fast paced, intense trailer which did not look too bad. Some of the information that we did get from the panel of BioWare employees that were on stage include:

  1. It is not an MMO. This is good for me because I can really only have one active MMO in my life and that is World of Warcraft.
  2. Major focus on characters for the story and player choices. This is good because if the characters are dull and boring then everything else is dull and boring.
  3. Much of the single player experience will be experienced in bases and the multiplayer experience will be in the open world portions of the game.
  4. BioWare is already preparing Anthem to be DLC ready in terms of story. They did not say DLC specifically but they did say Anthem is built to have story added at any time. What better way to get people to pay for DLC than with story content.
  5. Promises of ongoing and long term meaningful content. Hopefully it will be better than the original The Division content and the content that Bungie has been pumping out slowly for Destiny 2.
  6. Real world purchasable items will be there but will be only cosmetic and there would be no loot boxes or randomness when buying content.
  7. The game if not delayed or pushed back will coming out 22 February 2019.

So there you have it folks. I will also be doing a Microsoft and Bethesda recap so stay tuned for those.

Software Development: Writing Better Code Through Code Reviews

One of my favourite parts about being a software engineer is reviewing code. You get to learn alot about an individual from the code that they write and also learn how to potentially do something more efficient or understand a component of the application you had little exposure to before. If I look at a merge request, within the first few lines of code that is submitted I can get a good sense of how many years they have been programming and if they know what they are doing or if they just copied and pasted something from StackOverflow.

Graduate software engineers, entry level software engineers, or individuals who have just started programming, will often leave out some crucial elements such as appropriate null checks, logging, comments or appropriately named classes, methods and variables. There is nothing worse IMO then looking at some code and seeing a variable named “numbers”. It is most likely some collection object like a List and contains numerical values but offers little context in respect of the application it is used in. It may make sense to the person who wrote it but it probably won’t to others and you will most likely forget its context several months down the line. Red flags are very easy to spot here.

The more experience you get, the quality of the code that is submitted is generally far easier to read, is structured and broken down logically, has been optimised, there are the appropriate exceptions and null checks in place and the classes, methods and variables are named appropriately. But to get to this level you not only need to write a good amount of code but also look over and see how others are structuring and writing their code and do reading/research in your own time.

At work when I get a request to do a code review there are a number of elements I look at. Some of which include:

  1. Appropriate and meaningful class, method, and variable names.
  2. Small, compact and single purpose methods.
  3. Appropriate null and boundary conditional checks.
  4. Some level of optimisation on the operations performed.
  5. Meaningful unit and/or integration tests have been implemented.

At times I think that I am fairly harsh on the individual who submitted the code to be reviewed but then I think to myself that the better the code repository is in, the easier it will be to maintain and if good code practices are enforced then it will make everyone a better programmer. If I didn’t start being critical of my code and trying to better myself then when I do the code reviews I probably wouldn’t be as critical of theirs. Setting a high standard will only make the lives of software engineers working on the project much easier in the long run even if there is short term pain.