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.

Author: Marco Righi, Software Engineer @ Bitrock

Read More
Bitrock&SheTech React Bootcamp

Last week we organized the first coding Bootcamp in collaboration with SheTech, after the strategic partnership signed in May 2021 with the common goal of bridging the gender gap in STEM and supporting women in the world of technology, entrepreneurship and digital.

More specifically, with this event we wanted to offer a real opportunity to bring girls and women from the digital and technology world closer to the world of programming, and fill the skills mismatch. As the recent Women’s Forum barometer on gender equity showed, indeed, women still play a secondary role in STEM, especially in the tech industry: in G7 Countries, the female presence in Data & AI is around 31%, while in Engineering only 19%.

After an initial briefing on the front-end scenario and Bitrock’s value proposition for Front-end Engineering, the bootcamp entered the battle zone. The participants split up in four different groups, each of one supervised by a Mentor, to start working on concrete exercises based on React Js.

What did we learn?

  • React.Js is not a framework, but a JavaScript library. Although most professionals define it as a JavaScript framework, the Reach website says otherwise: React.Js is a JavaScript library with attributes of a framework. It’s more tilted towards building interfaces than being a framework.
  • It’s the leading Front-End tool. It’s beyond being just one of the most fascinating development tools to learn. React.Js has climbed above Vue.js and Angular as the most in-demand front end development tool.
  • It has a thriving community of users. Many developers have a true love for the tool, which has transformed into close-knitted communities of loyal users. This explains why it is possible to find plenty of React.Js resources everywhere, from YouTube to GitHub.
  • React.Js allows for immutability. Every component built with React Js has two ways of working with data. This means you can build both stateless and stateful components; the choice lies in what you are aiming to achieve with the components.

The event turned out to be a great opportunity to network and meet new people with a strong passion for technology. The questions were numerous, all answered by Bitrock and SheTech Mentors through concrete examples, use-cases and in-depth explanations.
After almost five hours of programming, the event concluded with an interesting Q&A and follow-up session, characterized by an open discussion on all touched points and topics. The general feedback that came from the participants was enthusiastic - many proposals arose for other future events, continuing exploring the world of Front-end and User Experience Engineering with workshops and labs.

Keep reading our Blog and follow us on our social media channels to discover all future events in partnership with SheTech.

If you want to access the bootcamp presentation deck and workshop material, send an email to info@bitrock.it
To find out more about Bitrock's mission to bridge the gender gap in STEM, tech and digital, and promote a workplace culture based on inclusion and gender equality, please visit https://bitrock.it/blog/equality-in-stem.html

Read More
Corporate Event

Last week our Team gathered for our first corporate event of 2021, which turned out to be a great success for at least three different reasons.

To begin with, this was the first live event after the lengthy Covid-19 emergency. With proper precautions and respecting social distancing norms, we were able to meet in person at the event location - a cool and fancy restaurant in Milan - laughing, eating, and drinking together (as every proper event requires).

This occasion allowed many people to finally get together face to face: as we all know, seeing each other via  a computer screen may be fun and necessary these days, but meeting colleagues in the “real” world, shaking hands, sharing laughs and jokes is another story!

Secondly, this was the first official Fortitude Group event, with all team members from Bitrock, Radicalbit and ProActivity participating. A great opportunity to mark the new Fortitude era, after the 2021 Group rebranding.

Last but not least, events of this kind are also important since many colleagues that seldom have the chance to meet due to the allocation on different projects or different geographical location can finally spend some time together. During this evening, we finally had all people from Treviso, Lugano, Milano (and many other cities around Italy) together in one spot.

The event started with a welcome aperitif followed by a tasty dinner (typical Milanese cuisine...what else?!). Our CEO Leo Pillon took the chance to greet all participants and deliver a brief talk, addressing the challenges this period has meant for the Group, but also all the great results and success we were able to achieve while working remotely. It is a distinct corporate culture, a sense of togetherness and a clear direction that have fuelled the passion emerging in our daily work.

Curious to know more about the Bitrock world? Look at the pics below to get a taste of our event, and visit our Instagram page to discover much more!

We are now ready to start planning our next big event. Will you join us? 🙂

Sales & Key Client
Management, Sales & Key Client
Team Front End
Front End Team
Team DevOps
DevOps Team
Team Back End
Back End Team
HR & Marketing
HR & Marketing
Read More
Bitrock Brain Training Game

