I had no idea that it was so easy to get VOIP chocolate in my Android peanut butter, but, thanks in part to a helpful old post from Dan Misener, I found that it is.

Longtime readers will recall that my office phone line (+1 902 892-2556) has, for many years, been a virtual phone number through Vitelity.

While most of my office communication these days is over email, Slack, Skype or mobile phone, I still get called from time to time on the office line and, 1 or 2 times out of 10, the calls are not the likes of  “can I speak to the person responsible for your office supply purchasing.”

I’ve been routing Vitelity calls through the Telephone app on my MacBook, with voicemail going to my email via Vitelity’s voicemail-to-email service.

It turns out that there’s a SIP client baked right into my Android phone; here are the steps to set it up for yourself:

  1. On Vitelity’s VOIP site, create a new “sub-account” for the Android phone, with its own username and password.
  2. In the “Phone” app, navigate to Settings > Calls > Calling accounts > SIP accounts.
  3. Click the “+” icon to add a new SIP account.
  4. For Username, enter the “Login” value for your newly-created Vitelity sub-account.
  5. For Password, enter the “Password” value for your newly-created Vitelity sub-account.
  6. For Server, enter sip1.vitelity.net.
  7. Navigate one step back, to the Calling accounts screen, and switch the Receive incoming calls setting on.

At this point, if all went according to plan, you should see “Receiving calls” under the name of the SIP account you created on the phone. You can now go back to Vitelity’s website, and change the routing for any incoming number to go to this new client.

Everything went without a hitch for me; here’s what it looks like on my Android phone if I call my office number from my desktop (the office calling the office, in other words):

Screen Shot of my Android Phone receiving a SIP call

I accompanied [[Catherine]] to an appointment with a physiotherapist at the Queen Elizabeth Hospital on Friday.

As we walked from the waiting room down to her office, the physio turned, introduced herself to me, and asked me my name.

I told her.

And then I and thanked her for asking.

I’ve been to a lot of medical appointments with Catherine over the two and a half years since her metastatic breast cancer diagnosis, and this was, if memory serves, the first time that a doctor, nurse or other professional treated me as anything other than “that guy sitting over in the corner.”

I’m only a bit player in this cancer drama, and I realize that health professionals’ most precious and delicate commodity is human connection; they must, of necessity, ration it out.

But it was awfully nice to feel included, and welcome in the room. I wish it happened more often.

Oliver designed a sign to carry for this morning’s Silent Walk in Solidarity with Muslim Communities in downtown Charlottetown.

I gave Oliver my old Moto G last fall so that he could listen to podcasts while falling asleep. This worked well until he realized he could also watch YouTube videos on it, and ended up staying up way, way too late.

What to do?

Oliver found Otto Radio and we agreed he’d leave the phone downstairs, beaming audio to his bedroom upstairs to a speaker via Bluetooth.

It’s all worked out remarkably well.

,

We receive up to $6,600 per year from the PEI Department of Education, under the School-age Autism funding program, to help cover the cost of a “community aide” for Oliver. And because of the way the program is structured, we’re expected to treat the people we hire as full-fledged employees as far as Canada Revenue is concerned. This means that every week I need to calculate their salary based on the number of hours they’ve worked, and then use the government’s Payroll Deductions Online Calculator to calculate the amount of Canada Pension Plan, Employment Insurance premiums, and federal and provincial income tax to deduct from that and remit.

The monotonous thing about this is that the inputs to this process are three things–salary, vacation pay, and date–and the outputs are four things–federal tax, provincial tax, CPP and EI. But because the government’s calculator has to work for commissioned salespeople, and clergy members, and people paid bi-weekly, and people paying union dues, every week I’m forced to wade through myriad options to put those three inputs in and get those four inputs out.

Fortunately, though, the calculator is a web application, and a relatively simple old-school one at that, meaning that it’s easy to automate.

So I hacked together a crude PHP application to do exactly that.

As a result, I can now, from the command line on my Mac, do this:

