Uncategorized

Darlington Mowden Park U9s at Yarm – YouTube

Darlington Mowden Park U9s hosting Bishop Auckland and Consett – YouTube

The Evolution of Interactive C# – Miguel de Icaza

Source: The Evolution of Interactive C# – Miguel de Icaza

The Early Days

Years ago, in 2008 we introduced an interactive C# shell, at the time a challenge was to adjust the syntax to be suitable for interactive use, to provide a usable decent command line editing API for .NET and to turn our compiler as a service into a tool that could provide code completion.

A few months later, we added a UI shell for this on Linux and used Gtk’s text widget to add support for embedding rich content into the responses. It was able to render images inline with the responses:

  <img src="http://static1.squarespace.com/static/57efdeff579fb34c24562253/57efe35729852665353fb396/57efe35e29852665353fb713/1475339381370/xpoyxg.png" alt=""/>

This was inspired at the time by the work that

Owen Taylor

at Red Hat had done on

Re-interact

. You can still watch a

screencast

of what it looked like.

Like Owen, I added a plot command:

  <img src="http://static1.squarespace.com/static/57efdeff579fb34c24562253/57efe35729852665353fb396/57efe35e29852665353fb738/1475339378207/xlawtm.png" alt=""/>

At the time, Re-interact took some ideas from

IPython

and it seems like they are both inspired to some extent by Mathematica’s interactive window.

Re-interact in particular introduced a brilliant idea, which was that users could go back in history, edit the previous expressions and the entire buffer would be re-evaluated. This idea lives on in Apple’s Playgrounds for Swift.

In the meantime, the IPython project grew and they added one of my favorite features: it was now possible to blend text, explanations and code into workbooks. You can see a sample of this here. For years, I have desired an IPython for C#.

The Xamarin Years

In the meantime, at Xamarin, we experimented with the idea of bringing sometehing like Re-interact/Playgrounds to Xamarin Studio and we shippedSketches:

  <img src="http://static1.squarespace.com/static/57efdeff579fb34c24562253/57efe35729852665353fb396/57efe35e29852665353fb73a/1475339377230/Overview001.png" alt=""/>

But while these were interesting for trying out ideas and learning C#, they are not very useful for day to day work. We found that what our developers needed was a full C# REPL that was connected to the application they were running on, so they could experiment with their UI live. This is when we introduced Xamarin’s Inspector. We took the existing engine and changed the way you interacted with C#.

The inspector was originally planned as a debugging aid, one that you could use to attach to a live Android/iOS/WPF process and use to examine:

  <img src="https://www.flish.co.uk/wp-content/uploads/2016/05/mac-inspector-repl-small.png" alt=""/>

We wrote several backends to provide some visual representation of the running app:

  <img src="http://static1.squarespace.com/static/57efdeff579fb34c24562253/57efe35729852665353fb396/57efe35e29852665353fb73e/1475339379102/mac-3d-view-small.png" alt=""/>

While Sketches used the IDE editing surface and a custom renderer view for results, with the Inspector we took a different route. Our interactive surface was an HTML canvas, and our results are rendered using HTML. This allowed us to do some pretty visualizations for results.

We have only started to explore what is possible in this space, and our last release included various data renderers. In particular, we added support for pretty printing collections and a handful of native Android and iOS results.

Up until now, we had been powered by Mono’s C# compiler and while it has served us well for many years, it pales in comparison with the services that we could get out of Microsoft’s Roslyn. Our code completion and error reporting were limited and the model did not translate too well to F#.

We recently switched the inspector to use Roslyn:

  <img src="http://static1.squarespace.com/static/57efdeff579fb34c24562253/57efe35729852665353fb396/57efe35e29852665353fb740/1475339383128/inspector-0.6.0-repl.gif.0-repl.gif?format=original" alt=""/>

With this release, we ended up with an Inspector that can now be used either to debug/analyze a running app (very much like a web inspector), or one that can be used to experiment with APIs in the same spirit as other shells.

Continuous

In the meantime, Frank Krueger took the iOS support that we introduced for the compiler as a service, and wrote Continuous, a plug-in for Xamarin Studio and Visual Studio that allowed developers to live-code. That is, instead of using this as a separate tool, you can modify your classes and methods live and have your application update as you change the code:

Frank also added support for evaluating values immediately, and showing some values in comments, similar in spirit to his

Calca

app for iOS:

The Glorious Future

But now that we have a powerful HTML rendering engine to display our results and we upgraded our compiler engine, we are ready to take our next steps.

One step will be to add more visualizers and rendering capabilties to our results in our Inspector.

The second step is to upgrade Sketches based on this work. We will be changing the Sketches UI to be closer to IPython, that is, the ability of creating workbooks that contain both rich HTML text along with live code.

To give you a taste of what is coming up on our next release, check out this screenshot:

  <img src="https://www.flish.co.uk/wp-content/uploads/2016/05/csharp-workbook.png" alt=""/>

Developers will still have a few options of richly interacting with C# and F#:

  • With our inspector experiment with APIs like they do with many other interactive shells, and to poke and modify running apps on a wide spectrum of environments.
  • With Frank Krueger’s Continuous engine to see your changes live for your C# code.
  • With our revamped Sketches/workbook approach to use it for creating training, educational materials.

Big Tees Sleepout

I’m doing this next Friday, please support if you can;

