Samstag, 12. Mai 2018

DevoxxUK 2018

It is May, it is Devoxx Time!!!!

After missing out last year I made it back to the UK incarnation of Devoxx. For all of you who are not yet aware what Devoxx is: Low cost conferences, lots of talks, quite a lot of good speakers and all centered around developers. Main focus is still Java and Java based technologies but other technologies are on the uprising :-)

Day 1

Welcome to Devoxx Uk - Holly Cummins, Mark Hazel

The opening keynote was of course held by Mark Hazel himself and Holly Cummins, one of the program leads of this year. Mark goes over the usual but still important topics: 
  • What is Devoxx?
  • Why do they do it?
  • What kind of talks will be held? (Special mentioning of the Ignite talks in the evening, 5 mins 20 slides and GO!)
  • The Buddy program
  • and of course Devroxx the Thursday evening event with Devoxx beer!
  • All videos being uploaded to Youtube
Holly focused on what she like about conferences and why she considers them important. Conferences allow to look beyond your usual scope, to interact with others and hear about new technologies. Even if those things happen in a completely different field you can adapt some of the techniques for your own work. 

She drew an interesting analogy to book from the 17th century, "The Compleat Angler". A book telling people how to become a better fisher, which is the second most printed book in the English language (tells you something about the English, uh?). It taught people important virtues like patience and composure. And likewise all those things we here about at conferences can help us to become better, more well rounded as developers by not only focusing at the actual development skills but on us as a whole.

A good starting talk with the right mix of information and philosophical depth.

Java 2018: Change is the only Constant - Mark Reinhold

Being the JDK chief architect Mark has a lot of insights to give on the current and past state of the JDK as well as future plans.

Since the ecosystems around Java (node, go, swift.. ) are evolving with an impressive velocity Java has to adopt in order to keep up with this change and remain competitive. 

The first step into this direction was to refactor the JDK to allow faster and more flexible development in the future. To achieve this a lot of untangling had to be done. Make sure you at least check the slides in the video to get an impression how bad it really was *shudder*.

Now the JDK is scheduled for releases every 6 months and having an LTS release every 2 years. This is a significant improvement compared to the past. I am looking forward to see how this works out.

Another interesting aspect is that Oracle made several commercial tools available as open source and also provides JDKs licensed under GPL available.

For me this looks like Java will still be going strong for a long time and it will be interesting to see how those innovations will be received by the developer community.

A Future without Servers - Danilo Poccia

In Danilo's talk we got s short overview of the history of development. Starting with Ada LoveLace over monolithic application and micro services to lambdas and serverless architectures.

In the future Danilo envisions for us developers we can all focus solely on our business logic. All platform maintenance, logging, monitoring but also stuff like validating input is done for us by the infrastructure.

The Mindful Developer: The Neuroscience of Stress Management - Matthew Renze

In my opinion this qualifies as a brave talk. Being a an IT consultant, which is a profession in which you definitely have to deal with a lot of stressful situations, and admitting that you suffer from stress related impairments could have negative consequences for you.

It is great that Matthew has the courage to speak about his experiences and how he learned to deal with them. The main technique he focused on in the talk was meditation. How it helped him but also how research underpins his subjective experiences. He even took it as far as to document his own vital signs over an extended period of time to make his progress visible.

Stress related conditions are a real threat to every one in modern society and have to be taken serious. Even though it takes courage to openly talk about it if you are the one affected.

Are you ready for Cloud-Native Java? - Graham Charters, Steve Poole

A classic two fold talk. Steve starts by talking about how moving to the cloud shifts the requirements and measurements applied to software engineering.

The main point is, once you are on platform where you only pay what you need, those needs are directly coupled to the costs. So controlling will be asking more questions about why e.g. cpu has to be increased. 

Also the behavior of your application has more direct impact on it's cost. When you scale up and the new node needs a long time to be fully up and serving it creates back pressure which then results in higher starting load. And depending on your payment plan that might take you into a very costly billing range.

Focusing on these questions Steve gives a comparison of different JDK versions hosted at adoptopenjdk, like Hotspot or OpenJ9 and how those perform during scale up periods.

