Saving Money on Cellular IoT

Learning from the past

Blackberry and later the iPhone really changed the mobile industry, not just from user experience, but from the way service providers (carriers) packaged and sold their services.

Data on mobile phones used to be extremely expensive. So expensive in fact that as a user would want to use as little of it as possible. On Nokia Smartphones any application that attempted to connect to the Internet would have to prompt the user for permission first.

When the Blackberry and later the iPhone launched, they needed constant data connections. Blackberry to an enterprise email service, and the iPhone to an Apple data center. This constant data connection is what allowed push email on the Blackberry, and notifications on the iPhone, without this data link some of the main features of both platforms become inoperable.

When carriers sold iPhone and Blackberry devices they needed to shift the way they charged for data. What was once very costly became cheap and bundled with the handset. Today of course the major selling point of a mobile phone plan is how much data you get and how much it costs.

The resulting drop in data prices has given the illusion that mobile data is cheap, or free. It isn't , all this information runs across radio links, fiber cables, switches, routers and base-stations, all of which need to be paid for and maintained.

The bundling of data has given us the impression that data is "free" or so cheap it might as well be free. It isn't, but this notion has lead to some less optimal, and more costly software design, particularly in the IoT domain.

Connectivity Restrictions

Every carrier implements a NAT. This help manage the limited IPv4 addresses and provides a way for the carrier to control data traffic on the network. The NAT restriction means that mobile devices can not receive an incoming connection request from a server on the Internet. Instead the device must initiate the connection. This makes sense from a billing point of view, as a user only gets charged for the data they use based on the applications that they install.

For an IoT device this can be cumbersome. There are often times were we need to call out to a remote device to make sure it is working.

Unscheduled Communication with Cellular IoT Devices

From both a power and cost perspective cellular IoT communication is generally kept to a minimum and scheduled at regular intervals. Careful scheduling of when IoT devices "call home" allows the workload on the server to be balanced out. This strategy is cost effective, however the design of the cellular network means it is not possible for a server to initiate communication with the IoT device. On cellular networks all devices operate behind a NAT. The result is that devices can be operating for hours or perhaps days before "calling home". This multi-hour / day latency introduces issues for device management as it becomes impossible to probe a device for its state, so activities like troubleshooting, auditing, maintenance, unscheduled security patches, etc, become hard if not impossible to do.

Different IoT devices will, of course have different data throughput requirements. Video / streaming sensors could conceivably maintain an constant flow of data to a server. However for a large number of cellular IoT devices the data volumes are low, and the need to manage the data costs can have a direct impact on the profitability and the overall success of the IoT solution.

Data Costs

Even when a device is not actively transmitting any sensor data, an open link (socket) with a server will incur a cost. Maintaining a communication link between an IoT device and a server requires sending keep alive messages. These small back and forth messages are sent across an existing link at a regular interval. As their name suggests they keep the connection alive. The client will send a message and the server of course will reply to acknowledge the client's active connection.

Every byte of data that is transmitted incurs cost. On an cellular IoT connection these costs originate from three sources:

  1. The data processing costs on the server.
    Every message needs to be processed and replied to, even the keep alive messages. This is an additional load, if your dealing with 100s - 1000s of devices then this load can add up and result in additional server requirements, or extra virtual machines in the cloud.
  2. Public Cloud or Data Center Network Traffic Costs.
    Public cloud providers and nearly every data center operator charge for data being sent into and out of their data centers / networks. It is possible to work to reduce this, for instance if you use AWS's IoT platform, they will zero cost the keep alive messages for MQTT connections. However if you want to connect all your devices via a VPN link then you'll need to pay for the data.
  3. Cellular Traffic Costs.
    Every carrier / service provider charges for data traffic. As an example Hologram offer a "pay as you go" services for $0.34 per mb, and Things Mobile offer a $0.10 per mb deal.

The Yearly Cost of a Keep Alive

