ESL Hamburg 2019 – At the Dota 2 Tournament with Accenture

I don’t understand half of these words in the title

I had the pleasure to visit the ESL Hamburg 2019 Dota 2 Tournament for Accenture on 27 October 2019. But what do you mean with „I don’t understand half of these words in the title?

Okay let’s break it up.

ESL is short for Electronic Sports League. That’s an organization that is highly involved in the E-Sports scene and organises many events and tournaments. Just check out the amount of tournaments on the Switzerland’s page here. Wow!

Now Hamburg is a city in Germany where the famous Reeperbahn is located. Everyone told me I should give it a visit but sadly I didn’t have time to do so. What a shame! 😥

Now Dota 2… Ahhh my beloved Dota 2… ❤ ❤ ❤ Dota 2 is not much… Not much but the best video game ever created! I will tell you a little bit more about it later.

And Accenture is an awesome company that organises awesome events like this one at the ESL Hamburg 2019 Dota 2 championship!

Do you now understand these words?

Accenture logo – Simple but deadly uhm I mean effective

How was the event?

When I arrived at the event on Sunday morning we went directly into our own reserve lodge. It was a comfy room with an own service waitress that kept giving us good things to drink.

Coooomfy!

After a short welcome meeting the invited candidates arrived including the main star of our little event: C4mlann, a famous Hearthstone Twitch streamer, has been invited by Accenture to attend the event and meet his fans.

Click the picture to visit accenture.com/esports

Here you see the outside of the lodge where we could follow the Dota 2 games.

Here you see C4mlann very concentrated studying today’s schedule

The Dota 2 tournament took place three whole days, from Friday until Sunday. 12 teams have been fighting for a 300’000 dollar prize pool. The event was professinally organised, you wouldn’t believe it!

They had a flying camera that captured the atmosphere perfectly, they had famous moderators commenting the Dota 2 matches and there was even a guy that post-analyzed every Dota 2 match and explained what went wrong for the losing team.

The stadium was fully booked

The warriors that actually attended the tournament were all sitting on stage – always 5 versus 5 – and fighting each other in bloody virtual battles.

I know they are tiny but I promise they are there!

Next to the main event you also had the opportunity to join many side activities. There was for example an Airbrush studio. But really, who would be stupid enough to let a stranger paint a big Dota 2 logo on to the middle of his forehead?

Is this real or am I dreaming?

Many companies took the chance and opened up a stand with a certain competition for players to take. You had a small Dota Underlords tournament, several virtual reality games and even a booth where a lucky attendant could smash the hell out of old hardware with a hammer. If there is a better way to calm your nerves I don’t know it!

SAP for example created a software in cooperation with Team Liquid, a famous E-Sports team, to analyze the games and all the data that is generated during a game. This is of course a big opportunity in the category of Big Data or even Artifical Intelligence.

SAP game analysing software showcase

What did Accenture actually do at the event?

Accenture has invited several participants (most of them viewers of C4mlann’s stream) to join the event, watch some Dota 2 matches, learn about the work in Accenture and talk to C4mlann. The event was more or less informal and interest-focused: Some people immediately used the opportunity to gather around C4mlann and listen to his wise words.

They asked questions like: How is life as a Twitch Streamer? What is your daily routine? Do you know the Dota 2 hero Juggernaut?

This is Juggernaut. He usually goes after supports.

People that know me also know that I am a very shy guy. 😳 Because of that I only talked 70% of the time when I spoke to the different people at the event and let them have generous 30% of speaking time. I asked them if they know Accenture, if they work in IT and so on.

In short: Yes they know Accenture but not so much (that’s why I myself explained a lot about my personal daily routine). They all work in IT in different roles and they all have a big passion for gaming.

Soon we realized that there are many commonalities between playing video games / E-Sports and people that work in IT. And this was exactly the intention that Accenture had all the way: People from Accenture believe in strong personalities and that gamers bring the right mindset to work in information technology. Gamers are usually very technology affine and have no problem to adapt to complex environments.

