Blogpost

My top 3 talks at GOTO Amsterdam 2023

Between June 27th and 29th, my three colleagues and I had the pleasure of attending the GOTO Amsterdam conference. This incredible event took place at the stunning Beurs van Berlage, nestled in the heart of Amsterdam.

For me, this conference held a special significance as it marked my very first foray into the world of software development conferences. Witnessing numerous passionate speakers share their skills and profound love for programming was truly captivating.

Moreover, it was equally remarkable to observe attendees from diverse corners of the globe engrossed in the presentations. Each day began with a delectable and health-conscious breakfast, followed by a delightful lunch.

Out of the plethora of intriguing talks, I’ve selected three that left a lasting impression, and I’d like to share them with you.

img

TALK 1

PRIVACY, CRIME, NATIONAL SECURITY, HUMAN RIGHTS & YOU IN THE MIDDLE

Meet Bert, a multifaceted professional. He’s not just an entrepreneur but also a software developer and a researcher at TU Delft. Intriguingly, in a past life, he worked as a hacker for an intelligence agency. Bert brings up a pressing issue concerning the overwhelming availability of user data in the hands of data brokers.

In Bert’s own words, “Who’s the source of all this data? We, the developers, are!” It’s a thought-provoking statement that raises a crucial question: Are we, as creators of code, accountable if our creations are misused?

Taking a legal perspective, the police and national security agencies have the authority to request specific information about specific individuals, and it’s mandatory to provide what you possess. This should make us pause and reconsider what we choose to collect and store. After all, you can only furnish what you’ve gathered.

In the image below, you’ll find a list of data types that get collected and eventually sold. It’s crucial to grasp that seemingly innocuous bits of metadata, when combined, can enable precise tracking.

Screenshot 2023 09 01 at 09.36.38

Imagine a company structure where the board initiates the need for a new system, which then filters through layers of management: from the product manager to the project manager, and finally to us, the developers. As you move up this hierarchy, the requirements become increasingly abstract. At each layer, there’s a degree of freedom in how to design and develop the requested system.

To illustrate this, Bert shared an example involving a game and the request to save the game’s scoreboard. For us, the developers, this seemingly straightforward task presents multiple options. One approach could involve using the phone’s IMEI number to link scores to a unique ID. However, as previously mentioned, this approach could inadvertently lead to precise user tracking.

This brings us back to the central question: Are we, as software developers, responsible? While we’re not the ones directly selling data, many of our coding practices inadvertently contribute to the vast amount of data available on the market, often without our awareness.

Consequently, it falls upon us to take responsibility for what we collect, log, transmit, and store. We must thoughtfully consider the implications of our design and development choices, mindful of the broader consequences they may have on data privacy and security.

TALK 2

Structured Concurrency in Java: The What & Why

Balkrishna Rawool, the IT Chapter Lead at ING, delivered a fascinating and practical session on virtual threads, also known as Project Loom, which has been finalized in Java 21. During this session, he conducted a code comparison between traditional platform threads and these innovative virtual threads, demonstrating the remarkable ease and advantages of working with this new feature.

In the typical scenario, when an application needs a new thread, it requests the operating system to create one. This process can be resource-intensive, consuming significant memory, and may have limitations in scalability.

In contrast, virtual threads offer a much more efficient alternative. They demand significantly less memory and do not require acquisition from the operating system but are created by the JVM. This shift promises a more streamlined and resource-friendly approach to managing threads in Java applications.

Screenshot 2023 09 01 at 09.38.39

Is it possible to simply replace existing platform threads with virtual threads?

The answer is no. Virtual threads cannot function independently; they always need to be associated with a platform thread. This crucial step is referred to as “mounting” virtual threads on top of a platform thread, and it’s managed by the Virtual Thread Scheduler. This scheduler is responsible for making decisions about whether a thread is in a waiting state and, if so, swapping it out to free up space for another virtual thread. This entire process is illustrated in the screenshot below.

Screenshot 2023 09 01 at 09.39.43

The following snippets show how easy it is to create virtual threads:

Screenshot 2023 09 01 at 09.40.29

How can we use this now in a real life business scenario?

Virtual threads can best be used to model a business task and structure all these tasks together. The process of structuring these tasks is called Structured Concurrency and is quoted by Balkrishna as “When flow of execution splits into multiple concurrent flows, they rejoin in the same code block”. 

Practically this can be achieved with the latest StructuredTaskScope API.

Balkrishna showed a practical comparison between the new StructuredTaskScope API and the existing CompletableFuture API.

The following snippet shows Structured Concurrency using CompletableFuture implementation:

Screenshot 2023 09 01 at 09.42.08

And the following one shows the exact same using StructuredTaskScope implementation:

Screenshot 2023 09 01 at 09.42.58

TALK 3

DEVELOPING AND MAINTAINING YOUR OWN BRAIN

Meet Erik, a valued member of the neuropsychology department at VU University Amsterdam. In his enlightening keynote, he highlighted the significance of physical activity, particularly for individuals like developers who spend prolonged hours at their desks. Erik delved into the connection between exercise and a vital brain component called myelin.

Myelin, a substance enveloping brain nerves, plays a remarkable role in accelerating impulses—from a mere 2 meters per second to a rapid 120 meters per second. Its absence or insufficiency results in prolonged impulse travel times between nerve stations.

A crucial point to note is that myelin levels start dwindling after the age of 30. This makes it imperative to engage in physical activities to sustain optimal myelin levels. Erik emphasized that merely standing at the new desks is no longer adequate.

Screenshot 2023 09 01 at 10.28.17

This revelation holds significant implications for:

  • Processing speed
  • Spatial visualization
  • Memory
  • Reasoning

 

Erik advocated a simple yet impactful practice: dedicating 2 minutes of exercise for every 20 minutes of sitting. This routine can contribute to maintaining healthy myelin levels, ultimately benefiting cognitive functions.

Screenshot 2023 09 01 at 10.28.24

Conclusion

Attending these sessions at the GOTO Conference broadened my knowledge and ignited a sense of passion and curiosity within me. They highlighted the multifaceted nature of being a developer, encompassing not only technical skills but also ethical considerations, personal well-being, and innovative approaches to concurrency. The conference served as a platform for professional growth, inspiring me to stay updated on emerging technologies, embrace responsible coding practices, and nurture a holistic approach to my personal and professional development.

Overall, my first attendance at the GOTO Conference was a transformative experience. It deepened my understanding of the evolving tech landscape, fostered connections with industry experts, and motivated me to continuously expand my knowledge and skills. The sessions on privacy, brain health, and structured concurrency provided valuable insights that will undoubtedly shape my future endeavors as a developer. I left the conference feeling inspired, energized, and equipped with newfound perspectives to apply in my professional and personal life.

Soufiane Salama

Soufiane Salama

Java Software Crafter

Soufiane is an experienced Java Developer with a background in AEM. He has a masters degree in Industrial Engineering Sciences. For already a year we can call him a part of our Tribe.