Kafka summit 2023 Blog Post

The Kafka Summit 2023, held recently, brought together a diverse group of professionals, enthusiasts, and experts in the field of data streaming and event-driven architectures. This year’s summit was an exceptional gathering, filled with insightful discussions, cutting-edge demonstrations, and valuable networking opportunities. Of course, the Bitrock’s Engineering team couldn’t miss to attend it and to share the key insights from the event.

During the keynote presentation, Jay Kreps, Confluent Co-founder & CEO, presented a rundown of enhancements coming to Kafka over the next year and beyond.

After the Zookeeper removal in favor of KRaft (KIP-866) available from Confluent Platform 7.4.0, another big surprise announced is the KIP-932 Queues for Kafka which allows many consumers to read from the same partition, enabling use cases like the classic pub sub-queues. This will be made possible thanks to the introduction of share groups and acknowledgment of single records in Kafka Consumer protocol.

Jay also unveiled Confluent’s Kora Engine, the Apache Kafka engine built for the cloud. Kora is the engine that powers Confluent Cloud as a cloud-native, 10x Kafka service, bringing GBps+ elastic scaling, guaranteed reliability, and predictable low latency to 30K+ clusters worldwide.

Another important announcement made at Kafka Summit 2023 in London, is the upcoming Apache Flink-powered stream processing offering in Confluent Cloud, expected in winter 2023. The recent acquisition of Immerok by Confluent has positioned this data streaming giant to offer both streaming storage (via Apache Kafka) and streaming computation (via Apache Flink) capabilities.

After the keynote, the Bitrock’s Engineering team attended different talks during the summit, a very interesting one presented and explained the benefits of the new consumer rebalancing protocol, KIP-848: The Next Generation of the Consumer Rebalance Protocol .

The current rebalancing protocol has different issues, one is definitely that most of the logic is client side (fat client), for example, session timeouts and intervals are defined client side, but its main pain point is that the current protocol will stop processing new messages (strop the world) when executing a rebalancing. Fault group members might cause issues to the whole consumer group. The new protocol is based on three design goals in mind: Server side, Consumer Protocol and Incremental. The new reconciliation protocol has 3 main phases:

  • The group coordinator server side will receive the partition assignment from the members and compute the new assignment for the partitions due to a new member.
  • The group coordinator communicates which partitions should be revoked and the consumer acknowledges.
  • The partition can be assigned to the new member of the consumer group.

During the evening party, our colleagues enjoyed a beer and international foods while attending the performance by Sam Aaron, Live Coding Musician and Creator of Sonic Pi with his futuristic music sets improvised through the manipulation of live code.

The Kafka Summit 2023 was an outstanding event that showcased the advancements and future directions of the Kafka ecosystem which continues to be a driving force in enabling real-time data streaming and event-driven architectures in an increasingly data-centric world.

For sure we will not miss next year's edition! If you’d like to get more details about the Kafka Summit 2023, we invite you to also read the article from our sister company, Radicalbit.

Authors: Matteo Gazzetta, Team Lead Engineering at Bitrock and Daniele Bonelli, Team Lead Engineering at Bitrock

Read More

On May 16, we had the great pleasure to attend the 10th edition of the Cloud Conf 2023 held in Turin. A gathering of cloud computing enthusiasts had the opportunity to network, engage and establish connections with like-minded professionals from around the globe. 

Throughout the conference, a wide range of topics from Scalability, IoT, Machine Learning, Container, Microservices, Automation, Serverless Architecture to Cloud Security were covered in interactive workshops and technical sessions. In this report, we will delve deeper into the key takeaways and notable sessions from the conference highlighting insights and emerging trends shaping the cloud landscape.

The first keynote was ‘Developer Joy – How great teams get s%*t done’ by Sven Peters, Developer Advocate @ Atlassian. The main goal was to answer the question ‘what makes a team of developers more productive and happier? All considerations lead to the concept that the "joy of the developer" is the right intersection of his or her quality, progress, and values.

In the second keynote ‘From complexity to observability using OpenTelemetry’, Danilo Poccia, Chief Evangelist (EMEA) @ Amazon Web Services, showed through an end-to-end example how to use OpenTelemetry to instrument and collect telemetry data such as traces and metrics to build observable applications.

Another talk focused on cloud security was the one by Rob Barnes Senior Developer Advocate @ HashiCorp: “Migrating your security mindset to the cloud”. Barnes showed how to implement symmetric and asymmetric encryption of your application data. 

In the following sessions, many other topics were discussed. Just to name a few, Anahit Pogosova, Lead Cloud Software Engineer @ Solita, presented in her interesting talk ‘The Hidden Hero Behind the Serverless Superstar or Top 5 Cool Things Lambda Can Do For You’, how to implement and tune asynchronous architecture built in the Amazon cloud using Kinesis and Lambda technologies.

Ruben Casas, Staff Engineer @ Postman, in his speech ‘Micro-Frontends: The Evolution of Frontend Architecture’, guided us through the evolution of frontend application at scale analyzing the difference between monoliths, monorepos and MicroFrontends. 

We must highlight other contributions from Alberto Massidda, Production engineer @ Meta (Facebook) with his talk on ‘ChatGPT: Large Language Models explained well’ and Abdel Sghiouar, Cloud Developer Advocate @ Google Cloud on how to ‘Secure your software supply chain from dependencies to deployment’.

Once again, Cloud Conf 2023 in Turin was undoubtedly a resounding success, providing a platform for learning, collaboration, and inspiration. It showcased the incredible potential of cloud computing and its transformative impact on industries worldwide offering a comprehensive overview of the current state and future prospects of cloud computing. 

