Productive Time Management

This week I played with the Pomodoro time management technique to see if it would improve throughput. Results are encouraging.

My typical day can be classified into 3 buckets; client interactions, writing and project work (with includes coding). It is very easy to get distracted as the events of the day transpire naturally.

I usually keep all non-essential emails to the evening when I am at home, where I will respond when the stresses of the day are behind me. I enjoy that part of the time and I am disciplined to leave an email unread until times I am ready to action it.

This previous week though, I have tried something a little different, to see if productivity can be improved if I dedicate blocks of time to a given task. I have started out with one hour blocks.  Setting a timer in Google I then focus on a given bucket, awaiting for the obnoxious noise telling me times up.

This is commonly known as the Pomodoro technique, while I am not following its complete rule set, the spirit of it has been embraced.

Overall the experiment has worked very well, particularly when it comes to writing. I discovered I wrote a lot more with improved quality. I think I can put that down to the fact that I was given license to not only ignore everything else that may come in, but to also know that my writing time was fixed, so it wasn’t that I was looking at a document trying to find the words for the whole day.

As for project work, an hour is probably not quite long enough. I will play with time frames to see if that improves. There is work that you need to get your head into, an hour is just not enough time for some of the more complex problems you look to attack.

I will continue this experiment for a little longer, but early results are encouraging.

My Top 2018 TV

My top 2018 list of TV drama’s.

And after looking at my 2018 movie list, here is the TV counterpart. Again, these are all new TV drama’s that have been given a 2018 release. The standout surprise (discovered by complete accident) was Kevin Costner in Yellowstone (basically Dallas with cows).

Notable continued series top output includes Outlander and Chicago Fire/PD. Sadly Counterpart has lost its way as it starts season 2. The big disappointment of the year is Dr Who – don’t really know where to begin with that postmortem.

Overall a good year for quality TV drama.

My Top 2018 Movies

This year, I kept track via an IMDB list of all my viewing output, rating each one out of 10, as and when I watched it.  While I tagged over 240 items, here are only the movies that, according to their IMDB rating was released in 2018.

I confess to being surprised by some of my end-of-year results, but as they say, data doesn’t lie.   The stand out movie, that I was hoping beyond hope would not be dire, did not disappoint, which was of course Bohemian Rhapsody.  The other movie I was pinning hope on was the sequel to Mamma Mia – and that did fail miserably, to live up to anywhere near the sheer joy the first one gave.  Finally, the most overrated movie was Black Panther – so many political undertones weaved into what was basically Avatar in Africa.

Overall, a great year for movies, lots of surprises, some great quirky comedies and mindless blockbusters (thanks Jason!).

2018-12-31_06h00_162018-12-31_06h00_272018-12-31_06h00_362018-12-31_06h01_002018-12-31_06h01_07

Amazon Lambda now accepting SQS events directly (nearly)

Amazon has closed the gap between Lambda and processing events directly from SQS, opening up a world of possibilities.

