API

Looking forward to seeing how this app, Numerly, turns out. Hoping it will be a great successor to ill-fated Numerous. Will be a pity to no longer rely on my custom number dashboards in Google Sheets (something I really should have written a blog about a long time ago).

Numerly

With Numerly, the default channel when creating a number is called “Create Your Own.” The value for these types of numbers are only changed when you manually change them. You might use this to keep track of your child’s allowance, or maybe to keep a tally of calories you’ve consumed today.

You can also update these types of numbers with the API. There are three endpoints you can call to set, increment, or decrement a number. Each of these endpoints occur over secure HTTPS as a POST request using your APIKEY and refid.

The URL used in these examples might not be the final URL when the app is launched. I’m currently using Heroku as a SaaS provider and I don’t plan to change; however, the URL might change to be something a bit more official.

Authorization

Each API call requires an HTTP header named APIKEY whose value is provided from…

View original post 247 more words

Is it time to abandon the Mac and turn to the dark side, a.k.a. Windows?

I am currently looking to buy a new laptop.  Being an Apple user with a MacBook Pro I am primarily looking at a new MacBook Pro.  But there is no way I am forking out an extra ~£300 for a model with a Douchebar.  So I have been looking into the 2015 model that was reintroduced to the Apple Store alongside the Touchbar models.

There is no way I am forking out an extra ~£300 for a model with a Douchebar

Here are the specific problems that I am facing.  Right before the new models hit the store there was a 15 inch model available on the refurbished store that is now no longer available.  That model had a 2.5 GHz Core i7, 512 GB SSD and a discrete graphics card.  Its price was £1859.  The 2015 model now available in the main store has not had any internal upgrades since it was released in May 2015 (yes that includes the 4ᵀᴴ generation Core i7 processor (4870HQ) that was already old at the time of its initial release!).  The starting specification for the currently available model is 2.2 GHz Core i7, 256 GB SSD and no discrete graphics.  Both have 16 GB RAM and PCIe flash storage.  It is possible to configure a new Mac with a 2.5 GHz processor and 500 GB SSD, but you cannot have a discrete graphics card in it.

mbp15ex-gallery1-201610.jpeg

The details of the refurbished MacBook are still available to me in my Apple Store account after I added it as a favourite.  Here is a link to a printout from the store downloadable as a PDF: https://www.evernote.com/l/AGQmziGrwr5AzZyNw6z5efiWEIsMGww3VIc  [Accessed on 17 December 2016].

Whatever the configuration the machine is going to be significantly less powerful in comparison to the refurbished option due to the missing discrete graphics card.  But that is only part of the story.  The starting price of the “new” 2.2 GHz model with 256 GB SSD is more expensive at £1899!  If you want to match the spec of the refurbished model, minus the discrete graphics card, it’ll be a huge £2169.  Just to be clear that this is not Brexit related inflation, the price of the refurbished Mac is from November which was after Apple increased their prices by about 20% in the UK post Brexit.

This is not Brexit related inflation

Therefore, Apple arbitrarily decided in November that it would charge its customers an additional £40 for a huge reduction in power.  There is no meaningful difference between a refurbished model the same model bought new.  Both have a 12 month warranty with the option of extending that to 3 years under AppleCare.  Apple had already decided that they would accept £1859 for their mid-tier 15 inch model with discrete graphics card.  The price increase is therefore an entirely obnoxious move by Apple and sadly reinforces the notion that everything is structured by Apple to maximise profit at the expense of customer satisfaction.  This is something that I would say is a relatively new priority in my experience.

Everything is structured by Apple to maximise profit at the expense of customer satisfaction

If that refurbished model were still available to buy I’d probably not be in the position that I’m in now: contemplating my move to Windows.  I am fairly heavily invested in macOS and iOS but I don’t like the feeling that Apple are trying to manipulate people to spend a lot more money than is necessary.  Especially if it means them forcing people to buy something they don’t want – like the Douchebar at an additional £300.   There is an additional reason for me saying this.