Are you interested in learning more about their rich lineup of keynotes speakers and the captivating Cloud Conf 2023 program? We invite you to visit their website https://2023.cloudconf.it/ for all the details and to learn from the best!

Keep following us on our Blog and social media channels to discover our upcoming events!

Author: Danilo Ventura, Senior Software Engineer at Bitrock.

Read More
Bitrock Hackathon

The Bitrock Smart Hackathon is finally here!

We’re thrilled to present the first edition of our virtual hackathon, organized in partnership with our sister company ProActivity.

Our hackathon is dedicated to all coding lovers: there’s no need to know a specific programming language, we only ask for passion and creativity!

The participants - divided into teams - will deal with the challenge remotely, but they will have the opportunity to get to know each other in person during the amazing Pitching & Awarding Event at Museo della Scienza e della Tecnologia in Milan.

If you already have a work group (of friends or colleagues), feel free to register along with them. But you can also participate alone: in this case, we’ll assign you a team to join. 

Bitrock Hackathon

The Challenge 

At Bitrock we strongly believe in the efficiency and proficiency that remote and agile working can bring to every business. Indeed, we have adopted remote working since its first appearance on the Italian job market.

However, we are aware of the possible negative effects of remote working on employees. More specifically, the most common highlighted problems are the feeling of isolation, the loss of a sense of belonging to a team (especially for new hires), and the lack of effective sharing relations with their colleagues. 

Working in an office is full of spontaneous moments that allow you to interact with others. Remotely is not that easy: there are no hallway conversations or having coffee with colleagues.

Human connection is essential, not only for work productivity, but more importantly for mental well-being.

For todays’ businesses it is thus imperative to create spaces and opportunities for their employees to connect and create relations, and technology can play a fundamental role in this mission.

And here’ s how the challenge was born!

During the event, all participants will have to develop a smart tool to help employees that work remotely maintain social relations, stay motivated and collaborate with their colleagues.

Some examples? An interactive platform through which employees can have a “virtual coffee” and take a break together, or an App that allows you to connect with your colleagues in a fun way by organizing virtual games or other specific activities.

In addition, we strongly believe that a topic regarding the world of work and possible ways to improve it could really motivate all participants: those who are not working yet, those who have just started working, and those who have  already been working for a while. 

The perks of joining

In order to motivate the competing teams,  our virtual hackathon showcases a total prize pool of 10.000 Euro for the top three projects.

However, there are many other reasons to participate, including incredible networking opportunities: both during the competition and at the closing event, indeed, you will have the chance to meet and have fun with your friends and colleagues,  as well as with other developers like you, not to mention Bitrock and ProActivity’s team members.

Moreover, our experienced Professionals, in the role of Mentors, will support you throughout the whole project by giving you and your teammates constant feedback - which will allow you to improve your skills and learn some ropes.

To sum up: a prize up for grabs, an interesting and inspiring challenge, and a great occasion to enlarge your network.

Isn’t this enough? There’s still something in store for you: we are organizing a special Pitching & Awarding Event for all participants! The party will take place in an exclusive and inspirational location: the Museo Nazionale Scienza e Tecnologia in Milan, on 6th of June.

Bitrock Hackathon

What are you waiting for?

Discover all details and register now on the dedicated website!

Read More

Last week we organized an exciting  Bootcamp in partnership with SheTech, focused on ReactJs.

The aim of this bootcamp was the same of the previous ones:  giving young girls and women a concrete opportunity to get closer to the world of programming, and fill the skill mismatch that is - unfortunately - still high in the STEM sector.

Thanks to word of mouth and dedicated sponsoring activities, we succeeded in involving 30 participants, most of them women, passionate about programming and with the desire to enrich their own skills and knowledge.

After an initial briefing on the Front-end scenario and a presentation about Bitrock’s value proposition, participants could finally begin to put their hands on their laptops and start working.

All the groups were guided and supported by our Mentors (including Leonardo, one of the previous bootcamp’s participants, who joined the Bitrock team a few months ago) in an exercise based on ReactJs with the final goal of creating a Memory (card  game).

SheTech_Bootcamp_2
SheTech_Bootcamp_3

To get all participants more involved and increase the knowledge of the Bitrock brand, we launched a challenge: the funniest Instagram stories would win a special prize and, at the end of the event, we were  glad to announce four winners! 

After almost five hours of programming, the bootcamp ended with an interesting Q&A and feedback session, characterized by an open discussion on all touched points and topics.

As in the past bootcamps, it was a really useful moment for us, since we received different tips to improve future events. We can’t wait to put them into practice!

We are proud of this small step towards a major objective: bridging the gender gap in STEM and supporting women in the world of technology, entrepreneurship and digital. We will continue to organize events like this to help create an inclusive and inspiring work environment for everyone.

Follow us on our social media profiles to stay updated on our next events!

Read More
WebSummit

The Journey Begins

A few weeks ago, the WebSummit 2022 event took place in Lisbon, and the Bitrock Team was there! The party was assembled and the mission clear: we left Milan last 30th October, early in the morning, and reached our destination a few hours later.

We landed and, after leaving the terminal, we realized how important this event was. A huge WebSummit logo was there, beside one of the entrances, waiting for us, as if it was saying: “Hello guys, you’re in the right place, welcome! It’s going to be a great time”. It wasn’t over: outside, a nice WebSummit pavilion had been set up.

After registration and check-in, we got our badges and bought some tickets for public transportation at a great discount! After dropping luggage at our place, we were free to visit the city as we had some time to spend just as tourists. 

After a quick round-trip of the city, it’s now time for the event and its rich schedule!

Day 1