I wrote a Reddit Post outlining the cost, over a year of the default keep alive messages used by MQTT. MQTT sends 202 bytes every 60 seconds. If we keep the connection open constantly between the IoT device and an MQTT server that's between ~$10/yr on Things Mobile or ~$34/yr on Hologram just in keep alives.

We can save money by negotiating better data costs of course, but we could do better again by eleminating all of the uncessary keep alives and dropping the data link completely when it is not needed. This inpart explains why IoT providers employee the regular intervals strategy I mentioned above.

Supporting Unscheduled Communication

Unscheduled communication is usually required in a number of situations:

  • When things go wrong, a customer complaint, or failure occurs
  • Audit of a device is needed, or for asset tracking
  • Emergency software updates (security, bug fixes etc)
  • When the customer needs immediate sensor data

In all of these situations being able to reach out to the device is important. Without the ability to contact the device on an unscheduled basis could mean hours or days before changes can be applied, or data collected from a device. This would leave angry customers complaining about their device waiting long periods of time for details, or sensors left with insecure or incorrect software executing for days without an update. So it is important that this functionality is supported. There are only a limited number of ways of supporting this critical management operation:

  1. Keep the IoT device and the cloud device constantly connected.
    This is very expensive both for the battery and for data usage, as an example an MQTT connection configured using default settings will transmit just less than 100 megabytes of "keep alive" queries and responses every year. It also places a constant burden on the server, which needs to monitor and maintain connections to every one of the IoT devices.
  2. Increase the frequency the device "calls home"
    This approach works, but we have an increase in data cost and we would still have some latency to deal with.
  3. Wake up SMS to the IoT Device
    This approach makes sense, but each SMS will cost money, so long as the unscheduled communication is intermittent this solution makes sense.

The SMS Solution

SMSs are not sent via a data link, but using the underlying carrier network, they do not require IP addresses and are therefore not subject to the NAT restrictions that data links are. In fact, MMS: Multimedia Messing System, or more commonly know as "Picture Messaging" combined both SMS and data links together to deliver large data payloads to mobile devices. Essentially this system used the "Wake up on SMS" approach outlined above, sending an SMS to a phone to get the phone to create a data link and collect the pending pictures.

Missing Developer Tooling

While this SMS pattern is know it is seldom used to reduce cost. The core reason appears to be the lack of developer tooling. Most of the IoT system solutions that are offered to developers focus on data integration, such as AWS, Azure and Google Cloud, where the cloud providers interest is in getting the IoT data into the cloud. Using the existing tooling makes sense as it reduces the development time, and hence development costs, helps when integrating IoT systems together, and overall increases the speed to market.

The Goal

Creating a "Wake on SMS" solution requires changes to the device software to send, receive and validate SMSs and changes on the server side to prompt the IoT device with an SMS when required, it also requires tracking on server to record the IoT device and it's phone number. That is a lot of additional work, and a lot of custom code. The goal therefore is to reduce this, make the Wake on SMS feature as transparent as possible for IoT developers, something that can be integrated easily both on the device, and with the protocols used by the major IoT cloud providers.

Protocol Selection and Strategy

Protocols

There are a number of popular protocols that are used to transfer data and actuation instructions from the cloud out to an IoT device or gateway. These protocols can be roughly grouped into three sets:

  1. Message Queues
  2. Message Based
  3. Request Based

Strategy

Being a single person, I don't have the resources to develop solutions for every one of the 6 identified protocols and each of their different implementations. Instead I am going to focus on producing a Wake on SMS MQTT based solution.

Socially Distancing the Podcast

Changes

This has been the first full week at home. Emma the boys and I. Over the last week we’ve converted my study into an office space for Emma and I, before we did that we build desks and setup a class room for the two boys.

School work continues to come, supplied electronically. Matthew claims that this version of school is harder than normal school. Emma and I believe that this is due to the extra attention and his lack of ability to escape.

Getting outside is a challenge; we are fortunate to live near a small park and there is a lovely footpath we can take. The complete walk is just shy of 5km. It has got a lot busier since the lock down, however people are keeping 6ft / 2 metres away from each other.

The Recording Challange