The second part, covered by Graham, was more or less an exhaustive introduction and demo of the eclipse microprofile project. The goal of this project is to allow developers to have enterprise features for their applications but with the least possible overhead by choosing only those components that you actually want. So if you live on the enterprise world, this is certainly worth a look.

Exploring Space: Challenges, Innovation, Management: Lessons For All - Mark Sims

Oh boy, oh boy. Space ships! Rockets!!! Awweeeesooooommmee! Man was I looking forward to this, someone who really built a space craft and launched it, telling us about who cool but also how difficult that is etc.

I am really trying not to be mean here, but somehow I have to break it to you. That was the downer of the conference. Don't get me wrong, space is still ace and yes we heard about a lot of the things that are hard and unexpected difficulties. But the talk itself was actually one of the worst I have heard on a conference. It was the typical old school university lecture held by someone who's sole interest is research. Slides cramped with bullet points, hard to read fluently. And Prof. Sims gave the impression of being rather annoyed having to give a talk, everything was more or less just read from the slides with almost no distinction between important and minor aspects.

Here is what I could take from this talk before my brain kicked into tilt mode:

There are a lot of challenges for your hardware, different levels of gravity, high amount of different radiation, huge ranges of temperature levels, massive shocks and vibrations on starting and landing.

You have to run tests, a lot of them, very very often. You definitely have to make sure your system works. You have to try to think about every possible corner case. The software needs to be redundant, built on different systems, maybe by different teams so that one error cannot crash both systems. The system has to reduce resource usage to a minimum as those are always low in space. And most importantly the system has to be flexible and adaptable. I was very impressed that the team was able to patch the software from earth while the mission was already underway. 

I am sorry if I am doing injustice to Prof. Sims, but imo there was so much more that could have been done with this topic to motivate and inspire people. 

Springing into Kotlin: How To Make The Magic Even More Magical - Mark Heckler

Spring AND Kotlin two really fancy things combined in one talk? Bring on the magic!! 

Good, solid talk by Mark, definitely knows his stuff. But for me there was nothing new to take away actually, apart from that Spring 5 now supports Kotlin. Mark showed the basics of Spring Boot and the basics of Kotlin and how to use Spring Boot in a Kotlin application by migrating a mini app from Java to Kotlin.

I was hoping for some more in depth stuff, something the every day developer usually does not think of to leverage the powers of two powerful tools like those we have at hand here.

For those who do not know much about any of the two technologies that talk is absolutely worth a look. If, like me ,you know how to work with Spring and have at least done some basic Kotlin coding, this is probably a bit boring.

Spring Framework 5: Feature Highlights & Hidden Gems - Jürgen Höller

Ooookay, more Spring. This time by Mr. Spring Jürgen Höller himself. 

Again solid talk, good to follow. Basic things I took away from this one:

  • Kotlin support (hear hear ;-))
  • Webflux: Reactive alternative to the standard mvc module
  • Functional Web Endpoints: Instead annotations you can define routing/request mappings in a functional programming style. I don't really see why yet tbh, but there are probably people out there that go nuts about this. So if you are one of them, let me know why this is great :-)
  • Can now also handle immutable classes
  • Usage of NIO2
  • Build-time components indexer and annotation processor: Now this got me drooling. Find errors in your bean annotations at compile time and speedup the application start as the scanning has already been done during the compile. ACE!!!

Conways Law and Microservices: A perfect match, or not? - Andy Hedges and Adrian Spender

Andy and Adrian have been working at the transformation of Tesco's software department for the last 8/5 years. In this talk they explained what steps they had to take on this long and rocky road and what their challenges and insights were.

In the beginning Tesco's software development process was the typical old school waterfall model: Conception -> Design -> Architecture -> Implementation -> Deployment 

As usual the process was slow, heavy weight and had very limited flexibility. Likewise the system architecture was a big mash up with little cohesion and lots and lots of fine grained dependencies between almost all components. 

The first hard task was to actually define what should be a cohesive unit, so what methods should go into a service. This did reveal some interesting and unexpected aspects. E.g. one assumption was that when ever you handle a product you also always need the product's price. But there are use cases in which a product may already be designed and is already promoted but has no price yet. So taking this into account you can defined different, smaller and maybe better service boundaries.