# php ./pdoc.php -d 2017-02-03 -i 180 -v 7.20
Array
(
    [federalTax] => 0.00
    [provincialTax] => 2.39
    [CPP] => 5.94
    [EI] => 3.05
)

I pass the calculation date (2017-02-03), the income ($180) and the vacation pay ($7.20) to the script as options, and it automates the process of walking through the website, passing parameters as required to each step and then scraping the values out of the final confirmation page’s HTML.

The code isn’t pretty (or documented), but it will, I think, be useful to others who want to automate this same process.

The bureaucratic requirement to do this, by the way, is something that many families receiving this funding find onerous to the point of not applying for it; I’m currently trying to identify resources that would allow families to be relieved of this burden while, at the same time, still meeting their remittance obligations. If you have any ideas, please let me know.

Everything old is new again.

Remember when the iPhone first launched, without any support for third-party apps. The solution from Apple? Web apps, running in the browser.

Here’s what Steve Jobs said then:

The full Safari engine is inside of iPhone. And so, you can write amazing Web 2.0 and Ajax apps that look exactly and behave exactly like apps on the iPhone. And these apps can integrate perfectly with iPhone services. They can make a call, they can send an email, they can look up a location on Google Maps.

And guess what? There’s no SDK that you need! You’ve got everything you need if you know how to write apps using the most modern web standards to write amazing apps for the iPhone today. So developers, we think we’ve got a very sweet story for you. You can begin building your iPhone apps today.

Eventually Apple backed away from web apps, the world went “native apps,” and the conventional wisdom was that web apps were old-school.

A decade later, and web apps are back, with the push this time, ironically, coming from Google and its focus on the newly-rebranded progressive web apps.

Which are really just “web apps” as we used to know and love them, with some additional sauce that allow them to be more tightly integrated into the OS and a new “service worker” features in the browser that make things like caching easier.

Jeremy Keith started his own exploration of service workers two years ago, documenting his progress as he went along, and this proved, for me, a useful starting point for my own work in this regard.  Google’s own documentation is a good, albeit Chrome and Android-specific, supplement to this.

And that’s an important point to highlight, from two directions: a lot of what’s interesting about progressive web apps, at least right now, is interesting only on Android devices; apparently there’s a long-term plan to introduce service workers into mobile Safari at some point, but it’s not there right now. But, in the end, that’s okay, because the “progressive” part means “these apps will still work in any old browser.”

My own playground for experimenting is the pei.consuming.ca site, a simple bar graph with live data on Prince Edward Island’s electricity load and generation. I’ve added primitive service worker support to that site, as well as a manifest.json that contains the metadata required to support the “add to home screen” operation on Android.

On an Android phone with a recent Chrome, with an additional setting turned on, here’s what that “add to home screen” process looks like in its newly-improve fashion:

First, I open up Chrome and enter the URL pei.consuming.ca:

Screen shot of Chrome opening pei.consuming.ca

The site loads in the browser as expected, and looks like this:

Screen shot of pei.consuming.ca in Chrome on a mobile device

If I then touch the “three dots” menu in the top-right corner of Chrome and select “Add to home screen,” there’s a new style dialog that looks like this:

Screen shot showing the newly-designed Add to Home Screen dialog on Chrome on Android

The icon displayed in that dialog is the one I defined in the manifest.json file, and the title is the short_name defined there (this is a great addition, as real estate for home screen app names is often a lot shorter than you want to use for a website title). Notice, as well, the new “Open” button; tap that and I see the “app” version of the site:

The app version of pei.consuming.ca on Android

There’s no difference between this and the “browser version” other than the absence of an address bar; indeed, this is the “browser version” inasmuch as the same Chrome that is “the browser” is also rendering the app.

Another thing that’s recently been updated is that web apps added to the home screen in this way have been elevated to become “first order” apps within the OS. This means that they not only appear as icons on the home screen:

Android screen shot showing web app saved to home screen

they also appear in the Android “app drawer” along with all other apps:

Android screen shot showing web app in the Android app drawer

And they appear in the “Apps” section of the Android settings, again like any other app:

Android screen shot showing a web app in the settings

All this–and here’s that “progressive” aspect–this “app” is still just a regular old website that, for example, loads just fine in Safari on my MacBook Air:

Screen Shot of Safari loading pei.consuming.ca on a Mac

And, as one has always been able to do, I can put it on the home screen of an iOS device too:

Screen shot of iOS add-to-home-screen process for this web app

I’m happy to see Google putting some effort here, as it’s been my experience that an open web is a better web, and the lower the barrier to entry for app-creation the better. We’ve all spent enough time buried inside the labyrinth of Cordova (née PhoneGap) and its mess of plugins (followed by the equally labyrinthine process of putting web-apps-wrapped-in-native-clothing into the various app stores) to know there had to be a better way.

I hope that, at least in part, this is that better way.

While I’m talking about good things to watch on Netflix, here’s another.

I’m late to the party on this, I realize, but Black Mirror is really, really good. I was initially put off watching it because of the title and the branding: I’d assumed it was some sort of horror series involving slashing and mirrors. But then [[Oliver]] revealed he’d been watching it, and watching a horror series is the last thing on earth he would do, so I dipped in.

Hard to do justice in words to what it is, but suffice to say: each episode is a completely self-contained story; each story concerns some aspect of the not-too-distance future and how technology might change how we live and work; the production values, especially the depictions of screens and devices, are very high.

The good thing about being late to the party is that there are three seasons waiting for me to stream.

The late nite TV shows of Europe have created a federation of Trump mockery.

Making my way through both Trapped and Lava Field, Icelandic crime dramas streaming on Netflix, I’ve so far experienced five times more fictional Icelandic murders than the single real murder in Iceland last year.

Both series are compelling, especially Trapped, which I loved for its cast, landscape and plot twists.

Four years ago I was an early adopter of the effort to build a mobile operating system on top of Firefox; as part of this effort, I purchased a Firefox OS-powered Geeksphone Peak in May of 2013 and, the next year, upgraded to a Geeksphone Revolution.

There seemed to be such promise in a non-iOS, non-Android mobile OS, and Mozilla made great progress toward this.

But it didn’t work out: in 2015 Mozilla abandoned the effort, and Geeksphone has faded out of existence. The Peak and the Revolution are sitting in my museum of dead phones.

After seeking solace in the arms of a Moto G for a couple of years–a generally happy and productive time–I opted to back another dark horse and purchased a Nextbit Robin, a crowdsourced Android-based phone with an intriguing design and a promise of a unique “we’ll dump overflow into the cloud so you don’t need to manage” storage promise.

I’ve been using the Robin for the past seven months. It’s proved itself a serviceable, mostly-snappy Android phone. The cloud features haven’t proved useful for me at all: their web-based photo management site is primitive and, in the end, I seldom bump up against the 32 GB internal memory anyway. The promise of better community engagement that the Kickstarter origins suggested never really materialized: there are discussion forums, which is something, but seldom is there much useful information there. Perhaps most frustratingly on a day-to-day basis, the camera and gallery apps Nextbit includes have always been pale imitations of what’s available elsewhere.

And then, this week, the announcement that, like Geeksphone before it, Nextbit is shutting down.

Perhaps the promise of the artisanal mobile phone maker is one that simply cannot be realized in a sustainable way; perhaps these devices are simply too complex to expect a small team to be able to design, build, sell, distribute, manage firmware for, and so on. In any case, I’m not likely to buy a phone from Novterinity or Cellphotophia any time soon, and, when my Robin begins to degrade, will likely need to invest some time in understanding the world of commodity iOS or Android phones to find a replacement.

Either that, or just go back to my Nokia N70.

About This Blog

Photo of Peter RukavinaI am . I am a writer, letterpress printer, and a curious person.

To learn more about me, read my /nowlook at my bio, read presentations and speeches I’ve written, or get in touch (peter@rukavina.net is the quickest way). You can subscribe to an RSS feed of posts, an RSS feed of comments, or receive a daily digests of posts by email.

Search