We also live near a railway crossing and when the trains pass the sound their horn. It is loud. Loud enough to occasionally wake you. Combine that with the kids and sounds of general life in the house and recording the podcast has just become harder.

The first two episodes I recorded in the basement during the week, while the boys were at school, Emma was at work, and I had the time off from my job. It worked really well. However, the last recording was conducted late at night. With me asking Emma to turn the TV down low, and hoping the boys had fallen asleep. That worked really well, until the trains came. I am still new at recording podcasts, and I’m trying to relax and not read so much from the accompanying blog posts I’ve created. However, I often end up re-recording episodes. The last episode came in at 20 minutes, but probably took about 2-3 hours to record. The first recording I got mixed up, I tried recording it in segments. The next worked well until there were footsteps echoing in the background, it sounded like the basement was haunted. The third was ok until the train sounded it’s horn. Eventually I had to give up and go with what I had.

The following night I edited the recording. It was kinda weird listening to myself get tired. I also found that I had wondered off script with random thoughts, which I had to edit out.

I am happy to get this latest episode out. But the next few are going to get harder. I had the first 4 episodes pre-written with pretty well researched articles. The next couple will need to be written, edited, recorded, audio-edited and published. I’d like to keep to the weekly schedule, but I’m guessing that I may have to reduce the episode length to keep the cadence. But let’s see.

Launching On All Podcast Hosts

This week I spent some time ensuring that the podcast was listed in iTunes, Spotify, Stitcher, PocketCasts and Google Play (the last one is still pending). I need to update my static site with the buttons and logos for each. I also need to update the podbean host site with a more attractive redirect to the full site.

Video Calls

The full time job is back in full effect, and last week was fun. I have to admit it was nice to be back working with people again. One of the project proposals I’m working on is with Berkeley, and as I’m on a video call with the professor, I see her wave at the camera. I didn’t notice at first, but there in the background is my eldest son. You can’t avoid family life at the moment.

In the meantime, stay safe and keep well out there.

Day 4 : It is Alive !!

The morning

This is the hard bit. So, it is coming up to midday, I've reviewed the audio I recorded yesterday. At the time I thought it was good. Then I listened back to it. Dear lord. There is a humming in the background from a water purifier that lives in the basement, and there is me, exasperated at my own mistakes trying to re-record the audio and fluffing some of it. Then there is the content.

The way I'm working

There are a few fantastic mini-series of podcasts on podcasts, the two that really led me to launch my podcast are from two guys:

  • Colin Grey is the creator of the podcast host. A few months ago he was the guest host on another podcast I listen to by Paul Boag. During Colin's guest appearance he covered the concept of content stacking; which is how to create content on a single topic for a range of mediums, with as little effort as possible; video, audio and written.
  • Documentally has a series on his paid subscriber channel via substack. He sends out a fantastic newsletter every Friday, and if you get the chance to go read it, please do.

So, I wrote the blog post I'm trying to record in advance. However now listening to me read it back I can't help but think "God, I could have written that better!". There is only one thing to do; re-write then re-record. The problem is I keep getting distracted and that's not helping.

Distracted Content

There is a fantastic article on the New York Times about an area of the US around a radio telescope that has no WiFi or mobile (cell) service. The kids that grow up there have a completely different view on the world. They spent last time in front of a screen, and more time outside playing and generally exploring. As a Dad this is fascinating. Yesterday after completing work on the podcast I took the chance to head over to the boy’s school early to collect them. Rather than driving over, I walked. There is a way there which, unlike a lot of the US, has sidewalks (footpaths for US UK/Irish types) the whole way there. The birds were out singing and it was about 13c, so cool, but pleasant. When I told the two boys, we were walking home they were excited, the eldest gave me a gigantic hug

"What?" he said "No car?"

"See for yourself, there is no car"

"Wow! Thank you Daddy"

The youngest told me that this was a "great adventure". Both asked if I could collect them again without the car today. It is only about 1.5 miles each way, and its footpath takes you through a small wood which sit out the back of our house.

I think I've just given myself the motivation to crack on...