This week Amazon announced that they finally closed the gap between it’s oldest service, Simple Queue Service (SQS) and their push into serverless computing, Lambda.  In other words, you can now write Lambda functions (Java, JavaScript, Go, Python, C#), point them at an SQS queue and have them processing events off the queue all without worrying about supporting a complex server environment.

Anyone in the cloud architecture or microservices business will be excited at this long overdue evolution of the Lambda ecosystem.   When Lambda was first introduced, the idea of having functions hanging out there in the cloud, just waiting to be executing based on some sort of condition was very exciting.

 

An aside

As any seasoned architect will tell you, one of the secret tools of a good scalable architecture is liberal but strategic use of queues.

A queue allows you to decouple components from one another to the point of where downstream execution can be many magnitudes later, making the overall resilience of the platform much stronger at the same time as far more scalable.  For the sake of a quick illustration, imagine two components that are tied together.  One has to process an order, and the other is responsible for emailing out the confirmation.  You may split these up into two different services and when the order has been completed, you could make a RESTlet call to the service to send out the email.   But what happens if that email service is no longer there, or returns an error?   Now you have to start developing retry logic and figure out what state you want to leave that order with respect to the customer.

Instead of a strong coupling like this, the better solution would be a queue between both components, where the ordering service would place a message on the queue that the email service would pick up at a later date to process, resulting in an email going out.  If the email service is down, then no problems, the queue can still accept events and will store them until such times the email service can process them.

 

dreaming

When I first started dreaming of using Lambda it was for queue processing.  There was many times that the amount of business logic required to process queue’s would have fitted wonderfully well within the Lambda environment, all without having to worry about standing up containers or EC2 instances.  However, I had to keep dreaming because this was not available at the time of Lambda launch – one of the most obvious use-cases of Lambda and Amazon made us wait nearly 4 years for it.

The wait is over and now we can start using Lambda for some serious queue related applications.  Yes, you can put some quite meaty processing behind each event on a queue and that will make architectures much easier to manage and scale, but the real power behind this development is actually in making some quite sophisticated event routing applications.

2942951645_6e7a700a63_z
woodleywonderworks @ https://flic.kr/p/5u4oZB

Imagine taking a source event from a given queue and then deciding, based on its contents, which additional queues it should be placed on for parallel processing.   Take the example of the order system in the sidebar; the email service is not the only service that should know about an order being complete, there could many others in the enterprise that could benefit from that information, for example fulfillment, accounting, warehouse to name a few.   A Lambda function could take that order from the queue, and decide quickly which other queues should have a copy of that event.

Such routing design patterns are common and historically you’ve either had to use some non-cloud technology to perform these, or grown your own.   This Lambda tie-up simply reduces the amount of infrastructure required to support such a design.

but wait

While the wait is over, Amazon has not made it as clean as I would have hoped.  There is a little sting in the tail and it gives a little clue as to how they are providing this service under the covers.

One of the shortcomings (though I understand why) of SQS is that it requires the client to do a long-poll to determine if there is events on the queue to be processed.   In other words, you had to keep making an HTTPS call “do you have any events for me?” and while the call would wait for a period of time before returning back, you had to do this all the time.   Each call to SQS, yes, you were getting charged for it.

For large systems that have a constant stream of messages coming through, this cost is negligible, but for systems with sporadic bursts, this overhead could be costly and above else, in-efficient.   Traditional messaging systems, would keep a constant connection to the messaging service and events would be delivered down the wire instantly.

To minimize this overhead, it is not uncommon to have one consumer of a queue who would do the polling and then pass out the work to a battery of internal threads.  This is an environment where you would have a server handling queue event processing that was capable of executing multiple threads at once.

The Lambda world however, is serverless, so you have to forget about the underlying platform of real servers that Amazon manages for you to give you this illusion of serverless computing.   Since they charge only for the function execution, as far as you are concerned you are allowed to forget the underlying server.

SQS has not changed its behavior.  You still have to poll to retrieve messages and this is what Lambda is doing under the covers for you.  However this time, you have no real control over the amount of consumers that will be running up that SQS bill for you, particularly if you have come off of a very large volume of events that Lambda scaled out to execute in parallel all those events.

No doubt Amazon have thought of this and will be monitoring the situation and taking the necessary steps to reduce this overhead.   In an ideal world, they would figure out a way for the Lambda service to have a continuous direct connection (think websocket for queues) to the SQS service so when an event came in, they could instantaneously hand it over to a Lambda function for execution.

in the meantime

Until that time, this is a huge step forward and makes the use of serverless computing even more attractive as design out the next generation of cloud solutions.

You can do more reading here from Amazon’s official blog.

 

The Gemini PDA 2018; hands on review

After a few weeks of usage, learn what makes this Psion revival a wonderful addition to the Android smartphone world

Before there was the smartphone there was something called the personal digital assistant or PDA.  This was usually a miniature looking computer, complete with display and keyboard that would fit into your pocket and instantly be available for work as soon as you opened it’s case (back in a time booting a laptop was a coffee making moment).

Psion_Series_3aI was a huge fan of the original Psion organizer, with a particular fondness for the Series 3.  It was a revolutionary device for its time, combining the size of a modern day smartphone with a keyboard that was nearly-almost usable.  Ironically, or horrifying by today’s standards, it had no network connectivity.   You could shove an RS232 cable into it and transfer data (who remembers zModem??) or if you were a real trendsetter you could shell out for the original Psion modem to connect you on the move.   It is ridiculous to think of a device with such limitations, but 25 years ago this was the cutting edge in mobile computing.

Gemini PDASo you can imagine my joy when I learned of the Gemini PDA, from Planet Computers in the UK, that they had partnered up with the original designer of the Psion PDA to produce an Android version of the popular clam-shell PDA.   I put my order into the Indiegogo crowd sourced site just before January 2018 and patiently waited for my unit to be built and sent to me – hoping of hopes they would not hit any snags before getting it over the line.

They made it.  It arrived a few weeks ago and after spending some time with it, I feel I can speak to its strengths and weaknesses with a little authority.

2018-05-04-08-35-46.jpgThe unit itself feels solid and weighty.  Not weighty, but a quality heavy.  There was a familiarity to it that brought back a huge smile – holding it, sizing it up, felt like I was holding my original Psion.

Flip open the case, revealed the beauty that lay within – a high definition color display and a keyboard that was ready for even the fattest of fingers to start tapping.   Closing the case again, had that wonderful spring-clam magnetic feeling.

By all accounts this is an Android smartphone, with a keyboard permanently attached.  The unit came with 4G and WiFi, including a camera.  It had the necessary SSD slot to increase storage, bluetooth, USB-C charging and everything else you would expect from a modern day iPhone/Samsung device.

Getting started was quick and easy – popped in my SIM card from Verizon, logged in with my Google account and within 5 minutes, I was up and running with all my apps installed magically from the Google borg.

It just so happened that the week the device arrived, was when the World Snooker started, a 19 day event that captures me annually.   The Gemini PDA was now my snooker source, allowing me to test both battery longevity, screen resolution and speaker quality.

On the battery front, the Gemini PDA did probably better than my Samsung S9+, even though I was streaming over WiFi for most of the day.  While it lasted longer, I did note that it took significantly longer to recharge the device (now that said, I know the S9 has made big strides towards rapid charging so probably not a fair comparison).

2018-05-11 08.57.33.jpgThe screen was beautiful, crisp clear and responsive.  It is fully touched screen and didn’t have any issues with the usual pinch’n’zoom and all the usual pawing one performs on a smartphone.

The speaker quality sadly was a let down.  It sounded tinny with a complete lack of bass.  I thought it first to be just the BBC stream, but after playing many a YouTube video, it never got any better.   Though, pair it up with bluetooth speakers and no problems, so clearly the physical speakers installed are not the best.

But speaking of that, one has to remember that this device is retailing at $599, fully loaded. That is significantly less than the Samsung S9 or Google Pixel.  While it is easy to be a bit sniffy about various items, the price point I feel is pitched just right, cutting corners where needed.

2018-05-04-08-36-28.jpgIt comes with the latest Android which has been modded a little to accommodate the Gemini hardware.   There is a couple of Gemini specific keys that will pop up a utility bar with quick-access functions, this was handy, but frankly after a period of time, just got in the way.

Now for the keyboard.  The very thing that makes this device stand out from the crowd.

The keyboard is wide enough that you can’t use it with your 2 opposing thumbs, and you can forget about using it in one-hand.  Just not that type of device.   Once put on a flat surface, the keyboard comes alive.  Solid, follow-through, satisfying travel and click in each key button with instant feedback on the screen.   My fingers are of a slim nature that I could type relatively fast.  My only frustration with it, was the space-bar, it is offset from the middle a little that I kept missing it with my right-thumb. The keyboard is slightly smaller than my travel bluetooth keyboard I use with my tablet/phone but not small enough that makes it unusable.

2018-05-11 08.57.19.jpg

Overall the device is a wonderful addition to the smartphone world and while I don’t think there is a huge mass appeal, it will be useful for those that need more than just a media-player from their mobile device (oh did I say it is also a phone?).   I think the biggest issue with the device is that Android is just not geared up to be in permanent horizontal/landscape mode.  There are too many apps that just don’t know how to handle this viewing mode which has the knock-on effect of hiding a lot of in-app functionality.

While the device can by used in portrait mode, it feels so wrong when you hold it like that with a keyboard hanging off the side.

So setting that aside, I am a huge fan of the Gemini and the mission statement that Planet Computers are making with this device to the market place.  I hope they sell enough units to make them profitable and to continue development.  The company is still young and desperately needs more support from the community to help round out some of the rough edges that the more mainstream Android forums usually provide help with.

Overall, a wonderful nostalgic trip back to a time there was a real difference between a PDA and a phone, but not quite ready to become a single device to replace my current Samsung S9.   Instead, relegated to a secondary device to throw into the carry bag for long trips or meetings.

Solid machine, worth the money.

 

3 simple guidelines to protect our ever connected ‘smart’ device universe

As we become more beholden to companies to keep our smart devices functioning long after purchase date, I propose 3 guidelines to address this imbalance and risk.

Smart devices. They are everywhere. Even if you don’t read a single online article, a walk around your local BestBuy, Target or Walmart you can’t but help seeing the growing aisles of devices promising to make your life that little bit easier.

From thermostats, garage doors, security (?) cameras, door locks, bulbs, wall outlets, dimmer switches, drip-monitors to even smoke-alarms they are all vying for our attention in our Internet connected world. This is before we get to the countless consumer devices, like the swarm of voice activated plastic towers (yes, i am looking at you Amazon and Google), baby-monitors to pet-monitors (and one where you can play laser tag with your kitty while you are away). I could go on, but I think you get my point — everything is getting the Internet-Of-Things treatment.

smart-home-2769239_640

Back in the day, we bought a device, plugged it in, and it performed the duty it said on the box. No fuss no nonsense. No apps to install, no Wi-Fi to configure, no 3rd party service to sign-up to and blindly agree to the terms’n’conditions. No matter what happened to that company or to the network, the device would still do what it was meant to do. I still have the same music deck that I went to university with over 28 years ago. However, as I look around at the various devices I have been seduced into buying, I wonder if they will make it past the year, let alone generational.

We are increasingly relying on a whole ecosystem to stay alive for our devices to be useful. Alexa becomes an ornament when the Internet or Amazon is down. Nest is just a wall-light when Google has a problem. It is not limited to the company staying in profit, we also have to be nice to the company, just in-case they lock us out as a punishment (see the story of the Garadgetsmart locking out a poor reviewer from their own home).

What if a company changes direction? Your investment in all these gadgets are now at risk (Logitech has decided that Harmony Hub is no longer viable bricking a whole bunch of universal remotes).

I have my own personal story — I was locked out of my own home because Tesla put out a software upgrade and broke the garage opener functionality that I was relying on. Two weeks later it was all back to normal after a fix to fix the fix.

Every morning I wake up and if things are still working then it is a good morning — it could all change in a second as each device relies on power, network, service and reliable software. Way too many factors — it is amazing the bloody thing works at all.

binding-contract-948442_640

We need far more redundancy and stability in this ecosystem. We need confidence in the devices we are buying.

With that I am proposing are the following three guidelines for a consumer charter:

  1. Initial cost $0
    Hardware that relies on a back-end to function, should be free ($0) to purchase. Charge a small monthly subscription to cover all costs.
  2. Minimum 5 year life from date of purchase
    Full refund if the device stops performing it’s duty within 5 years due to a company changing direction. This should be backed by an insurance policy that the company takes out to cover in-case of insolvency.
  3. Open Platform
    Let devices be controlled by a 3rd party solution. Open up your API’s to allow alternatives to take over should you fail to do yours. Allow me to manage everything from one portal.

We need to get a handle on this. We are investing huge sums of money into an industry that is predicated on obsolescent and we’re being held hostage to the whims of a corporate entity whose only goal is to squeeze as much profit from us as possible.

Next time you are about to buy that smart device, read the small print, see what relationship you are entering into, the risk you are taking on and ask yourself if the brand you see before you will still be around in 2, 5, 10 years time.

Otherwise, you just might be buying a pretty piece of plastic art.

Update 5th Dec: Google have disabled YouTube on Amazon’s Alexa Show product.  YouTube on Alexa was a heavily marketed reason to purchase the voice-activated assistant.  Another area where the consumer has little to no recourse on the functionality disappearing from their product.  Imagine your microwave suddenly refusing to reheat your pizza because of a legal dispute.  This is our new world.