Q&A with Nicolas Rinaudo

Published:
May 5, 1904

Nicolas Rinaudo is the CEO of Besedo. The company offers content moderation tools and services, to online marketplaces, by using AI, automated filters and manual moderation. He is a well-known figure in the Scala community, having spoken at many conferences and the author of his own blog providing type classes. He describes himself as a Scala and FP enthusiast. We asked him some questions to learn a bit more about his thoughts. 

 

 

Tell us about your background what was it that sparked your interest in engineering?

Pure chance. I hated studying, and when I had to chose what to go for, took the path of least resistance - math, because that's where my grades were the least horrific. Not good by any stretch of the imagination, mind, just... not as bad as the rest.

Turns out this particular curriculum had a compulsory computer sciences bit, and the teacher had me write some trivial bit of code that played the Imperial March on the machine's old speaker. I then promptly ditched the math to focus on getting computers to do neat things that amused me, it sounded like far less work. 

What was it that made you take the step into using Scala as a functional programming language?

Initially, intense boredom with Java. Doing the same thing, year in and year out, applying the same patterns, the same solutions to slightly different problems... you have to bear in mind that I had about 15 years worth of Java experience at this point, and I feel I only actually learned things during the first 5 or 6 - the rest was just repetitions of these first few years with minor tweaks.

So I started looking around for other languages to bring the fun back, with a focus on the JVM - I was bored with Java, but still felt the JVM was an impressive piece of engineering and my expertise with it wasn't something to casually toss away.

A friend of mine, hearing of this, told me that it wasn't worth checking Scala out - it was probably everything I wanted, but far too complicated for me to have any chance of understanding it.

I can't think of a better way to motivate me, and a few years later, here were are.

How do you feel Scala benefits the work you do?

It doesn't actually benefit *all* the work I do :)

Some of my tasks involve data analysis or other throwaway projects where I want to be able to go fast and be approximate - a runtime crash is not an issue, but spending time to get types to align just right for an intuition that doesn't happen to pan out is.

Most of the time though, I write code that needs to run correctly and be easily maintainable. Scala's type system helps with the former, and FP concepts such as referential transparency with the later.

One could argue that Scala is not necessarily the best when it comes to these points - Haskell and OCaml come to mind, and I do love the ML syntax, but at least in my case, the JVM is an important advantage.

Java, for all its flaws, does provide us with a wealth of libraries and it's rare to need support for whatever obscure format and not find an existing implementation.

Is there anything that you feel helped you learn or progress your career, in terms of the community e.g. meet-ups, conferences, courses?

Meetups, definitely. Attending them has all the obvious benefits - hearing about new things, networking, getting new insights into something you thought you were familiar with...

But, at least in my case, preparing talks for meetups is where the real value is. Knowing and understanding something well enough to talk about it in a room full of strangers is *hard*. Not the talking part - that's not easy, but it's mostly a question of how much you had to drink to calm your nerves before you get on stage. The hard part is understanding your subject well enough that you can make other people feel like they get it. Preparing answers to all the questions you really hope won't be asked, but just *know* will actually pop up.

Every talk I prepared has increased my familiarity with the language, and my skills in programming in general, quite drastically.

Are there any resources you would recommend?

That's a tough question - I think my answer is going to sound a bit silly, but GitHub. Read code from OSS projects you have dependencies on. Find programmers whose code you enjoy, and read some more. I've picked up a lot of knowledge reading code written by people far more talented than I am.

The best bit is that a lot of them are on Twitter or Gitter and will respond quite positively to being asked questions about their code.

What would you say has been the biggest challenge you have overcome in your career?

Burning out. At multiple times in my career, I've burned out on programming - too much of doing the same thing with technologies I didn't enjoy or didn't feel were right for the job at hand, and losing sight of the fun and creative part of it all.

Overcoming that has always involved changing something drastic in my work - more often than not leaving the company, I was with at the time - which can be really hard to do, especially when you suspect you might be the source of the problem.

Is there any advice you would give to someone starting a career in engineering?

It's hard to answer that question without sounding trite...

Learning is extremely important, and it helps if you're passionate about it. But avoid companies that expect you to do that on your own time - it's absolutely fine to learn on your own time! but it shouldn't be expected of you. The best environments to grow in are the ones that encourage you to learn, experiment, and fail, often, without judgment.

Failures are something that *will* happen. You'll crash production - god knows I have. But that's what experience is - it's easier and faster to find working solutions to a problem when you've already tried so many that failed and you don't have to waste time investigating.