The Afternoon

Recording Complete

I managed to re-record the first real podcast episode. It was an effort. In the end I just decided to record and well, be dammed - I kept the errors in there. The deleted bits where I completely cocked up in editing. I was really worried that this first real episode would be too long, but in the end, it came in at about 12 minutes, which is bang on what I had hoped for!

Fixing Site Rendering

My new static website is up ! - Yay, but there are two issues with it I'd like to solve. when you embed a link in social media the social media platform isn't picking out the correct information to display it nicely. There is a reason for this, my site hasn't included the correct social media tags in the head of the HTML pages.

A quick search via DuckDuckGo, and I found the Jekyll SEO Tag plugin, which appears to add all the necessary additional fields, and interestingly of all the default theme apparently already has the plugin installed.

Another issue is that the logo image on the home page isn't centred. That is a bit annoying, another search and I found this article which suggests adding a new CSS definition, then tying that to the image insertion instruction, this I like.

This Evening

I go the chance to collect the two boys from school and walk with them home. It was a cool evening, about 8c, but the air was still and the walk was really pleasant.

This evening we got the news that all the schools in our county in New Jersey were closing from 3pm tomorrow. Then this evening around 9pm, there was a call, the schools are close immediately. So, the kids will be at home from tomorrow
onwards, and for the foreseeable future.

Publish, Publish!

I was going to wait for the Spotify and iTunes podcast links to appear correctly before I published my first real episode, but given that tomorrow might be spent hanging out with the boys more than expected I decided to launch the episode early. You can now find it up on the interwebs!

This one really introduces Industrial Research and explains what industrial research is and how it differs from academic research. Check it out, and please do let me know what you think!

PS: There is a Spotify Link, but it is not appearing in the searches, yet, apparently that will take a few days. But still - cool as !

Day 3 of Launching a Podcast – Recording and Re-recording with bitmaps

It is up... kinda...

So far today I've managed to:

It has been a really busy day. I got the podcast launched, well soft launched with a pilot / introductory episode. The rest of the day has been spent creating banner art, clip art, icons, writing copy for the podcast boilerplate website on podbean. It has been a really busy day.

Recording takes much longer than you think

Good lord, I've been trying to record the next episode. It has taken ages. I've been camped out down in the basement of my house. It is one of the quietest places in the house. I've been recording and re-recording what I've wanted to say. In the end I decided to break down the recording into smaller sections, record those then edit them together. This was much easier. But let's see how the content flows together. That's a job for tomorrow.

For now though, I'm delighted that the podcast is up, in some form. You can find the introductory episode here. Hopefully the show itself will be available in Spotify and Apple Podcasts very shortly indeed.

Day 2 of Launching a Podcast – Site Selection

Whoops, I didn't hit post yesterday. Sorry.. I was busy selecting a Podcast hosting service. This morning I've got some time while my recording studio (the basement) is busy - the washing machine is on!

Selecting a Podcast Hosting Service

I could do this myself. I could extend my AWS developer account, host the media on their servers, setup a WordPress website from scratch, add a podcast plugin, create the correct XML feed, manually list it with the aggregators, and link the whole lot together with some handwritten scripts to collect metrics. I mean I could do it. But with 4 days remaining to launch my podcast that's not going to happen. I need a solution, so I will pay for one.

Show Structure and Anticipated Demand (or lack of)

The podcast I'm putting together will be a mini-series, about 6 episodes in total. Each one about 30 - 45 minutes long. I'm still experimenting with the length of the audio so this could very well change, I may do 15-20-minute-long episodes and 12 of them. Either which way I'm expecting them to be launched and then hosted for a long time. The podcast isn't going to be of universal appeal, it is specific to what I do. So, I'm not expecting a huge up take.

Each of the shows will be accompanied with a blog post, some graphics and some real details of what I've been trying to explain.

I've grown really worried about when other companies host my content. Why? - Well you lose control over it, and occasionally the companies themselves go bust or vanish from the internet and when they do, they take your content with you.