The day one schedule started late in the afternoon. The event took place at the Altice Arena

whilst on the next days the activities were scattered among different pavilions in the same area.

When we arrived, the view was astounding: a lot of people, from all around the world, were waiting to be allowed in. Journalists, entrepreneurs, sponsors, developers, speakers: everyone was there, waiting for the main show to begin. 

For the day, the organization had invited few important personalities that were going to 

give their speech to the audience. 

The stage was spectacular and colorful, and everyone was ready. After a quick introduction by Paddy Cosgrave (founder) the real show began!

Then, Carlos Moedas, Mayor of the city, was introduced to the stage: he warmly welcomed the audience to Lisbon and to the event itself. His speech was interesting and inspiring: he told us how surrounding himself with the right people allowed him to accomplish great things for the city, even though many others were thinking that those things were impossible to do. He also presented Lisbon’s UnicornFactory, an organization boosting startups to scale and learn how to innovate. 

As the Mayor claimed, “innovation is not an idea but is the process that turns that idea into jobs, growth and prosperity”. Therefore, UnicornFactory helps startups begin their journey and turn their ideas into a tangible reality, something that is beneficial for as many people as possible!

Afterwards, it was time for another politician to make his appearance to the stage: Antonio Costa, Portugal’s Minister of Economy, who told us how the Country is investing into technology and innovation with a big plan, spanning over the next four years, about attracting startups with the goal to become an international hub for such companies. 

He promoted Portugal as the right place to be for the tech business, as a steady stream of money is going to be invested, and a dedicated set of laws is about to be passed to ease this process. It seems his claims are for a good reason, as Lisbon has been chosen to host the European Startups Nations Alliance! 

In his speech, he also mentioned how technology and innovation are much needed to help us find solutions to some of the biggest problems of our times (such as the threats caused by climate change, pollution, resources over-consumption), and how Portugal wants to be a leader in helping with solving those problems.

Then it was the time for Lisa Jackson, Apple's VP of Environment, Policy and Social Initiatives, and Changpeng Zhao, Binance’s Co-founder and CEO, to take their place on the stage. They both were interviewed, describing their business to the audience, and providing their point of view on different topics.

Finally, the stage’s lights changed into two colors that all of us have seen many times on the news during the last months: blue and yellow, the Ukrainian flag’s colors. It was time for Olena Zelensky to enter the stage and tell the audience about the dramatic times her country and its people are living in. She shared with us the technological effects of the Russian invasion of Ukraine: “The dystopias we read about in science fiction novels and all the threats of destroying life are much closer than you think. We heard it in Ukraine because of Russian terror, because Russia puts technology in the service of terror." Zelensky said the technology is now a "battleground" in Russia's invasion of Ukraine and she described how drones and missiles are killing families. 

She wanted to give the same message to everyone who was there - from founders to 

startups, executives, engineers, and journalists: technology should be used to save people rather than destroy them: “I believe in technologies that save, not destroy. I believe that such technologies are the future. Because otherwise there is simply no future in the whole world. You are the powerful intellectual force that moves the world. The potential and technology that can help, not destroy are in your hands. And it is with Ukraine and right now that you can move the world in the right direction”.

With her powerful message, day one came to an end: WebSummit was officially opened!

Day 2

From day two, the event entered the heart of its agenda, and each pavilion was in turmoil: the booths of companies, large and small, attracted the participants with their lights and sets, gadgets, prize games, and the possibility of speaking with their staff and discovering their products and solutions.

Over the entire event, hundreds - if not thousands - of companies showed up: from small startups striving to find a place in the IT market (ALPHA), to the ones that already made their name known and received additional funds (BETA), to those that have grown larger and larger and are now established realities (GROWTH).

Among the latter ones, we were happy and proud to see Amity, an IaaS startup that enables companies to increase engagement in their apps or website by adding pre-built social features: chat, profiles, fortunes, feed, video stories and all. There’s quite a bit of Italy in the company, as their face-person at the event was Francesca Gargaglia, and they also have an office in Milan, our city!

Of course, WebSummit is not only about companies, but mainly people, as Paddy Cosgrave made clear during day one, when he asked everyone in the audience to stand up and get to know the two or three fellow attendees that were around them.

Being about people also means sharing ideas, which is something they did well: indeed, a lot of speeches and seminaries took place during the event. Honestly, it was impossible to attend all of them, even if we tried to split up.

Here’s a short list of the speeches we enjoyed the most, and that we would like to share:

  • Chris Anderson, TED curator, with his mantra Ideas worth sharing, gave an interesting speech about “reflection on how the internet should be incentivizing constructive behavior other than only focusing on monetization”.
  • In UI/UX trends in 2023 and beyond, various speakers discussed the key ingredients in creating a seamless, intuitive customer experience. They also explored anticipated UI and UX trends for 2023.
  • Alexa's next AI trick: Disappearing: in this session, Rohit Prasad, Alexa’s head scientist, explains how a philosophy of 'ambient intelligence' is driving the development of AI that blends invisibly into our environment, helping you when you need it and disappearing when you don’t.

Day 3

The sun was up again, and a brand-new day could start. We got up, prepared, and dressed for 

the occasion: day 3 was about to begin! After a delicious breakfast (thanks pasteis de nata) we were back to the Altice Arena and its surroundings. 

Pretty much as day 2, the place was crowded, full of voices speaking languages from all over the world, and the atmosphere was joyful. People were running to get their seat for the next speech. Occasionally, people wearing the Ukrainian flag could be seen, supporting their loved ones in these hard times.

More companies were showing up as a rotation happened, and their employees now took place in the stands that were assigned to others the day before.

