Commonwealth Bank of Australia is the main sponsor of a yearly conference called Norwegian Developer Conference (NDC). Being one of the main sponsors, the bank sends a lot of engineers to attend. This year I was lucky to be selected to attend the NDC held at Hilton Hotel 17th-19th of August this year (2017)!
This was my first ever software conference and I'll be giving an overview of the top talks I went to and my experience in general.
The conference had 8 rooms, each of which had their own speaker giving talks happening at went for an hour. A large majority of the talks at NDC were Microsoft related technology talks (Azure, .NET, .NET Core, etc).
Outside the rooms were a number of stalls in which each sponsor had information about their company, freebies and were manned by company representatives who could answer any question you had about their company. The Pluralsight stall was my favourite stall, giving away keepcups, t-shirts, fidget spinners, stickers and microfibre cleaning cloths. In-between the talks, you were able and encouraged to visit each stall to learn more about each company.
The event was fully catered (breakfast, lunch and snacks) and also had free barista made coffee the whole day.
For each day, I will be going through the 2 top talks I found the most interesting and give a summary of what they talked about.
Keynote Speaker - Jennifer Marsmen
The keynote for NDC was Jennifer Marsmen, a principle engineer working at Microsoft in the United States.
Her presentation was around her learnings through using the Emotive Headset device and how she used it for lie detection. The strange looking headset attaches to your head and has a number of senses that can apparently detect brain signals. Combining this brain signal detection with machine learning, she was able to train it to detect what parts of the brain are used when thinking about specific things. To demonstrate this, she used a simple program she created to record her brain signals when she thinks about "pushing" and "pulling" a virtual cube. From training the software on these brain signals, she could then control the cube's movement from just using the device and her thinking about pushing/pulling the cube alone - pretty interesting stuff.
She then explained how she applied similar techniques to use the device for lie detection on her husband! She trained it by making him tell some truths and some lies to map what parts of his brain were being used to tell truths and tell lies. The accuracy of the end result was fairly decent (not enough to be used within legal applications yet).
I'm very interested in seeing future applications of the Emotive Headset as it matures and the development community for it grows.
Progressive Web Apps - Jad Joubran
This talk was an introduction to Progressive Web Apps (PWA), what benefits they have over traditional web apps and how to get started building a PWA. I hadn't known much about PWAs before this talk. I found that PWAs are basically normal websites, except they can appear to users as native mobile applications (mainly in the fact they can run offline).
Jad talked about all the features that PWA's bring. Some notable features include:
- Ability to run offline
- Ability to used device's native features like push notifications
- No app install required from any app store
- No app store submission required (no iOS developer fee :D)
The key take aways for me from this talk was how PWA's might have to potential to become more popular than native apps themselves (in the distant future). PWA's are in their early stages right now and companies are only experimenting with them right now. However, Twitter had released their own PWA and saw an increase in Tweets, decrease in bounce rate and increase in average page load time.
He really sold me on on this tech that is relatively new to modern browsers and I'll definitely be experimenting with all the features offered!
Hack Your Career - Troy Hunt
I found this talk by Troy to be the best talk I attended at NDC. It was not a technical talk, but instead a journey through the inspirational career of Troy Hunt.
Troy discussed how he spent a large portion of his early professional life working as an Application Architect at Pfizer. While he was working there, outside of work, he would work on adding to his blog and creating his own web projects (a well known one of his is haveibeenpwned). He wrote interesting articles and created web applications that people enjoyed. Due to his increasing presence on the web, he landed an opportunity with Pluralsight to create his own tutorial on cyber security. The course proved to be popular and he continued to create more content. Eventually, the money he was making from Pluralsight doubled his current salary at Pfizer. This allowed him to end his career at the company and persue his Pluralsight tutorials full-time among other endevours such as travelling the world running a number of workshops and giving tech-talks.
The take home from Troy was to improve your presence within the online developer community by writing your own blog posts, answering questions on Stack Overflow and creating personal projects. This not only allows you to learn a lot, but proves to current and future employers you really take pride in software engineering. This talk has motivated me to keep writing my own articles and working on my projects.
ASP.NET Core for Angular, React and Knockout developers - Steve Sanderson
In this highly paced talk from Steve, he went over features that came with .NET Core 2.0 that greatly helped developers kickstart their .NET + Angular/React/Vue/Knockout web project.
I find that one of the trickiest thing about starting your new project, is getting the initial setup correct. I always find myself browsing GitHub for starterkits/skeletons to only find them out of date or unsupported.
What Steve highlighted was how easy it is to get this setup correct using Visual Studio and .NET Core 2.0 (with the knowledge all dependencies are up to date!). It was simply a matter of opening up the IDE, selecting what project template you wanted and clicking go! It provides all the assets you need and allows you to easily add to them.
Another cool feature Steven went over in .NET Core 2.0 is the ability to now include and use npm packages! I'm definitely going to give this a try with my personal projects as I'm heavily invested (maybe a little too much) in NodeJS right now.
Take Control of the Data of You - Nigel Parker
Nigel started the talk by going into how he developed a condition called Vertigo that made him feel a bit dizzy and woozy. From visiting doctors, they made it apparent it was his lack of exercise and poor diet over the years that had him develop the condition. He wanted to fix this and decided to become much more active. He later developed a virus that worsened with exercise ultimately leading to an autoimmune disease with no known cure. He would have irregular periods of being unwell.
He purchased a biometric monitoring device to collect his health data. Applying machine learning to the data and training it by inputting when he got sick, his software was able to perdict and inform him of when he might be getting sick. He could then avoid potential sickness by slowing down and taking it easy.
I found this to be a pretty cool use of a fitness tracker and was one of the reasons I purchased a FitBit. I hope to build up a dataset and gathering interesting metrics on my steps/sleeping patterns/heartbeat once I have enough data.
Functional Design Patterns - Scott Wlaschin
This talk was a good throwback to my first years of university. Instead of learning an Object Oriented programming language like Java, C# or C++, our lecturer decided to teach us Haskell. His rationale was that he predicted a very, very small percentage of us would have learned Haskell prior to the class (was true), making it a more even playing ground for all students. After completing this class, I hadn't touched functional programming.
- Side Effect Free - Functional Programming is building software using pure functions. A pure function is a function
f(x)will always give the same output given the same value of x and does not rely on any outside variable (global or otherwise). This means that shared state, mutable data and side effects are avoided.
- Predictable and Testable - As a result of a program being composed of only functions, a functional program is more predictable and testable than an object oriented program. Knowing each function produces the same result means we can test each function knowing there won't be any side effects and will always behave the same.
There were a number of other topics he covered such as monads and design patterns, which may be a topic for another blog.
I've already started to use functional programming techniques (LINQ, JS higher order functions - map, filter reduce), and look forward to incorporating more into my programs to achieve a higher level of testability and predictability!
I had an excellent time at NDC. I had the opportunity to listen to a number of talented, experienced speakers and take away so much. The free food/coffee/t-shirts were also greatly appreciated.
If you are a .NET developer or have a focus on Microsoft products, I would highly recommend getting sponsorship from your employer to attend.