Technogeddon is Nigh

Sometimes, in my career as an ardent Technophile, I wonder ‘Why?’… why do I continue? My daily frustration at all the genuinely crap tech I have to use… crap development tools, crap web-sites, crap operating systems… they all have their faults and foibles.

Any one on it’s own is manageable… even a few in a row… but all of them all the time is just becoming too, too, much.

Software standards are rock bottom IMHO. Every other engineering discipline has ‘culpability’ of service. In that, if I design a bridge to take a certain amount of traffic, it has to take a certain amount of traffic plus a tolerance. It’s required as part of the job. It will be checked. Regulations ensure it has to be. Culpability means you’ll be in damned hot water if you don’t.

Software, no one cares. Does it pass QA? Ship it. Did it fail QA? Meh, probably ship it. It’s unregulated, unchecked, and (generally) not culpable. In the UK at the moment, Smart Motorways are a hotly contentious topic. I’m against them, because I know the kind of developers who would be writing the software that detects cars in the managed lane and puts up the red ‘X’… no way am I trusting them and their software with my life.

The primary consumer/customer of all Software, is the end user. But, ‘development’ doesn’t care that they have to suffer using their crap software.

There, I said it.

Of course, it’s not all true of all development. But of all the software I use day-to-day, it’s becoming truer every day.

Budgets, delivery pressure, over-taxed resources, insufficient resources, bad planning, lack of QA, lack of customer focus or design vision, they all take their toll.

But, I’m not here to complain about that! Aha! Oh no. I actually want to highlight something that worked when I was expecting it to fail!

I have finally decide to dip my metaphorical toe into the metaphorical waters of the ‘Smart Home’… I have been avoiding this for some time. I have absolutely every desire to make tech a driving force in my home, but absolutely no desire to increase the amount of things I have to continuously go around turning off/on again, or updating firmware on, or otherwise troubleshooting due to the above rantings. Trying to get FreeSat HD on the TV is taxing enough.

Amazon (yes, them) did a promo on a Tapo Smart plug, for a mere £5. I couldn’t resist. “What the heck,” I thought, “if it’s useless, it’s the price of two coffee’s… go for it.”

I bought it, I got it, I set it up, I linked it to Google Home, it works. Every day on test for weeks. Slightly impressed. But not the reason for writing yet…

I have already wired up some outside lights on the house, and ideally, I want to leave them on with a dusk sensor to turn them on when it gets dark. But, that won’t turn them off at nighty-night time… light sensitive sensors would only turn off at dawn, or a preset (but too short) time delay. Bad for my electricity bill, and bad for the environment overall.

Amazon (yes, them again) search turned up a Smart life Wifi relay switch for lighting circuits. Encouraged by my Tapo success (which will shortly be controlling my outside Christmas lights!) I shelled out for a pair of relays.

I wire one up. I set it up, I link it to Google Home. It works! And lo! I am now impressed.

As this will live in the loft, I don’t want to ever have to reset this, or turn it off/on, or whatever. So as a test, I cut power for it for over 12 hours. The next day, I re-power it and lo! it works as it did before the power cut. No having to repair it, and reset everything. More impressed! It now resides in the loft, where it controls the outside lights on a Dusk to Bed-time routine. (However, I can turn it off entirely from the original light switch still.)

So this is all great… Smart Home is Reality… and now here’s the but….

Technogeddon is nigh!

Oh yes.

The Tapo, and the Smart life relays are (I hope) very simple, and should not require updating firmware and all that jazz. The Tapo plug will remain accessible, so even if the odd reset is needed, so be it. I’m hopeful the relays won’t ever be an issue. We’ll see after the next power cut and my Router goes down.

The issue (and source of this post, thanks for waiting) is more fundamental, and more infrastructure in nature…

You see, somewhat annoyingly, each ‘smart device’ requires an account setting up with the device provider… ok… frustrating, but I can understand why… however, 20 different devices later and 20 different accounts, and you’ll be a bit sick of ‘Yet Another Smart Home Device Account To Create And Remember’. Then of course each one requires an app to set it up, and control it, rapidly filling up your phone and sorely testing your patience with a variety of poor/barely adequate/poorly translated app’s with frustrating UI’s as you try to remember which app controls what and why isn’t that light turning on oh its the app for the outside light device and I want the one for the plug in the bedroom aaaarargh….