Again, here’s a short list of speeches we would like to mention:

  • Hiring and retaining talent in a remote world: one of the hottest subjects for companies nowadays was covered by Matias Roca, Founder of Kuorum, who talked about how to find, hire, and retain talents.
  • Edge-first: Decentralize the web!: Guillermo Rauch, Vercel’s founder and CEO, told us about how few locations are responsible of the availability of digital services all around the world, and what are the reasons and ways to move out of the situation by removing this huge bottleneck.
  • Rethinking how the internet is built: the internet was designed as a democratic platform to facilitate the free exchange of information, open communication, and privacy. Clearly the actual reality is not meeting expectations that well! Andy Yen and Brendan Eich share their ideas on how to try and break the circle.
  • Nations need digital sovereignty: after leaping into digital, nations face unprecedented complexity from cyber threats, surveillance and uncertainty in their software supply chains. Ian Tien, Mattermost’s Co-Founder and CEO, told us about the key risks, the principles of defense, and how open-source communities are innovating to create robust new solutions for digital sovereignty.
  • The Language Roast: this one was great, perfect for developers like us! Every programming language has its pros and cons: with the right mix of coding science and jokes, Gautam Rege talked about what he feels about a few languages out there. Let the roast begin! 
  • The Power of Geolocation: in this session, Anna Sainsbury shared insights on the threat of fraud, on digital identity in the multibillion-dollar gaming industry, and on how geolocation and advanced machine learning are setting the new standard in establishing true digital identity and trust.

Day 4

As all things, even good ones come to an end. Our last day at the WebSummit began.

Less people seemed to be around: most likely, many had already packed their stuff and got back home. However, the pavilions were still in motion and there were plenty of things to do and see.

Here’s a quick summary of what we found interesting on the last day:

  • MongoDB Stand, the guys at this stand were simply amazing! Passion spilled from their eyes as they engaged us by telling stories of what working at MongoDB and working with their product looks like. We also had the chance to attend a couple lectures hosted at their stand and held by engineers working for them. We enjoyed a lesson about the advanced usage of the browser console as well as a very nice, humorous, and brilliant story of many programming languages and tools and how their story ended or continues up to these days. Congrats Jesse Hall and Joe Drumgoole for their noteworthy speeches, and a special thanks to Diego Freniche Brito and Jorge Ortiz for their availability and friendliness.
  • How to play games and save the world: saving the world from the climate crisis is not a game, but sometimes playing games can help us achieve our goals. This one makes no exception! In this discussion, we heard about how the games industry can help solve the challenge.
  • The metaverse and the future of the internet: will we exit the internet and enter the metaverse? Or will the two exist, side by side, in a more immersive, symbiotic, 3D-experience? Naomi Gleit, Meta's head of product, shared her thoughts on what the future has in store for us.
  • Debunking the great AI lie: even if the event was about to end, surprises were not over. In this speech, we had the chance to listen to the voice of a great personality: Noam Chomsky, the father of modern linguistics, who joined Gary Marcus (scientist, author, and entrepreneur) for a wide-ranging discussion on why the myths surrounding AI are so dangerous, the inadvisability of relying on artificial intelligence tech as a world-saver, and where it all went wrong. Clearly, not the typical conversation a person is used to: we were very lucky to be there!

One more thing worth a mention was the final “speech” of the event. Indeed, the final greeting to all those who attended WebSummit was given by an incredible person: a guy full of energy and positive thoughts that made everyone laugh. A comedian? Absolutely not! We are talking about Marcelo Rebelo de Sousa, Portugal’s President.

What a surprise this 74-year-old man has been: not the typical politician with the usual bla bla. He was brilliant and perfectly fitting among all the other event’s attendees. He showed great enthusiasm about WebSummit, reaching the seventh edition (despite the pandemic and the war), with more than 70k attendees (42% women)!

In the wake of this enthusiasm and energy, he set a few goals for the next year (and for the years to come) for all of us: stop the war, contribute to Ukraine’s reconstruction, fight inflation and the economic crisis that is threatening many countries and, most important, try and solve climate change.

After this speech, WebSummit 2022 closed its doors. For us, and the rest of the audience, it was time to go back to our homes, bringing back a bunch of new ideas, inspirations, connections and start building the future.

As Mr. President wants 🙂

Goodbye WebSummit, goodbye Lisbon... thanks for everything!

Author: Daniele Chiarello, Team Lead User-experience & Front-end Engineering @ Bitrock

Read More
SheTech Breakfast Bitrock

Fortitude Group  strongly believes in gender equality and encourages inclusiveness and enhancement of differences.

For these reasons, all the companies of the Group are partners of SheTech, a non-profit association created with the aim of filling the gender gap in the world of technology, digital and entrepreneurship, through networking, empowerment and training activities.

In the past, we organized different types of events in collaboration with SheTech and, finally, last 24th November we had our first in-person breakfast, after two virtual editions.

The breakfast was the occasion to learn from our Role Models that have made a successful career out of their passion for technology. A very special thanks goes to Samantha Giro, Marinella Mastrosimone and Ginevra Grassi for sharing their personal & professional stories, being a precious source of inspiration for many young girls and women who want to enter the STEM world.

We admit that it was a surprise also for us, colleagues from the Bitrock team,  even if we already knew them: the passion and emotion that we saw in their eyes really struck us. In this blog article, we would like to share some ideas that we have found particularly enlightening and useful for all the women who work in - or  want to enter - the Tech world!

Integrate and not differentiate 

The STEM sector is indeed, according to the data, more masculine than feminine. However, this should not be a reason for the masculinization of female professionals who decide to enter it and make their own contribution.

On the contrary!

