Published on

DevConf Johannesburg 2019

Authors

On Thursday the 28th of March I attended the Joburg version of an annual developer conference called DevConf. The conference had multiple slots with 4 tracks per slot for the duration of the day.

You basically had to choose the topic that appealed to you the most. If nothing did there was an exhibit section with exhibits from the various sponsors. There was also a fish bowl area where you can meet other attendees and the lecture speakers.

Below I have detailed points I got out of the various sessions I attended.

Lean Coffee

This was optional and began about an hour before the official conference began. I have never attended a lean coffee session before and it was really cool to check out.

The way a lean coffee works is:

  • like minded people meet with no clear agenda
  • the session starts with everyone proposing any ideas they want to talk about (as this was a developer conference the topics suggested were also developer related)
    • people do not have to suggest anything and can suggest up to 3 topics
  • the topics are read out with each topic author giving a brief explanation
  • each attendee then has 3 votes where they mark them on the topic/s they find most interesting. They can mark all 3 or 2 or 1 on one topic or spread them accordingly.
  • the topics that have the most votes are put into an in progress column
  • someone times for 5 minutes and people discuss the topic
  • after 5 minutes people hold thumbs up or down and if there are enough thumbs up people continue the discussion for another 3 minutes. This can happen once more after this if people opt to continue.
  • the topic is moved to done and the next topic with the next highest votes is moved to the in progress column
  • not all topics will necessarily be discussed as only one hour is generally allocated to the session

It was interesting hearing how this idea of lean coffee can be used in other settings. For example a manager could use it to encourage his team to give him constructive feedback on what is and is not working on the team.

Key note

The key note was excellent. Well delivered and presented.

The speaker discussed how new technology will change the way we do things even more and how we need to be cognizant of the implications of new tech.

He went through examples of how some of this tech like quantum computing can already be used by called IaaS. Quantum computing and quantum algorithms will unlock a whole new way of doing things. For example a quantum search algorithm takes on average order square rot of n. Meaning for example if there are 100 numbers in the search list it takes on average 10 steps to find the number. Current approaches on the other hand would take on average 50 tries. This performance improvement widens even more as you increase the size of the list being searched.

This talk was very eye opening and thought provoking.

Microservice concepts for front end frameworks

  • There is no silver bullet
    • tradeoff between deployment isolation, technology isolation, speed and a number of other factors
  • After seeing the different options and how they work I personally would opt to avoid mixing frameworks due to all the complexity it adds. If possible rather use 1 or 2 frameworks otherwise it could get really chaotic.

Mutation Testing

  • Having heard of it before it was very cool to see this in action
  • Frameworks for most languages
    • Not all frameworks equal, they will not always pick up certain mutations. PIT on the Java side seems to pick up the most (of those frameworks demoed)
  • A higher Mutation score is strongly correlated with easier to maintain tests
  • Mutation tests seem to be a good way to get just the right amount of tests in
    • instead of aiming for as high test coverage as possible which can be a very bad metric if done incorrectly (100%!= (goodTests))

AI/Machine Learning for Developers

It was cool seeing some of the process that goes into a typical data science project as well as some of the suggestions that the speaker gave on areas data science could be incorporated into existing projects that do not have huge amounts of data.

Building a catapult with a 3D printer

Matt's talks are always very interesting and entertaining

  • This talk was interesting as he walked the audience through the process of building a 3D printed device and had live demos of many of the tools to illustrate different concepts.
  • It was very interesting how he used Unity 3D's physics engine to run simulations on the design of his catapult

Tools Used

  • Fusion 360
    • Complex at first but very powerful once you get to grips with it
  • It's history and apply changes in top of history is really unbelievable
  • 3D printers have gotten significantly cheaper and better over the years. A very decent one can be purchased for about R4000
    • 2kg plastic =~ R400
  • ThingiVerse

Debugging User Interaction Performance Issues

The talker has spent plenty time and effort researching and understanding how browsers render the page.

She broke down the typical anatomy of what happens when a page loads.

She displayed where these tools can be found in Chrome as well as the core concepts that one should consider when optimizing a page.

My notes and takeaways from this talk are below:

  • Optimize critical rendering path

  • Progress bars over spinners (illusion of faster loading)

  • Placeholder content on page (like Facebook does)

    • this indicates to the user that something will come there
    • it also prevents the page from jumping. Chrome fixed this issue in newer versions by fixing the scrollbar position. Unfortunately not all browsers have done this. Using placeholders is the best way to mitigate this.
  • transform and opacity are the most optimized and efficient css operations to use for animation (often offloaded to the gpu)

  • aim for 60 fps or 120 fps if you're catering for better devices

  • jank: a term used to describe badly rendered graphics where it might be for example jittery due to frames dropping. It is not something that can be articulated easily, instead it can easily be seen.

  • toggle pain flashing to see when repaints happen.

  • careful not to abuse and overuse some of these optimisation css classes. Some for example create additional layers in the browser. Too many layers uses up more ram and cpu which could crash the user's browser.

  • https://csstriggers.com

    • details what properties cause repaint
  • Image downloads research Harry Roberts (on optimizing techniques for images)

  • https://pitercss.com

  • jpeg for images. Gif, png for icons and other stuff

  • zalando lazy loading study. Use image placeholders instead

  • in general test, don't optimize early.

Conclusion

I unfortunately could not attend the last track of talks but overall the conference was really good an informative. I look forward to the next one in 2020.