August 18, 2016

Programming & Apps

Ever since I got my first computer, a ZX81, I was fascinated with making it do things, .  With almost every new computer that came out, I found a way to get one so I could keep coding.  I even had a dabble at assembly and made some coloured bars move up the screen.  Then I got an Atari ST and STOS.  I discovered I could hack games with a “Freeze Frame” cartridge that gave a memory print so you could change addresses in hex.  FF for the win.  It was an addiction.

Skipping ahead to 1989 I started my first foray into commercial programming at the charity ActionAid.  I started as a data inputter.  Things were very different back then, for instance I spent 8 hours a day on a high stool in the corner of a kitchen using a computer on the kitchen counter.  The kitchen was also busy in the mornings as the premises were a B&B guest house.  So, I was in my teens typing away with a spare bacon butty in my hand.

A few months in I started to get frustrated at how slow the data entry system was.  Tab stops were in the wrong order and things were just too cumbersome or slow.  So I went out to WHSmith and bought a book on DBase and worked out how it all fitted together.  During my lunch breaks I started to update the system, baby steps though in case I killed it and had to blame a guest.  The head office way down in Somerset heard that I was improving things.  They were horrified to hear that a lowly data inputter up north had messed with the high end Amstrad PC 1640 system so sent out their chief architect to beat me back into a corner.

1640 Checkout the beast, with upgraded 3.5″ floppy drive.  Powah.

Rather peeved he examined what I had done, then made me his North-West area assistant.  A year later we hired a company who rewrote everything in Clipper and left me with it, I found myself a supervisor of 30 data inputters and chief architect (well, supervisor) for the NW ActionAid week office.  Not in the kitchen any more of course.  We now had 60+ employees and worked in a huge open plan office in Macclesfield.  Gone were the free bacon sandwiches.  Clipper was really easy to understand as a language so I started to add to our system with new entry forms, reporting modules and faster input processes that the data entry team loved.  I was contracted out to other charities to implement our now bespoke rapid entry system.  It was fun work.

ActionAid relocated the office hundreds of miles away to a new shiny call centre,  I chose not to relocate. A sad end of an era.

In 1994 I landed a job at silkmoth Ltd as a software tester for C++ programmers.  Testing.  Well,  it would be more fun now as you can automate a lot of user interaction but back then it was pen and paper reporting.  The good news is I pissed off the programmers on a daily basis.  A good tester finds faults. And faults I found.  That kind of back fired in the long run as I got more frequent builds with minor changes so lots of rinse repeat work.

We didn’t have need for a technical support department because we all knew the application and we all answered the phone.  When we reached around 260 clients the phone was going off far to frequently so I switched from testing to technical support.  I was given a new cubicle (hell yeah!) and was answering the phone almost non stop. The software was a nursery management package so a lot of users were computer illiterate.  You have no option but to learn patience when your average user prefers to change a nappy rather than print out the weeks milk report on the computer-that-will-blow-up-if-you-press-the-wrong-button.

Meanwhile at home I dabbled in 2D and 3D animation.  I loved creating things so I brought an animation into the company showing the silkmoth logo spinning around.  They loved it so they bought me a copy of 3D Studio for DOS and let me have at it.  We then built a logo screensaver which was OMG at the time, clients wanted their own so we started building screensavers for everybody.  Using Delphi 6 we produced everything from small branded windows apps to interactive WinG screensavers.  We hired a secretary and a new support guy so I could concentrate on screensaver development full time.  I was given an office upstairs.  Even today an office is still a luxury so I was very happy about that back then, I was able to concentrate without distraction.

We sold the screensavers to some pretty big name clients such as Phileas Fogg, Toshiba, Terry Pratchetts Discworld, PG-Tips, Saab, Wella, IBM, Shell, Martini, Bacardi, Ciba Vision and had to expand our team, we got a new programmer. He was, I have to admit, brilliant and now as a two man creative team we churned out app after app.

Toothpaste chasing tooth brush   Toshiba screensaver - pterodactyl  Phileas Fogg screensaver  Power Logo's screensavers  Xmas Screensavers  Discworld Screensaver  Toshiba - Interactive Windows 3.1 / Windows 95 screensaver.

With the success of bespoke screensavers it was time to create a screensaver creator and target small businesses. I designed three applications called FlashWiz, ImageWiz and VideoWiz which allowed the creation of fully customised screen saver install files with all your own branding.

flashwiz1 imagewiz1 videowiz1

A little later the dot.com boom came along. HTML was all the rage, if you couldn’t write a full website in notepad then you were a noob and don’t ever mention DreamWeaver.  I was still working for Silkmoth Ltd as a 3D artist / software tester / coder and of course they wanted a website.  With a goal firmly in sight I left the days of Bulletin Board Systems (BBS) and stepped into the shiny new age of the World Wide Web.

I produced the first company static html website.