(Also certain gamers require a salary increase)

What is Dota 2?

Wow, finally we come to the important question. No, to be honest, it’s totally fine if you don’t know what Dota 2 is. I know that you can not force people to their happiness but that they need to find it themselves.

Dota 2 is a video game that you can play for free. There is no catch, you can go ahead and download it right now.

It is a really complex game, and the best advice for beginners usually is: Don’t try to kill enemies, just try not to die too often 🙂

It is a very deep game, but in short:

  • 5 players (usually russians) fight against 5 other players
  • The team that first destroys the enemy base wins
  • A game usually lasts around 40 minutes
  • Ever player chooses one of around 100 heroes at the beginning of every game

Every game starts at zero, but your hero gains experience by killing enemy heroes and every game can snowball out of control really easily. If you have a hero that kills other heroes with ease, you will get stronger and stronger very quickly and can kill enemy heroes even easier.

Every hero has a different role. You have killer heroes especially made to kill enemies but usually weak when alone. You have early game heroes that shine in the first 15 minutes of a game. You have late game heroes that only start to shine once the game lasts around 40 minutes. You have mages, sorcerer, elves, orcs, monsters and even a walking green snake-thingy.

This is Venomancer. He spits love.

And you also have support heroes, that’s what I usually play. Your main goal is not to kill enemy heroes, but to support your team by scouting and buying healing items and so on. For me it’s enough to play a support hero, 😎 I don’t need to be in the spotlight of killing enemy heroes. I already know that I am the best player in every game. 😎 I am such a noble person I let other people shine while I help them from the back. Just like in real life. To be honest, I think people should start sending money to my bank account because I am such a kind individual! 😎 😎 😎

Am I exaggarating???

Dota 2 is also a very psychological game. If a team wins the early game it usually starts to lean back because „Pah we will win this game anyways!“ At the same time the losing team will fight even harder to win, stay together and choose it’s fights carefully. Because of this a game can turn 180 degrees in the middle of the time.

So what are the commonalities between E-Sports and working in IT?

The most obvious one: Teamwork. Even if you have been really lucky in a Dota 2 game and are so called fed (meaning you were able to kill many enemy heroes and gained a lot of experience) you usually still have no chance alone against the enemy team.

Second one: Gamers often have the right mindset like IT people: They are passionate about a topic and have no problems spending a longer time on complex tasks. Like programmers analysing software code so are gamers analysing the matches to find ways to improve. They all are usually realiable and responsible personalities and some folks even spend their whole life learning about either their favourite game or their work.

Now for me the biggest common thing between Dota 2 and working in an IT team: You always have different roles or personalities in a team. Like I said, in Dota 2 you have killers and supportes and pushers and they all depend on each other. In an IT team you also have different roles, you have business analysts, project leaders, programmers, devops-engineers or testers. And even within one of those groups, for example in a programming team, you have people that are super skilled in coding while others are better in talking to the business or documenting and presenting topics.

And in the end we all depend on each other and need to respect us as competent individuals.

Amen!

Now who has won the tournament? Was it a boring finale?

Exceptionally not! The winners of the finale has the name TNC Predators, a team from the Philippines, and the finale game was the best one in my opinion! (The finale was a best out of 5 games, they play a maximum of 5 games and the team who wins 3 games first wins)

So for once forget all this theory that I have written about four minutes ago about „Blabla teamwork is important and if you play alone you have no chance“.

There was one player in the winning team, and he played Alchemist, a hero that has a special ability to gain more money than other heroes. And if you let him farm enough money during the early game, he will be up to unbeatable in the late game. And that’s exactly what happened!

Alchemist looks lika a fellow who can handle a bunch of extra money

You don’t see this very often, but this Alchemist was so strong, the whole enemy team was afraid of him and could not take a fight with him. In the meantime Alchemist just casually walked into the enemy base (while beeing attacked by defensive towers) and chilled there forever without dying!

