Xojo 2016 Release 2

Last week Xojo 2016 Release 2 was unleashed to the masses.  There are a lot of changes and tweaks in this version and if you are creating web or iOS applications there is a lot of like about this release.  There are also a myriad of changes and enhancements that should satisfy most developers.

iOS Stuff

The biggest changes in R2 is for iOS and these are things that developers have been requesting since its initial release.  Support for iOS 7 has been dropped because its market share is less than 20% and the minimum required version is now iOS 8.  This also means that Xcode 7 or Xcode 8 needs to be installed.

The Xojo engineers added iOSScrollableArea which allows you to view and display content that is larger than the view.  This is a very welcome addition and is worth the upgrade for this feature alone.

R2 also adds the iOSLocation class that allows your application to request location coordinates as well as get updates from the device.  Once your application gets permission to access the device location you receive changes via the LocationChanged event that gives you latitude, longitude, altitude, course and speed parameters.  An Accuracy property lets you change the desired accuracy.  In addition to iOSLocation Xojo has added the iOSMotion class that allows developers to access the accelerometer and gyroscope.

iOSTable was arguably the most useful and least powerful control in iOS for Xojo and this release definitely gives it some love.  You can now embed controls in the cells of iOSTable by using the iOSCustomTableCell class.  This allows you to create some very rich and powerful UI that lives in the cell of an iOSTable.  I guess the best equivalent in desktop and web terms is that the iOSCustomTableCell is a specialized ContainerControl you can put into an iOSTable cell.  I’m looking forward to using this.

They’ve also added support for Row Actions in the iOSTable.  The new ActionsForRow event passes in the section and row and you have to supply the iOSTableRowAction array.  The iOSTableRowAction has a title, an Auto tag and a Style.  The style can be either Normal or Destructive with Destructive changing the background of the Action to red (does this ever vary? – not sure).

The new iOSSharingPanel allows you to share pictures, text and URL’s with any registered system service or app.  That’s a fancy way of saying you can share this data between applications.  It’s the iOS version of the clipboard available to desktop applications.

The iOSPicturePicker class allows you to select images on the device or take pictures with the camera.

To avoid confusion for users, the old SQLiteDatabase class for iOS has been renamed iOSSQLiteDatabase.  The corresponding recordset class is now named iOSSQLiteRecordSet.

Non-IOS stuff

The Web framework is now HiDPI capable.  It works similarly as desktop apps in that it queries the browser for the scaling factor.  Then, the application serves up the proper image if it can.  You can change how this works by changing the Supports HiDPI in the Shared Build Settings.

In Windows there are a number of significant HiDPI changes that make it work better in Windows 8.1 and 10.  Perhaps the biggest Windows change is that Xojo.Net.HTTPSocket is no longer much slower than HTTPSecureSocket.  I have not had a chance to look at this one in detail yet so if you’ve had success or failure with it, please leave a comment below.

Always check the release notes that are in every release.  I’m just hitting the highlights out of hundreds of line items and you never know what might be there that affects your application.

As with any new release it’s better to test your project against it before releasing it into the wild.  In my own testing I had some instability with converting an old web project (started around the very first public beta of Web Edition) to use HiDPI graphics.  This involved adding an ImageSet and adding the 1x and 2x graphics, deleting the old graphic, and then fixing it in all locations in the project.  I was able to crash the IDE but all of the crashes were different and, of course, none of it was reproducible.

The Future

The 800 pound gorilla in the room is a 64 bit IDE and 64 bit debugging.  Things like XojoScript are holding back the IDE from being 64 bit.  I would also imagine that not having an integrated debugger available in 64 bit is holding back that as well.  I know we are avoiding releasing some 64 bit projects because of these limitations. We’ve also been playing around with the Raspberry Pi and it’s definitely not very useful without the debugger.

We need the 64 bit debugger.  Let’s hope that R3 provides us with some relief in that area!

How has your experience been with R2 so far?

Why ‘Cloud Computing’ Isn’t For Everything

This week it appears that Microsoft screwed the pooch and lost everyone’s data that was using Sidekick on T-Mobile.  Microsoft should have known better and had proper backups and Hitachi (who was doing an upgrade for them) didn’t check either.  Expect some major finger pointing (and lawsuits) going on in the upcoming weeks. Regardless, there are multiple layers of failure and plenty of blame to go around.

It’s why I chuckle when people talk about ‘cloud computing’ being the wave of the future.  I have no doubt that we’ll see more cloud computing but there are just certain things that don’t belong in the ‘cloud’ and should be taken care of by your own IT department.

I did a fair amount of work a few years ago on a commercial accounting application and every now and then the boss would get all excited about cloud computing and he’d kick the tires and make some noise about moving the entire operation towards it.  At first blush it makes a LOT of sense to have the software and data reside elsewhere because it puts the burden on the host company to keep the software up to date, upgrade the hardware on a regular basis, have regular on-site and off-site backups and have decent security.  And then you realize that its strength is also a weakness as the Microsoft case has shown.  You are depending TOTALLY on someone else doing the right thing.

The other reason is the data.  For many companies their data IS their business.  It’s their competitive advantage.  You really trust all the pipes between your office and the cloud computing servers?  Sounds paranoid but this is your sensitive data you’re talking about, right?  How many stories have been published about SSN and credit card numbers being compromised (at the minimum) and outright stolen (at the worst) in the past couple of years?

If you’re in a larger metropolitan area you probably have decent internet access, with decent speeds, that never goes down.  There are a lot of places even in the United States where this is simply not true. I’ve always enjoyed pulling the network cable from a computer when someone is on their high horse about cloud computing.  Tough to get work done when you can’t load the software or the data.  At least with the software and data on my computer and local network I can still get work done.  My job requires internet access and I can tell you that when my internet goes down I’m not very productive (and keep in mind that I’m in a top 40 metropolitan area with all underground utilities!).  I’ve also had web servers get attacked and be so unresponsive that they might has well have been shut down.

In the long run, can you go to your boss and guarantee (because it might mean the difference of having a job or not, after all) that the data is 100% secure, backed up and available 24/7?  Food for thought, no?