First of all, women should recognize their typical characteristics and then import them into the working context in which they are, not letting that define their behavior.

Typically feminine features such as empathy, multitasking and intuitiveness are fundamental qualities in today's business, whatever sector it is. 

On the other hand, it’s wrong to reject the masculine elements: a lot of them, like rationality, strength and assertiveness, should be internalized.

Therefore, in the STEM sector and more generally in the world of work, a progressive integration and enhancement of feminine and masculine traits should happen: this enriches and completes the professional figures of whatever gender they are.

Listen to your instincts and learn to follow gut feelings… sometimes 

During the interview, our Role Models talked about personal and emotional aspects too. A topic that emerged several times was instinct.

Considering today's data in the STEM sector, it’s normal to be curious about the women’s reasons for choosing to work in it.

By telling their stories, our colleagues have demonstrated that often the situations we live in - both professional and personal -  derive from casual events and intuitive decisions.

In this way Samantha started her career  in the Mobile sector, Ginevra switched from being an architect to being UI designer, and Marinella often orientated herself by following "gut feelings" rather than logical thinking.

Three women, three professionals who demonstrate that success is not only determined by rigid calculations but it should be supported by flashes of creativity and instinct too.

Love what you do and you can do everything

An increasingly current problem is the mental load: a psychological overload caused by the sum of work, domestic and family thoughts. Working women are probably the most exposed category to this problem, partly due to the typical tendency to have everything under control and partly due to the socio-cultural heritage that female figures still have today.

Asking our Role Models how they deal with this dynamic, this is what emerged: love what you do and do what you love so as to be satisfied and able to manage all aspects of your life.

Obviously, it's easier said than done, but it's a good start.

Another way to succeed in content switching is to ask for help both at work and in private not thinking that this indicates incompetence - remember that the ability to delegate and prioritize are two of the key skills of all successful managers!

The first in-person breakfast was truly a success and brought out important aspects that need to be considered in every company. 

At Bitrock we have values ​​that reflect the key messages that emerged during the event.

We are committed to implementing them daily through a Leadership Model that envisages a series of dedicated actions, with the final goal of shaping an inclusive, supportive workplace, where effective communication and cross-team collaboration play a crucial role.

For these reasons, our collaboration with SheTech is so important and stimulates us to continuous improvement.

We now have many other events planned, first of all the coding bootcamp that will take place on January 28th focused on React, in which our colleagues (and their skills) will be at the disposal of those wishing to try their hand at a tech challenge... Stay tuned to know more!

Read More
Lamda Days 2022 Cover

Last July we attended Lambda days 2022 in Krakow (Poland), one of the largest tech conferences in Europe with more than 50 talks and 500 attendees. The two-day event turned out to be a great experience for the whole team: undoubtedly, an incredible opportunity for networking and knowledge sharing. In this article, we now want to highlight some of the talks we enjoyed the most. You can’t skip it!

How your Brain Processes Code

Let’s start with a question: what happens in your brain when you acquire new information? We know that, when you first read something, this is stored in your short-term memory. This was discovered by George Miller in 1950. From his research, we know that this buffer is very small: it can hold between 5 and 9 things at the same time. 

When information comes into your short-term memory, it stays there for a brief period, and then it’s sort of “sent over” to your working memory. Your working memory can be seen as the processor in your brain, the one responsible for the thinking process. When your working memory processes information, it cooperates with your long-term memory (which will offer you insights related to the information present in your working memory). 

Given this introduction, we can say that, when we start learning a new programming language, here’s three different forms of confusion that are related to these memory areas. Let's explore them in detail.

Long-term memory issues

Let’s start by looking at this program in APL:

What does this program do? Well, if you don’t know APL - which is perhaps true -, you have no clue, and it’s probably because you don’t recognize the syntax: you have no clue what the T stands for. It’s important here to point out the difference between “I don’t know” and “I don’t understand”. It is common, looking at code we are familiar with, to say “oh I don’t understand anything”; most of the time, you definitely can learn it, but you just don’t know it yet.

Short-term memory issues

Another example can be found in this Python program:

If you’re a Python programmer, this piece of code may be easy to understand. But if you come from a different background (for example Java), this syntax has a lot of elements for your short-term memory to keep track of. And if this is not familiar to you, it can overload your working memory. The effect? Easy: you recognize each single element, but you struggle in understanding how they come together.

Working memory issues

Let’s take this example in basic:

If you take each line individually, you may understand what it does. But if I ask you what’s the output of this program, well, that’s much harder to figure out! You will probably have to give N a value and process each line with the help of a piece of paper. In this case, you have all the information to understand the program, but it’s still hard.

How to approach each of those issues

Good news: there is a specific solution for all the above-mentioned issues:

  • If you have long term memory issues, you must practice the syntax. Since you are learning a new language, you need a basic vocabulary. 
  • If you are struggling with short term memory, what you can do is try to use a syntax more familiar with your background. For example, this code has the exact same output that the one we saw earlier, but with a more Java friendly syntax:
  • As for the working memory issues, there are many things you can do to support your brain process. For instance, you can use a state table and process the code step by step: with this support, you can understand what’s going on.

This brief text is based on Felienne Hermans at Lambda Days 2022. To know more, you can read The Programmer’s Brain: What every programmer needs to know about cognition.

Debugging for Math Lovers

Our day-to-day jobs involve writing Scala code, testing it, and hoping that particular piece of code does what we intended. However, as any developer knows, this is not always the case, and we must spend a lot of time finding out what is wrong with what we have written.

One of the most inspiring talks we had the opportunity to see at the event is the one by Michał J. Gajda: a noteworthy contribution about debugging with a functional programmer mindset.