And don’t remember! … uhm I mean remember, while Alchemist kept the whole enemy team busy his 4 friends were also in the game farming money or pushing to the enemy base. It was a nightmare for the enemy team, they just couldn’t keep up with the snowballing-out-of-control-Alchemist.

Really really great finale and in the winning ceremony millions of little paper pieces have been shot into the air I almost spilled my beer.

Where are the winners? I can’t see anything!

Did Accenture accomplish it’s goal?

Accenture organised this event in order to bring E-Sports and IT together. To show people that Accenture is a cool company that is worth joining as it is possible as Accenture employee that you end up in a great place like the stadium in Hamburg attending the ESL 2019 Dota 2 tournament in Hamburg.

I tried not to speak too positively about Accenture and not to do too much of surreptitious advertising 🙂 But to be honest my life has changed dramatically since I joined Accenture in February 2019. I became much more confident in myself and my technical and social skills. I was able to attend many events like a Blockchain event in London or an Advanced Java Course in Frankfurt because Accenture does not have products that they sell. For Accenture their employees are their „products“ and the company uses a lot of effort to create the best professionals in the market.

And after my third beer I felt very professional in the spectator seats!

And really: In the end some of the participants said they would consider applying for a job in Accenture. (But only if they could again join the next ESL championship in 2020 😉 *cough cough* )

If you are interested in joining Accenture head over to a page like this one and start growing!

Too much advertising? Well it just happens 🙂

Werbeanzeigen

What are the changes in Java 13?

Hier gibt es diesen Artikel auf Deutsch

As the relase cycle of Java has changed we can now be excited for a new Java Release every half a year. So in September 2019 Java 13 will already come out. But don’t worry: Java developers do not need to be stressed: Today many years still use Java 8 *cough cough* uhm I mean Java 11 and the next LTS = Long Term Support-Version will be Java 17 in 2021.

So we will get two new versions of Java each year but at the same time they are mostly small releases with only a few additions. And some of the innovations are marked as preview, so you can still expect changes there after the community has been able to give feedback.

Enough talk, what are the new changes?

The following so called JPE’s = Java Enhancement Proposals are going to be relased with 13:

  • Switch Expressions (preview)
  • Text Blocks (preview)
  • Z Garbage Collector: Uncommit Unused Memory
  • Dynamic CDS Archives
  • Reimplementation of the Legacy Socket API

The first two points are especially interesting for developers. That’s why I wrote a whole chapter about those.

The ZGC = Z Gargabe Collector is a new… uhm, well a new Garbage Collector, as the name implies 🙂 It promises to clean big chunks of data on the heap very quickyl. Not only that but it will also free this space if it’s not being used anymore, something that apparently has not been done yet by the old garbage collector and some applications have used a lot of memory unnecessarily after a long time running.

Dynamics CDS Archives are an extension to the with Java 5 introduced CDS = Class Data Sharing. In CDS some specific information about application is stored in CDS archives to reduce the start time of applications. Until Java 10 only the Bootstrap Class Loader was able to use those archives. With Java 10 the AppCDS = Application Class Data Sharing has been published and now also other class loaders have access to those archives. To create those archives the application needed to be run in trial runs to figure out what classes could actually be loaded in an effective way. Now with Dynamics CDS these trial runs are not needed anymore.

And there is also a new implementation of the Socket API that still comes from JDK 1. NioSocketImplementation replaces the old PlainSocketImplementation. As the name suggests it’s derived from the New I/O-Implementation.
You can find more information for example here: https://docs.oracle.com/javase/8/docs/technotes/guides/io/index.html

How do I activate preview changes?

Preview means that there might still be changes in the future for those enhancements. To enable these preview features in Java 13 you need to add a flag to the compilation of your program:

javac --release 13 --enable-preview MyClass.java

You also need to add this flag when you start your application:

java --enable-preview MyClass

If you are using Maven you need to add the flag in the pom.xml to the maven-compiler-plugin part.

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.8.0</version>
	<configuration>
		<release>13</release>
		<compilerArgs>--enable-preview</compilerArgs>
	</configuration>
</plugin>

What are Switch Expressions?

