In June, I traveled to Berlin to attend CSSConf EU and JSConf EU. It was my first trip to Berlin and my first international conference, and I’m hooked! I had the best time and learned so much. If you didn’t get to attend, read along; I’m going to share my favorite lessons. Anytime I talk about this experience with someone, I try to recount accurately just how amazing and mind-blowing this conference was. I hope that after reading this, you’ll feel as inspired as I did (and still do).

1. Mindfulness in Development Teams 🤯

Be able to show and employ one’s self without fear of negative consequences of self-image, status or career.Trent Willis @ CSSConf EU

I never thought I’d see the day that this would be “a thing,” or that something that I’ve been striving for on my team had a name. I never really connected mindfulness to the way of thinking that I’ve adapted to. Trent Willis’s talk was an incredible kickoff for the whole experience. 

He talked about safety in teams, not physical safety (though, of course, we also need that) but emotional safety. That there’s space to question (even if the question might seem stupid) another person’s decisions. And, there’s space to fail. In fact, Willis said, when one fails, the whole team fails, and the whole team rises from it. There are no pointing fingers, and no one is allowed to say, “it’s not my job.” When someone succeeds at something, it’s the whole team’s success.

It’s a matter of mentality; when you work in small team units, you will likely establish close relationships. Sometimes working with other teams is hard, especially when you are used to a particular way of doing things. Tempers might fray because, after all, we’re all human. Fear is poison for a healthy, innovative team, and if that spreads, it affects a company’s growth. It might seem obvious when you take a step back, but it’s worth remembering: even though the organization is composed of multiple teams, it’s not us against them. We’re all on the same boat, and if it sinks, it’ll take us all down with it.

CS JS Conf
@arita_dias (also… beautiful slides) 

2. JavaScript Engines and How Everything Works Behind Them 🤯

Listen, I love JavaScript but (and even after watching this presentation with my jaw on the floor) anything related with VMs or the engines, or how anything actually works after I write it, is still mostly a mystery to me. It’s funny that for those three days, my most recurrent feeling was: “I actually never thought about this.” For example, it would have never crossed my mind that there are optimizers for code that start running when (and I’ll borrow a quote from Benedikt Meurer) “a function gets hot,” and optimizes the code. After hearing Benedikt’s and Mathias’s presentation, however, it became one of those situations where I thought, “Of course, there would be something like this.” I also learned that this changes from browser to browser. While on chrome’s engine (Chrome V8) there’s only one optimizer, Mozilla (SpiderMonkey) and Edge (Chakra) have two, and Safari has three.

CS JS conf

I’m not going to dive too deeply into the more technical parts of the presentation (how the JavaScript Engines implement the JavaScript Object Model for example) because this would need its own article. It’s incredibly interesting, and while it might seem very gritty and (honestly) scary at times, I absolutely adored learning everything they shared in the 23-minute talk.

Look at this meme; I’ve actually never seen a more appropriate one when it comes to the asynchronous nature of JavaScript. One of the biggest takeaways from this conference is that I definitely need to get my hands a bit dirtier and delve more deeply into this. I won’t say how many times the code has followed a path I wasn't expecting, and I’ve ended up with the expression Renata Sorrah is making in that meme (didn’t know her name? Well, the more you know! You’re welcome). Shelley Vohr’s presentation will probably be one that I’ll be coming back to time and time again,  and I’ll be sharing it with my team to help them understand it all better.

3. Users Will Be Unexpectedly “Creative” with Features 🤯

It’s so easy to think only about the happy path, where people use the things we develop as we intended when we designed them. Being a part of the UI Framework development and its growth has taught me (sometimes in the hardest ways) that everything can be used in the opposite way of what we expect. And, we need to plan for that.