Let’s start from the beginning by defining what an error is!

Types of errors

The first type of error we can encounter is one of the most common ones when we approach a new language. We write some code, and it does not compile: we have written something that is syntactically wrong, and the compiler simply does not understand us. After fixing it, we start to play with some language libraries and the compiler starts to complain again: this time, about a type error. So, we do our search, we start to understand a little more about this new language type system, we fix the error, and the compiler is happy.

Our next step? We must test it! We thus write some unit tests - since we are good developers -, but the test fails. Our code gives the wrong result. Thankfully, our unit test catches the bug, and we can fix it.

Now that our code produces the correct result, it is time to make the production ready. Let’s try to test the load of data that our code can handle! We start with a small amount of data, and, from the beginning, we see that our code performance is too slow: we can’t handle the amount of data that we are expecting.

We see a common pattern here: each type of error is more difficult to fix than the previous one. Let’s try to formalize a definition of an error:

“Error is a difference between what we want, and what we got.”

Michał goes forward in his talk and classifies three other types of error (each of them worse than the other): Wrong concept was used to model reality - User experience is frustrating - Specification does not match user expectations.

Time-to-fix

After our classification of error types, let’s talk about the time we spend fixing an error. We have different tools at our disposal that can help, like our awesome text editor or our IDE, which can detect errors early, by changing the text colors or helping us in the debugging process.

As seen before, even the compiler could be one of our best friends, maybe a little rude sometimes, but it’s just trying to help us!

Another important metric to Michał is the time we need to discover an error. So, let’s do a quick list of errors and track the time needed to discover them:

  • Lexer error, editor changes color (t > 1s)
  • Syntax error, compiler parses (t > 10s)
  • Processing error, after program is complete (1min < t < 1h)
  • Latent misbehavior, after program sees new input in production (1mo < t < 1y)

There is an important result in the cognitive science field that we can bring to the table in our discussion on how to make less mistakes:

Time to learn from errors = 1/t^2

To obtain our main goal (i.e., do less errors), we should decrease latency between them! But how can we reduce the latency? This is not an easy task, but we can address it from a different point of view: the remaining errors are difficult to spot because our system is too complex.

Ultimate ways of reducing complexity

We are humans: our brain has some difficulties in following complex and long paths of reasoning. Especially for us, following a deep function call stack can be confusing and tedious: we need a lot of brain memory to maintain all the variables names, their value and how they interact. And this is only if we want to understand how a method works. What about a complex library function or, even worse, a complex Akka actor’s interaction?

Michał, at the end of his talk, gives some tips for when we are building new software:

  • decrease the size of the problem: use short functions and modules, divide the side of the problem whenever possible
  • decrease latency to comparison: follow editor hints, check type errors; the compiler is your friend
  • reduce interaction between components of our system: low number of function arguments, use module interfaces, separation of concern
  • group and reuse any abstraction: for example, monad, applicative and mathematics help us do it

These are things that some of us may take for granted, but it’s always helpful to have them in mind when we must do our job. These principles, indeed, could help us reduce the long and boring time we spend looking for an error!

This sum-up is based on Debugging for math lover by Michał J. Gajda: you can find all the slides here.

Static Analysis Tools Love Pure FP

Developers love writing code but, if there’s one thing that we all hate, this is when an error message is thrown by the application, and we can’t track the root cause of the bug. A static analysis tool helps the developer find these bugs, performing an analysis on the code at compilation time and suggesting how to address the problem through meaningful error messages. By attending Lambda Days, we discovered a new tool - a linter in this case - made by Joroen Engels for the elm programming language, which is now quite popular and appreciated within the community.

Linter headache

One thing that developers hate about linters is when they report false positives, and they end up inserting a bunch of:

linter-disable rule

The problem comes out when in big projects the linter can report thousands of messages, and, if only 10% of these are false positives, you’re going to waste a lot of time and make your code worse.

A linter is not an infallible tool, and those kinds of errors are caused by a lack of information from the code; when we miss information, it turns out to use presumptions based on probability. Let’s consider an example in javascript eslint:

The rule reports when you’re using the function map over an array, and you miss the “return” statement. This could be a problem since you want to map something from A to B and not to “undefined”. In this case, the linter is making an incorrect presumption, since the array is not really an Array, and so the “map” function could be any function. This is due to missing information: actually, type information that Javascript doesn’t have.

The Elm way

How does Elm, a pure functional language, help solve the previous problem? Here’s the same function written in Elm:

We can immediately spot some differences: “map” is explicitly called, there is no ambiguity, and array is guaranteed to be an Array. Another advantage we have using a pure functional language is that we don’t have to worry about side effects. Just look at this example:

As you can see here, the function toUpperCase is called twice: the last one is unnecessary. We can safely delete it without worrying about any issue just because we know that it cannot have any side effects; this creates a domino effect when it’s possible to remove entire modules.

Summary

We’ve seen that compilers and type checkers remove surprises. Furthermore, pure functional programming simplifies a lot of analysis – such as code simplifications and dead code elimination – with less false positives. In a language like Javascript, we’ve seen that we must recreate guarantees with a lot of linter rules requiring configurations which, most of the time, will lead to frustration!

If you want to know more about Engels’ talk, don’t miss the recorded content available here.

Authors: Marco Righi, Software Engineer @ Bitrock - Alessandro Pisani, Software Engineer @ Bitrock

Read More

Here we are, excited after joining the CloudConf 2022 event in Turin. This year’s edition, finally organized as an in-person conference after the covid19-pandemic, saw hundreds of professionals and developers from all around Italy gathering at the local Lingotto Congress Center. 