Before considering the purchase of the MacBook I did some research into competing laptops and what I found really sets Apple’s offering in an exceptionally bad light.  Whereas in the past when I have looked at comparative laptops I have found prices for comparable Windows laptops* to be similar to Apple’s prices, the new top spec Dell XPS is a beast in comparison to the MacBook Pro.  It has a 15 inch 4K monitor, oh and it is a touchscreen monitor!  It has a proper professional grade graphics processor.  It has a sixth generation Core i7 processor.  16 GB RAM (expandable to 32 GB in the unlikely event you really need it), and 512 GB PCIe SSD.  The enclosure is machined aluminium with a carbon fibre interior at a maximum thickness of  17 mm (just 2 mm more than the 2016 MBP).  The glass is scratch resistant Corning® Gorilla® Glass.  If the 3 year extended warranty is included (with on site support) the Dell XPS will set you back £1960; it’s £1749 without the extended warranty.

What you see is that Dell’s laptop that competes directly with the 2016 MacBook Pros is way, way cheaper than the “comparable” 2015 MacBook Pro Apple are trying to shift.  It is more powerful and more functional than the 2016 models: Apple offer consumer not pro grade graphics cards for more money, Apple offer a thin strip of touchscreen for more money.

img_0004
15″ Dell XPS

It is disappointing for me to be in this position.  I could really do with laptop with more screen real estate.  I’ve long believed that Apple make great hardware, but Apple want to charge me a hefty price tag for a 15 inch screen and they also want to shaft me on the interior.  On the other hand Dell and Lenovo are offering some powerful and innovative alternatives (the Lenovo Yoga 710 2 in 1 is a great machine which is considerably cheaper than a MBP).  No wonder then that creative professionals are jumping ship to Windows.

fullsizeoutput_38c7.jpeg
14″ Lenovo Yoga 710

I will not buy a laptop with a Douchebar.  I hate it, I believe it is a gimmick.  If Apple consolidate their position on the Touchbar in future iterations of the MacBook Pro lineup I will have no choice but to abandon ship then.  So am I delaying the inevitable anyway by even considering sticking with them for another 4–5 years by buying a MacBook now?

Am I delaying the inevitable anyway?

It was also disappointing that a salesperson in an Apple Store could not give me a better reason to choose the MacBook over the Dell XPS other than: “It is a matter of preference.”  After I detailed all of the above problems with Apple’s pricing of the 2015 model, their failure to update the components and the lack of a discrete graphics card and the problem I have with the Touchbar she agreed with me that Apple could not compete with the alternative I was considering.

I like my existing workflows in macOS and iOS.  But the question for me is do I want to maintain those workflows by paying such a high premium?  Or is it time to start rebuilding new workflows in Windows?


* Not just in terms of headline specification but internal components and well constructed enclosure.  It has always been possible to get more powerful components in Windows PCs but the enclosures have not been as good.

#TouchBar a Touch of Genius? Er no.

