Ninja Ferret

The random thoughts of a software developer

Wroc# Conference - 26 March 2018

I was invited to the Wroc# conference and here are some of my sketchnotes.

This was a great conference and I have to thank the organisers for inviting me over to sketchnote the conference.

That just happened! A look at event-based serverless computing

by Glenn Henriksen

Sketchnotes from the talk 'That just happened! A look at event-based serveless programming'

Glenm started by stating the most important thing to consider when it comes to any function or microservice is to think about:

  • Coupling - how many connections exist between our components, how many things does a component depend upon
  • Cohesion - how close together are thing things that are coupled?

We cannot get anything done without any form of coupling but we want to have LOW COUPLING. Anything that is coupled together we want to be close to each other so that they can easily change together, i.e. we want HIGH COHESION.

Events and Messages are ways of decoupling our systems:

  • Events are fire and forget, other systems can subscribe to those events and take actions but the original systems do not know what is being done with the information they contain.
  • Messages are published with knowledge about what is to be done with the message. The message may require a reponse that will also be published as a message, or the message could be a specific command that another system must carry out.

Flow: the worst software development approach in history

by Sander Hoogendoorn and Kim van Wilgen

Sketchnotes from the talk 'Flow: the worst software development approach in history'

Kim and Sander have an issue with Agile™, how an entire industry has appeared out of a simple set of principles that had helped some early pioneers grow faster. So they decided to create FLOW: The worse software development approach in history which takes a lot of the anti-patterns from other development methodologies.

The current Agile™ practices focus more on certification than real-world practical experiences and so people use the techniques blindly rather than applying the principles.

Let's take a look at the Agile Manifesto again:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

Agile™ has grown to focus solely on the left and ignoring the right. It was never about no tools, no processes, no documentation, no contract negotiation and no plan. We still need all of these but not at the expense of the items on the left.

Developing multi-tenant SaaS business applications on Azure

by Zan Kavtaskin

Sketchnotes from the talk 'Developing multi-tenant SaaS business applications on Azure'

Zan took us through some of the architectural decisions that we might need to make when building a multi-tenant system and how we apply it to building systems on Azure.

This was not about absolutes, but about trade-offs, for every decision that is needed there are multiple possible solutions and Zan gives us a look at the pros and cons of some of those possibilities.

CSP XXP STS PKP CAA ETC OMG WTF BBQ

by Scott Helme

Sketchnotes from the talk 'CSP XXP STS PKP CAA ETC OMG WTF BBQ'

There is a lot about security that I need to think about after this talk. He takes us through some of the interesting attacks that can be made against your site and how you can defend against them.

There is a lot to learn and to try out, but when building up one of the policies we should start bit by bit. We can use the report-uri to understand what we are missing and what violations may cause our site to break.

Growing great teams and adopting new processes through Elastic Leadership

by Roy Osherove

Sketchnotes from the talk 'Growing great teams and adopting new processes through Elastic Leadership'

Roy made me think a lot about the interactions that I have with people around me, about how I learn and about how I can improve how I can learn.

Being a leader is not always about command and control, a leader should be enabling people, helping them to grow to a position where they do not need you to tell them what to do.

When Roy talks abhout how we learn, he points out that we have points in our abilities jump rapidly, but these jumps tend to be brief and then we "plateau", there are long periods where we don't grow. These jumps are linked to times when we learn something new, we learn a new technique, or a new programming language, where we are taken out of our comfort zone. Being out of our comfort zone pushes you into a ravine where you are less effective, less able, but by going through this process you find the knowledge and skills we need to make the next jump in our abilities.

I came away with several questions, how can I deliberately push myself out of my comfort zone? How can I push myself to learn something new? How can I then do the same for the rest of my team?

One interesting point about team dynamics was that to make a team adapt, the team needs to have the space to adapt. A team exists in one of several states:

  • Survival - the team is running just to keep up with the demands placed upon them, they are firefighting and have no spare capacity to learn. In this case, a command and control leadership style is needed while you work to create the space for them to learn.
  • Learning - the team has the space now to learn, they do not need people to tell then what to do, to solve problems for them. The team needs a coach to challenge them, teach them, help them to understand the problems and to find their own answers.
  • Self-organising - the team is able to solve most problems on its own. The team now needs a facilitator who will help to keep them moving in the right direction.

Teams can move between these states, so it is important to recognise which state your team is in.

Building real-world mobile apps with Xamarin: Under the hood of the Azure Mobile app

by Jacob Jedryszek

Sketchnotes from the talk 'Building real-world mobile apps with Xamarin: Under the hood of the Azure Mobile app'

Jacob took us through the world of Xamarin at Microsoft, how we can build cross-platform applications for mobile devises in the .NET world. There is a lot that Xamarin provides, including the ability to test on multiple different devices and even develop for MacOS on the web.

My favourite part of the talk was where Jacob introduced us to Seeing AI, an application that has been built by Microsoft to help narrate the world to blind/partially sighted people. There are so many different features, like being able to read a document, telling the user to rotate their phone to align with the document, or being able to recognise the expressions of faces in a meeting.

Tech like this shows me the potential that exists for the world, technology that is designed to actually make people's lives better, and I hope more apps like this can be made to make the world more accessible.

Recent Posts

NDC London 2018

I made some sketchnotes when I attended NDC London 2018. -

DDD12

The 12th DeveloperDeveloperDeveloper! conference in Reading. -

Sketch noting

A brief into into how I approach sketchnoting and some of the resources I use -

Monoliths to microservices

At DDD East Anglia I talked about how we can, as part of our daily jobs, refactor our code into a loosely coupled structure. As a side-effect of this process it is easier to extract microservices from the giant monolith. -

Introducing functional calisthenics

So, on my way to SoCraTes UK 2015 and talking about Object Calisthenics I was struck by an idea, is there an equivalent of Object Calisthenics for functional programming to help people learn? So I asked the wonderful people at the conference and here is what we concluced. -

Archive of posts