On Friday 13th November, dotUK, through it’s founder and director Andy Flisher, will be sleeping out on the streets of Middlesbrough in aid of an excellent local charity, the Teesside Philanthropic Foundation.

The charity has an aim to bring Middlesbrough and Teesside businesses and companies together to help make Teesside a better place to live and work.  The Big Tees Sleepout specificially is an annual event aimed at highlighting and tackling the homelessness situation that is right on our doorsteps, a situation which we all agree should not exist in this day and age.

You can support Andy by donating online or by signing up and raising your own sponsorship at the Big Tees Sleepout site itself.  If you are unable to support financially, as of course we can’t all do, then please support the event, the charity and our efforts by liking, sharing, and in anyway making the region aware of the event, and the problem.

Thank You.

Originally posted at http://www.dotuk.net/news…

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

Baby Biography Mobile App – Project

Baby Biography Mobile App – Projects

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+

The mobile app will be developed using dotUK’s cross platform, and multi platform mobile app development skills. This skill set is a niche, and dotUK are one of the few development companies, certainly amongst North East Mobile App Developer’s to offer true, native mobile apps that can be developed simultaneously across the core mobile application platforms, in parallel.

Baby Bio Mobile App

The Baby Biography mobile app will be offered initially as an iPhone app, and also as and Android App, in addition to creating Baby Biographies within the app, other features include;

  • Creation of Multiple Books
  • Sharing of Baby Moments and Photos ‘In App’ to Social Media
  • Free Cloud based storage of all your books and moments
  • Collaboration with other parents
  • Conception and Pregnancy calculators
  • In App Support

Cloud storage and collaboration will be offered through dotUK’s in house cloud storage framework which allows the app to seamlessly synchronise the baby biographies into the cloud in the background when connected to a suitable internet connection, but doesn’t in any way impeded or restrict any app functionality when working offline.

Originally posted at http://www.dotuk.net/news…

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.

The iPhone App for Zenoss – That’d be KyK

The iPhone App for Zenoss – That’d be KyK then

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+

 

Zenoss is a monitoring system, we use it the office, and basically it sits on one of our servers out in the Cloud (the Internet to most people) and regularly monitors our kit, servers, and our clients kit too, to make sure they’re still up and doing what they should. If something disappears, a disk gets full, or a server overloaded it alerts our Engineering team and we swoop into action. When there’s an alert it keeps on alerting until you respond and acknowledge it – that’s where KyK comes in.

KyK?– It’s from the Afrikaans for ‘Watching’ – which is the easiest way to explain what Zenoss does.

Yes, yes, very clever – but what is it? Well, it’s an iPhone App, an iPhone client for Zenoss if you will, although not just iPhone, it will work on any handheld iOS device, so that’s the iPod Touch and the iPad – Oh, and I wrote it, I’m an App Developer too you know, so that’s Web Based Software, Desktop Software, and Mobile Software – clever me 🙂

Back to the top, when there’s an alert in Zenoss you have to get on line, login, see the agent and acknowledge it. Alerts don’t happen at convenient times, so KyK is aimed at making it easier. Fire up the App, it automatically polls your Zenoss server and lists any events. New events are highlighted at the top, tap, confirm, acknowledged – that simple, convenient, mobile. You can also view more detail and alert history for events too if you want.

What’s next? Well KyK (and KyK Lite – a free version that lets you see events but not acknowledge them) is out there now in the Apple iOS App Store, there’s a version for Android in Beta (that basically means half done and in testing) and it may expand beyond that, I have half an idea for an enhanced iPad / Tablet version with a lot more management features, but we’ll have to canvas demand to justify developing that.

How’s KyK doing, setting the Zenoss Community on fire? Not yet, but it’s only been out for a few weeks, we have customers in Mexico, Canada, the US, South Africa, and of course the UK – it’s interesting being global – but also a challenge. I deliberately wrote a support / feedback mechanism into the app so users can contact us as easily as possible, it’ll also send me useful debug logs so I can understand what has and hasn’t happened, so that makes life easier, but of course we have timezones and languages to deal with, thankfully most people internationally speak better English than we do. Today I’ve released version 1.1 which fixes a couple of minor bugs and user interface anomalies, and massively adds support for Zenoss 4 and above (Annoyingly Zenoss 4 came out of Beta whilst KyK was in the worlds longest App Review, so we had no opportunity to test and ensure compatibility before release), and have a few features to add for the next release. The big milestone will be 1.2 when it’ll go live for Android too, just need a Tardis and a few round-too-it’s and we’ll be there.

Bigger plans, commercially, we’d like to talk to Zenoss themselves, or their clients, KyK is written in such a way that it could easily be re-branded, or custom re-written as an Enterprise App to be deployed large scale – but that sounds a lot like Marketing, which is for another day and the right frame of mind, step 1 (and 1.1) complete.

In the meantime if you use Zenoss, or know someone that does, and have an iPhone in your hands, buy KyK for Zenoss on the iPhone, leave a nice review (if you can), and make me smile, thus justifying a lot of long hours and thought!

Andy works for dotUK (www.dotuk.net) a North 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+

Rachel’s Parachute Jump for Butterwick Hospice

At the third time of asking, weather not nerves!, Rach managed her 10,000ft Tandem skydive at Peterlee Skydive Academy (huge thanks to them by the way, they were great), all in aid of Butterwick Hospice.  If you wish to sponsor her you can whilst the page is still open at – http://www.justgiving.com…