WWDC 2017 – looking back

Head Spinning

I think this will be the first of a few posts about WWDC.  The first thing anyone should know is that it is a full on week.  There are sessions to go to starting at 9am and finishing at 6pm.  And this does not cover the opportunities provided by arriving early and using the hub/breakout lounge for connecting; the queueing; the labs; and the evening social activities.  I was pleased to hear that I was not the only one feeling a little weary during a session or two!

Announcements

By now, most people have heard of the announcements of WWDC – the HomePod, especially.  But there were more things for software developers: –

  • Xcode 9 – rewritten in Swift and with refactoring
  • ARKit – for those times when reality is not quite enough
  • Machine Learning – for vision and object recognition
  • Drag and Drop of iPad applications
  • High Sierra for the Mac

Quality

What most impressed me was the quality of the venue, the organisation and especially the speakers.  There was one technical hitch during the week (a presentation clicker failed to work); and, without exception every speaker was knowledgable, entertaining, confident and took to the stage – in front of 1000 or more people at some sessions – as if it was a walk in the park.

Next Steps

  • Time to dive right in with the beta of High Sierra and Xcode 9
  • Try some of the excellent sample code provided at WWDC
  • And some the tutorials being posted
  • And maybe try out an idea or two I have …

Watch this space

WWDC 2017 – an adventure awaits

Anticipation

In mid March – after a weekend working on a project, I set the alarm for 6am so I could be one of the first to register for WWDC.  Of course that is not a requirement these days with Apple providing a lottery system for tickets to their conference.  However the buzz of repeatedly pressing refresh, checking Twitter, and making sure my credit card was ready did add to the excitement.
 
Less than a week later I got the email.  I was going to my first WWDC.  I was a little suspicious as it was April Fools Day, but I checked the next morning and I’m pretty sure that I’m all registered.  And certainly my credit card got hit with the registration fee as expected.
 
The first challenge was flights and accommodation.  From New Zealand to San Jose is a little challenge.  Two flights, but one of those is about 13 hours. To ensure I didn’t miss out I booked the flights and hotel as soon as the dates and location were announced.  All booking could be changed if I didn’t win the lottery, so a little more expensive, but I had those two important aspects all sorted.  As it happens I am very relieved – my hotel is just a couple of minutes walk away from the conference centre, so very convenient. 

Expectations

Ok, enough of the mechanics of tickets and travel.  What do I expect from WWDC 2017?  Actually I have no real expectations.  I am prepared to be surprised, informed, educated, and entertained.  But there is no wishlist that I have for features, tools, products, or hardware that I am expecting to be announced.  There is a lot of noise out there about new hardware and hopes for new features.  But a lot of it is just guesswork.  
 
And, also, it is all part of the journey that Apple provide their users.  The software in WWDC supports the hardware released later in the year which is enhanced by the software released in the next WWDC and so on.  There have been quite a few times where a Swift feature or framework is released that doesn’t quite make sense until the new iPhone is release later in the year.  At least with software Apple have more control over leaks than they do over hardware.
 
So, next up will be a summary of WWDC.  Watch this space.

Microsoft Ignite 2015

Earlier this month I went to the annual Microsoft Ignite conference (the Auckland, New Zealand version).  I think I confused a few people when I advised them of my attendance.  Depending which sphere they were in they were expecting me to say I was going to an Apple/iOS related conference or a IBM Notes/Domino one.  As it happens I’d have preferred to go to the former but they are either too expensive, oversubscribed, or just too far away.  And as for IBM these are few and far between – either an occasional one in Australia (AUSLUG) or the big one in Florida.  So this one was close, moderately priced, and interesting.  As it happens a lot of my work still remains in the Windows space so learning about Windows 10 was very useful.
The themes for the conference were as follows:-
     – Windows 10
     – Azure Cloud
     – Windows 10 Universal Apps
     – Cortana
     – QA Testing and Development Teams

Microsoft Windows 10

As this had just been released there was a push to promote how easy it was to upgrade to it.  I suspect they are preaching to the converted here.  However it was interesting to not how many larger organisations already had deployments of Windows 10 within their organisation (whether they liked it or not).  The only catch I head of was that some older printer drivers were not available for Windows 10.

Azure/Cloud

This is not my area of speciality though I can appreciate the functionality Microsoft were providing to allow any organisation to utilise cloud resources for their business.

Microsoft Windows 10 Universal Apps

So these are applications that use the same binary across any platform.  So rather than having one source/binary for Windows desktop and another for Windows Mobile the same compiled executable can be run on both platforms.  Related to this was the number of presentations talking about adaptive UI and UX.  The ideas here are similar (but different) to that presented by Apple in their Auto Layout tools.  Its always good to see how others approach this challenge and cross-fertilise any techniques.