I'd like the blog posts and content on my own website. But the audio hosting, RSS feed, and registration with the myriad of aggregates, that I'll pay for. Now the question is which service, and for how much.

I'm not looking to earn an income from this mini-series, at least not directly, but if it helps bring in some job offers, or associated consulting in the future then that would be awesome. May of the podcast hosts I've found offer an extra ability to earn cash for paying them an extra fee to "enable" that feature. These I think I can skip.

Service Selection

Libsyn looks great, and has been around for a long time, but they limit the amount of content you can upload in a month. Since my show is going to be front loaded for the first year, with loads of uploads (I hope) at the start, and then an archiving of past content, I don't think their plans are best suited for me. If my show was more topical and ran for years / many months as an ongoing show, then yes Libsyn would be a great fit. This looks like $15-$17 a month.

Buzzsprout also looks great. I don't like the free plan with the forced advertisements. I'd like this show to talk about how we conduct research, not force listeners to be subjected to adverts, particularly when I have no control over what those ads may be. So, I'm happy to pay, but again this service has a cap on content produced per month. This looks like $12 - $18 a month.

Audioboom This looks like a better match, unlimited episodes per month, 10k plays per month, all the XML and analytics done for you. You have to pay extra to earn a fee from the service. But that is something I can skip. This looks like $99 per year.

Podbean This looks like it would be a $9 per month option. With unlimited episodes per month, and includes the ability to use my own domain, that might be handy if I'd like to map it to my own website for the blog posts.

I'm picking...

The more established providers like Libsyn, Buzzsprout seem to be geared toward a professional constantly publishing podcast content creator. That isn't mean. Heck check out my publishing history for my blog, it's sporadic at best. This mini-series will be just that, a mini-series. I am happy to pay for the first year, get the show up and running this week, then look to move to another, cheaper option for archiving going forward.

With all of this in mind I'm going to go with Podbean.

Stage Fright

That was weird, entering the credit card information gave me stage fright. Now I've paid for it, I'm committed to getting my voice out there. Yikes.

Setting up the Podcast

Ohh interesting...

"Apple Podcasts Requirement: Artwork must be a minimum size of 1400 x 1400 pixels and a maximum size of 3000 x 3000 pixels, in JPEG or PNG format. "

I saw several sites tell me I needed the graphic, but I didn't realize it was because of an Apple restriction.

I selected "Business" and "Technology" as the core categories under which "Industrial Research" should be listed. Now for my brief description (1000 characters or less).

Static Site Generation

So, I have to admit, I let my geekiness get to me and indulged in creating a static markdown-based site for the podcast. You can find the very first version of it up and available here on mcwoods.online. I have normally used WordPress, but I found that it was such a pain to move the content. At one point I had three or four different WordPress sites on the go, and I wanted to merge the posts and content. That was such a pain, it took weeks and even now some of the content / images don't work. This particularly affects some of the older posts here on withbighiar.com.

I've been considering alternative blogging technologies and website creation tools for a while. A security researcher friend of mine suggested using a static site generator. Along with the issues of moving content between WordPress hosts, there is the constant battle to install and upgrade your WordPress installation. A static site generator would take care of a lot of these.

Letting go

I decided to try out Jekyll. You'll spot that I'm just using that original minima theme. I would love to do more work on customising the site, but I indulged on the geekiness of static site generation for long enough. It will have to do for now.

Correcting some mistakes

I've noticed that my pilot episode incorrectly attributes the music I've used as the ident, so time to fix that... then I can get the pilot up on Podbean!

One week to launch a Podcast

Sharing to Learn

The number of people who ask me "What is it you do?", "What do you mean by industrial research?" and "How do you do research in IT?" is huge. In fact, it is a question I think my Mum has been asking me since I started in industrial research.

Recently I've been thinking about how I do my role and what techniques I use. It has been quite cathartic and educational. Just writing down what I do has made me question it and try to improve it.

I've discovered that one of the best ways to learn is to share. So now I'd like to share what I've learnt, get some feedback on it, and hopefully help some fellow researchers along the way.