The long term story of the Touch Bar will be, I believe, that it is a productivity killer.  This is certainly true whilst it is a novel technology with limited support from apps.  But I think it will likely be true in the future too regardless of app support.  This is for two reasons…
In the short term it will be impossible to use the Touch Bar without looking at the bar to see what buttons are available and where they are.  In the long term that may also be true because software keys can’t be navigated by touch like physical keys can.  So people who use the keyboard extensively in their workflows will be hindered by the removal of physical function keys as they will have to continually move their line of sight from their screens to the Touch Bar.
Even if someone can train themselves to use some functions without shifting visual focus to the Touch Bar there are other functions that require visual focus.  For example, if you are in a word processing app part of the Touch Bar becomes word suggestions (like on iOS).  You have to look at the word suggestions in order to check if you want to use any of them.  Given the signalled mass migration of tech. professionals away from Macs on the back of the unveiling of the new MacBook Pros, most people using them will be people using regular word processing apps.  So this will be a big part of the average user experience.
One thing that almost certainly won’t be corrected is the problem of the contextual nature of the Touch Bar.  A different set of controls is displayed depending on which app is being used.  On the one hand that is great for having dynamic controls that are appropriate to the app you are currently using.  On the other hand you lose the global nature of function keys.  A great example of useful global functionality is for music control.  People often listen to music whilst doing other things on their laptops – like write documents, spreadsheets, or code.  So you put some music on and continue writing your document.  Then you want to skip a track, or change the volume.  You can no longer access the required controls immediately because you are in the wrong context for those buttons.  You need to pause your typing, switch back to Spotify or iTunes to get those controls, then change the track or volume, then switch back to your writing.  It would have been difficult for Apple to make this process more intrusive.
Apple have released a laptop with a new component that inflated the cost by a few hundred dollars and simultaneously eats into people’s workflows so that they’re less productive and therefore less able to afford this expensive kit (hyperbole 🙂
I cannot think why Apple do something useful like make a new top end laptop with a full touch screen?  Is anyone impressed with the Touch Bar?  If you are add a comment here or on Google Plus.  If you’re not you can add a comment too 🙂

The Ridiculous and Greedy Limitations of Watching Movies in iTunes

If you want an excellent example of a ridiculous limitation imposed on customers by Apple to force them to spend more money look no further than the Lightning to HDMI adapter. You’d think that you could hook your iPhone / iPad up to a TV and stream your movie rentals from iTunes to your TV via HDMI. But no, you cannot. If you try to a message will pop up on the TV: “This screen is not authorised to play protected content.”

If you want to stream a movie from iTunes on your iOS device to a TV you need to buy an Apple TV. Let’s be clear, this is not a technological limitation; it could be done but Apple don’t want users to be able to do this without paying for more hardware. You can mirror your iPad screen to a TV via HDMI doing any number of things, including watching some TV shows (e.g. BBC shows) from iTunes, but you cannot stream movies and other TV shows.

So Apple have forced their customers into a situation in which they’d need to spend another £100 to buy the Apple TV so they can stream movies and TV shows. There is no need for this approach, it is nothing more than greed. It doesn’t protect against piracy or illegal movie displays to large audiences. If someone just needs HDMI output in order to pirate a movie they can achieve that from the Apple TV. And there is nothing to stop someone hooking their Apple TV up to a projector to show a movie to a large audience.

The fact that Apple sell a Lightning to HDMI adapter at all whilst preventing this usage scenario is ridiculous. Therefore they will lose customers, like me, who would rent movies through iTunes but who will now prefer other platforms because they can stream without an Apple TV. Platforms like Amazon Video. I have a Prime account already and so the added benefit of TV shows and movies on top of the free one day delivery is a bonus.

Amazon provides a better app for viewing TV movies; the stock videos app hasn’t had anything done to it for a long time. The Amazon app allows you to browse TV and movies as well as watch. It has 10 second skip buttons. X-ray is built into it. It’s possible to log into a different Amazon account in it. On desktop all that is needed is a web browser; no need for a proprietary app. Great if you’re visiting friends and want to watch a movie through your account. A Prime account offers a range of periodically updated TV shows and movies for no additional cost. The movies aren’t the latest movies but there is almost always a range of good choices. The TV shows are current series. Lastly Amazon’s prices are better than Apple’s. Taken altogether these make Amazon Video a far more compelling platform.

So if you want a recommendation for where to rent your next movie check out Amazon Video.

Convert IFTTT Timestamps into Date and Time Values You Can Use

If you use IFTTT to log data in Google Sheets then you might have wondered if you can make any functional use of the timestamp that goes in the first column by default.  In order to use the actual date from the timestamp I have in the past used formulae in a separate sheet (I call it the Interpreter) to duplicate the raw input data and then to extract the date and time.  The reason for needing the separate sheet is that if you include a formula in IFTTT, e.g. =LEFT(A2,LEN(A2)-11) which will give you the date from a timestamp, the cell reference A2 will become invalid after the recipe first runs.  It isn’t possible for IFTTT to compute the correct cell reference to input each time the recipe runs. But the problem with the Interpreter sheet is that you have to keep filling all the formulae down to accommodate new data, or occasionally fill down formulae a couple hundred rows in advance.  So it’s far from ideal.

The ideal situation is to design a formula that can correctly reference the cell with the time stamp without needing to enter an actual cell reference.  That way IFTTT can input it automatically every time the recipe runs.  Well here is a formula that will return the value of a cell itself:

=INDIRECT(CHAR(COLUMN()+64)&ROW())
That will give you a circular reference error, so don’t use that!  We can use the OFFSET() function to reference the cell to the left of itself:
=OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-1)
Or the cell to the left of that:
=OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-2)
So how can this be used to extract the date and time?  If you examine IFTTT timestamps they are all different lengths but the time part of the stamp is a constant number of characters.  Here are a couple of examples:
• February 04, 2016 at 04:09PM
• April 27, 2016 at 09:24AM
The dates are obviously different lengths but the time part is always seven characters long, e.g. “04:09PM”, they can be extracted to provide the time.  To extract the date from the timestamp we just need to cut off the time and the preceding ” at ” part of the string (that’s the last eleven characters of the string).  So the spreadsheet formulae to use are:
• Date:
=LEFT(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-1),LEN(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-1))-11)
• Time: 
=RIGHT(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-2),7)