But rejoice! For Amazon/Google (and Apple I believe, but don’t care) solve that problem with Alexa/Home linking… so after ‘Linking Yet Another Smart Home Device Account To Google Home’ everything is well, and controllable from one app – with voice – hurrah!

So now stop, pause, and think… 20 smart home device manufacturers now have access to your Amazon/Google (ok, and yes Apple) account information…

You still need 20 app’s on your phone to maintain the devices should anything go wrong.

You still need 20 accounts for Smart Home Devices.

If any one of them gets hacked, can they get anything useful about you from Amazon/Google/(and yes yes Apple)?

But, further… what happens when one of those (or more) Smart Home Device Companies changes brand, or disappears entirely? That device eventually becomes defunct through lack of software support, because no one is updating the app, or the link to Amazon/Google/etc.(ok, or Apple).

Further still, Android, or iOS gets updated, and the Smart Home Device app no longer works with the new release, or your phone changes and the apps are no longer compatible… or even more harmful (unlikely but possible still) Alexa gets canned or changes and is no longer compatible, or Google Home (or yes, whatever it is Apple do).

Or you update your Router for the New & Shiny WiFi gen X which is 10GBps! but doesn’t support 2.4Ghz any more cos it’s old and naff… and all those devices now fail to connect…

And realise that every WiFi connecting device is an open doorway into your Router as WiFi just ain’t as secure as they’d like you to think it is… and that ‘Smart Device’ you just plugged in definitely doesn’t use the security options it should (even if they are largely useless)…

Suddenly, your lovely Smart Home ain’t so smart any more… littered with a load of expensive, but defunct ‘smart’ hardware.

Of course, the companies involved can help avoid this by ensuring backwards compatibility in all that they do, or maintaining older systems and services to ensure older products can tick along. But, they won’t do this.

Why?

Because it will cost them money. And while they are spending their money to ensure your old kit keeps ticking… you aren’t spending your money buying the new shiny kit they want you to buy so they can stop spending money keeping the old kit running, and spend it on keeping the new kit running until they decide it’s old kit, and they really want you to spend your money.

Even if they were super-benevolent, eventually they would be faced with running ancient tech-stacks of servers and software no one wants to work on and costing a fortune to run/maintain. At some point, tech has to move on, and a cut-off point emerges, and your smart home dies a sad, timely death.

So, when you do go for your Smart Home, what are your options?

  1. All your eggs in one basket, all the tech is from the same provider. Pro: one account. Con: They go down, so does your Smart Home. Buy everything again.
  2. Everything is different. Pro: One of them goes down, just replace that one thing. Con: Loads of accounts and updates and god knows what else.
  3. Regardless, commit to an ongoing spending budget of replacing kit every now and then as the soulless advance of progress marches on.

Also, rejoice in finally becoming that IT Support Engineer you’ve always wanted to be!

“Hubby? The light in the garage isn’t working again…”

“Hubby? Why has Nest stopped turning the heating on?”

“Hubby? Alexa isn’t working… there’s no Wifi, or internet and the TV is on the blink…”

This is the price of progress, the cost of change, and it’s coming to a home near you… more likely, it’s already there and lurking in the background waiting for the next power outage…

Technogeddon!

Swift

Of late I’ve been turning to (finally) learning the Swift language developed by Apple, notably for their iOS platform.

The Swift language is now on version 3.0, and by now should have settled down, ironed out all it’s kinks, and generally matured.

Wrong-o.

I’m not a ‘hater’ – I have written software in some many different platforms, languages and IDE’s that I’ve honestly lost count. I don’t mind learning something new, or adapting to changes. It’s a requirement for a professional software engineer.

But so far, Swift 3.0 ain’t mature. Far from it in fact. Now, to be fair, I do like it – mostly. The syntax is a lot cleaner than Objective-C, and yes it does seem to be easy to pick up, especially knowing how iOS frameworks and components already work, and being able to mix .swift with .m/.mm is awesome, as is being able to mix .c and .cpp.

But, there’s a but.

This ‘cleaner’ syntax rapidly turns into a mess of optionals (?) and down-casting (!), and means a double-meaning to established ‘c’ like operators.