Unleashing Innovation and Collaboration with Technology Team-building Events


Integrating new technology into team building activities and team development is a thrilling way to engage employees in a safe and playful environment outside the standard working environment.

Our “Bitrock Front-end Brain Training Game”, a RxJs training session during which our Front-end team tried their hand at generating a data stream in an engaging virtual game, is just an example.

The event - Bitrock's first of its kind - was organized last Spring with two main goals: to experiment new front-end technologies applying them in a practical code project, and to improve teamwork among team members who are often assigned to different projects.

Bitrock Brain Training Game

Let’s now consider at a closer glance the technical aspects of our Brain Training Game.

Our goal was to organize a training session on reactive programming. We thus implemented the Back-end and Front-end (in Javascript) of a small Brain Training game application, in order to have a generator of a fair number of events.

Although this was a small-size project, we made an initial analysis working with the UX team and producing some wireframes, mockups and flow diagrams.

The Front-end part was built with React, and we focused on the adoption of the reactive paradigm using RxJS. For the Back-end, we opted for MarbleJs, a framework with RxJs capability. WebSocket was adopted as an events communication system, and we created some components that subscribed to it.

The Importance of an Innovation-based Workplace Culture

Internal events like these have many side effects in terms of employee empowerment and corporate workplace culture.

To begin with, our Brain Training Game has proven to be a highly collaborative, team-building activity empowering team members. Collaboration and teamwork are forged by such occurrences: people are drawn together and motivated to achieve a common goal when they are presented with a common problem to solve.

The game has also given our company (and specifically the Front-end department) a great opportunity to innovate. This is due to the fact that the very essence of these activities encourages creativity, as each team member is involved and granted complete freedom to develop and express themselves. Having a set amount of time to complete the project produces results. However, this is a different kind of pressure than what employees are used to, and a game may help loosen the constraints of corporate bureaucracy, responsibilities, and strict deadlines.

Last but not least, the relaxed atmosphere of such an event, which is centered on a shared challenge expressed through an interactive online game, offers a temporary departure from the standard. And such a “disruptive” workflow can lead to an improved work ethic among employees. Not to mention the chance to have fun and share pleasant moments with coworkers throughout the workday – if deadlines, reports, and briefings are part of the team's everyday routine, why not set aside some time and space for something different? A bit of fun is always appreciated.

Conclusions

Thanks to our Brain Training Game, Team members have had the chance to share their imagination, create cool things, and learn while having fun.

All participants have shown great excitement during the event: for them, this hackathon has been a real opportunity to work with new technologies, specifically with the Reactive paradigm.
While one of our Front-end developers said that this was a great opportunity to improve communication and bond with colleagues, another participant said: “I am glad to have joined this project: I have experimented with Marble.js, a useful library to make practical use of RxJs syntax”.

We are now prepared to replicate this type of event in the future, experimenting with new formulas and events, and maybe even extending it to other Teams.
Our efforts to promote creativity and cooperation are still ongoing. Keep an eye out for the next move!



BrainTraining 1

Braintraining 2

Braintraining 3

Braintraining 4

Read More
Bitrock Virtual_Office Journal

Bitrock Virtual_Office Journal

Here we are, after two months spending time together in our Virtual Office. Two months that have seen us deeply involved in many team-building activities to give the due importance to the human aspect of our worklife and reinforce our Team spirit during the long lockdown phase.

Here’s the best highlights from our Bitrock Virtual_Office Journal: delve into its pages with us and get ready to turn back time…


Friday, 10 April

Our first virtual event is an open discussion about the world of Sport&Wellbeing. What are Bitrockers fond of? Huge success for Martial arts and Oriental disciplines, followed by typical Winter sports (above all Skiing) and Water sports (Sailing is king here). But there’s appreciation for Meditation and Yoga, too!

Tuesday, 14 April

Another day, another event: this time we’re ready to talk about Movies&TV Series: a very popular topic, especially during these months of lockdown. “What do you suggest me watching?” “Have you ever watched…?” – a passionate debate full of advice and reviews. The most loved TV series? The historical and science-fiction ones.

Friday, 17 April

Today’s event is dedicated to the lifetime passion of our Team members Marco and Mattia: BBQ. During an involving presentation, with a lot of information, examples and advice, they’re able to reveal us the secrets (or almost all of them) of the perfect BBQ. Now we can dream of our next real team-building bbq party!

