TechDistortion

Hello and welcome to my online works. Beyond my full-time job as a professional engineer, I have created and participated in several podcasts most notably Pragmatic.

I’ve also created a few projects and I also write longer-form articles from time to time. In addition I’ve been playing with comic strips recently with Enginerd.

Thanks for stopping by.

Silent Journey

11th July 2015

We speak and we hear and we rely on our sense of hearing a great deal for communicating between ourselves and others. In the context of attracting the attention of other people, visually waving or jumping up and down will also work beyond yelling and screaming, but if we want to keep our signals discrete how best to do this?

In the theatre, a restaurant, a lecture, a business meeting, a gentle tap on the shoulder doesn’t disturb other people audibly and is barely visually noticable, but to do that you need to be physically next to that person. What if there was a device that you could wear that allowed other people to inaudibly tap you to get your attention but didn’t have to be in the same room?

The telephone started all of this notification stress. When it rang, large bells were hit by a hammer driven by an eletromagnet to get your attention. You could be on the other side of the house, so it had to be loud. Before long it was mobile devices, mobile phones, and of course the pager. Mobile devices didn’t have to be as loud (since it was always on your person) but bringing them into places where sound-making devices had never been taken before created hostility, frustration and resentment in social or business groups.

Vibrate to the rescue…sort of…

Manufacturers began introducing Microdrives into their mobile devices to provide a vibration when the device was not in sight. Visual indications alone (flashing lights when there is an incoming call/message) only work if the device is visible when not in use and aren’t enough. Relying on our sense of touch seems like the best solution.

Early vibration motors were very subtle but a problem became evident: our mobile devices often sit loosly in our clothes pockets, belt clips, handbags etc. In order to be certain the device got the users attention, they had to vibrate a significant amount and therefore vibration grew to be significant. Adjusting the level of vibration on the fly was technically difficult and became non-adjustable, being either fully on or fully off. That would be fine for discretely getting someones attention except for one problem.

They made noise

The problem is that making a vibration motor that used only small amounts of power, was light and vibrated vigorously enough to overcome the unreliable body contact problem had made the vibration function noticably audible. In order to overcome this, and be able to truly discretely notify someone we need a device that attaches to the body at all times. We need a wearable device. That way, the vibration function could be turned far down to a point at which it was essentially silent.

The Jawbone UP in late 2011 introduce a vibrating alarm notifier, followed by the FitBit One in late 2012. At that point the notification was restricted to alarms with no integration with smartphone notifications.

That came in late 2013 and it wasn’t very reliable. Around this time some Android Wear devices and the Pebble also were starting to integrate haptic notifications with smartphones. I wanted these devices back then. However I was heavily invested in the Apple Ecosystem at that point (still am) and as much as these devices were tempting to me, they did not integrate well with Apple devices.

In order to integrate as reliably and completely as possible with an Apple Smartphone, Apple would need to support those devices at the operating system level, or make their own wearable device. I decided to wait for that, just as I had done with the iPhone before it (I have never owned an iPod).

Apple Watch

Finally following rumour after rumour Apple announced the Apple Watch in September 2014, but released it for sale online only in late April. I visited a store to try one at that time as I was most interested in the haptic notifications. I was suitable impressed - it’s what I had been waiting for and once finances aligned on the 21st of June I purchased my 42mm Apple Sport Watch and have been wearing it now for three weeks.

The "Taptic Engine" as Apple calls it, is simply a linear actuator which makes significantly less noise than a traditional vibration motor. It is effectively silent on it’s lowest setting and unless your ear is within an inch of the watch, it’s practically silent even on its maximum setting (so-called Prominent Haptic).

The iFixIt Teardown Step 14 shows the linear actuator in all its glory. Because it’s attached to your wrist (wear your watch so it’s snug and doesn’t slide around and you’ll only need the gentlest intensity setting) and because it’s linear, you can more easily adjust the intensity of the tap sensation to suit your personal preferences.

How I Set Up My Notifications Post-Watch

I downloaded a silent ringtone and set my iPhone volume off. Every other sound in the Settings->Sounds is off, actually. Initially I also turned off Sounds in Notification Center for 3rd party apps like Tweetbot, eBay and so on, however I found out that if you do that the notifications won’t go through to the Apple Watch AT ALL (correct as per v1.0.1 of the watchOS). In the Apple Watch iPhone app I systematically went through every account and App on the watch and set a custom notification setting for it, turning off the "Sound" option for each one. Finally the watch Sound & Haptic settings - audio off and the lightest possible Haptic setting.

Mail Settings in Apple Watch iPhone App iPhone Sound Settings Apple Watch Sounds & Haptic Settings

Beyond this I also moved all of my alarms from my iPhone to the Watch only, since I’m always wearing it when I’m not charging it. I forward my work mobile and my work desk phone to my iPhone 6+ already, so they never ring either. I’ve muted my iPad and only turn sound up on my Macbook Air when I’m listening to music or watching video.