Switch Expressions have the difference to the traditional Switch-Case statement so that you can directly return the values (and I actually mean the „return“ statement).

Note the new keyword yield instead of break.

Switch-Case example:

String name = "";
 switch(personalId) {
     case 1:
     case 2:
         name = "Fritz";
         break;
     case 3:
         name = "Hanswurst";
         break;
 };
 return name;

Example with Switch Expression:

return switch(personalId) {
     case 1, 2: yield "Fritz";
     case 3: yield "Hanswurst";
     default: yield "Defaultname";
 };

Since Java 12 you can also use the arrows to make the statement even simpler:

return switch(personalId) {
     case 1, 2 -> "Fritz";
     case 3 -> "Hanswurst";
     default -> "Defaultname";
 };

To be honest I myself barely use the Switch-Case statement. But from now on with the new Switch Expressions I will do everything in Switch statements, I promise!

What are Text Blocks?

Text Blocks simplify the usage of strings so that you can define a string in multiple lines without having these annoying + and „\n“ signs (for page break). For example you could do it to an SQL statement to make it more readable. This is already possible in various other programming languages like Groovy, Scala, Kotlin, C#, Swift or Python.

To create a Block simply use three quotation marks. Important: The opening quotation marks need to be in their own line!

So it was like this:

String meineSeite = "<html>n" + 
                    "<body>n" + 
	            "<p>Meine super Seite!</p>n" + 
		    "</body>n" + 
		    "</html>";

And now with text blocks – A wonderful new change! The world will never be the same! People will go out dancing in the streets! There will be festivals all dedicated to the Java god! So cherish this holy gift that we have received in the form of Text Blocks!

String meineSeite = """
                    <html> 
                      <body>
		        <p>Meine super Seite!</p>
		      </body>
		    </html>""";

Cool, right? 🙂

Welche Neuerungen gibt es in Java 13?

Click here to read this article in English

Dadurch, dass sich der Releasezyklus von Java geändert hat wird nun jedes halbe Jahr eine neue Java Version veröffentlicht. So erscheint im September 2019 Java 13. Java Entwickler müssen sich dadurch aber nicht stressen lassen: Immerhin verwenden immer noch viele Firmen Java 8 *hust hust* uhm ich meine Java 11 und die nächste LTS = Long Term Support-Version wird mit Java 17 im 2021 erscheinen.

Zwar kommen jetzt pro Jahr zwei Versionen auf den Markt, dafür sind sie meistens auch kleiner und überschaubarer. Dazu kommt, dass einige Änderungen erst einmal in einer Vorschau-Version herausgegeben wird, um das Feedback der Community einzuholen.

Genug geredet, was sind denn jetzt nun die Neuerungen?

Folgende sogenannte JPE’s = Java Enhancement Proposals werden in Java 13 erscheinen:

  • Switch Expressions (Vorschau)
  • Text Blocks (Vorschau)
  • Z Garbage Collector: Uncommit Unused Memory
  • Dynamic CDS Archives
  • Reimplementation of the Legacy Socket API

Für den Entwickler sind vorallem die ersten beiden Punkte interessant, weshalb ich diesen ein eigenes Kapitel widmen werde.

Bei ZGC = Z Gargabe Collector handelt es sich um eine neuen neuen… ähm, ja nun um einen Garbage Collector halt, wie der Name sagt 🙂 Dieser verspricht, auch bei Terabyte grossem Heap diesen schnell aufzuräumen und auch noch freizugeben. Das Freigeben war anscheinend bisher nicht der Fall, weshalb einige Anwendungen über eine längere Laufzeit mehr Speicher als nötig verwendet hatten.