If you want to set this up in an IFTTT recipe you would have something like this, where {{OccurredAt}} is the marker for where IFTTT will insert the timestamp, and ||| is the marker for a cell division:

{{OccurredAt}} ||| =LEFT(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-1),LEN(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-1))-11) ||| =RIGHT(OFFSET(INDIRECT(CHAR(COLUMN()+64)&ROW()),0,-2),7) |||
Hope that’s of help to some of you wanting to work with IFTTT timestamps.
Update 12/10/16
An alternative to the above formulae is to use the IFTTT timestamp string directly in the formula, e.g.
=LEFT(“{{OccurredAt}}”,LEN(“{{OccurredAt}}”)-11)
I’ve had trouble with Google Sheets interpreting the output as a true date value (it interprets it as a string).  To get around that use DATEVALUE(), like this:
=DATEVALUE(LEFT(“{{OccurredAt}}”,LEN(“{{OccurredAt}}”)-11))

The 3.5 mm Headphone Jack

I can understand the drive to replace the 3.5 mm jack with something (genuinely) better and more efficient BUT
1. “Thinner” is irrelevant for smartphones.  Check out this from David Pogue:

The cylinder that accommodates your headphone jack is now among the thickest components of your phone! It’s thicker than the screen guts, the circuit board, or the battery.

The headphone jack is what’s preventing phones from getting any thinner. It’s the limiting factor.

They don’t need to be thinner! That is an outmoded design concept. Existing battery technology is not particularly new either, we have had lithium ion cells for a long time and so we have had pretty much the same energy density in our batteries.  Making thinner phones means less volume available for batteries so less total energy available for use.  Most smartphones cannot survive longer than a day with moderate use.  None can survive longer than several hours with intensive use.  They are first and foremost meant to be mobile devices so having to plug them into charge (at the wall or with a charging device) defeats their primary purpose.

Phones should certainly not get any thinner as that would not solve any problems they face at present.  It would not improve their ergonomics; it might in fact make their ergonomics worse.  Phones would benefit from getting a bit thicker and having larger batteries.

2. Secondly, with the abolition of the 3.5 mm jack we will face a choice of multiple connections to replace it.  The good thing about the 3.5 mm jack was that it was essentially the standard.  Replacing it with a choice of many is not good because we will need to use one type of connection for one device and another for a different device, so in addtion to headphones a range of adapters will be required.  That’s a more wasteful approach to resources in comparison to having a single standard.  Choice is not always good.

Now  consider a usage scenario offered by using the new jacks e.g. the Lightning connector for the iPhone.  They enable the phone to supply power to headphones.  But that’s exactly what is not needed – more power going out of the phone!  We need more energy in the phone; not more going out.    Also with the 3.5 mm jack it is possible to listen through headphones and charge your phone.  Without it you will have to make a choice: charge phone or listen on headphones.  Unless of course you buy another adapter!

What do you think: are you happy to see the back of the 3.5 mm jack, will you miss it, or were you hoping for something better to come out of its demise than has done?

Good Bye Numerous, you will be Missed

Since the announcement that the fantastic app Numerous would cease to be on the 1 May I and many other Numerous users have been wanting to find something that could replace it.  The ever so slightly quirky app excelled at displaying important numbers in a clean and clear way that helped us keep track of numbers that meant something to us.  Some people, like me, started out dubious that we would find much use for the app.  But it quickly proved its worth.  It will leave a big dent in the routines of many people when it shuts down.  Well done Numerous team you made something truly excellent and many, many of us will be sad to see you go.

Despite the best efforts of many nothing has been found that can adequately replace Numerous.  So as the deadline for Numerous’ end drew nearer I put my mind to work about how I could hack together something to simply display useful numbers. The rest of this post is about a spreadsheet (Google Sheet) I’ve designed that can do just that.

Let me start by outlining the main aspects of functionality of Numerous that this spreadsheet does not replace and its limitations in comparison to Numerous.
1. It can only display numbers that are already in a Google Sheet (this might change in the future but the procedure won’t be as straight forward).
2. There is no social aspect. You can’t browse a catalogue of numbers and individually select numbers from a community to follow. But if you have friends tracking numbers in Google Sheets you can give each other access to each other’s spreadsheets on a case by case basis.
3. All numbers are technically public; no private numbers.
4. No value history or graph.