Now: what is CloudConf? Let’s put it shortly: a day full of engaging activities, networking, and talks dedicated to Cloud Computing. Among the different sub-topics (from development to operations), Sustainability & Green-computing were definitely in the spotlight: the main goal here was to evaluate strategies, actions and design choices in order to grant better energy efficiency for the solutions adopted when dealing with the Cloud.

Going into detail, our day started with the opening keynote by F. Bertani, Associate Solution Architect @ AWS. In his talk “Good old serverless, now in sustainable green”, he showed to the audience different techniques to improve performance and reduce costs within the AWS Lambda serverless ecosystem. An interesting starting point is the use of Rust to reduce the footprint of applications, as well as the use of good old profilers, especially AWS CodeGuru, where the use of JVM-based languages is unavoidable.

Another talk focused on energy efficiency was the one by A. VIvaldi, DevOps Architect @ Vista Technology: “Observability and security in the days of containers”. Vivaldi showed to the audience how the use of eBPF can enormously broaden horizons when dealing with system observability, while not compromising performance.

In the following sessions, many other topics were discussed. Just to name a few, A. Messidda, Production Engineer @ Meta, presented in his interesting talk “Similarity Detection in Online Integrity” the evolution of solutions to moderate contents (especially the visual ones) within online communities. For instance, Messidda showed the Machine Learning and Artificial Intelligence solutions developed by Microsoft and Meta to fight child sexual abuse, revenge porn and many other illegal activities. 

Equally interesting was the brilliant contribution by W. Dal Mut, Solution Architect @ Corley. In his talk “How to  build a realtime system with AWS IoT Core”, Dal Mut described how to implement a realtime system (such as a messaging system), using an AWS solution properly designed for IoT, but equally applicable to use-cases that are very different from Industry 4.0 and home automation. The use of AWS IoT Core as a websocket server completely managed by the Vendor, in particular, leads to interesting integration possibilities.

Among the contributions purely dedicated to architecture and development, we must highlight the one by U. Lattanzi, Software Services Team Leader. Lattanzi showed the foundations to develop scalable microservice  and cloud-oriented architectures, pointing out that a good architecture is the result of a team working together (architect, cloud engineer, data engineer, security and dev leaders), on a continuously evolving project. The speaker also shared his personal check-list used to evaluate the design of the microservices implemented by his team. Of course, this list does not represent a master key that can be used for all situations unconditionally. Nevertheless, we should take it as good advice.
Last but not least, we were impressed by F. Sciuti, CEO @ Devmy, even though his talk was more focused on Front-end topics. More specifically, Sciuti delved into the functioning mechanisms of modern browsers: from the complexity hiding behind their ease-of-use to their ever increasing need for hardware resources. What about the connection to the Cloud? Well, in this case we must talk about  “browser-isolation”: an upcoming technology, in which the final user will interact with the Web thanks to “light browsers” that will only display and send the interactions to a “centralized” browser (which may be in the cloud). This latter one will manage the hard work, granting a higher level of security within the company intranets and less waste of resources.

To find out more about the event’s key sessions and top speakers, please visit https://2022.cloudconf.it/

Keep following us on our Blog and social media channels to discover our upcoming events!

Authors: Simone Ripamonti, Team Lead Engineering @Bitrock - Danilo Ventura, Sr Software Engineer @ProActivity

Read More
Bitrock JavaScript Bootcamp

Last week we organized a thrilling coding Bootcamp dedicated to JavaScript in partnership with SheTech, with whom we share, as part of the Fortitude Group, the goal of bridging the gender gap in STEM and supporting women in the world of technology, entrepreneurship and digital.

As we did in our previous bootcamp dedicated to ReactJs (if you miss it, see what we organized in our dedicated Blog post!), also in this event we wanted to give young girls and women a concrete opportunity to get closer to the world of programming, and fill the skills mismatch that is - unfortunately - still high in the sector. 

This time, the event was open to anyone: no technical prerequisites were asked to join the bootcamp, just a true passion for technology and the desire to learn something new.

After an initial briefing on the Front-end scenario and a quick presentation of Bitrock’s value proposition, the bootcamp entered the battle zone. The participants split up in different groups, all supervised by our experienced Mentors, to start working on different exercises based on JavaScript, with the final goal of developing a to-do-list App.

The questions from the participants were numerous, all answered by Bitrock and SheTech’s Mentors through concrete examples, use-cases and in-depth explanations.
After almost five hours of programming (including many coffee breaks, a super-tasty lunch and many games of foosball), the bootcamp ended with an interesting Q&A and feedback session, characterized by an open discussion on all touched points and topics.
The general feedback that came from the participants was enthusiastic, and many proposals arose for other future events in order to continue exploring the world of Front-End and User Experience Engineering.

Keep reading our Blog and follow us on our social media channels to discover what other initiatives we have in store in partnership with SheTech!


To find out more about Bitrock's mission to promote a workplace culture based on inclusion and gender equality, please visit https://bitrock.it/blog/equality-in-stem.html

Read More

Last month we had the chance to attend the amazing Kafka Summit 2022 event organized by Confluent, one of Bitrock’s key Technology Partners.

Over 1500 people attended the event, which took place at the O2 in east London over two days of workshops, presentations, and networking.

Lots of news was given regarding Kafka, the Confluent Platform, Confluent Cloud, and the ecosystem altogether. An incredible opportunity to meet so many enthusiasts of this technology and discuss what is currently happening and what is on the radar for the upcoming future.

Modern Data Flow: Data Pipelines Done Right

The opening keynote of the event was hosted by Jay Kreps (CEO @ Confluent). The main topic (no pun intended :D) of the talk revolved around modern data flow and the growing need to process and move data in near real time