Launching a Podcast

So, this week I'm going to try to launch a podcast. There is a lot to get done to make this happen, and today is day one.

I know my own personality type well enough to know, I'll come up with great ideas, but seeing them through to conclusion requires a lot of effort, and my energy often wanes toward the end. So, to keep myself honest, I'm going to do a quick daily blog, one post each day this week. So far, I've:

  • Created my logo
  • Recorded a pilot episode
  • Scripted 3 more (very long) episodes
  • Started researching podcast hosts (and costs)

I don't expect my podcast to be the next "This American Life" or "Serial", hey industrial research is niche, but hopefully it will help.

Things I am learning

Logo Creation

Graphic design is hard and you do need a good bit of time to get it right. However, with a one-week time frame and already consuming 20% of that time today, I just need to get on with what I have. Let me know what you think.

My original plan was for a pixel art guy with a bubble above his head quoting a line from my son which seemed quite apt; "What, what?". Pixel art with vector graphics tools takes ages, and the dude I drew looked more like a bad squiggle. It has been decades since I last drew anything artistic and unfortunately it shows. I'm not going to show you that here... needless to say I could do with improving it.

Recording Audio and not fluffing it takes ages

Ok, I know we all talk, but when there is a microphone in front of me, I don't seem to be able to get 30 seconds down the line without fluffing something. The first pilot took about 1h 30min to record about 5 minutes of audio. Yikes I'd better work on that.

Industrial Research Podcast Logo

Creating an Ident is hard

The audio equivalent of a logo, a sound bite and branding. Man, that's tough. I opted for some music published under creative commons. It's a bit electronic, but hopefully enough of a contrast from my voice to keep folks awake! The full track is available on the FMA website, it is called "Bust This Bust That" by "Professor Kliq".

Tomorrow

That is about it for now. Tomorrow will see me trying to set up a website, re-editing the pilot, selecting a podcast hosting provider and attempting to get the very first, intro episode up.

The Second Waggle is Out !

It Snuck Out

They say software doesn't get released, it sneaks out.

I am pleased to say that Waggle My Mouse version 2 is now available on Gum Road ! This new release features a whole bunch of new features and re-written old ones.

You can find the new version on Waggle My Mouse available for purchase on Gum Road

As I previously mentioned I've provided a copy of the new version of Waggle to everyone who purchased a copy of the original version. Overall the feedback has been really positive. I'd had some good suggestions for improvement too, and I do plan to work on this for a future update. In the mean time Waggle is now available for every to check out and download.

New Features

The new version of Waggle now has:

  • A new icon; I got rid of my mouse cartoon guy. I liked him, but thought the new version could do with a new icon!
  • A new algorithm for detecting Waggle’s.
  • A new animation; when a Waggle is detected the circles will grow and animate, then shrink and eventually vanish when you slow the waggle down.
  • A start on boot; by default, Waggle will automatically start when you login to your machine, you can turn this off by right clicking the waggle arrow in the notification tray and selecting “about” – there is a new dialog box with a check box.
  • A new window display routine; In the old version the circles would sometimes appear hidden behind other windows. I’ve worked hard to try to fix this. It seems a whole lot more reliable now.

Waggle My Mouse 2.0

Creating an update

I created waggle a couple of years ago to scratch a personal itch, loosing my mouse pointer on one or more high definition screens. The application was fairly simple - want to find your mouse pointer? - Then shake it from side to side. The application would draw multicoloured circles around the mouse pointer. Once you stopped shaking the mouse the circles would vanish.

This led to me writing the TBool, a C++ temporal Boolean which can help with detecting the mouse shake.

I eventually released the first version of waggle. Several people downloaded the application. I reached out to a few and got some feedback on it. This led to me wanting to do an updated version. However the update got delayed a little. You see at the same time as trying to do the update I moved countries, changed continents, jobs, houses, cars, and got my kids into a new school. To say it was hectic would have been a complete understatement.