Charging Habits

The big downside of a smart watch is the need to charge it every day or every few days depending on the model. Clearly this is the tradeoff we make over a standard watch for all the additional functionality a smartwatch can provide us. Most people are charging their watches overnight, each and every day. I don’t do that.

I wear my Apple Watch all day and night when I’m working the following day and use the Taptic alarm to wake me in the morning. No longer do I wake up to a loud startling noise. The tapping is enough to rouse me even from a deep sleep and having done it reliably for several weeks now it hasn’t failed me once.

It only takes 90 minutes for a full charge from flat and most mornings the watch still has a residual 20-30% charge which takes only 1 hour to top up. Hence on a work day I come in to work and sit at my desk for the first hour of the day, going through EMails, answering queries, preparing for meetings etc. During that time I’m sitting in front of my laptop and I have all of the notifications in front of me. Discreteness isn’t required when you’re looking at a screen.

On weekends I don’t (generally) need to wake up at 4:30am and thus on those occasions I charge the watch overnight. In future I have no doubt that Apple will add sleep monitoring to the watch. When that happens, that information will be a nice bonus to track my sleeping habits.

Not Exactly Misophonic

Retrospectively I’ve wondered if I was suffering from a mild case of Misophonia but that’s probably an extreme diagnosis. Our brains learn to associate emotions with sounds and when an alarm noise is heard we associate inconvenience and frustration with that noise. It’s especially noticable when the alert sound you’ve used as your alarm clock sound for years is being used by the person sitting next to you as their phone ringtone.

Over the years I’ve built up a learned memory of emotional reactions to the many different alarm and ring tones I’ve used over the years. Like the music we hear at a loved ones funeral, it’s hard to listen to those sounds again without triggering some emotional response. It’s hard to put a dollar value on how much less stressed I feel now that the notification noises are no longer part of my daily life.

Gone are the buzzes, beeps, alarms, noises and musical ringtones. No longer does my heart skip a beat when a notification alert sounds in the next cubicle, someone elses pocket, or from the next room because I know that notification can’t be for me. Ever.

I’ve come to realise that with notifications, it’s not what the Apple Watch adds, it’s what it subtracts that makes the biggest difference.

For me at least, my Apple Watch journey has been a silent journey. One that has made me fall in love with this device so much more than I thought possible.

Balance

8th July 2015

Ingest, Process, Expound (IPE) is how I like to think about the process of content creation. We ingest information through our senses, process that which we have ingested and then we have a choice about if and how to expound and express to others our thoughts on those topics.

The extent to which we each proportionate these components varies from person to person and there’s no right or wrong answer in the absolute, but each of us at different times of our lives should be cognisant of the need to balance these activities.

For example my wife and many others I know are content to read and read and read. Absorbing and ingesting so much information but after processing it all, choose to expound that information verbally only to a handful of people close to them. (Nudge nudge to my wife: start a blog please!) That works well for her and many others and that’s fine. Honestly it’s a relatively traditional approach too.

To contrast, I also follow many people on Twitter that read Apple focused articles written by Apple users that don’t use other platforms (Google, Microsoft etc) leading to misleading conclusions and when they expound they create nothing more than republished opinions, rather than processed, refined, original conclusions.

Before the Internet we were mostly stuck with one newspaper, a handful of local radio stations and a more insular selection of information to ingest. Beyond ingestion, if you wanted to expound your thoughts to a wider audience there were even more scarce options available.

Given the former no longer applies why aren’t people seeking out wider, more diverse information to educate themselves and push the boundaries of their knowledge?

Not only that it’s become possible to expound your thoughts in blogs, and podcasts that can potentially reach hundreds, thousands or tens of thousands of people.

More sources, more voices, more choices: but it’s up to you what and how you ingest and expound.

Questions to ask yourself:

  • Am I ingesting too much information, and am hence unable to process it well?
  • Am I ingesting too much of the same information and losing a broader perspective?
  • Am I ingesting enough information to process and expound a useful, independent conclusion?
  • Am I taking enough time to parse and process the information to expound a useful conclusion?
  • Am I expounding my thoughts in the right way, on the right medium and to the right audience?

For me personally, I’ve taken time away from reading Twitter, Apple, Blogs and the like and I feel better for the break. I needed to rebalance for a while and it’s helped return some badly needed perspective. I’ve reshuffled the sites and blogs I read, the podcasts I listen to and broadened the information I’m ingesting.

That’s great but soon it’ll be time to get back to expounding again, but this time I’ll be focusing on the audience and method that most people care about, at least as it applies to me.

My words of caution are thus: Reading or listening to the same people, the same sources of information year in, year out, then fast-forwarding through the processing stage and expounding hastily via a blog or a podcast feels comfortable; like a warm glove in winter. It’s nice, it slips on easily, it can be popular to a niche crowd, but is it truly balanced? Useful? Interesting? Does it add value?

