The Rants of an Angry Software Developer

Parents bill RNLI for £7 lilo after coastguard saved their child in £7,000 rescue mission from drifting out to sea

Parents bill RNLI for £7 lilo after coastguard saved their child in £7,000 rescue mission from drifting out to sea | The Independent:

The parents of a child rescued from the sea by Royal National Lifeboat Institution (RNLI) coastguards have sent the organisation a £7 bill for a destroyed inflatable lilo.

Is it wrong to suggest that maybe the parents should be pushed out to seas instead? ☹️

Going Back to Evernote

Much like the quest for the holy grail (my hunt for the perfect Todo list app (OmniFocus winning out currently)) I’ve never found the perfect note taking app, but I’m back with Evernote (Premium, and getting a better feeling of value from it than I did before), and in fact am typing this up as a draft in Evernote, so thought I’d outline where I’ve been, and why.

Right now I’m all in on Mac and iOS and have been for the last 2 years, before that I preferred Mac but had a need for Windows on the day job and inter operated with more of a Windows shop, back before that I was all Mac – so times change, needs change, the people you need to work with change so that dictates my requirements.

Evernote – Round #1

Back when this reminisce started (Let’s call it 2010 and be wildly out, but close enough), certainly when Evernote was new, I was working off a Mac, Windows PC (pesky Visual Studio) and an iPhone, I was self employed in a team of 1. Evernote did a job that nothing else did at the time, cross platform, synchronised notes, it kept all my crap together. It was a long way from perfect, I could easily break the sync if I stored anything more than words and pics, but it was free for my needs and in a league of it’s own. I vaguely remember One Note coming out but not giving it much attention, as is often the way with the big boys offerings it had less features for a V1 and the updates were too slow and infrequent, and I was happy so want look away.

Enter One Note