Another good example was how an application can contact a customer. There is a contacts service that hold e.g. an email address of a customer. There is als an email service that you can use to send an email. Now you could create an application that uses the contact service to retrieve the email and then use the email service to actually send the email to the given address. OR you could structure your services in a way that you can simply tell the contacts service to send a message to a certain customer. Then the contacts service could even use the contacts preferred messaging method (email, sms, whatsapp..).

Along with the services you also have to structure your development teams. So you have different teams maintaining the services, in Tesco's case grouped by common domains, like "customer" or "warehousing". Now all those teams are dealing with tasks that are needed in a common way across all services. So there are some guidelines all teams have to follow:

  • Logs: All services/applications have to use the same log format
  • Tracing Id: All services have to retain the tracing id for a transaction
  • ...
Now this did sort out the regular development issues for most cases. But sometimes a project comes up that requires expertise from different departments. After trying a few approaches they ended up with a concept the call "Pop-Up Teams", which means that for such a project they are pulling members from each affected team to form a new temporary team that then takes care of the project.

All of this was of course explained in much more detail, so I recommend you check out the video, as I really enjoyed the talk. But before you do so, it might help to brush up on Conway's Law and Dunbar's Number even though both are explained in a few words.

The last thing I want to mention though are so called "Run Teams". As stated above teams are grouped in a common domain. So all have roughly similar knowledge and build similar services. Apart from that, the teams are also responsible for running them. To allow for more flexibility and knowledge transfer they came up with Run Teams. Each domain has it's own Run Team that consists of members from each team. On a regular schedule those team members are swapped back into their Home Teams and replace by other colleagues from that team. So every few weeks everyone takes care of running all services of the domain. I think this is great idea to make sure teams are still connected to each other and knowledge is shared among them. But like everything in this talk, this is was works for Tesco and you should look carefully if it really fits for you as well before adopting it.

Security In The Serverless World - Yan Cui

Most of this talk actually revolved around webapp security in general. Especially the well known OWASP list was mentioned a few times. TBH that is something I would assume everyone should know before focusing on security for Serverless applications, so I am skipping the summary here.

One big advantage when running Serverless but also in general in the Cloud is, that you do not have to patch your hardware. That is done by the service provider (e.g. AWS). So one less thing to worry about. But the software itself is still your problem. Here OWASP comes into play again and also the general advice that security vulnerabilities often lie within your dependencies and so you should update them regularly. 

To illustrate this Yan showed the results of an experiment he ran. He created a malicious node module called "do-not-download-me" which got downloaded 200+ times in one month. With that he was in theory able to collect data from depending applications. Of course he did not do that in the end, but it shows how easy it is to inject dangerous code into the eco system.

Since functions/lambdas/services in the Cloud are basically accessible by anyone, you have to make sure your endpoints are secured, the privileges of each function are as restrictive as possible and transport between your functions and the client is secured. For most of these topics Yan provided examples on how to achieve them on AWS.

Something that many are not aware, providers might reuse container instances, so it is a bad idea to store sensitive data e.g. in /tmp of your EC2 instance as that might be accessible by some other application later on.

Another interesting fact that is actually obvious but you do not always think about it: When your Cloud services are attacked with a DDoS attack then the stability of your application is not your only concern. You also have to realize that each attack has direct effect on your budget, so you might be forced to take the service offline to avoid losing a lot more money than you already are.

Ignites

At my last Devoxx the Ignite talks were rather regular talks but only 5 minutes long to spark interest, pitch an idea or generate attention for something. This year this was quite different. One talk was actually prepared in the usual way, which I will cover in a minute. The others were basically impro stand ups as the speakers did not know what slides they had to present and the slides seemed to have been generated pretty randomly ;-) There were a few laughs in it but I am not totally convinced tbh, others though had a brilliant time and were laughing and giggling almost constantly.

Zero Bugs - James McGivern

Basically Zero Bugs means, either fix a bug right away, close it or declare it (or rather the fix of the bug) a feature to put in the backlog. The reasoning is that otherwise bugs just sit in your backlog and will not be fixed. In my experience this might be true in some cases, but not as often as the speaker claims. Of course this might be different in other places but so far I am not entirely sold to this idea.

Day 2

To JAR Hell And Back: A Live Migration To Java 11 - Nicolai Parlog