if(!weekDays[eventDay! -1])
{
   // do stuff
}
var dictionaryYearWeekDayEvents = Dictionary<Int, Dictionary<Int, Dictionary<Int, [Event]>>>

I mean, wtf? I smell C++ Templates… and this is the structure I want, but now with Swift Dictionaries I am forced to specify the entire object structure before I can use it. NSDictionaries in Objective-C allow me to do it ‘whenever’. Ok, a double-edged sword I agree. Swift is better in the regard that it has tighter constraints on typing objects which is definitely a win. This is a programming paradigm I have to adjust to in my own head.

I also don’t quite get the concept of ‘optionals’;

var someObject: ObjectType?

Ok, so this means ‘someObject’ may not actually exist, i.e. will be nil. So then why does Swift throw an exception if the optional is nil when I try to use it in my own code which allows it to be optional?

Now granted, I am no Swift expert, of course! I’m just starting, but the above are examples of what the language let’s you do. It’s no better than C giving you the rope to hang yourself and C++ tying the noose for you and providing the stool.

Swift’s language spec and syntax makes it incredibly easy to get yourself into a nasty place, very quickly indeed. Not quite what they had in mind with the name ‘Swift’ I’ll warrant. I foresee a lot of domain expert knowledge being consumed by engineers being needed to clean up a lot of messy code in the future, now that enterprise applications seem to finally be taking off on the iOS platform, and all the new gig’s are ‘Swift’ based.

They also changed the majority of the API stack for Swift 3.0, compared to previous versions. This is badand strongly hints at a major and fundamental underlying flaw in the original language spec. This may have been something I’d expect to happen say in Swift 2.0, but not afterwards. The language should have been firmly locked down beyond 2.0

This has led to a lot of confusion on the internet with many ‘How do I do X in Swift’ examples being made instantly worthless (ok, the price of change I guess) but also with now examples given in Swift 1.0, Swift 2.0 and Swift 3.0. Worse, often the examples in Swift 3.0 no longer work –not because the authors are idiots, but because the example has been made redundant by even more changes since it was written.

Try figuring out how to sort a Dictionary by it’s key values. I dare you. I’ve given up. I just pull the keys out into an array, sort that, and then pull the dictionary items out in the sorted array order. It’s just less painful.

And then there’s Apple’s own documentation. Woefully poor for Objective-C but liveable. However, for Swift 3.0 it’s dire and nearly inadequate, often with contradictory examples, or no examples at all (ne. Sorting a Dictionary by key).

If all the above applied to Swift 1.0, I’d forgive, and put-up-and-shut-up. But for all this to be said at Swift 3.0, that’s just plain rude Apple, and shame on you for making the developers lives harder. Let’s not forget just who it was that actually made your mobile platform the place to be all those years ago…

Little Men become Big Men, or Empower Them

That probably sounds a little trite, but the context here is ‘games developers’ and indies vs the rest of the world.

I read this Games Industry article with interest…

It’s not that ‘mobile has become hostile’ to indies. The problem is getting any market-space to get sales traction for the indie game developer. Now the big boys are in, it’s impossible. And now Apple have provided ‘ad space for sale’ it’s made it 100x worse, as the big boys just buy all the ad space. Purdy dumb move IMHO. Great for cash generation though!

It’s not the first time this has happened and it won’t be the last. Indies create the platform, because they are typically the first to embrace a new technology ‘because it’s cool’ or because it’s cheap/easy, etc.

iPhone was a desolate wasteland for games – Apple totally misunderstood their product for this genre, and took years to catch up. But by the time they did, the platform had been well established as a gaming hot spot by ‘the little men’, and it then attracted the attention of the big boys, who then dominated the top 20 from there on in. Only the really rare ‘stand out’ indie games made any headway. Nowadays you have to be the top 1% to get any revenue of note.

It doesn’t always work that way though – the GamePark 32 (which was awesome btw!) disappeared. The Raspberry Pi is doing well – but not stupendously so as it truly deserves – though again it’s a slightly different market niche.

So for the wannabe indie, there are two things to watch out for;

  • Hot new platform which none of the big boys support or care about (yet)
  • Big name behind the platform, or one who doesn’t understand the potential so hasn’t yet attracted the big boys

Get those two right, and get in early… and you never know…

Hmm… VR headsets anyone?

Visit the awesomeness ofDominium!