Cortana

The thing I liked about Cortana was that any suggestion it made could be backed up by some ‘evidence’ that you could see.  So a film recommendation will be supported by options or information you had provided previously.  In a way I like the transparency of the decision making but on the other hand a few random left field suggestions will never go amiss.  I was interested in how developers could add in application specific phrases that Cortana would recognise and then pass on to your application.

QA Testing and Development teams

Regardless of the environment there will always be people, communication and project timing issues.  So these talks by team leaders and lead engineers where inspiring and informative as to how they all get the most out of their developers.  It was good to see how much science (as well as folklore) was behind the decisions made and the structures used.
In all, an entertaining and educational few days in Auckland.

GTPhoto – a new WordPress website

Earlier this year I was asked by a friend to create a WordPress website for his growing photography business.

So here I present Greg Thompson Photography, please head over to his website and enjoy some outstanding photography.

It was obvious that I would be using WordPress for the website.  But there was quite a few additional decisions I needed to make.  The choice of theme was mad after looking at quite a few options.  There was a lot we looked at that were minimal and predominantly white – we chose something that accentuated the colours in the photos.  Displaying the photos was a challenge and required a little practice with getting the right image size and also leaning about adding a watermark to the images.  All in all it was an interesting exercise and a rewarding one.  Greg’s photography business is growing and its fun watching the hits of the site fluctuate as new photos are added and events are covered.

Lotus Notes – Text field “Summary” flag

Here is a recent challenge.  I have field in a Lotus Notes database that contains a log of activity that has happened to a document.  Due to additional functionality and user requirements (isn’t it always the way) this field now, in some cases, overflows.  The error states “32K limit exceeded”.  In fact I think the limit is a lot less.  The limit is set due to the “Summary” flag field the field being set to True.  To see this flag check Doc Properties, choose a text field, and check “Field Flags” which should have “SUMMARY” after it.  With this flag set the field can be used in views.

Bob Balaban wrote a good post about his experiences with the Summary flag and how the 32K limit can be a lot less depending on various conditions.  He also shows some example code about how to set the Summary Flag to False to allow more text to be saved.  The trick is to clear the flag before saving the document.

Now off to do some coding…

Hex dump of a file in Windows

(Without installing any software).

Here is the scenario.  You are remotely connected to a server overseas.  You are looking at a text file and want to understand what is separating the various segments of a received HL7 message (or want to look at the contents of any file for that matter).  You could download a hex dump utility and all will be sweet – but in the case upload times could be a problem and you might not have permission to install software.   There must be a way!

Of course there is … thanks to Google and this post which details how to use Powershell to process and dump a file character by character in hex.  Have a look for the response referring to Powershell and add in the change to alway print a two character hex number – keeps things nice and evenly spaced.  Thanks to user “wmz” and www.superuser.com.

Empty iOS applications

As I noted previously I am working through the Big Nerd Ranch books on Objective-C and iOS development.  One of the good things is that all of the  iOS programs used as exercises are started as empty applications.  This means they are built up from nothing but an Application delegate – no storyboard, no XIB file.
It’s taking a bit longer than I had planned so I have ended up having the Xcode development environment being updated to Xcode 6.  The next time I started one of the Big Nerd Ranch exercises I was a little lost – no more ‘empty application’.  The closest option had storyboard and a launch screen XIB, lots of things that were not needed – well, at least in terms of the exercise.
Fortunately other people have had the same problem so thanks to Team Tree House who had a post on their forum reporting the same issue and the kind person who posted a comment there which pointed to Code From Above who clearly detailed how to remove the ‘offending’ additional components from the Single View Application.
All back on track for more learning.

WordPress Multisite