I can’t tell you what the right balance is though, because you have to find the right balance for you. Balance matters. In fact it matters far more than you might think.

Conditional Blocks in Partials

12th June 2015

Tip

If you’re using a partial multiple times on a single page, keep the number of conditional code blocks within that partial to a minimum.

Rationale

We all love partials. You know, those things where in your theme where you just call:

{{ theme:partial src="mypartialname" }}

But if you’re going to place them in a pages:listing or entries:listing and break out their functionality into smaller pieces that are lovely and modular that’s fine, until you end up with dozens of iterations of that partial on the page.

That’s the point though isn’t it? Well…yes. But the trap is to try and have a "god-partial" that is essentially an overloaded function that does layout for every flavour of that partial there is. Seems like it could be a good idea - you know - keep all of that object code in one place right? Well…no.

What am I jibbering on about? An example: (OPTION A)

{{ if { fileexists file=_myfile } }}<img src="{{ _myfile }}" alt="{{ name }}">
{{ else }}<img src="/assets/_myfile" alt="{{ name }}">
{{ endif }}
<div class="mytablelinks">
    {{ if _twitter|_facebook|_linkedin|_website }}<center>{{ endif }}
    {{ if _twitter }}<a href="https://twitter.com/{{ _twitter }}" title="{{ name }} on Twitter"><i style="font-size:38px;" class="fa fa-twitter-square"></i></a>{{ endif }}
    {{ if _facebook }}<a href="{{ _facebook }}" title="{{ name }} on Facebook"><i style="font-size:38px;" class="fa fa-facebook-square"></i></a>{{ endif }}
    {{ if _linkedin }}<a href="{{ _linkedin }}" title="{{ name }} on LinkedIn"><i style="font-size:38px;" class="fa fa-linkedin-square"></i></a>{{ endif }}
    {{ if _website }}<a href="{{ _website }}" title="{{ name }}'s Website"><i style="font-size:38px;" class="fa fa-globe"></i></a>{{ endif }}
    {{ if _twitter|_facebook|_linkedin|_website }}</center><hr class="mytable">{{ endif }}
    {{ content }}
</div>
{{ if false }}
    {{ mymeld:people person="{ name }" }}
        {{ if first }}
            <div>
                <hr class="peopletable">{{ total_results }} episode{{ if total_results > 1 }}s{{ endif }}:<br>
        {{ endif }}
        <a href="{{ url }}">{{ segment_1|title }} {{ title }}</a>{{ if !last }}<br>{{ endif }}
        {{ if last }}
            </div>
        {{ endif }}
    {{ /mymeld:people }}
{{ endif }}

Okay so that looks alright enough until we try to get clever like below (and I’m not repeating all that code again): (OPTION B)

{{ if condition="firstflavour" }}
    {{ if { fileexists file=_myfile } }}<img src="{{ _myfile }}" alt="{{ name }}">
    {{ else }}<img src="/assets/_myfile" alt="{{ name }}">
    {{ endif }}
    <div class="mytablelinks">
        BLAH BLAH THE CODE UP THERE BLAH BLAH YOU'VE SEEN IT ALREADY    
    </div>
    {{ if false }}
        {{ mymeld:people person="{ name }" }}
            MORE BLAH BLAH CODE YEAH WHATEVER
        {{ /mymeld:people }}
    {{ endif }}
{{ endif }}

{{ if condition="secondflavour" }}
    MOSTLY THE SAME AS ABOVE BUT WITH TWEAKS HERE AND THERE YOU KNOW BUT USING SAME VARIABLES
{{ endif }}

{{ if condition="thirdflavour" }}
    MOSTLY THE SAME AS THE 2ND ONE BUT WITH MORE TWEAKS HERE AND THERE YOU KNOW BUT USING SAME VARIABLES
{{ endif }}

The performance difference on a server will be better (you’d hope under moderate load conditions for page regeneration) but measured on my 2012 MacBook Air i7 2GHz running MAMP with a zippy SSD the improvement in rendering time from Option A to Option B was…

  • Option B: 28.7sec
  • Option A: 2.4sec
  • 26.3 SECONDS FASTER

The ulimate solution was to split the flavours into three partial themes and the code is no longer in one place.

So instead of this…

{{ theme:partial src="mypartialname" condition="firstflavour" }}
{{ theme:partial src="mypartialname" condition="secondflavour" }}
{{ theme:partial src="mypartialname" condition="thirdflavour" }}

…it looks like this instead:

{{ theme:partial src="mypartialnamefirstflavour" }}
{{ theme:partial src="mypartialnamesecondflavour" }}
{{ theme:partial src="mypartialnamethirdflavour" }}

The lesson is, only call what you need to call in your partial and keep the logic as straight-forward as you can. Unless you want to write your own PHP Addon, which can save even more time depending on what you’re trying to accomplish.

Thanks To

The Statamic Debug Panel only introduced in v1.7.9 as it allowed me to track down the performance suckers in my website.