Tuesday, 21 April

Today there’s a unique opportunity for the Team: listening to a fascinating introduction speech into the world of Mindfulness. Thanks to the knowledge and passion of Franco, we are ready to discover its main pillars and meditation practices: from its origins to the bonds with the Oriental culture, not forgetting a few examples of concrete activities and exercises, such as the awareness of breath, feelings, and thoughts. Mindfulness has proved to be a fascinating topic for the whole Team: we’re all eager to find out more!

Friday, 24 April

Our Virtual Office is changing into a bakery! Today Claudia will show us the best tricks and tips for pastry-making. The activity is not very simple, but brings also so much fun… Our mission? Cooking chocolate truffles. Each of us has their own ingredients and is ready to follow Claudia’s instructions on the screen, step by step. Huge success for our first Cooking Together event!

Tuesday, 28 April

Since in Bitrock we foster continuous learning and improving, here’s the perfect opportunity for us to expand our knowledge in many fields (history, science, literature and much more): a challenging general-knowledge Quiz! Two teams are fighting to conquer the title of “Smartest Team”. The final result? 10-10: all winners (and smarter)!

Tuesday, 5 May

Here we are, ready to travel around the world together (at least virtually). “Let’s Travel” is our new open-discussion event, during which we have the chance to talk about our past travel experiences, and our future journeys. The most fascinating destinations for the Team? The Far-East Countries (Thailand and Indonesia above all). But also several European cities seem to have stolen the heart of many of us: from Budapest to Prague, from Lisbon to Berlin.

Friday, 8 May

Today we have the chance to get closer to Calisthenics, a form of physical training focused on teaching you how to master your own bodyweight using minimal equipment. Thanks to the expertise of Erik, who has been practicing this sport for a few years now, we can discover many interesting aspects about it. For instance, that the word itself comes from the Greek: Kalos and Sthenos, meaning “Beauty” and “Strength”. Thanks to Erik’s presentation we can learn this discipline’s origins, benefits, and the main exercises that Calisthenics athletes can perform (such as the “human flag”!)

Tuesday, 12 May

Today’s virtual event is dedicated to reinforcing our “green” soul: here’s an open discussion about Eco&Sustainability topics. Thanks to an online quiz game, we can test our knowledge regarding plastic pollution and learn many new facts and figures (for instance, that every year about 8 million tons of plastic waste escapes into the oceans from coastal nations). The event is also an opportunity to talk about possible remedies, such as improved waste management systems and recycling, a responsible use of disposable packaging and reduction in manufacturing of single-use plastics.

Friday, 15 May

Our Team has proved to be composed by talented chefs: here’s the second round of our “Cooking Together” event! Following Claudia’s precise instructions, we are ready to prepare our first double-chocolate cheesecakes. The event turns out into an unforgettable experience: there’s always time for fun and laughter beyond ingredients and kitchen tools!

Tuesday, 19 May

The English language plays a crucial role in our international Team. That’s why we decided to dedicate one of our events to improve our language skills. How? With fun, of course: thanks to entertaining videos and an online Pub Quiz game, we can work on our pronunciation and fluency. The one and only rule for this event? Italian banned - English only!

Friday, 21 May

Today we have the opportunity to listen again to Franco’s Mindfulness presentation. Having already explored its basics during last month’s event, this time we raise the bar and start discovering a few mindful practices that we can put into practice in our daily life – especially during these months of smart working, during which a responsible and focused attitude is required. The main lesson we have learnt from today? “The best time to plant a tree was 20 years ago. The second-best time is now” (Chinese proverb).


So, here we are now, full of good memories about events that have been able to cheer us up during the lockdown months.

What other opportunities will the Virtual Office offer us? The virtual room is still open and eager to welcome new voices and new faces… New events #comingsoon!

Read More
Byteconf React 2020

Byteconf React 2020

Byteconf React is a 100% free conference with the best React speakers and teachers in the world.

The first edition was launched by Bytesized Code (whose mission is to innovate developer education online) in March of 2018. The conference, which represented a great resource for React developers of all experience levels, was streamed online on Twitch to over 900 people across the world.

Since then, the event has proved to be increasingly successful and highly appreciated by the audience, thanks to its ability to make the global dev community a small village and provide an awesome experience to everyone, in every corner of the world.