As you would have guessed this is a WordPress blog.  Actually, I’ll let you into a little secret, there are three blogs hosted on the same WordPress install.  You see I like having a segmented life and while you are here for my computing journey, you might not be so interested if it was jumbled up with other ‘noise’.
So when I was looking at how to host three blogs on one hosted web account it was an easy decision.  I am sure there are other options but the one that kept being mentioned as ‘the best’ or ‘most flexible’ was WordPress.  It was also around this time that I realised I would need three of these WordPress blogs/sites.  Did that mean I needed three installs of the core software?  How do I connect you with the right site?  A few google searches and I had my answer – WordOress MU (well not quite, that is the old name for the feature now known as WordPress Multisite, or WordPress Network).
WordPress have an excellent instructions on what to do and, to be honest, the WordOress software pretty much takes you through the steps as soon as you choose to enable a ‘network setup’.
There were a few ‘gotchas’ that I encountered:
1/  I installed WordPress as a plain install.  As soon as this was installed the blog was available for viewing.  I realised that this would be an issue as I created the three networked blogs and was setting them up.  WordPress populates each new site with a default post, comment and page.  For a while I needed to have a means to hide them from the world in some way.  To do this I found a ‘Maintenance Mode’ plugin which I installed and enabled on this default blog.  I’ll talk about this plugin in a later posting.
2/  There were references to the HTACCESS file and changes that needed to be made to that.  As I understand it this file allows control of what can be accessed by web requests via the web server.  In the case of a WordPress network installation the web server needs to know that any subdomain reference should go to Wordpress and it will sort out which site to present to the user.  Note that I used the recommended subdomain install ‘e.g. computing.lighthousenz.com’ rather than trying to use subdirectories.  This does mean that if I actually want to have a subdomain that goes to a non WordPress site I may need to change the HTACCESS file.  I did find a couple of places that talked about how the HTACCESS file needs to be customised for each install, however I just cut and pasted the one supplied by WordPress and all was fine.  I’m guessing if you have a non-standard or existing web setup things might be different.
3/  Finally – I found a great video on Youtube that goes through the steps required to setup a WordPress network (thanks guys).  That gave me the confidence to go ahead.  However a few of the commenters for that video had the same problem I did.  They had set up the site in WordPress, created the subdomain (in cpanel, usually) but then got “site not found”.  The missing step for me was to add the subdomain to my DNS records.  The small step made all the difference and the site was accessible within a short time.
So, there you have it.  Multiple blogs or WordPress sites can be yours in a short time.  Follow the instructions of WordPress and that video and my tips above and all will be fine.  Fingers crossed.

Celluon Magic Cube

I am always interested in different means of interacting with a computer and with software applications.  These days we take for granted the touch, swipe and tap of using our smart phones.  Touch screens for PCs have been around for quite some time.  I remember configuring them and using them in demonstrations in the mid 1990’s.  Back then you needed to purchase the touch surface and then have it fitted over the top of the CRT screen.  It was an interesting task.
More recently I saw an article about a laser projected keyboard that could be used for data entry and controlling a PC.  I spend a bit of time these days writing software for medical laboratories so having a keyboard that doesn’t need to be kept sterile and be cleaned every day sounded like a good thing.  I purchased one for demonstration purposes.
As noted above the product is the Celluon Magic Cube.  A revisit to the site indicates that there is a newer version to the one I purchased which has some useful improvements – specifically multitouch gesture recognition.
The Magic Cube device and projected keyboard
The Magic Cube device and projected keyboard
The one I tried was easy to setup – simply a Bluetooth device that needed to be paired.  Once you got used to typing on your desk it was fairly easy to get up to speed.  In a bright room it was a bit harder to see the keyboard, and I quickly found out that you need to keep the device at the same level as the typing surface – you can’t lift it up to make the keyboard bigger.  However for standard typing or data entry where a normal keyboard might be too imposing or get too dirty this just might be an option.
The keyboard projected by the Celluon Magic Cube device
The keyboard projected by the Celluon Magic Cube device

Me and Lotus Notes

This year I will celebrate 25 years of working with a product called Lotus Notes.  In the late 90’s IBM purchased Lotus and it was eventually renamed to IBM Notes (client) and IBM Domino (server).  But to me it is hard to expunge the “Lotus” name from my mind.
For me Lotus Notes and the associated job that exposed me to the product were a case of right place, right time.  I had been looking for a job for some time and after a few fruit unsuccessful interviews I was told by one job recruiter that in the current market I was ‘unemployable’.  Then a job came along where a company wanted to build a team for this new product of Lotus Notes.  While they said ‘prior experience preferred’ this was probably an optimistic statement.  On the way to the interview I decided to spend a few minutes in a local technical book store browsing and calming down before what I expected to be another ‘no’.  In there I found a book with the title ‘Lotus Notes in 10 minutes’.  I read it in five.  I went into that interview able to use the terms and talk about some of the concepts.  I am sure anybody with any experience would pick holes in what I said that day but as I recall I thought ‘I have nothing to lose, let’s just go for it’.  I had a job offer by the end of the week.
That started a career spanning Lotus Notes versions 3 through to 9 (and beyond).  It also enabled me to enjoy roles such as development, testing, design, analysis, project management, team management, consulting, troubleshooting, and much more.
These days my Lotus (IBM) Notes/Domino development is based around a complex application of about 20 databases and over a hundred script libraries.  Most times its development, sometimes design, but all of the time it is enjoyable – still.
I have a few ideas about connecting Lotus Notes databases to iOS so some of that may appear here as I progress.