But, that said, a potential benefit to some people will be the ability to display dynamic text and not numbers only.

Now onto how to use the spreadsheet for your own numbers. You must first appreciate the nature of this spreadsheet. It doesn’t actually do any computation of your numbers, it simply hooks into the spreadsheets you already have to display those numbers in a way much like Numerous: clear and nicely contextualised. Also it will display those numbers in a web browser so you can get faster access to your numbers wihtout having to search through your spreadsheet directories.

The spreadsheet is published here: Number Dashboard. Follow the link to the spreadsheet and save a copy to your Google Drive so that you can edit your own copy.

In the spreadsheet there are two sheets: “Dashboard” and “Data”. Dashboard displays your numbers and Data is where you input information so that the spreadsheet can collect your numbers from your other spreadsheets.
Number Dashboard - Dashboard.png

Each Google Sheet has a unique URL. In the URL is a unique spreadsheet key. You will need to copy the keys of the spreadsheets that have any numbers you want displayed in the Dashboard. Below is a screenshot of a Google Sheet URL with the spreadsheet key indicated. The format of the URL is:
https://docs.google.com/spreadsheets/d/spreadsheet key/edit#gid…
Google Sheet URL

Paste the key into the relevant column in the Data sheet. Next you need to input the address of the cell containing the number you want to display. For example, if I had a spreadsheet with a sheet called “Fuel Log” and the car mileage was in cell “D5” then the address I would need to write in the Data sheet would be: Fuel Log!D5. Include all spaces as spaces and you don’t need to include any extra quotation marks.

Once you do this the spreadsheet will begin the process of trying to look up the value. But you will need to give permission to link the spreadsheet with the number with the Number Dashboard. To do that hover the mouse over the cell in column E that displays the #REF! error. Then a pop over wil show that has a button that says “Allow access”, click that and the value will display.
Number Dashboard - Permission to link spreadsheets.png

In the table in the Data sheet don’t overwrite anything in columns A, E or H. The value and image are automatically inserted based on the information you put in (instructions included below for inserting your own images).  For best results use square images.  Everything else in the table in the Data sheet should be pretty self explanatory. Annotated screenshot below.
Number Dashboard - Data

All your numbers by now will show up in the Dashboard sheet. The next stage to get your numbers accessible without having to open up a spreadsheet app and then navigating to the spreadsheet is to publish the Dashboard to the web. I’ve included some annotated screenshots below showing the steps to do this. At the end of the (very short) process you will be provided with a link to the published Dashboard. Bookmark the link, or even better save it to your smartphone homescreen. Now your numbers are accessible with a tap from the homescreen.

Other features / limitations:
1. Inserting your own images. To insert an image you need it to be available on the internet. If you want to use your own image you need to insert it into a website or cloud storage and copy the link to the image, then paste that link into the Data sheet. I have used Google Photos for my images. I upload the image to G Photos, then navigate to view the image there and right click it to copy the image address.
2. If you know your way around Google Sheets you can customise info in the Data sheet further. For example you can have a dynamic name for a number. In my Data table I link to a number that counts down to the next school holiday. But also on that spreadsheet there is a cell that displays the name of the next holiday (e.g. “May Half Term” or “Christmas Holidays”). So I used the IMPORTRANGE() function in the Data table to reference that cell and have a dynamic name for that number.
2. Countdowns are/were a great feature of Numerous. They can be created in Google Sheets. But remember that this spreadsheet just displays your numbers. You will need a standalone spreadsheet to do the countdowns. Lucky for you I have one, you can get it here. My one is designed for counting down to college / school holidays. So when one holiday is reached it automatically updates to the next holiday. But it can be used to track just one date too.
3. Customising the size to fit your smartphone. If you find that the published dashboard is not the right size for your smartphone then open the spreadsheet in Google Sheets and resize the columns on Dashbaord so that you get a suitable fit. Note that it takes several minutes for the display to update so be patient as you see what works for you.
4. The layout is fixed. Numerous would give you a different view in landscape and portrait; that won’t happen with this spreadsheet.

This is clearly an inferior setup compared to Numerous, but I do hope that it will be of some use in Numerous’ absence. If you have any questions or tips to share please leave a comment here or on Google Plus or reach me on Twitter.

All the best tracking your numbers.