NDC Sydney

I usually attend quite a few meetups in Melbourne, in the areas of entrepreneurship and software development, but recently all planets aligned perfectly and I was fortunate enough to go to NDC Sydney – my first attendance at an International developers’ conference.

My initial expectations weren’t too high but I must say I was quite surprised by the slick organization, the quality of the talks and the outcome I received from them.

Tech-talks rarely go into much detail; you get a glimpse of some technology or technique but it’s only when you attempt to apply your new knowledge, that you realize the talk was just a brief and that the real learning happens now when you get your hands dirty.

I can’t say that the case here was different, but I can say that these introductory talks were really good, well thought, and gave me lots of inspiration to go and explore these new things I’ve just learnt. It goes hand in hand with the experience of the speakers. An inexperienced speaker would spend time live coding. This causes the audience to lose focus, not to mention potential bugs the speaker might run into and try to solve on stage. The speakers I saw had all their code snippets or projects already ready to be copied and pasted, so the presentations were smooth.

To summarize the “entertaining” part of the conference, I’d mention a great boat cruise across Darling Harbour and a cocktail night; each one obviously offered some great mingling opportunities. The rooms were spacious and the food was plentiful, including constant coffee top-ups. Everything required to make you comfortable and focused.

Below are some impressions and learnings I’ve had about random subjects:

Machine Learning

This is quite a large discipline that has started flourishing in the 90’s but gains much more exposure in the last couple of years. The principles are not very new but with the advent of some robust frameworks recently (namely TensorFlow, Azure Machine Learning, an evolution of R, F#, Python statistical packages (1, 2, 3) and more) this has become much more accessible. It’s an area I want to take seriously and dive into, but from what I’ve been exposed to on that matter it seemed to require some heavy prior mathematical knowledge in areas I do not have background with.

So I was quite delighted to attend Peter Myers’ talk where he showed how, by taking plain structural data (from AdventureWorks database) and doing some simple cleansing in Excel, one can build an Experiment in Azure Machine Learning Studio, connect some semi-flowchart cubes and wires together including a couple of alternative Machine Learning algorithms to run on it, and come up with the one that gives the highest percentage of successful predictions (success is measured against some percentage of the same data). Then one can extract a function from the successful path, a function that ultimately accepts some input data (say a customer or patient record for example) and returns some score back (classification, like client profitability, health likelihood or any other quantifiable data; or regression – a raw number). All that, without much intimate and advanced mathematical knowledge! Quite impressive and I’m eager to try it myself on some real world data that I have. Oh, and apparently there is a very generous free tier you can use on Azure that lets you do all of this stuff, on thousands of records, for free. Not even a credit card pre-fill needed!

Functional Programming

I never did functional programming. Or so I thought. Apparently, Microsoft allowed some Functional Programming to sneak into C# via LINQ. LINQ is basically functional programming! And once you know that, you realize that you already know functional programming. And it’s not just LINQ. Do you know Lodash? it uses functional programming. Do you know RxJS? functional. And much more.

So if you’re too lazy (like me) to Google for some functional programming tutorial, and you know C#, here it is in the shortest way possible:

Functional: What you want to do (by say, a series of logical steps that somewhat rely on each other, and are executed one-by-one)
Imperative (say, “traditional” C#): How you want (by a set of chained rules, functions, where each function has very known inputs and an output, and nothing else but them.)

Functional: No state and no side-effects
Imperative: Yes state and yes side-effects

And if you want to spend 5 more minutes, read these two great answers from StackOverflow.

Serverless Architecture

This one really threw me off. Again, I heard this term before, but I’ve now seen how a full-blown, globally scaled application, runs without PAAS / IAAS servers at all.

These are the principles:

  • Your app is a rich client app, built using your favorite JavaScript framework (Angular, React, Aurelia, whatever). It’s hosted on S3, GitHub Pages etc.
  • Everything your app needs is accessed by cloud services: Authentication (Auth0 and such), Database (Firebase), Cache and NoSQL (Redis, DynamoDB etc.), storage (S3, Azure Blob Storage). Your app consumes these services using regular HTTP calls and the API these services expose.
  • Other static assets are natively served by any of the wide variety of CDNs out there.
  • Your app’s logic, workflow and processes are implemented as Lambda functions – using services like Amazon Lambda, Azure Functions and the like.
  • You pay for what you use only.

Serverless is another form of abstraction beyond PAAS. With PAAS (Platform as a Service) someone takes care of IT / DevOps for you so you can concentrate on your app’s logic. But you still pay for all the time your machines are up (web and worker roles), even when they are idle. With Serverless, you only pay for exact usage. If you have fewer users and less traffic, you pay less processing time.

Now, programming for a Serverless architecture requires a mind shift and quite some changes in your code. So it doesn’t suit every project and everyone. It’s also quite new, so frameworks that provide some good out-of-the-box wrappers are just beginning to emerge. But it’s promising. I want to see in a year or two whether this will really catch as a hot trend or not.

Summary

There were some really great talks and I had to choose one on each time slot, so I’m looking forward to catching up with the others when their recordings will be available online. You definitely should follow that up. There were lots of other entertaining moments, like watching Scott Hanselman chatting with David Fowler (who was at home in the US) on Skype, spontaneously, while on stage; or Jon Skeet – after being asked to answer a question from Stack Overflow – starting by actually editing the question itself. There was a HoloLens demo… without a HoloLens device. Which is possible, apparently! Tips about video transcoding, doing REST in a right way and a lot more.

Observations from NDC Sydney 2016