Time moved on, tablets arrived, my career changed (more Windows, more team working) and I drifted over to One Note. From memory the drivers where that the Windows version of Evernote that I needed day to day now was pretty unstable, I was on the paid for service, and I was the only one of the team using it, so One Note won (even though there were two versions in parallel depending on whether your were using the Metro UI (tablet mode) or The Desktop app – v confusing.

Give Apple a go ….

That all worked, we put up with the weird One Drive / Sharepoint Storage requirements to share and collaborate and made the most. Then I left, and was back on my own again, and blessedly in a Mac / iOS only world. Apple Notes was getting better, so I spat everything out as PDF (only format that maintained pictures, highlighting and was searchable) and gave that ago. It was basic, frustrating, but basic – up until the big revamp, when iPad Pro’s came along, pencils, annotation all that Jazz, I was sold – I thought.

… then Bear ….

Except I’m a developer, I have code snippets, sql queries, scratchpads of stuff I’m debugging and it piles up, quickly. The Apple Notes search and organisation wasn’t great, and the presentation was poor, not enough fonts, syntax highlighting, it really was a digital scrapbook (credit where it’s due the pen support and the iOS / Mac share sheet support was great). So about 6 months ago I jumped in with Bear, heard lots of good things, markdown support seemed like something I should need (I didn’t) and the tag based filing system seemed massively flexible (it was, but still not for me).

I never really committed 100% to Bear, I was migrating from Apple Notes by hand (easier to do on iOS than Mac bizarrely, mostly down to the lack of export support – shame on you Apple, bad lock in ☹️), and still had a lot left behind. I think my biggest bugbear (no pun intended) was the copy and paste support, by default it was Markdown, which broke near everything I wanted to store (sql queries, code snippets, json etc) so I had to remember to right click and paste as code – just wish it could work that bit out for me! Lack of tables was also annoying, and no real Apple Pencil support on the iPad – but I can see for many how it would be perfect.

Evernote round #2

And then I remembered Evernote, and thought I’d give it a try again. I caught up with what had changed, the pricing model for one, seems expensive compared to Bear, but then I wasn’t fairly comparing like with like. Using a variety of Applescripts and a few other tools I got pretty much everything out of Bear (Saved all as RTF and manually dragged back any non image attachments) and Apple Notes (AppleScript to recreate all the text notes), not perfect but good enough – most of it is stuff I’ll never refer to again anyway. If it’s of use my Apple Notes to Evernote script is below (source credit within the links section at the end);

tell application "Notes"
set theMessages to every note
repeat with thisMessage in theMessages
set myTitle to the name of thisMessage
set myText to the body of thisMessage
set myCreateDate to the creation date of thisMessage
set myModDate to the modification date of thisMessage
tell application “Evernote”
set myNote to create note with text myTitle title myTitle notebook "Apple Notes" tags ["Apple Notes"]
set the HTML content of myNote to myText
set the creation date of myNote to myCreateDate
set the modification date of myNote to myModDate
end tell
end repeat
end tell

On the iPad the native pencil / scribbling support is mediocre, but through Notability or Penultimate I can get a better experience and the PDF / OCR / text searching makes up for a lot. Which leads me to the big win, I have a paperless home / office setup where all the paperwork, bills, statements etc get scanned, OCR’d, tagged and filed into Dropbox (Hazel and PDFPenPro if you were wondering), but I never had the perfect means to search and find whilst on the move (Spotlight search once OCR’d is perfect on the Mac), but with a little more AppleScript I’ve extended that process so a copy ends up in Evernote too (backups are always nice) so available and searchable on the iPad, Phone and Web, and imported the old archive. Suddenly here I saw the value in Evernote’s pricing, it gives me much more than just Notes.

Where Next?

So that’s where I am for cross platform Notes, and more, my only concern right now is whether Evernote’s business model is sustainable as there seem to be questions around their future, and there have been layoffs, fingers crossed as they’ve been innovators in this space and competition is good.

Come back in 6 months and ask me where I am then 🤔😋

Links:

View ...

#AllGoneWrong – first day of hols and a sickness bug has hit the house, Cole out for the count, plans for the day awry, and my brother has had his car window put in 🤬

Apple to ban Xamarin and Phone Gap Apps? (Updated)

We knew that Apple was looking to improve the quality of the app store by rejecting templated apps (auto generated, change name, colour, logo – here’s your app type stuff) but this tweet (screen shotted below) seems to suggest that Apple are also going after the cross platform / alternative language app frameworks such as Xamarin (now a Microsoft company) and Phonegap

itunes connect screenshot

 

For those that don’t know or understand this sort of thing, iOS apps are written in Objective C or Swift, Phonegap allows you to use Javascript and Xamarin allows you to use C# (or F#) which basically means a whole load more developers can jump into mobile app development with a familiar language.  These frameworks also allow you to create Android and Windows Phone app versions from the same set of code (or near enough), so for a developer you get double the output – a good thing for productivity!  There is an argument that this reduces the quality of the app (which Apple don’t want), and certainly with Phonegap (not my thing) you lose out on Native user interface elements which is a problem for the user experience, but with Xamarin you get native look, feel, and API calls so a very high quality product is achievable – certainly not an easy win.

Do I think this will happen?  No, at time of posting this has come from one source only, and it seems very un-apple like to name names in an email without backing it up within their published guidelines and the developer community, and from memory the app factory clamp down was mentioned at WWDC last year.  Not sure why someone would want to fabricate this (are twitter retweets that valuable?), but watch this space, it’s creating some interesting conversation if nothing else.  Beyond all else, Unity uses mono (the engine beneath Xamarin), so Apple want to kick money making Unity games out?

Personally, making it easier to creative native feeling and native operating apps in an environment and with tooling I’m used to is a good thing, I don’t think Apple are that hard up that they need all iOS devs to be buying iMac Pros and living in Xcode – however if anyone wants to buy me one? 🙂 ……

 

Updated:

Being claimed as fake over at  9to5mac

A screenshot of an email being circulated around the internet in the last day supposedly revealed new strict app review policies. We have confirmed with sources that this email is not legitimate communication and does not reflect a real Apple policy decision.

You can read their diagnosis over at https://9to5mac.com/2017/…

weMessage promises to bring iMessage to Android, uses Mac as server

I get that iMessage has become one of those platform hooks for iOS and iPhone, use it all the time, and probably the best of all Apple’s hooks, but is there actually a need for this on Android.  Android users, you tell me, are you missing out?

According to the app’s website, weMessage delivers full iMessage support to Android handsets “without reverse engineering or exploits,” a feat many developers have attempted to reproduce over the years to varying levels of success.

weMessage promises to bring iMessage to Android, uses Mac as server:

Xamarin release preview edition with iOS11 and Xcode 9 Compatibility

Xamarin today halve a released a preview build for those that have been hankering (since about 2 hours after the WWDC keynote according to some forum posts I’ve picked up on!) to play with Apple’s new goodness.

iOS11

Specifically this let’s you play with Xcode 9, iOS 11 and MacOS 10.13.  If you don’t have Xcode 9 installed already I highly recommend you follow the Dev Centre instructions that allow you to install it in parallel, don’t grumble at me if you can’t get any real work done once you’ve finished playing!

 

(Via.)

Preview: Xcode 9 beta 3, iOS 11, macOS 10.13 support – Preview 1 | Xamarin Releases: “”

Punishment Driven Development with Louise Elliott on the Hanselminutes Technology Podcast

Been listening to this on the way in to work, am not sure it’s right for the office, can’t decide on which punishments 😉

Scott sits down with software developer and development manager Louise Elliott about her ideas around “Punishment Driven Development.” Why is this such a common way to run a project? Does it work and is it ever appropriate?

Source: Punishment Driven Development with Louise Elliott on the Hanselminutes Technology Podcast: Fresh Air for Developers

Xamarin Cross Platform Application Development – Book Review

Xamarin Cross Platform Application Development – Book Review

Andy Flisher is a Software Developer based in the North East of England specialising in cross platform development. Mobile Development experience includes Windows Phone, Android, and iPhone Apps. Desktop Software Development includes bespoke Windows, Linux, and Mac Applications. Web Development Skills include PHP, Perl, Python, Xamarin, C#, ASP (Classic and .NET). Andy also has some Industrial / PLC Programming experience – Andy Flisher on Google+

This is a review of the recently published book “Xamarin Cross Platform Application Development” by Jonathan Peppers.

This book is openly marketed at existing, experienced C# developers so it’s certainly not for beginners, and whilst I don’t fall into this category the nature of projects I work in require mostly ‘linear’ development (Web, PHP, Perl, Python, VB etc over the years) so concepts like MVC, MVVM and in particular IOC (Inversion of Control) are newer and less clear. Thankfully this book has resolved that through it’s excellent practical examples.

One area this book doesn’t touch on hugely is the level of planning required for MVC applications, you can’t just ‘jump in and code’, but that’s potentially a book in itself, but what the book does very well for me, is explain the View, ViewModel, Model and Controller concepts in terms of the classes and data layers required. The book also introduces Interfaces (something I always saw as an unnecessary layer of complexity) which I now ‘get’ in terms of flexibility, and in particular to give the developer options in a cross platform environment.

The icing on the cake is ‘Inversion of Control’, whilst the book doesn’t particularly explain this convention in huge detail, I think it is actually to it’s credit, any more and the reader will be bogged down in unnecessary detail and complexity. It basically gives us the service layer that ‘glues’ the application together, allowing use to create and register our ViewModels as Services and thus make them available to use throughout the app with a single line of code. I’m sure that my description is not hugely more constructive than the words in the book themselves, but the working example of the XamChat application completes it.

Which is my main point, am sure many people work differently, but for me working examples of code are what makes it stick in my mind, it helps it all make sense. Throughout this book you will be building bit buy bit a working chat application, firstly in Xamarin.iOS (but using the all important cross platform and code sharing concepts learnt at the beginning of the book), and then re-implementing the same application logic in Xamarin.Android. The nice touch, which some may see as lazy, was that with the Android example you are taken to a certain point and then left to finish off using the examples you already have. A real, and practical exercise which I think will do the reader good. It wouldn’t be a huge leap further to recreate in Windows Phone, for the ultimate practical extension.

The Xamchat application is then extended through the Windows Azure platform to use their backend for data storage (a good example of how the same Interface can be re-used to store on different platforms), and to implement cross platform push notifications.

Lastly there are chapters on using Xamarin Components (including Xamarin.Mobile for Contacts, Camera and Location functionality), and actual App Store submission and their different processes, processes that even the most experienced developer can struggle with (Apple Certificates and Profile expiry anyone!).

In summary, this is an excellent book for any would be cross platform mobile application developer, yes you need a good understanding of C#, MVC and similar concepts, and the individual mobile platforms and general development processes themselves, and those things don’t come over night, but this book binds it all together with real world examples, working code (a novelty for some books) and actual code and methods you can take away and use in the real world.

Buy it, read it, and take as much as you can from it – “Xamarin Cross Platform Application Development” by Jonathan Peppers

You get what you pay for – Mobile App Security

You get what you pay for – App Security

Andy Flisher is a Software Developer based in the North East of England specialising in cross platform development. Mobile Development experience includes Windows Phone, Android, and iPhone Apps. Desktop Software Development includes bespoke Windows, Linux, and Mac Applications. Web Development Skills include PHP, Perl, Python, Xamarin, C#, ASP (Classic and .NET) – Andy Flisher on Google+

In the course of work this week I had a cause to audit an iOS App that a prospect had had developed by a local competitor here in the North East, the reasoning for this was that the prospective client was looking at moving the hosted back end (ASP .Net, SQL Server – standard stuff) and wanted a price.
The purpose of the audit was to check what network connections the app was making, and correlating with what I knew about the backend hosting, just to make sure there were no surprises, we didn’t have the source code for either end yet, it was just a pricing exercise at this point (As it happens the App is written using PhoneGap so we did have the source code, but my route was quicker).

So, I installed the app, redirected my iPhone through a proxy server, and fired up the app – and proceeded to stare in horror. The app instantly, on first run fired up an un-encrypted, un-authenticated connection to the backend host and promptly downloaded the usernames, password, emails, and more for every user in the system. It then keeps a copy of these locally, and uses those details to authenticate later.

Why is this bad, in laymans terms, because anyone, on the internet, who knew the url the app uses could download the same list. Would people be interested in logging in to this system? Probably not, do people use the same username and password for Amazon, Tesco, Online Banking – absolutely, and there’s the problem.

Solutions, well it’s about paranoia, but key areas;

  • Authentication – Implement simple basic authentication so that the app logs in to the webservice it pulls the data from.
  • Https – Implement and SSL connection, then at least all traffic too and fro is encrypted (important as Basic Authentication is over plain text, so without https it’s still sniffable)
  • Change the login mechanism to completely remove the need to download all user info at all.

What’s really frustrating though, and actually makes the ‘You get what you pay for’ title of this post a misnomer, is this wasn’t a cheap solution.  The client paid a very reasonable amount for this app and solution.  This is the sort of thing we see, and sadly expect, when a ‘cheap’ solution is offered as a counter to ours.  We’re not expensive, but not cheap, we do do things correctly though.  It’s a classic case of the customer not knowing what they’re not getting, they trust, and assume that a professional job is being done, without really asking too many questions about why it’s cheap.

In this case no excuses though, I’ll not name anyone, and we’ve raised the issue with the client – We certainly won’t be taking on the hosting until it’s resolved!

Andy works for dotUK (www.dotuk.net) a North East Based Web and Software Development firm he helped found.