Games for the family

Introduction

I know a lot of nerd types that like playing games. To be clear, I’m not talking about mind games or computer games here, but good old-fashioned family games that usually involve a board or pack of cards of some sort.

This post covers off some of the Thompson family favourites that we keep coming back to, to keep our minds sharp and gently take the mickey out of each other.

Family games

  • Uno. This card game was introduced to us by a family we met on summer holiday in 2014. We still play it now, and we still keep in touch with the family. In fact, we went on holiday to Spain with them in 2017 and played Uno every night whilst drinking the all-inclusive gin. You basically discard one of your cards when it’s your turn to match the colour or value of the card in the middle, with various special function cards such as change colour, skip a go, reverse direction, pick up two (for the next player). This game provides the perfect blend of luck and skill to allow all ages to play together.
  • Frustration. A board game, based on the older game Ludo. Instead of a handheld die, there is a clear dome ‘Popamatic’ in the middle that you push down to make a satisfying pop and spin the die (in newer versions, the outside of the board has a mini paddle for each player that flicks the underside of the dome for the same effect. Again, thanks to the random die factor, this makes for a great game for all ages.
  • Dobble. We only recently discovered this card game and it is as fun as it is frustrating. The pack comes with 55 cards and there are a number of alternative game options you get instructions for (you can probably make up your own too). The premise is that each card has a fixed number of symbols on it (tree, sun, igloo, etc.) and that any two cards only have a single symbol in common with each other. The common theme with the game types is being able to recognise the common symbol between the cards the fastest. This sounds simple enough, but the symbols appear at different sizes on cards and as symbols are matched by a , some of the cards are removed/replaced by others and so you get this manic panic going on (might just be me, evidence suggests otherwise!) where you are trying to spot the common symbol and somebody gets to it before you, then you have to start again. Great, fast paced mind game, again for all ages
  • Backgammon. Still trying to get my 10-year-old daughter in to this, but my wife and I love playing this ancient classic, especially with the doubling cube to add that extra level of skill

Less popular alternatives

There are many other games that we sometimes drift back to from time to time e.g.

  • Cluedo
  • Monopoly
  • Pie Face (doesn’t really have longevity, but good fun for larger family get-togethers)
  • Speak Out (in the same ilk as Pieface in terms of longevity
  • Bingo
  • Various quiz games inc. Trivial Pursuit

Summary

I’d love to hear from other people who spend a lot of time playing these type of family games. If you have other suggestions, or comments on mine, please do leave a comment below. We’re always looking for that next time-consuming game that lets us turn the telly off and put our electronics down.

Till the next time.

Azure Stack – my take 01-18

Introduction

In the first few months after Azure Stack was announced, there was quite a bit of buzz around what it promised.

A true hybrid cloud experience, allowing workloads to move seamlessly between public Azure and your private Azure Stack data centre.

If anybody could deliver this, you’d think Microsoft could.

Later than expected, it has now been released under General Availability. This post takes a look at a couple of factors that I believe are key to the success of Azure Stack.

Scalability

Azure Stack is a fixed size hyper-converged platform. That is, the compute, storage and networking are tightly integrated with an overlaid software architecture. The fixed aspect refers to the fact that when you buy a Stack, you are buying a fixed number of nodes e.g. 4, 8 or 12.

I’m not a massive fan of hyper-converged infrastructure unless it’s dedicated to a well known workload that you can scale the nodes to. As soon as you put inconsistent or unpredictable workloads on there, you run the risk of, as an example, having to buy a new node (with all that compute, RAM and storage) just for the additional storage, even though your CPU and RAM utilisation might only be at 30% and 60% respectively. You can’t just buy more storage.

For me, one of the key definitions of cloud is scalability and flexibility. If you have an 8 node cluster, you don’t want to have those nodes sitting at 40% utilisation. You want them at near capacity, taking N+1 in to account.

I feel that the ‘pod’ approach that Azure Stack takes amplifies this problem even more. You can’t currently buy a 4 node pod and add another node when the cluster fills up. You need to buy another pod. That doesn’t come cheap.

I wonder, once the platform matures further, if Microsoft will allow single nodes to be added. It would mitigate the concern, but you are still limited to specific workloads if you aren’t going to be wasteful with your resources.

Feature parity

The big promise of hybrid cloud is running workloads in either your private data centre or the public cloud (Azure Stack and public Azure for the purpose of this post), migrate freely between the two, with a consistent experience regardless of where your workloads were.

That sounds like hybrid nirvana, but the current reality is less enticing. Stack was always going to deliver a subset of public Azure, but the feature gap today break’s the hybrid promise in their current state as far as I’m concerned.

The biggest difference is with the PaaS services. There are a number of hoops required to jump through to enable any level of PaaS services and requires licensing of additional VMs on the Stack to run some of those services, the latter point not really coming as a surprise though. For me however, PaaS is where the real benefits of migrating to cloud are reaped so this feels like a big bump in the road as it stands. A number of resource providers appear to be missing too. Again, I’m hopeful that as the platform matures, the capabilities gap will narrow considerably.

A great example of using a hybrid cloud setup is being able to DR your workloads from your private data center to the public cloud. You can currently do this with Azure Stack, but to fail the workloads back to your private Stack, you need to lift and shift them manually. This feels very much like a lock in to my sceptical mind. I can almost hear Admiral Ackbar shouting his warning out.

Microsoft are not offering any SLA on Azure Stack at the current time too.

Some of these shortcomings are likely to change over time but the key theme here for me is, what is the use case for purchasing Azure Stack? With no SLA, would you run your production on there? Would you use it for development on what is essentially a hobbled platform?

Summary

The idea of having a common interface to manage all your workloads, regardless of where they are hosted, is very appealing for obvious reasons. However, in its current incarnation, I can’t see a compelling reason to dive in to Azure Stack, although I have no doubt that over the next 1-3 years, it will mature to something that will genuinely be a game changer.

Have you deployed Azure Stack? If so and assuming you aren’t just talking about ASDK (the development kit that allows you to install Azure Stack on any tin), I’d love to hear what types of workloads you are running. How have you dealt with the shortcomings listed above? I’d love for you to reach out either on here or at my Twitter account to have a discussion.

Till the next time.

2018 – predictions in tech

Introduction

First of all, best wishes to all my readers for the new year. Keep learning new things, aim to be the best you can be and find your happy place.

January seems to be the month of the predictions post. I’ve largely stayed away from these in the past, usually posting something relating to my own resolutions instead but am bucking the trend this year with a slightly tongue in cheek look at what 2018 might bring.

Predictions

  • Stuff is going to get owned. Most likely some of your details. It seems that there is no end to the ignorance, or perhaps arrogance of some organisations when it comes to protecting their customer’s data. As more data gets stored, more of it gets leaked so expect 2018 to be a depressing year of getting emails from Have I Been Pwned, especially when Patrick Gray from Risky Business is on his holidays.
  • SDx. It’s only a matter of time before coffee becomes software defined it seems. Whilst most of the nomenclature is industry spin, I do think that SDN will really come in to its own this year. SDWAN, a subset of SDN, has already made good progress in recent times. I expect to see an exciting level of innovation in other areas of SDN over the next 12 months
  • IPv6. Prediction here is that it will continue to grow at the completely unexciting rates that it has so far
  • Cryptocurrency. Have recently invested in this myself and am already seeing gains, but to be honest, I’ve not got a Scooby Doo what it’s about, but am getting up to speed. Doesn’t stop it being good fun though (disclaimer: as long as you are playing with money you can afford to lose!). I think we’re going to see a tonne of cryptocurrencies become relevant this year
  • Skillset. Whilst I don’t think this prediction is going to be explosive, I do believe more traditional IT engineers are going to realise that they need to up skill in order to remain relevant over the next 5-10 years. This discussion is already at least 5 years old but I see evidence of some die hard dinosaurs starting to get it. You don’t need to be a developer. You will benefit from learning some basic coding skills/knowledge
  • Hybrid cloud. Standby for an article on my take of Microsoft Azure, but I think more players will spring up this year, offering true hybrid cloud solutions

Summary

Let’s see how accurate these predictions end up being in 12 months time!

Till the next time.

Writing good code 101

Introduction

A workmate of mine has recently been dusting off his coding skills and using PowerShell to access REST APIs to pull data and graph it in a dashboard. After falling down the never ending rabbit hole for a while, he tweeted the following question:


It’s not really a question that is best answered in a series of separate 140 character responses so I thought I’d write a brief post to try and distil my understanding of what good code is. A full time developer could probably tear this apart and flesh it out with all sorts of deep and meaningful computer science principles but I’m going to take the perspective of a coding hobbyist, with my target audience being the very same, looking for a quick answer.

Pictures are nice

Let’s keep this as simple as possible. Code can be functional and code can be readable. You want your code to be both at the same time. Let’s discuss those requirements a bit more.

Functional

Code that is functional, by my definition, is code that does what it is supposed to do and does it well. Bear in mind that I am talking about code that works well here. I am not talking about functional programming, which is a separate paradigm (you can melt your mind here). Some KPIs to bear in mind:

  • Works predictably. Expected results occur every time
  • As bug free as possible. Good run time error checking and code testing
  • Good validation of all user input. Don’t let humans screw up your hard work
  • Allows additional functionality to be added with relative ease. You don’t want to have to start from scratch every time

Readable

Code that is readable, by my definition, is code that another person who has a basic or even better, no understanding of your language of choice can browse through it and understand what the code does. It also means you can go back to your code in 6 months time and not ask ‘what the hell was I thinking?’. Some KPIs to bear in mind here:

  • Follows the language guidelines e.g. in Python, adheres fairly closely to PEP8, code is ‘Pythonic’
  • Is well documented. Good code is self-documenting i.e. the intention is clear in the code itself. Next best thing is well commented code
  • Not over documented. By this I mean focus on the guidelines and making your code clean. You shouldn’t need a comment for every single line of code. Try to make the intention speak for itself as much as possible
  • Does not have duplicate code. This can make understanding code more difficult as well as being generally inefficient. Learn about functions and classes to help with this

Bringing it all together

To write code that puts you on the right path to Venn diagram overlapage (pronounced o-ver-la-par-jay), you do need to put some effort in though. The key steps are:

  1. Learn some basic computer science skills. Not talking about getting a degree, but if you know some basic algorithms and understand what people are talking about when they reference loops, conditional branching, OOP, etc. you’ll be in a better place to answer the question ‘how can I write code to solve this problem?’
  2. Learn how the language of your choice implements those different features. Read the online documentation, buy a book, write some code!
  3. Collaborate. I’m a bit weak in this area myself as the coding I do is pretty much all specific to my workplace and besides, I have justified imposter syndrome. Work on other people’s code and ask for help on yours. This is a great way to gain experience and also improve productivity
  4. Set out to maintain functionality and readability before you write a single line of code. It’s better to incorporate both these requirements as you go, rather than trying to retrofit them later

Summary

In this post, I took a high level look at what makes good code. In answer to Craig’s initial question on Twitter, I would say code that isn’t functional and readable is not great code and could always be improved. Make functionality and readability requirements of all the code you write.

This post is aimed predominantly at beginners and hobbyist coders. Got any other advice? Post in the comments.

Till the next time.

 

Getting started with coding – Part 7 – Next Steps

Introduction

In part 6, we looked at a number of training options to help take your knowledge and skills to another level.

In this final part of my Getting Started With Coding series, we will review what we’ve covered so far and then try to answer the question that will, at some point, inevitably crop up. “What do I do next?”. Continue reading “Getting started with coding – Part 7 – Next Steps”

Getting started with coding – Part 5 – Version control

Introduction

In part 4, we discussed some additional tools to help your coding. In part 5, we look at version control, which is a way of tracking changes you make to your code (or in a wider sense, documents, information, etc.). As it is such an important topic, I think it warranted its own post, even though technically it is just another tool in your kit. Continue reading “Getting started with coding – Part 5 – Version control”

Getting started with coding – Part 3 – Editors

Introduction

So you want to start following examples you’ve found online or in a book to learn more about your chosen language from part 2. Which editors should you consider to start knocking up some super useful scripts? Part 3 looks at three broad categories, giving some suggestions along the way. Continue reading “Getting started with coding – Part 3 – Editors”

Getting started with coding – Part 2 – Languages

Introduction

In part 1 of this series, we addressed the key concerns people starting to code might have and also set out some key reasons why you should give it a go in spite of those, often unfounded, concerns. In part 2, we cover off how to go about picking one of the languages to learn to code in from the numerous choices. Continue reading “Getting started with coding – Part 2 – Languages”

Getting started with coding – Part 1 – Introduction

Introduction

If you work with computers in any aspect of your life, being able to code can be a very powerful tool. All too often however, I hear people say things like “it’s too difficult” or “I’m not a developer” and they never take more than their first few steps. This post, the first in a series on getting started with coding, addresses both the fears of taking your first steps and the benefits of starting that journey. The remaining posts then give you all the help you need to overcome those perceived obstacles and have some fun along the way. Continue reading “Getting started with coding – Part 1 – Introduction”

Taking the Python Challenge

Introduction

A few months back, I came across a cracking website called Python Challenge, which poses a number of increasingly difficult challenges.

Crazy and fun at the same time

This isn’t a site for complete beginners. It assumes you already know the basics of things like loops, branching logic, various data types, etc. It also assumes you have a specially wired brain so don’t be surprised if you run in to a few brick walls where you will probably have to cheat a little i.e. find a solution on line.

However, the best thing about this site is that each of the 33 challenges (current as of 28/10/16) covers a different skill set and gets you using different Python modules in creative ways e.g.

  • re for regular expressions
  • pickle for (de)serialising Python objects
  • zipfile for working, unsurprisingly, with zip files

I found this approach really useful in forcing me to learn new tools to solve a problem, probably one of the best ways to get familiar with tools that you may need from time to time but don’t want to just plough through some documentation when you need it.

Summary

At some point in your path to learning to code, you’ll probably find yourself stumped as to what to do next. You’ve learnt the basics, you’ve applied them to some problems you’ve had but you aren’t sure how to widen your horizons.

Try out Python Challenge and see how many challenges you can get through before your head explodes.

Till the next time.

Ubuntu on the desktop

Introduction

I’ve tried a couple of times in the last five years or so to make the move to Linux on the desktop. Namely Ubuntu on my work’s laptop. Doing it on my own kit is easy, but as we’ll see, doing it on a corporate machine presents difficulties.

First question, why?

First of all, I like learning new things and having come from a Microsoft and networking background, the beardy ways of Linux were my weak spot. I wanted to force myself to use it in a way that running it in a VM wouldn’t let me.

Secondly, I wanted to see if the Linux desktop experience has matured to the point where migrating is viable.

Thirdly, I wanted to see if I could remove my working dependency on the Microsoft ecosystem, namely the extended Office suite.

Starter for 10

I’ve installed Linux of different flavours many times but regardless, installing Linux really is a piece of cake. The hardware was a Dell Latitude 5570, with 16GB of RAM and a 256GB SSD.

I ran in to some initial hardware compatibility issues with my Dell docking station, which would cause my X-server session to completely reset each time I undocked, causing the laptop to shut all apps and loss of work. A quick look in /var/log/syslog showed the culprit service and a bit of Googling gave me some config to put in a file to resolve the issue.

I installed VMware Workstation 12 Pro so I could install my Windows 10 VM and whilst I found it to be performant most of the time, I did have strange issues with system sounds playing like a wasp farting in a tin can. All other sounds from both the VM and host played OK.

Playing about

The Unity desktop had a few quirks that annoyed me, namely the system tray at the top right appearing on all monitors so it would suddenly appear on top when I was clicking on menu bars in my Windows VM.

I installed a number of other desktop environments e.g. Gnome, KDE, XFCE but the latter in particular caused some strange behaviour and I ended up spending a good couple of hours removing all traces and reverting back to Unity.

I tend to use Python on server editions of Linux or my Windows machine but having it on a Linux desktop added that extra level of simplicity and ease of access.

Smashing Windows

I use Microsoft Office a lot. Outlook is not only my mail client but my main time management tool. I’ve not found a Linux client that comes even close, but Outlook Web Access gave me most of the functionality I was after. The same thing applies to OneNote, another tool I use extensively but can be accessed via OneDrive online.

Word and Excel proved more difficult, especially when people like creating fancy macros that aren’t compatible with OpenOffice or LibreOffice.

The biggest sticking point however is Lync, or Skype For Business as it’s now known. The sound quality was questionable but the worst point for me was that the mic would just stop working at random intervals. Reconnecting the USB headset would get it working again, only to disconnect within the next couple of minutes.

I got the Empathy IM client up and running with my work’s SFB server, but it wouldn’t show contacts and voice/video wouldn’t work. In short, a show stopper.

Summary

Ubuntu has come a long way since the last time I tried this experiment. My home laptop has Kali installed and will continue to do so, but due to the dependencies on Windows and drop in productivity, I could only put up with it for two weeks before reinstalling Windows again.

At the end of the day though, I can’t completely ditch Windows simply because of how entrenched it is in my organisation.

In terms of my goals for the experiment, I certainly used Linux a lot more, especially on the CLI, so am confident I’ll be using my Ubuntu server VM more than perhaps I have done in the past.

Till the next time.

The cost of self improvement

Introduction

In my earlier career, I measured my knowledge by how many exams I had passed and how much frowning I did throughout the day. I’ve lost the exam bug over recent years, mostly because the 700 page study tomes contain perhaps 100 pages relevant to either my role at the time or my future goals and with the pace of IT these days, I honestly have better things to be doing with my time.

That’s why I try to focus my learning goals myself, rather than be told by somebody who doesn’t know me is what I should be learning.

The Training Trap

The cycle of continuous training contains many pitfalls. First of all is the cost. Training courses, books, ,other materials, exams. The whole refresh cycle means that once you are committed to remaining certified, you are on a one way journey to Emptywalletville. Unless you are lucky enough to have a sponsor that will pay your way.

The vendors love telling us how marketable these certifications make us too and we seem to eat it up by the bucketful. What annoys me the most is how these vendors lock businesses and individuals in to the training trap by insisting you need so many MCSx/CCNx/etc. people to maintain certain partner level accreditations. Just another set of hoops to jump through, another maze to remain locked within.

Same shit, different day

Every time I go to the supermarket or newsagents, I always have a browse of the magazines. Over the years, I’ve even subscribed to several of these covering Film, IT, photography and gaming, but none have lasted more than a couple of years.

With the ever expanding catalogue of available publications, it is easier than ever to see that a large percentage of these publications are simply regurgitating the same material in a cyclone of confusion and trickery.

The worst offenders seem to be the IT and Health sector magazines. The same top 10 lists, learn how to do this or that, absolute beginner’s guide to blah, blah, blah. Even within the same month, on display you can see magazines that have similar content to attract your hard earned money.

Another sector that is guilty as sin for this is the self-help book brigade with the same information commonly being thrown at us time and time again. Sadly, the target audience for these are often the most susceptible to the need to buy.

Suckers for or victims of punishment

One thing that is for sure, these publishers would not remain in business for long if they didn’t have a steady revenue stream. The way out is easy enough in this scenario and is covered below.

The more difficult scenario to disentangle oneself from is the vendor partnership scheme. For these, you need to ensure that the benefits you receive from participating outweigh the associated effort and cost, but you often have little leeway in this regard.

I’ve yet to find a magazine in the supermarket that contains information that is not easily and freely available on the Internet, within minutes from anywhere in the world where I can connect, or to download for later offline reading. The fact that I can dive deeper in to those articles by ‘going down the rabbit hole’ at no extra cost and end up with a much fuller understanding is another free benefit. Despite the electrical usage, I’m also a little greener by saving the trees.

For those people who argue ‘I like to feel the paper in my fingers’, my advice would be to count the bundles of cash you will save instead.

Summary

The wider field of self improvement, no matter which topic we are talking about has created a business sector which is growing year on year, with no signs of slowing down. For some reason, we buy in to their marketing as if we’ve briefly forgotten what a connected world we live in, just for those moments between the shelf and the checkout.

From a certification point of view, I’ll mostly only be recertifying and proving my knowledge via other means.

I like to think I’ve seen the light. At the very least, I’ve got a few more pennies in my pocket and a lot more time to enjoy the more meaningful things in life.

Till the next time.

The difference between inspiration and motivation

Introduction

I’ve heard people use these words in the wrong context before and it got me to wondering, are people looking in the wrong place to get things done? This brief post covers the difference between motivation and inspiration.

Inspiration

Inspiration happens from the outside in. That is, an external force triggers a reaction in you that causes you to behave in some way. Inspiration infers a positive force causing a positive reaction, at least for sane people with a love of life.

The reaction might be a smile, or pleasant thoughts or it could be something more active like going to the gym, doing some DIY and getting down to some studying. It could also be something more selfless, such as making a charity donation. Regardless, without the external force, the inspiration simply doesn’t happen.

Motivation

Therein lies the rub for me. Why wait for something external to have an impact before I decide to get something done? Motivation happens from the inside out. That is, an internal force triggers a reaction in you that causes you to behave in some way. You aren’t relying on external forces, just yourself. Shia Labeouf would love this post, I’m sure.

Let’s face it. Motivation is effectively self-inspiration. You need to inspire yourself to get something done and quite often for that, you will need a strong will and a very good imagination. But what you won’t need is to wait for any external stimuli.

Summary

Essentially, in this post I called people who rely on being inspired to get things done lazy and unimaginative. Own the trigger and just do it.

Till the next time.