We have heard about JDK 9+ and the module system quite a bit on the day before, so the basics covered here were not too shocking. But it was a nice summary on why the module system was introduced, what the benefits are (encapsulation, dependencies known to the JVM...)

The main part was the actual live coding to see what kind of code might/will break if you move towards JDK9 or higher. I really recommend you check out the video as it does not make sense to describe this here.

The talk was great and a really good start in day 2.

Two things stuck in my mind though, first of the hint that you can create a maven profile that activate based on the JDK version used, which is really neat as you can just switch your java environment to toggle from between upgrade tests and regular development.

The other is the usage of jdeps to find dependencies of your jar modules, with the --summary flag you only get the dependent jar files and not all packages. That looks like a really helpful tool.

Stop reinventing the wheel with Istio - Mete Atamel

From the title it was clear that this would be a product demo, which is totally fine. Long story short, Istio sits on top of tools like kubernetes or mesos to help with stuff like service discovery, logging etc.

In this demo Mete was using Kubernetes as underlying container management tool. I also recommend you watch the video if you want to know about the details. The basic architecture looks like this: Istios uses Ingress as an API gateway to route to the different pods. In each pod is a proxy module as side car deployment that handles all incoming requests and takes care of load balancing etc. 

Everything was done on then command line, first you install Istios on your system and then you add certain commands to your scripts so that the pods get enhanced with the side car proxy.

On a first glance it seemed a bit clunky compared to Rancher or Open Shift, but I don't have any hands on experience with any tool so could be wrong there.

Is Boilerplate Code Really So Bad - Trisha Gee 

I must admit it, I am a fan. When ever Trisha holds a talk at conference I attend I go there. She could probably even make stamp collecting sound fascinating. So yes, I am biased but I encourage everyone to watch her talks.

Ok, back to business. The title of this talk was particularly interesting for me, as I am one of those developers who is not really bothered by boilerplate. In some cases I even consider it useful to have a more verbose code if it is more understandable then. So my hope was that Trisha would tell off all those who whine about every additional character in their code.

Weeell.. that was not totally the case ;-) Instead we saw a syntax comparison between different Java version up to Java 10 and also Kotlin. Trisha used several example, including collection instantiation, object construction and Generics.

In one case she even demonstrated how something that looked like a mere reduction of boilerplate in Kotlin was indeed a change of behavior (lazy eval of lists). 

The summary about boilerplate was something like this: Reduction of boilerplate can improve readability of your code, unless you lose meaningful information or even introduce behavioral change. Both should be avoided. Writing boilerplate should not be an issue, as your IDE should take care of most of that. Not everyone has the same understanding of readability, so make sure your team is on the same page of that, if possible. And Java is not as bad as it used to be, for short tests you can even use the Java repl in JDK 10 (seems cool btw).

And if the video is not enough or you just do not like watching videos, you can check out Trisha's blog.

Avoid Noodling Through an Architecture's Foundations - Francisco Menezes

I don't know what to say here, really. I must have gotten it all wrong, because I just can't understand it.

In general this talk was about the architecture used at Francisco's company. Basically it was about proper encapsulation, lose coupling and other well known things you should consider when creating your service landscape.

One thing that I just can't get my head around is the concept of each module/domain/service/what ever you cal it to not only expose a service API but also a so called query model. From what I understood the idea is that other services can access the data of a service via the query model without having to have a dependency on the service API. But somehow you also have to expose that query model and then there is a dependency on that query model. Maybe you can abstract that model so far that for every domain it offers the same operations. But then I still don't see why you can't just add that to the service API. Maybe someone can explain that to me? Gotta watch the talk again, I guess...

Automated testing on steroids: Trick for managing test data using Docker snapshots - Lucas Jellema

Okay, time for a lunch quickie (15 minute talks during the lunch break). At first I thought this talk was going nowhere but then Lucas started the live demo. Using dockerode to programmatically start and stop containers is nice, but you can do that with many tools. What was really cool though was the leverage of the criu linux package that allows you to create a snapshot of your running machine, including RAM.

Docker supports creating those snapshots and then even restarting a container from such a snapshot. That means you could create a test database even in memory in your container, create the snapshot and then run every test against a fresh container instance created from that snapshot. The startup was almost instantly. Looks like a promising approach. Really cool! :-)

