The Rants of an Angry Software Developer

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? 🙂 ……



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…

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.


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!



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 ( a North East Based Web and Software Development firm he helped found.

The New Basecamp Upgrade – Do We / Don’t We?

We use Basecamp, sorry Basecamp Classic, in the office for the majority of our project management needs, moreso I live within Omnifocus on the Mac and iPhone so make use of Spootnik to sync between Omnifocus and Basecamp which as I understand doesn’t currently work, so changes are a big deal, but these are bigger than most. The ‘upgrade path’ is more than that, it’s in effect testing and choosing a new product, except we don’t want a new product, if I’m evaluating a new product then I’ll probably be looking outside of Basecamp full stop.
On top of that, if we do evaluate there’s no turning back, so we have to work in parallel. I’ve not been motivated to even sign up for a free trial, complete apathy. So I googled, let the internet do my thinking for me, and found this, which pretty much sums up how risky a decision 37 signals (the makers of Basecamp) have made. Full credit’s made and follow the link to the full article, felt wrong to quote much more.

My conclusion, I’ll not even bother looking to see what New Basecamp is like, not now, not as an upgrade. I might however have a look to see if there’s a better suited product than Basecamp Classic, but it might not be from 37 Signals, or we may well stay where we are, quite happy.

The New Basecamp, New Coke, and New Decisions

There is so much to say about The New Basecamp that reviewing this release is going to take several posts. So, for starters let’s talk about the big picture decisions related to this major new release.

The Name

This week we got “The New” Basecamp and The New iPad. It seems to be an odd choice for both Basecamp and the iPad.


In theory, this works better for hardware. The 37Signals guys were quick to point out that Honda rolls out a new Civic every year and they don’t name them the Civic HD, Civic 4S, etc. You just get a new Civic. But the car industry has the decency to put a model year on it.


Apple’s been playing this game for a while. I own a white MacBook and 95% of the time the actual name of the model doesn’t matter. But when it does matter, I have to know that it is the 13-in Early 2009 MacBook. I suspect “the new iPad” will have the same issue. This is because this image to the left won’t help you much in 2014 when you are trying to get support and they need to know if you have an iPad 2, a 2012 iPad, or a 2013 iPad or whatever.


But with Basecamp, the name game feels even more strange. What we once knew as Basecamp is now Basecamp Classic. And this new thing, with a completely different feature set has assumed the Basecamp name and is generally prefaced with “the new” to differentiate it.


Why the name games? Did Ryan in The Office completely ruin the ability of software companies to name their product “two-dot-oh”?


The most straightforward answer seems to be this:


Unlike Fog Creek with Trello and FogBugz, 37Signals wanted to leverage the brand value of their existing product with their new, created-from-scratch product. Where Fog Creek has created a second project management tool to live along side their existing tool, 37Signals is maintaining the brand name with the new product. Think: New Coke. Oh wait, maybe that’s not the image they desired.


However, unlike most upgrades (excluding Apple’s treatment of video editing software) this “upgrade” actually removes several previously “key” features.


A major release like this is going to upset many users however you do it. If you position it as Basecamp 2.0 and you remove key features, well, users are going to freak out.


So, the team at 37Signals appears to be trying to walk a fine line. The new thing is new and different, but not the same product at all. So, you get the old thing renamed and a few Jedi mind tricks later… everybody is going to be okay. In theory. But this feels like a decision they will regret if for no other reason than they are going to get tired of talking about it.


No Auto Upgrade

Another complication is the decision to not auto-upgrade users to the new Basecamp. Instead, your current projects and accounts may continue to live on forever (or some version of forever) in Basecamp Classic. You may give the new Basecamp a whirl via a free trial and import your projects over, but you don’t have to do so.


Why would anybody stay in the old version of a product if the new version is available for essentially the same price? (Let’s ignore the issue about no longer supporting a “free” version in the new Basecamp.)


This isn’t a decision that was made by accident. There is a really good reason, but it’s going to frustrate a lot of folks. You see, the new Basecamp really is a brand new product. Completely new code, new features, new style, and all the things that go with a new product. Being a new product, the new Basecamp has a limited feature set.


Yes, there are new features that Basecamp (classic) never had. But there are features that are missing. Some are quite intentional (no private messages!) and some are more complex (no time tracking!).


Tangent: When Salesforce rolls out a new release (three times a year) you rarely lose key features. And if something is going to change, there is significant build up to the event that includes transition guides, the works. If this winter, Salesforce rolled out a release that say, removed the Opportunities object then all hell would break lose. You don’t just auto-upgrade users to a version of your application that does not include key functionality they have previously enjoyed.


And thus, 37Signals put themselves in an awkward situation. Or, more importantly, they put their users in an awkward situation. You can keep on paying the same price for eternity for the old tool that they are not likely to enhance ever again, or you can move to the new application with a different feature set.


Good luck on convincing your budget guy of option one and good luck of convincing your users of option two.


continue reading via The New Basecamp, New Coke, and New Decisions « Technical Support Is At The Deli.

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, ASP (Classic and .NET) – Andy Flisher on Google+

Avoid Bristol Cameras

Avoid Bristol Cameras

Update 27/11/11

I note that the returns page has now removed the non-existent / functional email address I refer to below, so *something* has fed back and been achieved – not that anyone has been in touch to get any more detail, ask for a right of reply, or work out what they could have done to be better. I also note that googling for ‘Bristol Cameras’ brings this page in at number two, so hopefully at least I’m helping you guys make an informed purchasing decision

I have deliberately left this a month from complaining (ranting?) at Bristol Cameras to give them every opportunity to fix, resolve, and generally be better, but they haven’t. As of now if you’re thinking of buying a new digital camera or accessories online then Bristol Cameras may not be for you, avoid Bristol Cameras.
Background, I was in the market for a decent wrist strap and a spare battery for my Canon G12, not surprisingly I wanted the best deal, so a Googling I went. The end result was with me at Bristol Cameras website where they had listed (not specifically claiming in stock) what I wanted, adding in carriage was a fair price, and my background checks showed no horror stories (till now?) and they seemed legit. This was the 10th May 2011.

I received my order confirmation email from a ‘no-reply@’ address (not unusual) and got on with life.

On the 16th May I had heard and recieved nothing and wanted to query the ETA, spotting the email address I went hunting over at the Bristol Cameras website, nothing obvious, the contact us page was empty other than an 0844 number and snail mail, but thankfully the Bristol Cameras returns page (http://www.bristolcameras…) offered me so an email was sent asking for an update. Edit: Image removed as host where image lived no longer exists, thank you Skitch / Evernote!The next day I got an email back stating that the wrist strap was out of stock. Knowing that I would have to purchase elsewhere (and incur another shipping charge) I replied asking them to cancel the entire order as I didn’t want to split with another vendor and loose money.

They ignored this email, shipped the battery, and charged me for it anyway. Now, I have no idea if they have *ever* read or replied to any of my emails, certainly none ever bounced back, and seems a co-incidence that I got the out of stock email a day after I contacted them.

I didn’t complain, assumed they had mis-interpreted my email and just cancelled the out of stock element.

On the 21st June I got another email with an order up date, wrist strap still out of stock 🙁 Annoyed, I pinged another email back to making it quite clear I did not want the wrist strap and to cancel the remaining order.

All quiet until the 7th July, Good News! The wrist strap is in stock and will be shipped shortly, **not amused**. Especially as it’s gone 5pm when I read this and they could have shipped already, no choice but premium rate 0844 with an impressive ire on me.

Which gets worse, they don’t answer, well their phone system does, but a human doesn’t, so I’m on hold and paying for it. Looking at the Bristol Cameras contact page doesn’t help, ‘the shop’ is open till 5, ‘mail order’ till 5.30′ there’s only one mind, the 0844 one. At this point I’m still paying, so I google some more for alternative numbers and dial them all on my mobile (still on hold on land line), but at this point it’s gone 5.30 so assuming all gone home, not that their phone system seems to know, it’s still suggesting someone will answer, at 5pm. I’m pretty sure the won’t, and after half an hour hang up, spin off a vitriolic email, and wait till morning.

In fact I wait till late morning to give them a chance to respond, they don’t, so I call (at 5pm again). To sum up, they don’t care, no apology, only a grumble that an email address is actually published on their own site, that apparently is a mistake! They are an E-commerce trader and actually admit to not wanting to communicate electronically? Daft thing is I’ve given them a month and it’s still there 🙁 But then the key revenue stream for Bristol Cameras seems to be from 0844 call share, and you guessed it, no apology for a phone system that keeps you on hold even when there’s no one to pick up, probably disappointed that I didn’t hang on longer.
This isn’t the worst case of Customer Service ever, but it’s bad and it’s a sad fact that these days people only seem to learn the hard way once we the disgruntled consumer start shouting, hence am typing. Bristol Cameras clearly have no respect for their customers, 0844 only and no published (working) email address just doesn’t cut the mustard for an online trader, it’s against all best practice. So if you where thinking of placing an order with Bristol Cameras then don’t, in my opinion Avoid Bristol Cameras
Rant Over