Katie Fenn’s talk is not only focused on this point (it's a broader point of view), but also on the fact that, as the image shows, users can (and likely will) use a feature for fun and profit. She gives examples, like when players in World of Warcraft dragged Lord Kazzak out of his dungeon and straight into Stormwind city where then he proceeded to kill everyone and become effectively unbeatable. Katie also shared the example of when a user set their avatar image’s name to logout.php, causing any user looking at this website to be logged out. And finally, the case of the user who set scripts to keep adding friends on Myspace without their being aware of it (a lesson in “how to not make friends”) and the consequences of these “creative’” uses.

Also, as a side note: I am now all for adding intermissions on slides with GIFS of cats and dogs to allow me to catch my breath or drink some water. It’s law now; I don’t make the rules.

4. Screaming Carrots and Teaching Kids Programming 🤯

You know you’re doing something right when you can get a room full of “adults” laughing at carrots being (tortured) sliced to pieces. 

Tomás (my godson) has said for a long time that he wants to be a computer engineer. I assumed it was because he loves computer games (because isn't that what most people say when they choose to study computer engineering?). 

Well, I was wrong. He really does enjoy coding, and he started out by using Scratch, which is a visual programming language targeted primarily to children. What he hasn’t yet done though, is use Makey Makey to make carrots scream when a knife cuts through them. Makey Makey is an electronic board, and when two connected objects touch each other, an action is triggered. In this case, a screaming sound plays. I guess you really have to watch the talk to get how funny it was. I really think that he’d have loved this talk.

Georgios Kaleadis’s talk reminded me of times when, as a kid, I tried out demos for games (or even for software) from CDs that came in magazines. My first brush with programming would come much later (in my teens), but it is nice to see the journey that someone else went through in the 90s. He talks about how four-year-olds can build robots that draw circles, use Makey Makey with Play-Doh and a piece of paper to make a game controller, Dash n Dot. In general, things that we didn’t have as kids, but that today’s children have access to.

5. Aggressive Web Apps and Push Notifications 🤯

I can’t tell you how many times I’ve visited a website and (even though sometimes, there’s no need, in my opinion) I’m immediately asked if I want to accept notifications. My usual reaction to these notifications is: “I don’t want any, you spawn of Satan!” 

Phil Nash’s talk has given me the chance to look at the other side of things. He said “Push notifications are good,” and shared an example of a children’s hospital that uses notifications to remind patients about their appointments to avoid no-shows. The percentage of no-shows went from 20% to 2%; that’s incredible. Or how chat notifications, which I tend to forget to check, are actually just that that, notifications. I know, who would have guessed that chat notifications are in fact notifications? Who'd have thunk it

He talks about how good notifications are timely, actionable, and personal and how he worries about how users perceive notifications. Notifications can make life so much easier. For example, they can let us know we can check-in for a flight or that flight is canceled or delayed. 

6. AI and Machine Learning Potential, Biases, and Brain Sensors 🤯

Another mind-blowing thing that had not crossed my mind until the conference was: machine learning and the biases in code. My first thought on this was based on what I’d seen in movies: AI learns from us, and eventually it learns so much that it surpasses us and then it wants to kill us. Well, really, can we blame “It”? 

But here’s the thing, after the Microsoft chatbot fiasco I had this sudden insight: Humans aren’t objective creatures, and so the code that we write won’t be objective either.

What this means is that underprivileged, underrepresented parts of our society that don't have either the right tools or the opportunity to be represented, won’t be considered in our code. We will be silencing them, making it as if they never even existed. If a tree falls and nobody hears it does it make a sound? Patricia Realini’s talk is an eye-opener and a much-needed reminder not to be evil.

I have some exciting news, which is that the robots are very, very impressive and they’re also kind of stupid. Like stupid in really fundamental ways. And so, they’re probably not going to take your job—at least not within the next year or two—but they’re going to change it, and change it quite dramatically. And so now, it’s a really exciting time to get into this field.Ashi Krishnan @JSConf EU 

I have to admit that any time anyone mentions machine learning, artificial intelligence, neural patterns, or brain-related things, I immediately assume it’s going to be hard. Hard to grasp, and hard to understand. So, I went into this talk hoping that Ashi Krishnan would explain it like we were five. I was very interested but also apprehensive. 

To my delight, throughout the talk, she made sure everyone was on the same page by explaining the terms that she would be using. She also kept the audience engaged, telling us that “now is a really exciting time to be getting into this field and that there’s a huge amount of research and a lot of new tooling available to us.” We were offered a peek into this emerging field, from tensors to models, to loss, to the explanation of what we need to send in terms of data (for example, two points when you want to draw a line) and iteratively improving it. 

Lastly, and on this same subject, between a couple of talks, I had the opportunity to chat with Charlie Gerard briefly. The potential for her project is incredible. In very basic terms (I hope I do her justice), her project looks into how we could use our brains to gesture and interact, instead of using devices. 

Currently, if we want to use the internet, we use a device, for example, a mobile phone. Considering that each device has its own sets of gestures and interactions that we must learn; this clearly isn't the most efficient solution. She argues that, instead, we should be researching to a deeper level, about how we could use our brain. In her talk, she shows us the piece of software she’s built that can intercept signals from the brain, interpreting them into commands to go right or left in her simulation. 

I immediately recognized the potential for this type of technology in areas such as mental health and trauma, and how amazing this is as the first step in that direction.

And now, for the shameless plug! We’re hiring for our Project Turing, an OutSystems initiative that explores how AI and machine learning can transform the world of software development. Just throwing that out there. Wink wink.

7. Balancing User Expectations, Regret, and Innovation 🤯

We all have moments of regret, even brilliant people like Ryan Dahl, inventor of Node.js. He laid them out in his talk 10 Things I Regret About Node.js.

Listen, I get that some people might be thinking “Oh, it’s easy to come up and say you’re sorry about how things turned out long after everything has blown over,” but honestly, I don’t agree.

Coming from someone who works on and in a UI framework, once something has been set and developed in a specific way, there are decisions you have to live with. Making major improvements to a product that is used by millions of people is basically impossible after a while (this can be years) because it would cause major breaking changes in the products that are already out. Not to mention the fact that users will have grown used to its quirks and malfunctions. So, it’s actually harder to say this long after the fact:

Finding the balance between keeping and safekeeping legacy code and the user's expectations versus innovating your code and moving the framework (or whatever you’re working on) is hard! 

And so is admitting that you’ve made a serious mistake, and you can’t do anything about it. Especially in front of a crowd that has probably had to suffer because of your design choices. 

8. I Should Probably get Into Linguistics 🤯 

The idea was to study the brain because we’re community scientists, but you can’t literally go and open people’s brains and see what’s there inside. It’s kind of illegal—it tends to be.Alvaro Videla @JSConf EU

The first thing that comes to mind when thinking about Alvaro Videla’s talk is that I have a huge list of books to read and no time to do it. In his presentation, he talked about metaphors (abstraction) and how they transport us to the next level by explaining concepts that are hard to understand.  

He gave some examples that I found very interesting and that I’d never actually thought about. He mentioned Metaphors We Live by George Lakoff and Mark Johnson that explains how framing the word argument differently can change our actions. So, if we stop perceiving the word argument as war, we and connect it with dance instead, the result is the perception that argument is a more collaborative experience.

Another example, this time, from the book Feminism Confronts Technology by Judy Wajcman are the words hard and soft; when intellectual work was seen as not very appealing, it was associated with soft. But when computers arrived on the scene and their potential for “world domination” was recognized, they were considered a more masculine domain and associated with hard. 

Alvaro pointed out another metaphor, human resource management. If you follow the thought process in this metaphor the same way that you substitute a cog in a huge machine, you replace a programmer in your project. I’ve felt this way before, like I was just another “brick in the wall” so to speak, and I had no real power to change the objectives that I was working towards. Today I can, fortunately, say that I feel different. I can also say that I can never go back to that sort of work environment. 

We need to understand. People are not resources. We bring more to the wheel than just a thing that can be replaced.” Alvaro Videla @JSConf EU

9. Context-Aware Development (fonts, open source and business-wise) 🤯

Two main things: WeChat and different alphabetic writing systems.

Until Hannes Schluchtmann’s talk, the only thing that I knew about developing for the Chinese market was that a lot of people still used Internet Explorer 6. Cue me crying in the corner, lying in the fetal position. It’s clear now that the person who told me this back in 2014 greatly exaggerated the numbers. Why I didn’t think about googling it myself, I don’t know. Anyway, instead of the much higher amount that I'd been told, it’s “only” 34.5%.

I took pictures of this talk, but they were really bad, and you couldn’t see the numbers, so... :(

The thing that really surprised me was how everything in China seems to be connected to this one and only app: WeChat. If you want your app to take off in China, it’ll have to be in WeChat. While in Portugal, for example, we have Zomato, Google Maps, Paypal, and a handful of other (separate) apps, in China all of these apps are put in a single one. You can buy fruit from street vendors with WeChat. Yes. You read it right. 

Also, there's the thing with fonts. There are 50,000 Chinese characters in total. Considering that the Japanese writing system alone has three different syllabaries, the complexity only grows. The number of different characters is not the only thing that we need to worry about, however, not when we also have to consider the context.

As Chen Hui Jin explained in her talk, there are many writing systems, and the way that they are read changes a lot. From left to right, to top to bottom, right to left, and left to right. 

CSS Conf JS Conf

“But vertical layouts are not a new thing; it’s just that the web hadn’t reached a level of maturity that could do them well until recently.” Chen Hui Jing @CSSConf EU

10. Accessibility. ACCESSIBILITY!!! 🤯

Did you know that it’s illegal to have an inaccessible website in Norway? I sure didn’t! 

CSS JS conf
@hj_chen (also a speaker)

It’s been illegal since 2014. Dag-Inge Aas and Ida Aalen explained in this talk how, with JavaScript and CSS, we can improve colors to make them contrast appropriately. Yes, there’s an actual math formula. 

As we work on our own UI framework at OutSystems and its customizer, defining these sort of details is crucial. Generating colors, palettes, and more are things that are incredibly important to my team and me because we develop the customizers for each iteration of the platform.

Marcy Sutton’s talk touched on a very specific example that reminded me of how our work is never done, and how there’s always room to improve our framework. There was an example in the talk where when you hover over an element, it shows some sort of information, and there’s no other way of triggering such an event. While we don’t have that specific case in our framework, we definitely have parts that suffer from the same behavior. Because of this, I will be extra attentive to them.

11. Peer to Peer Servers and Browsers.🤯(A Bonus, It’s Short; I Promise)

During Tara Vancil’s talk, I felt my brain implode so many times.

It’s not that I don’t like working with servers and setting things up to have websites go live, it’s that I really don’t like working with servers and setting things up to have websites go live. Tara used a peer-to-peer browser not only to get a website up and running but changing so easily that I felt it was like I was in some other dimension. 

Closing Thoughts 

Going to JSConf EU and CSSConf EU was energizing! It was a fantastic feeling to leave the office and immerse myself in a vibrant environment full of brilliant and passionate people. Attending the conference was a much-appreciated opportunity to sharpen my senses; I came back with so many ideas, so many questions, so much to share. I gained a renewed thirst for information. I left Berlin, loaded with new insights, also changed perceptions. And no less important, I had so much fun!

The talks were an important reminder that my team is not alone in the trenches. We are part of a large and diverse community that is on a mission to contribute to improving software across the planet. It's a digital world. Sharing knowledge impacts the quality of what we all develop and inspires us to want to do better. I regret that I could only share with you a few of the talks I attended (or we would be here forever) because there were so many more great talks. The good news is that you can watch them on YouTube. If this article sparks your creativity, remember to share, pass it along, and hopefully, it’ll spark something or someone else.