Apps are Making Us Dumber - Heather Wilde 

The hardest thing about building good mobile apps is the design. If your design is too cumbersome or clunky then people will not use it, no matter how good it actually is.

In this talk Heather gave a great overview of the core design principles we should consider when building apps. I will try to sum them up briefly but I suggest you refer back to the video for a complete impression.

A good app needs easy user interactions, like the Tinder Swipe, something that is intuitive and easy to use. The layout needs to be clear, without clutter. Clear and readable fonts, pretty is not always easy to read. Colors should give good contracts.

Also very important: The app needs to be responsive, react fast to user interaction, if you need to do expensive operations use busy indicators. Try to preload data when possible, priorities requests on server side properly.

The most common tasks of the app should be the easiest to do. Rare tasks can require more clicks. Don't implement feature noone will use. Be consistent in your design, e.g. use the same icons for the same actions.

Remember that your users do not know the app like you do, always try to imagine how it feels to open the app for the first time.

There was of coure much more and it was also explained in a much better way ;-)

Summary

Due to an early flight back I could not go to more talks. But as always it was a great experience at Devoxx and I encourage everyone to go when you have the chance.




Donnerstag, 18. Januar 2018

beyondtellerrand 2018 Munich

For the first time ever beyondtellerrand (https://beyondtellerrand.com / @btconf) came to Munich. Munich is the third location after Düsseldorf and Berlin where Marc Thiele (@marcthiele) holds his famous event.

The only reason I was aware of that was that my former colleague and friend Francesco Schwarz (@isellsoap a.k.a. the creator of the Specificity Visualizer), who I already joined for beyondtellerrand 2016 in Düsseldorf, pointed it out to me. So we both decided to go there.

The venue was located in the Künstlerhaus directly in the center of Munich next to the famous Karlsplatz. A lovely location with an inspiring atmosphere.

As always the event was comped by beyondtellerrand's DJ Tobi Lessnow (http://www.tobi-lessnow.com / @tobilessnow). For those who have not been at the conference yet: Tobi captures text portions during the talks and then arranges them in his DJ mix during the following break. Really a great experience especially with the passion and dedication Tobi is showing during his performance.

The conference videos are published on Vimeo and Youtube, currently (Jan 18th) only six of the Tuesday talks are online on Vimeo, but I am sure the rest will be posted soon.

Day 1

Sacrificing the Golden Calf of Coding - Chris Heilman (@codepo8)

This was an entertaining opening talk about not only the past but also the future of coding. Using his own life as an example he illustrated how people evolved from hobby coder to professional programmers and how this was reflected in their code. Hobby coders just try to get things working and make the code fast but very very clunky and hard to maintain. But the more people code or a living they have to start worrying about reuse, modularity and maintainability and usually the absolute maximum performance is not the primary concern anymore.

But there is also another kind of evolution going on. In the beginning people wrote code in crappy editors like Notepad, no IDE or anything, installations where done manually etc. Over the years tool support became better and better and now we have systems that can do simple tasks, generate code from templates and handle boring day to day work. Chris emphasizes that people should use the tools we have to their full extend, let the computers and algorithms do the boring and repetitive tasks. We should be creative and innovative, create new things by leveraging what the technology provides us with now.

Just because things where hard in the past, the don't have to be hard forever.

SVG Filters: The Crash Course - Sara Soueidan (@sarasoueidan)

Seriously if you ever need an analogy for drinking from the fire hose, this talk is what you are looking for. Marc Thiele's introduction was more than fitting: "She talks fast and knows a lot" ;-)

Sara gave us an impressive overview over what you can do with SVG filters, from rather easy things like creating drop down shadows to creating your own textures using simple effects like feFlood or complex ones like feComposite or feTurbulance. I was really impressed with what the browser can do without the need for imaging tools like Photoshop. 

All examples where explained by looking at the actual code that Sara walked us through step by step.

Was very interesting but when you watch the video, maybe try to play it at 80% speed :-)

Interactive Email - Mark Robbins (@m_j_robbins)

When I read that topic I was like "Ugh". There are few things I despise more than flashy html emails. And tbh, that is more or less what Mark is building but to be fair, the use cases he described seem sensible and obviously help his customers.