From healthcare to grocery delivery, a lot of applications and services we use everyday are based on streaming data: in this scenario, Kafka stands as one of the main and most compelling technologies. The growing interest in Kafka is confirmed by the numerous organizations that are currently using it (more than 100.000 companies) and by the amount of interest and support that the project is receiving. The community is growing year after year: Kafka meetups are very popular and numerous people express a lot of interest about it, as proved by the countless questions asked on a daily basis on StackOverflow and the big amount of Jira tickets opened on the Apache Kafka project. 

Of course, this success is far from accidental: if it is true that Kafka is a perfect fit for the requirements of modern architectures, it is also important to remember how many improvements were introduced in the Kafka ecosystem that helped create the image of a very mature, reliable tool when it comes to build fast, scalable, and correct streaming applications and pipelines

This can be seen, for instance, in the new features introduced in Confluent Cloud (the Confluent solution for managed Kafka) to enhance the documentation and the monitoring of the streaming pipelines running in the environment with the new Stream Catalog and Lineage system. Those two features provide an easy-to-access way to identify and search the different resources and data available in the environment, and how this data flows inside the system improving the governance and monitoring of the platform.

Kafka Summit 2022 - Keynote (London O2)

The near future of Kafka - Upcoming features

Among all the numerous upcoming features in the ecosystem presented during the event, there are some that we really appreciated and we had been waiting for quite some time.

One of these is KIP-516, which introduces topic IDs to uniquely identify topics. As you may know since the very beginning - and this holds also today - the identifier for a topic is its name. This has some drawbacks, such as the fact that a topic cannot be renamed (for instance, when you would like to update your naming strategy), since this would be required both to delete and recreate the topic, migrating the whole content, and to update all the producers and consumers that refer to that specific topic. An equally annoying issue is when you want to delete a topic and then recreate another one with the same name, with the goal of dropping its content and creating the new one with different configurations. Also in this scenario, we can currently face issues, since Kafka will not immediately delete the topic, but will plan a deletion that needs to be spread through the cluster without the certainty on when this operation will be actually completed. This makes the operation, as of today, not automatable (our consultants have often faced this limitation in some of our client projects).

The second long-awaited feature is the possibility to run Kafka without Zookeeper. At first, it was very useful and practical to take advantage of the distributed configuration management capabilities provided by Zookeeper (this is specifically important in processes like controller election or partition leader election). During the past years, Kafka has started incorporating more and more functionalities and also maintaining a Zookeeper cluster, instead of just the Kafka one, which feels like an unnecessary effort, risk and cost. As of today, this feature is not yet production-ready, but we can say that it’s pretty close. Indeed, Confluent has shared the plan, and we are all waiting for this architecture simplification to arrive.

The third upcoming feature that we found extremely valuable is the introduction of modular topologies for ksqlDB. ksqlDB is relatively recent in the Kafka ecosystem, but it’s having a good momentum given its capability to easily write stream transformations with minimal effort and just an SQL-like command, without the need to create dedicated Kafka-Stream applications that will require a good amount of boilerplate that, later, have to be maintained. 

ksqlDB will not be able to complete the detailed development of some Kafka-streams but, for a good amount of them, it will be an excellent solution. The introduction of modular topologies will simplify the management of the streams inside ksqlDB, and it will simplify its scalability (which is currently limited in some scenarios).

Our Insights from Breakout Sessions & Lightning Talks

The inner beauty of tech conferences lies in the talks, and Kafka Summit was no different!

During the event, indeed, not only the feature announcements caught our attention, but also what was presented during the various breakout sessions and talks: an amazing variety of topics gave us plenty of options to dig more into the Kafka world.

One of the sessions that we particularly enjoyed is, for sure, the one led by New Relic (“Monitoring Kafka Without Instrumentation Using eBPF”). The contribution focused on an interesting way of monitoring Kafka and Kafka-based applications using eBPF without the need for Instrumentation. Antón Rodríguez, as speaker, ran a cool demo of Pixie, in which it was very easy to see what is going on with our applications. It was also easy to get a graphical representation of the actual topology of the streams, and all the links between producers to topics, and topics to consumers, easing answering questions like “Who is producing to topic A?” or “Who is consuming from topic B?”.

Another session that we particularly enjoyed was the talk by LinkedIn (“Geo-replicated Kafka Streams Apps”): Ryanne Dolan outlined some strategies to deal with geo-replicated Kafka topics - in particular in case of Kafka streams applications. Ryanne gave some precious tips on how to manage the replication of Kafka topics in a disaster recovery cluster to guarantee high availability in case of failure, and on how to develop our Kafka streams application to work almost transparently in the original cluster and in the DR one. The talk was also a great opportunity to highlight the high scalability of Kafka in a multi-datacenter scenario, where different clusters can coexist creating some kind of layered architecture composed by a scalable ingestion layer that can fan out the data to different geo-replicated clusters in a transparent way for the Kafka streams applications.

Conclusions

Undoubtedly, the event has been a huge success, bringing the Apache Kafka community together to share best practices, learn how to build next-generation systems, and discuss the future of streaming technologies.

For us, this experience has been a blend of innovation, knowledge, and networking: all the things we missed from in-person conferences were finally back. It was impressive seeing people interact with each other after two years of social distancing, and we could really feel that “sense of community” that online events can only partially deliver.

If you want to know more about the event and its main topics - from real-time analytics to machine learning and event streaming - be sure to also check the dedicated Blog post by our sister-company Radicalbit. You can read it here.

Authors: Simone Esposito, Software Engineer @ Bitrock - Luca Tronchin, Software Engineer @ Bitrock

Read More