Bitrock was present during this year’s edition thanks to Claudia Bressi, brilliant Frontend Developer belonging to our Team, who was one of the official Speakers presenting her React Bandersnatch experiment project.

A great spotlight for Claudia and a source of pride for our whole frontend Team, whose expertise could be shared on one of the major stages for the global dev community.

The conference was streamed on YouTube, for free, so anyone and everyone could attend.

If you want to listen to Claudia's speech again, simply click here: https://www.youtube.com/watch?v=hCURSlsjnoA

Read More
Life@Bitrock in the Covid-19 Era

Life@Bitrock in the Covid-19 Era

The Covid-19 health emergency has resulted in an inevitable global shutdown with serious consequences on business, investors, supply chains and human resource functions. What started out as limited business disruption, due to the circumscribed number of cases and geographical areas, has soon begun affecting most – if not all – businesses.

At Bitrock we are doing our best to overcome the hard challenges this troubled time is causing.

Thanks to the expertise of our Team, along with the trusting relationship we have built with partners and collaborators over time, we are able to keep on working and delivering, counting on the human and professional value of our employees. Following smart working best practices, we are able to work on our ongoing projects staying at home, thus respecting authorities’ guidelines and our community.


Digital Initiatives for People Empowering

During these weeks of unusual working conditions, we have also tried to give the due importance to social relations. Since an office is where we spend most of our daily time surrounded by co-workers, we’ve decided to give our Team the possibility to keep on interacting in our brand-new Bitrock_VirtualOffice. A free, shared virtual space where we can make small talk, even if we’re all miles away from our usual workplace.

As we strongly believe in the importance of connections, we have also decided to inaugurate online teambuilding events: interactive activities dedicated to a wide array of topics, during which we will have the opportunity to learn new things, have fun and, above all, stay together – even if only virtually speaking.

Effort and dedication are required to everyone during this period. At Bitrock, we are doing our best to meet all client’s expectations and keep on delivering reliable innovation, with due commitment and a resilient attitude.

However challenging circumstances may seem, we’re ready to grow and learn from them.

Read More
Bitrock is silver sponsor of "Codemotion 2018"

Codemotion 2018

Codemotion is a platform devoted to developers that connect IT professionals, tech communities, and IT companies. As we're a hub of innovation, we share the latest tech information and best practices among the tech community worldwide.

We organize:

  • the coolest tech conferences in EMEA: 7 countries, 8 conferences, 570.000 developers!
  • very tech hackathons
  • training for IT professionals
  • school of technology for kids ... and more!

./codemotion.png


As Silver Sponsor of Codemotion 2018 (November 29-30 - Milan - Italy) we invite all developers and technology lovers to come and discover our company and meet our Front-end unit to explore relevant Job Opportunities.

Read More
Lambda World 2018

Lambda World 2018

Lambda World is the largest Functional programming event in the country, carefully crafted for you by 47 Degrees and the Scala and Java communities of Spain. The event takes place in Cádiz, one of the most beautiful cities in Spain, and includes Workshops, hands-on experience, hacking, and debugging.

./banner.png


Our colleagues Andrea Bessi and Alberto Adami will be our representatives in Spain.


Discover the Full Event Agenda at: http://cadiz.lambda.world/schedule/


./people.jpg Andrea Bessi & Alberto Adami at Lambda World

Read More
Bitrock at "Jenkins World"

Jenkins World 2018

Jenkins World brings together the DevOps community in two locations, providing opportunities to learn, explore, network and help shape the future of DevOps and Jenkins. DevOps World | Jenkins World is designed specifically for IT executives, DevOps practitioners, Jenkins users and partners.

2,500 attendees will attend this year, from all over the globe. They'll get access to 100+ workshops, training opportunities and sessions covering software automation, DevOps culture, performance measurement, security and more.

Bitrock is present with Matteo Gazzetta, Simone Ripamonti, and Andrea Simonini, members of Bitrock's DevOps Team. But not only DevOps are attending... Our Backend Developer Simone Esposito is attending too.


./jw-1.jpg
Nice, France | Palace of Congresses and Exhibitions Nice Acropolis October 22-25

./jw-2.jpg
Our Team at the Event

./jw-3.jpg
Nice, France | Palace of Congresses and Exhibitions Nice Acropolis October 22-25

Read More