One example is something that a lot of us can surely relate to. You are on a shopping site, add stuff to your cart but then get distracted and forget about it. Now the site can send you an email, listing your cart and also adding the option to complete your purchase and even adjust the amount of items in your cart before doing so. All of that without ever leaving your email client.

There are a few challenges when you do something like this. For one email clients are incredibly diverse and testing for all combinations of email client, operating system and device is impossible.  Also you can't use javascript in those emails so instead everything has to be done using css.

This results in really creepy css selectors, e.g. selections are always implemented as radio buttons so you can use the "checked" attribute in your selectors and multiple radio button elements can be joined in selectors to then style other elements as desired.

The results are indeed impressive considering how limited the available options are and even more impressive was the demonstration of the "Wolfenstein 3D" shooter within an email using only css for the application logic. Okay, it was pretty buggy and by far not a real shooter but it is still an accomplishment.

From AI to Robots, From Apps to Wearables - Let's Design for Everyone, ok? - Robin Christopherson (@USA2DAY)

This talk was composed of rather large amount of videos that Robin strung together explaining certain aspects concerning accessibility of technology in general. What I liked was that he did not focus solely on the accessibility in regard to people with disabilities but also other impairments both permanent and temporary.

Robotics in our Everyday Lives: A Product Designer's Perspective - Carla Diana (@carladiana_)

Carla introduced us to the topic of social robotics, meaning research and projects on how robots can not only assist us in our everyday lives but also provide an interface to interact with them like a social or even human being.

A really cool example was the robot Poli that assists nurses in a hospital thus giving them more time for their patients. This robot is designed to vaguely resemble a human with a head and a torso, reacts to voice commands and replies to them. I think this is a great example of how cool tech can directly improve quality of life.

Another project of hers was the design of the robot Simon that is able to express emotions using basic mimics and is also able to react to his surrounding.

The talk was filled with short clips showing different robotic and interface design projects and I highly recommend to check out the video once it is available. 

The Internet of Natural Things - Simon Collison (@colly)

I must admit, I have a hard time summing up this talk since Simon touched various aspects of how nature and technology can be combined. On one side we have the research aspect where animals are tracked using e.g. chips so that researches can track the movement of birds, whales or other animals. Highly related to that is also how data mining techniques are used to analyze data gathered from those animals that is usually not limited to their GPS coordinates but can contain vital signs, environmental influences and many more.

On the other side you have apps or other pieces of technology that allow you to improve your experience when you are outside in "the wild". One example are nature guides that allow you to easily determine what animal you have just seen or even what bird you just heard by just sampling it's song.

But for me his basic message was that we should take a step back and try to appreciate nature more, to enjoy it fully and to take the time necessary. He underlined his message with stunning images and personal stories.

His last aspect to this topic was that we should also try to design our applications and even operating systems so that the allow for a more natural or intuitiv usage. For example a mobile device could sense where you are (home/work/gym/park) and give you simple access to apps appropriate to the current environment.

Even though the topic itself feels a bit esoteric to me, I still think there is a lot in it that we should think of more. It sure does not hurt to appreciate and actively experience nature more.

Sho Ha Hito Nari: Brushes, Strikes and Reflection of Self - Aoi Yamaguchi (@aoi_gm)

Calligraphy is, like most forms of art, something that I never really understood. And it would be a sham if I would claim that now this is totally different. I guess I am just a bit too ignorant to really appreciate art. 

But what I am able to appreciate and be truly humbled by is the incredible amount of dedication, practice and discipline that Aoi conveyed to us during her talk. I had no idea on the countless hours of not only practice but also preparation someone has to go through to become a grand master in this form of art.

Let alone how much patience is required to properly choose and prepare the ink for a painting, the incredible amount of different brushes and their uses. I also had no idea that ink blocks (I did not even think of ink as blocks until then) age over time and thus develop a unique character that also influences the paintings.

Evening Get Together

As usual the first conference day was closed by the traditional get together with free drinks. We had a few nice chats with different people including Marc Thiele (@marcthiele the boss himself) and a friend of his, Björn Odendahl (@nail7), who incidentally was the designer for the beyondtellerand shirt of 2016. 

Day 2