But this itch of wanting to do better has stayed with me, and now, I'm delighted to say that I have an update. This update provides the following:

  • Start the application when the user logs into their account
  • New waggle detection code
  • New animation code allowing circles to grow as you waggle and shrink when you stop
  • New window handling code to try to ensure that the circles always appear on top of every window on the screen
  • A new installer

I am sharing an early version of Waggle My Mouse 2.0 to some the folks who purchased the original copy, and I'm looking for feedback and ways in which I can improve it. Once I'm happy with it, I hope to provide to everyone who'd like a copy.

Finally, why circles and why those colours?

Well this is a question I have been asked about, well, the colours where picked when looking at my son's crayola crayon case. Thinking about the desktop, I didn't know what application would be running on the machine, nor what would be displayed, however it was important to show the mouse location. So thinking that the crayon case contained nearly every primary colour I used that as a starting point. You'll notice if you shake long enough nearly every colour available in crayon case will appear.

Happy Father’s Day

It was an idea that Dad and I had kicked about as a bit of thought experiment when I was in my late teens / early twenties. But there it was in real life. All set out in the shopping mall and implemented by a large clothing chain 20 years after we'd kicked the idea about. Funny. I had the sudden urge to tell him.

"Dad, you'll never guess what I just saw... "

Funny how loss can sneak up on you like that. But it made me smile, and remember the late night conversations we used to have. We'd solve all of the world's problems by 1am. The whiskey, served as was mandated, with just 3 blocks of ice always helped improve the quality of our ideas. But as the hours grew smaller the conversation would swap from planet defining moments of salvation to the more mundane; University, girlfriends, work.

I am very lucky; I've some awesome memories, and I've got the chance to create some more, this time with my family.

Happy Father's Day Dad, and to all the Dad's out there - let's go make some awesome memories, the whiskey, of course, is completely optional.

In Your Eye Steak

Nelson's Eye and the Steak

There is a restaurant in Cape Town that I first visited about 11 years ago now, it’s still there. It is called Nelson’s Eye. It has some of the best tasking steak I’ve had in quite some time. The steak had been marinated and I’ve been trying to figure out their sauce for quite some time.

This weekend I think I came close. Well, even if I didn’t, what I came up with was tasty, so I thought I’d share it with you.

What you’ll need

  • Olive oil
  • 25g of unsalted butter
  • Salt
  • Garlic Salt
  • The Steak
    For this we need some nice thick steaks, about 3.5cm – 4cm thick. I opted for some New York Strip
  • The Marinade
    This is a combination of:

    • Worcestershire sauce
    • Soy Sauce
    • Red wine
    • Beer (ale, not larger)

Marinade the Steaks

Add a good splash (almost cover the bottom of the dish) of Soy to a large dish, then add the same in again in Worcestershire sauce. Then pour in about ½ a glass of red wine, and a bottle of beer (330ml). I added the steak and rotated it once. I left it in for about 30 mins, but longer is always better and 2 hours would have been ideal.

Steak in Marinade
Steak in Marinade

Cooking the Steak and the Marinade

I cooked the steak and the Marinade separately and the recombined them.

Step 1: Prep the steak

I removed the steak and placed it on a plate, covering it with olive oil and light sprinkling of salt to season.

Step 2: The Marinade Prep

I transferred the marinade to a sauce pan and added the butter, a dash more salt, and some of the garlic salt to it. I placed it on a low heat. This should cook any of the blood from the steak and melt the butter. Once this is done keep the marinade warm, but you don’t need to boil it.

Step 3: Cook the Steak

Placed the Steak in a high sided pan and seared each surface, paying special attention to the fat at the edges. I had the heat up high for this. Once the steak is starting to turn a good colour and the fat is browned, lower the heat.

Step 4: Add the marinade to the steak

I added about ½ the marinade to the steak, enough so it is sitting in the pan, covering about 1 cm of the steak. Then I put the lid of the pan and left the steak to cook, turning occasionally, and adding more marinade as needed. I let the steak cook until it seemed to right for us.

The finished product
The finished product

Served it with salad, potatoes and asparagus… ohh and more red wine…