Bei Dynamics CDS Archives handelt es sich um eine Erweiterung von den in Java 5 eingeführten CDS = Class Data Sharing. Bei diesem werden bestimte Informationen über Applikationen in CDS-Archiven abgelegt, um die Startzeit der Applikationen zu verkürzen. Dies war bis Java 10 aber dem Bootstrap Class Loader vorenthalten. Mit Java 10 wurde der AppCDS = Application Class Data Sharing eingeführt, mit dem auch andere Classloader auf diese Archive zugreifen können. Damit die CDS Archive angelegt werden konnten, mussten Probeläufe gemacht werden, um festzustellen, welche Klassen effektiv geladen werden sollten – Diese wurden dann in Klassenlisten gespeichert. Mit Dynamic CDS sollen nun diese Probeläufe wegfallen.

Und dann gibt es noch eine neue Implementation vom Socket API, welche noch aus dem JDK 1 stammen. NioSocketImplementation löst die veraltete PlainSocketImplementation. Der Name ist dabei abgeleitet der New I/O-Implementierung.
Mehr Infos dazu gibt es etwa unter https://docs.oracle.com/javase/8/docs/technotes/guides/io/index.html

Wie aktiviere ich Vorschau-Erweiterungen?

Vorschau bedeutet, dass es in Zukunft noch Änderungen an diesen Neuerungen geben kann. Damit diese dennoch mit Java 13 geladen werden, muss beim Kompilieren ein Flag mitgegeben werden:

javac --release 13 --enable-preview MyClass.java

Auch beim Starten der Applikation muss das Flag angegeben werden:

java --enable-preview MyClass

Wenn man Maven verwenden will, muss das Flag im pom.xml beim maven-compiler-plugin angegeben werden.

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.8.0</version>
	<configuration>
		<release>13</release>
		<compilerArgs>--enable-preview</compilerArgs>
	</configuration>
</plugin>

Was sind Switch Expressions?

Switch Expressions erlauben einem im Unterschied zu einem Switch-Case direkt Werte zurückzugeben (zurückgeben im Sinne von „return“).

Dabei muss das neue Schlüsselwort yield statt wie bisher break verwendet werden.

Switch-Case Beispiel:

String name = "";
 switch(personalId) {
     case 1:
     case 2:
         name = "Fritz";
         break;
     case 3:
         name = "Hanswurst";
         break;
 };
 return name;

Beispiel neu mit Switch Expression:

return switch(personalId) {
     case 1, 2: yield "Fritz";
     case 3: yield "Hanswurst";
     default: yield "Defaultname";
 };

Dabei kann man seit Java 12 auch die Pfeile verwenden, was noch simpler ist:

return switch(personalId) {
     case 1, 2 -> "Fritz";
     case 3 -> "Hanswurst";
     default -> "Defaultname";
 };

Ehrlich gesagt muss ich zugeben, dass ich selber praktisch nie Switch-Case verwende. Aber mit den neuen Switch Expressions werde ich alles nur noch mit Switch machen, versprochen!

Was sind Text Blocks?

Text Blöcke vereinfachen den Umgang mit Strings, indem man einfach einen ganzen Block über mehrere Zeilen angeben kann, ohne nervige + und „\n“ (für einen Zeilenumbruch) Zeichen. So können zum Beispiel SQL Statements lesbarer dargestellt werden. Dies ist in anderen Programmiersprachen wie Groovy, Scala, Kotlin, C#, Swift oder Python bereits möglich.

Zum Erstellen eines Text Block verwendet man dreifache Anführungszeichen. Wichtig dabei: Die öffnenden dreifachen Anführungszeichen müssen in einer eigenen Zeile stehen!

So war es bisher:

String meineSeite = "<html>\n" + 
                    "<body>\n" + 
	            "<p>Meine super Seite!</p>\n" + 
		    "</body>\n" + 
		    "</html>";

Und so ist es mit Text Blöcken – Eine wunderbare Veränderung! Die Welt wird nie mehr sein wie früher! Menschen werden frohlockend auf den Strassen tanzen! Es werden öffentliche Fester gehalten, um dem Java Gott zu huldigen! Darum seid dankbar für dieses heilige Geschenk der Text Blöcke!

String meineSeite = """
                    <html> 
                      <body>
		        <p>Meine super Seite!</p>
		      </body>
		    </html>""";

Cool, gell? 🙂