New Adventures in Responsive Web Design - Vitaly Friedman (@smashingmag)

First talk after drinking night, so we should be of to an easy start, right? Yeaahh... not on Vitaly's watch ;-)

This talk covered most of the topics on what you should consider if you want your website to be fast and responsive. It started of with the usage of compressions like gzip, zopfli or brotli. Then went to images and how you can speed up your website by using smart features or tricks, like responsive images, progressive jpegs. An interesting side note is, that it can be sometimes better to use a large image with low resolution and then have your browser to display it at a smaller size rather than using a small images with regular quality in order to safe bandwidths.

The second big section were, of course, webfonts and how they should be used and what dangers lie within when fonts can't be downloaded (browser timeouts etc.) Vitaly illustrated the different strategy options for webfont loading including fallback fonts and the optional attribute for the font-face annotation.

The last part covered the dreaded third party scripts. It is important that you understand what scripts your site is using, where they are hosted and most importantly how your site reacts if those scripts are unavailable. To find out more about that you can create request maps and use blackhole testing. It is also good to encapsulate those scripts in e.g. an iframe (even though most people hate it) or you can try to use SafeFrame.

Radically Accessible Internet Applications - Marcy Sutton (@marcysutton)

Another talk concerning accessibility in web applications but this time with focus on how you can a) find out where your app lacks accessibility and b) how to implement it.

Implementation is usually done using the various aria attributes and proper focus handling with the help of the inert attribute.

To find issues you it helps to navigate your application only with the keyboard as this is what screen reader users will do. Also activating voice over can help you find issues as well as the voice over router that gives an overview of all voice over portions in your application. Another great tool is the browser plugin aXe-Coconut that can find accessibility violations. Additionally aXe-core can be integrated into your build process to run tests on your application so find such issues on your build server.

Why Fast Matters - Harry Roberts (@csswizardry)

Why fast matters? Well, the obvious answer is money. Faster sites generate more revenue, reduced traffic saves bandwidth and thus costs. Easy, isn't it?

Easy yes, but not the whole truth. If we want to have a truly inclusive web we also have to make sure that our content can be accessed by as many people as possible. That also includes those in the so called third world countries and uprising economies. One major issue these countries face is the lack of high or even regular speed internet access. 

Many people in the world have to use 2G connections or even worse. For those a lot of websites that we use daily and take for granted are hard or even impossible to use. Harry shows us numbers on how many people are actually using mobile devices with such bad connections and also ways how we can test our applications on how they behave in such circumstances.

Tools like dareboost or speedcurve can analyse your website using different connection types, origins and stability parameters. CharlesProxy can be used to effectively throttle your device's connection to simulate access from e.g. other countries.

This talk summed up a lot of interesting aspects about website performance that go beyond our usual scope and is therefore highly recommended.

Data Sketches: A Year of Exotic Data Visualizations - Nadieh Bremer (@NadiehBremer)

Data Visualization is a virtue of it's own and I am usually perplexed by the results those people come up with.

Nadieh spoke about her insights and learnings from the past year of visualization projects showing the amazing results as well as the steps that led to them.

It was also interesting to see how and where you can find the data you are looking for but also what weird kind of data some people are gathering, e.g. all words spoken in the LotR movies by each character. I suggest you watch the video that explains the coherences way better than any summary I could put here. It is really worth watching.

A Tinker Story - dina Amin (@dinaaamin)

As I wrote above, I usually don't get art. But this one, this one is really cool. Maybe because dina does not consider herself an artist. She told the story of a young woman from Egypt that started to do what she like and by leveraging the internet coincidentally becomes famous.

The short description of what she does is simple. Take things apart, look at the parts, recreate something new from them and put all of this in a stop motion movie.

Sounds boring? Check out her video or look for #tinkerfriday You will not be disappointed. When I saw the first movie I also thought "so what?" but only until my jaw hit my knees..

Why Beauty Matters - Stefan Sagmeister (@sagmeisterwalsh

Okay, last talk of the conference. Traditionally a rather funny but still insightful and informativ talk. Stefan explains the concepts and misconceptions of beauty in the context of architecture. This one also relies heavily on the images and videos used. So it would be vain to describe it here. 

I had quite a few very good laughs and it was great closing talk.