I am just going to pause here because this is interesting, I just found a tool online (https://archive.org/web/) that holds archived websites and found the 19 years old first company website I made! Page counters and guestbooks, all my old art etc.  Very nostalgic.  I even added my name into the meta keywords back then, shhh.

Anyway, our clients went into a frenzy and the business rapidly changed from a software house to web development.  Soon, every man and his dog was getting in on it so we needed to specialise, this is where Delphi made a return and I introduced dynamic websites using ActiveX and CGI, this allowed the clients to change their own web content using our bespoke admin pages along with fancy animated GIFs  (all the rage back then).   It all evolved into modern ASP/PHP sites with a MS SQL back end.   The business expanded rapidly so we bought a dedicated web server and hosted it at Manchester Uni.   The IIS Server management and SQL backend work was sucking a lot of my time so I trained up one of the employees as a DBA, he had a great analytical mind and excelled at shaving milliseconds off transactions, this allowed me to concentrate on project management which, If I am honest, I hated.  Gantt charts and MS Project shenanigans was creative suppression.  I had reached a crossroad. I had climbed the development ladder to a rung that said “Keep going for management”.  This is not me.  I am a creator, an inventor, a solution finder and a problem solver.

 

On a side note, I was in a PC gaming clan called OPSv and we played Call of Duty Black Ops 1.  Now, this game is very competitive and I was rather good at it, people kept asking how I had configured the game’s rather fiddly config files so rather than try and work out their own system, I wrote a little helper app that did all the hard work.  After running this utility you would see a dramatic improvement in your gameplay.  No longer would you shoot endlessly at a player for them to turn around unharmed, put their cup of tea down and shoot you dead in one shot.

scrshot

Moving on, in 2003 I went to Uni at the ripe age of 34 and bagged a 1st class degree in Modelling and Animation.

I graduated in 2007 and started at Optima Design Services (actually a sister company called True2Life Ltd back then) as a 3D Artist producing virtual reality, VR link in menu. Optima are primarily a CAD Product Design business and I was a 3D artist at the time but one quiet day a few years later the director said “Let’s write an iPhone app”  So I did.  My first app was a guitar tuner called “Optima Guitar Tuner”.  A word of warning, do not start out your first app using Core Audio, Audio Unit programming has a steep learning curve to say the least.  My first iPhone app was born.  We loved it, so did tens of thousands of users and the app shot into the top 50 worldwide charts with 5 star reviews pouring in. Eureka!

Due to the success of Optima Guitar Tuner, the 3D part of the business was shoved aside and I became a full-time app developer. The next app I worked on was for a medical company in the USA who wanted a windows laptop app converting to the iPad.  Can it be encrypted? yes.  Can we use secure FTP and record videos? no problem, can it be an enterprise app which is installed from our own internal servers?  erm, yes it can!   So my second app was a whole new challenge but I did it to deadline and the client was happy.  In high spirits I handed in my notice in 2011, a full year of notice as I’m super nice like that and I wanted to visit my sister in Australia with the grand dreams of becoming super rich.  While in Australia I wrote another iPhone app called Power Napper, after 5 months I returned to England to continue as a Freelancer, my dream of millions slightly crushed.

I now write software in Objective-C for Mac/iOS and some C# for Windows desktop and Unity3D while still doing animation, video editing and VR, sub contracting to Optima and other clients.

optima guitar tuner
drop shape
power napper
bubble tuner
bookmark reminder pro
iOS Optima Guitar Tuner written in Objective-C using core audio for low latency.  The app listens via the microphone and converts the guitar sound into frequency which we can measure against known tunings. When I left Optima this app had received hundreds of 5 star reviews up to version 2.2.
iOS Drop Shape is a little game done in my spare time using Unity3D and C#
iOS Power Napper is a timer app that wakes you gently after a power nap.  It also has sound detection so will set the alarm off if somebody tries to sneak up on you while napping on your lunch break. Objective-C
macOS Bubble Tuner is a desktop app for tuning instruments. I wrote this in Swift version 1.0 to see what the language was like. Fun.
macOS Bookmark Reminder Pro. My favourite app of all time ever.  This app bookmarks web pages which you can set reminders on.  I use this daily myself. Objective-C

 

 

 

One of the benefits of being a hybrid artist/programmer is that I can produce all the art too.

In 2015 I was contacted by a design studio that had a problem.  “We have hundreds, maybe thousands of objects that need to animate leaping out of a box and assemble into a product, can you automate it?” they asked.  I love a good challenge.  After a first initial test using a node based system called Particle Flow I managed to have something that looked roughly like they wanted but it was difficult to modify, all the keyframes were baked so you couldn’t tweak any of it.  I needed to write a plugin using MaxScript instead.  This way the artists at their studio could use something familiar (a form with buttons and sliders), it had plenty of options to allow for variation.  The result was great.  Each model part could be tweaked after animation and keys were all dynamic so the animation was always correctly timed no matter how much they messed with any of the parts along the curve.   From what I understand this shaved weeks off work across several videos.

Here is a test scene showing the 3D Studio Max script after it was applied to an assembled model.  This animation took about 5 minutes to make using my script (possibly days of work manually).  I also have the commercial broadcast it was used in but that is private request only.

 

In 2016, between contracts on animation jobs I found the time to create a macOS app called Bookmark Reminder Pro This is written using Objective-C.  I also wrote it for Windows using C#, SQLite and the .NET framework but that version is not as polished yet.  You can download the Windows version for free here.