And, critically, try to have fun. Nothing will burn you out faster than boredom. If what you're doing is not working out, try different approaches - if you're used to solitary programming, try pairing for a bit, or vice versa. Switch from an IDE to a regular text editor (by which I mean Emacs, obviously). Learn a dynamic language just for the hell of it. This type of thing.

How has the Scala community helped you progress?

Mostly, because the community is incredibly generous with its time and knowledge. It's very rare to struggle with a subject and not find someone who can help you with it, or a good blog post or article on the subject.

What do you see for Scala in the future?

Honestly, don't know - with Scala 3 around the corner, anything could happen. The main risk is that it breaks the community in half, businesses shy away from the whole thing and Scala starts becoming less and less relevant.

What I think will happen, however, is that Scala 3, while not quite as painless a migration as we're being lead to believe, will end up a success, and make Scala an exciting language both for academia and the industry. I'm really rather looking forward to that, and the opportunities for learning it will afford us all.

Related news

Revealing Future Trends: Scala, Rust, and Go Language
Published
March 19, 2024
As the digital age accelerates, companies are constantly evolving, seeking robust and efficient technologies to drive their development. A pivotal aspect of this technological adoption lies in choosing a programming language that addresses current needs and is sustainable and scalable for the future. We recently conducted a poll to gauge industry insights on which programming language professionals believe will dominate enterprise development in the next five years. The results offer a unique perspective on the future of programming in enterprise environments.Our poll attracted diverse opinions from professionals across the technology sector, revealing a close race among three major languages, with a surprising twist in the respondents' anticipation for the future.Scala With its functional programming prowess and seamless Java Virtual Machine (JVM) integration, Scala received 18% of the vote. Its sophisticated type inference, immutability, and pattern matching enhance developer productivity and software maintainability. Enterprises that have invested heavily in Java find Scala a natural evolution, offering advanced features without abandoning their existing infrastructure.RustRust, acclaimed for its memory safety features and performance, garnered 26% of the votes. Designed to provide safe concurrency and prevent segmentation faults, making it an ideal choice for high-stakes enterprise applications where security and speed are paramount. As businesses increasingly focus on data integrity and efficient processing, Rust's assurances in these areas make it a strong candidate for future dominance.Go With 27% support, Go, or Golang, stands out for its straightforward syntax and powerful concurrency support, traits highly valued in the fast-paced world of enterprise development. Its robust standard library and built-in features for concurrent processing enable developers to build scalable and maintainable systems efficiently. As enterprises seek to streamline operations and handle massive data volumes, Go's simplicity and performance offer compelling advantages. Interestingly, the largest % of our respondents, 29%, believe that none of the languages mentioned will dominate enterprise development in the coming years. As organisations navigate their digital transformation journeys, the choice of programming language becomes a strategic decision influenced by team expertise, application requirements, and long-term goals. Whether sticking with time-tested languages like Java and Python, adopting newer alternatives like Kotlin, or exploring the languages highlighted in our poll, enterprises must balance innovation with pragmatism to thrive in the ever-evolving technological landscape.Which language do you think will rise to the top, or do you foresee a different trend shaping the industry?
View post
Advantages Of Using Golang for Web App Development
Published
February 6, 2024
Want to develop your unique web app and attract more traffic? Well, you have several options when it comes to programming languages. However, choosing the right one is vital to ensuring the success of your web app.  No doubt, C, Python, and Java are among the prominent options for web app development. But Google's Go language (Golang) is also becoming popular recently. About 70% of software developers consider using Golang for app development. That's indeed significant!  Now, you must be wondering, when there are several programming languages, what makes Golang so different and popular? Well, it is gaining popularity owing to the features and benefits it offers.  This article will provide you with valuable insights into the advantages of using Golang for web development. Let's dive in!  An Overview of Go Language  Before exploring the advantages, one should have an idea of the programming language itself. The Go language, or Golang, is a famous open-source programming language.  Go was initially developed by Google in 2009 for internal use to leverage the powers of Java and C#. Today, it has gained the trust of developers worldwide, allowing them to build secure and scalable web applications trouble-free.  Golang concentrates on solving development issues, inspired by Python's relative productivity and simplicity. Those include uncontrolled dependencies, effort duplication, cross-language development, and slow build time.  Golang simplifies software development as it offers less complicated programming. However, it is significant to note that Golang is still in its infancy stage. But it has garnered immense popularity in the last couple of years.  The Advantages of Using Golang  Want to make use of the Go language for your next web development project? In that case, go through the most convincing benefits before hiring the developers.  Easy and efficient codes  When it comes to web development, coding is an integral part. It often consumes a lot of time. However, with Golang, coding is easy and efficient.  Codes are two times shorter than other programming languages without affecting functionality in any manner. Besides, they ensure equally high performance. It helps save a great deal of time and allows developers to complete coding in much less time.  High speed of execution  Essentially, Go is a compiled programming language. That means it has been translated by the compiler from a high-level to a low-level language. Hence, it becomes easy to understand for the processor.  Consequently, the compiled programs tend to run faster. Besides, you don't have to install any extra programs for execution.  Enhanced performance  The Go language performs better than other programming languages, such as Python. Did you know that it is even faster than Python versions 2 and 3? Yes, you read it right! Are you wondering about the secret of such high programming language performance? It is mainly due to its concurrency model and higher CPU scalability. This creates Goroutines, exclusive to the Go language, that adds more functionality to the execution. Also, Goroutine provides affordable resources and allows you to save resources efficiently.  Ideal for large-scale projects  Working on large-scale web app development projects is often challenging. However, with Golang, you do not have to worry. It allows the development of large-scale and complex applications in a hassle-free manner.  Easy to learn  Do you have a basic understanding of Java and the C language? If yes, you can easily use the Go language for web development. It has an easy learning curve, which makes it quite popular among developers.  The syntax and keywords may be different in C and Java. However, the procedural approach remains the same. You will get familiar with the programming language in much less time.  Comprehensive programming tools  Golang offers you the freedom to choose the best tools for your web development project. From among the best Golang Web frameworks, libraries, databases, and other tools, you can pick the ones that meet your requirements.  Moreover, you can also download IDEs, editors, and plugins. So, you will have no issue finding the most appropriate development tools for your web development project.  Built-in package manager  Programming languages like Python require you to install third-party packages. However, Golang comes with a built-in package manager. As a result, it becomes easier for the developers to manage codes.  Moreover, you can easily pull in more libraries as per the requirements without the need to install them. It makes the development task easier for beginners.  Easy documentation  Documentation plays a vital role in the coding of an application. So, developers try their best to simplify this process. In such a situation, leveraging the Go language can be an ideal choice.  Golang comes with GoDoc, thereby making the development of documentation pages easier. Developers do not have to make use of other languages like PHPDoc, JavaDoc, or JSDoc. Using simple English is sufficient. Consequently, Golang helps save a great deal of time for developers.  Doesn't require web framework support  Most programming languages require web framework support. But that is not the case with Golang. This is what makes it very unique and distinct.   The Go language is self-reliant. It comes loaded with numerous in-built tools. Besides, it gets the necessary support from the native language core. Therefore, you don't have to worry about conducting extensive research to find suitable frameworks.  Huge community  The Go language is a modern programming language. It is growing at a rapid pace and has a large community of developers. Thus, using this language is extremely beneficial for your web development projects.  Additionally, you can contact professional developers to address any issues for faster development. Moreover, you can stay up to date about new industry trends and receive seamless support from the community.   Wrapping Up  Besides the advantages mentioned above, web applications created using the Go language are easy to maintain. So, now that you know the benefits of using Golang for web app development, it's time to hire proficient and experienced developers.   The programming language is here to stay and will likely witness increased demand in the coming days. Hence, connect with expert Go developers today to build high-performing and feature-rich web apps.  
View post
Fullstack Developer Emerges as the Most Demanding Role in 2024 🚀
Published
January 23, 2024
In a recent LinkedIn poll that resulted in over 1,300 votes, the Fullstack Developer role has emerged as the most demanding in 2024, resulting in over 59% of the votes. This revelation raises questions about the factors contributing to the heightened demand for Fullstack Developers in ever-evolving technology. One of the key reasons behind the demand for Fullstack Developers is their ability to navigate both front-end and back-end development seamlessly. In today's fast-paced digital era, businesses seek professionals who can develop end-to-end solutions, ensuring a cohesive and efficient user experience. Fullstack Developers, with their versatile skill set, become invaluable assets in a tech-centric world. Technology is evolving at an unprecedented pace, and companies are constantly adopting new tools, frameworks, and languages to stay competitive. Fullstack Developers possess the adaptability required to keep on top of these changes. While Fullstack Developers lead, Back-end Developers secured 23% of the votes. Back-end developers have the specialised skills to handle server-side operations and database management, bringing deep expertise in server-side technologies, APIs, and database management—essential components of any robust digital infrastructure. The LinkedIn poll results, with 59% of respondents identifying the Fullstack Developer role as the most demanding in 2024, shed light on the evolving needs of the tech industry. The all-encompassing expertise, adaptability, efficiency, and cost-effectiveness of Fullstack Developers make them indispensable assets in a landscape where innovation and digital transformation are paramount. As technology advances, the demand for professionals who can bridge the gap between front-end and back-end development is likely to persist, solidifying the Fullstack Developer role as a cornerstone in the ever-changing world of technology.Top of Form
View post
Rust vs Go - Exploring the Similarities and Differences
Published
October 26, 2023
In the ever-evolving landscape of programming languages, two names have become prominent in recent years: Rust and Go, also known as Golang.  These languages have truly caught the attention of programmers globally due to their unique features and strong use cases. In this blog post, we'll dive into the similarities and differences between Rust and Go. Memory Safety  Both Rust and GO have memory safety as a priority; however, they have their own individual approach.  Rust is known for its ownership system; tracking and enforcing references and memory allocations ensures memory safety. It eliminates common pitfalls like data races simultaneously, making it an ideal choice for system-level programming. GO, on the other hand, relies on garbage collection for memory management. By reducing the risk of memory leaks and dangling pointers, it remains a memory-safe language and simplifies memory handling.  Performance Both languages are praised for excelling in terms of performance. However, GO does not match Rust's high performance; its efficiency and garbage collection make it a strong choice.  Rust's fine-grained control over memory and low-level access contribute to its speed.  Now, let's get into the differences.  Error handling  Rust is advanced when it comes to error handling, to help reduce the likelihood of error emission, the system is based on Result and Option types.  It's known that GO has a more straightforward error-handling system, and if not handled correctly, it can lead to error omission. Functions return multiple values, including an error, which is easier to work.  Ecosystem  Active communities and growing ecosystems but focusing on different areas.  Rust is frequently used in systems programming, the construction of web servers, and other performance-critical software. The Rust community strongly emphasises open-source development and maintains an extensive repository of documentation. GO is highly favoured in web development, microservices, and crafting networked applications. Its community is celebrated for its commitment to simplicity and practicality, underpinned by a resolute focus on real-world use cases. Rust and GO are versatile programming languages with unique strengths. Your choice between the two should depend on your project's requirements, your familiarity with the languages, and your personal preferences as a developer. Rust excels in memory safety and fine-grained control, making it ideal for performance-critical applications. Meanwhile, GO shines in concurrency and simplicity, making it an excellent choice for building scalable, concurrent systems. Ultimately, the right choice is the one that best suits your specific needs and goals.
View post
Events and Conferences; Let's talk about the benefits
Published
October 11, 2023
In today's fast-paced world, digital communication dominates, and attending events and conferences seems to be an outdated way of gaining knowledge and expanding your network. However, they are invaluable for personal and professional growth. In this blog, we'll explore the benefits of attending and why they are worth your time and investment. Learning OpportunitiesThey offer copious learning opportunities; bringing together experts and industry leaders who share their insights, experiences, and knowledge. From keynote talks to panel discussions and workshops, numerous ways exist to gain new perspectives, skills, and information. Whether you want to stay updated on industry trends, acquire new skills, or dive deep into a specific topic, these opportunities provide knowledge.  NetworkingOne of the most significant benefits, and one of our favourites, is the opportunity to expand your professional network. Interacting face-to-face with like-minded individuals, experts in your field and potential collaborators can lead to valuable connections. Gaining these connections will open doors to finding job opportunities, learning about meetups and even sparking new business ideas. Inspiration and MotivationWe're always learning, and the industry is constantly evolving; sometimes, we even just need a little push to reignite our motivation and enthusiasm. Attending events and conferences can be a powerful source of inspiration. Hearing success stories, listening to passionate speakers, and engaging with individuals who share your goals and aspirations can rekindle your drive and ambition and provide a different perspective on situations you may not have considered. Brand and Career DevelopmentAttending events and conferences can significantly boost your brand and career development. If you're a professional or an entrepreneur, speaking at or sponsoring such events can enhance your credibility and visibility within your industry. It can also serve as a platform for showcasing your expertise and ideas. Additionally, attending these gatherings can help you stay updated on industry trends and developments, making you more marketable and relevant. Recharge and ReconnectIn our hectic daily lives, losing touch with our passions and priorities is easy. It's an opportunity to step away from your routine and focus on personal and professional development.  Events and conferences offer many benefits, from learning opportunities to networking and personal development. The knowledge, connections, and inspiration gained from attending these gatherings can have a lasting impact on your personal and professional life. So, if you've been on the fence about participating in events and conferences, it's time to take the plunge and unlock the countless advantages they offer. Your next breakthrough moment might just be around the corner.  We'll see you there!
View post

Want to know more? Reach out to us!