From Ravioli Maker to International Speaker

Michele Riva

Michele Riva

Senior Software Architect @NearForm

Google Developer Expert

Microsoft MVP

MicheleRivaCode

My background

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

puts "Hello, world!"
IO.puts "Hello, world!"

Ruby

Elixir

MicheleRivaCode

Me with Ruby

MicheleRivaCode

Me with Elixir

Things to learn

  • Functional programming patterns

MicheleRivaCode

Things to learn

  • Functional programming patterns
  • Recursion

MicheleRivaCode

Things to learn

  • Functional programming patterns
  • Recursion
  • Immutability

MicheleRivaCode

Things to learn

  • Functional programming patterns
  • Recursion
  • Immutability
  • Distributed computing

MicheleRivaCode

Things to learn

  • Functional programming patterns
  • Recursion
  • Immutability
  • Distributed computing
  • BEAM (Erlang VM)

MicheleRivaCode

MicheleRivaCode

Functional programming community is a niche

MicheleRivaCode

MicheleRivaCode

Contributingto Haskell

OSS projects

Growing in my current company

Me

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

ES6

Haskell has been very influential for JavaScript

MicheleRivaCode

MicheleRivaCode

var numbers = [1, 2, 3, 4];

for (var i = 0; i < numbers.length; i++) {
  numbers[i] = numbers[i] * 2;
}

console.log(numbers);
const numbers = [1, 2, 3, 4];
const multiplied = numbers
	.map((number) => number * 2);

console.log(multiplied);

Until ES5

Starting with ES6

Why calling it .map?

MicheleRivaCode

MicheleRivaCode

"In mathematics, specifically category theory, a functorย is a mappingย between categories"

https://en.wikipedia.org/wiki/Functor

MicheleRivaCode

"Haskell, at its core, is simple: it is just a polymorphic lambda calculus with lazy evaluation plus algebraic data types and type classes"

MicheleRivaCode

"Haskell, at its core, is simple: it is just a polymorphic lambda calculus with lazy evaluation plus algebraic data types and type classes"

MicheleRivaCode

Category theory can be helpful in understanding Haskell's type system. There exists a "Haskell category", of which the objects are Haskell types, and the morphisms from types a to b are Haskell functions of type a -> b.

MicheleRivaCode

Category theory can be helpful in understanding Haskell's type system. There exists a "Haskell category", of which the objects are Haskell types, and the morphisms from types a to b are Haskell functions of type a -> b.

MicheleRivaCode

map (3*) [1,2,3,4,5]
[1,2,3,4,5].map((x) => x * 3);

Haskell

JavaScript

MicheleRivaCode

fold (+) [1,2,3,4,5]
[1,2,3,4,5].reduce((acc, val) => acc + val);

Haskell

JavaScript

MicheleRivaCode

filter (>5) [1,2,3,4,5,6,7,8]
[1,2,3,4,5,6,7,8].filter((x) => x > 5);

Haskell

JavaScript

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

From Software Engineer

to Sr. Engineer & Technical Evangelist

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

I got into the top 0.01% of Medium writers for two months in a row

MicheleRivaCode

How do you succeed writing?

MicheleRivaCode

MicheleRivaCode

Find a niche

MicheleRivaCode

  • 22 Sep 2022, Web Developer Conf Hamburg ๐Ÿ‡ฉ๐Ÿ‡ช Compiling and bundling JavaScript, the painless way

  • 19 Jul 2022, StackConf ๐Ÿ‡ฉ๐Ÿ‡ช Are all programming languages in English?

  • 22 Jun 2022, SailsConf ๐Ÿ‡ณ๐Ÿ‡ฌ Solving imaginary scaling issues

  • 17 Jun 2022, React Summit ๐Ÿ‡ณ๐Ÿ‡ฑ You donโ€™t want to server-side render your Next.js app

  • 15 Jun 2022, WeAreDevelopers World Congress ๐Ÿ‡ฉ๐Ÿ‡ช Building a full-text search engine from scratch in TypeScript

  • 3 Jun 2022, CODEStantine ๐Ÿ‡ท๐Ÿ‡ธ Compiling and bundling JavaScript, the painless way

  • 18 May 2022, Codemotion ๐Ÿ‡ฎ๐Ÿ‡น Microfrontend discussion panel

  • 16 May 2022, Sci-fi DevCon ๐Ÿ‡ซ๐Ÿ‡ท Are all programming languages in English?

  • 13 May 2022, BeJS Brussels ๐Ÿ‡ง๐Ÿ‡ช Compiling and bundling JavaScript, the painless way

  • 11 May 2022, Codemotion DevCast ๐Ÿ‡ฎ๐Ÿ‡น Microfrontends with WebPack and module federation

  • 22 Apr 2022, JSDay ๐Ÿ‡ฎ๐Ÿ‡น Refactoring large JavaScript codebases

  • 24 Mar 2022, Codemotion ๐Ÿ‡ฎ๐Ÿ‡น Are all programming in English?

  • 10 Mar 2022, WebDay ๐Ÿ‡ฎ๐Ÿ‡น Understanding JavaScript compilation

  • 18 Feb 2022, Node Congress ๐Ÿ‡ณ๐Ÿ‡ฑ Understanding JavaScript compilation

  • 7 Feb 2022, GRUSP ๐Ÿ‡ฎ๐Ÿ‡น Building a full-text search engine from scratch in TypeScript

  • 20 Jan 2022, Google DevFest Norway ๐Ÿ‡ณ๐Ÿ‡ด Solving imaginary scaling issues

  • 16 Jan 2022, Google DevFest Pakistan ๐Ÿ‡ต๐Ÿ‡ฐ Solving Imaginary Scaling Issues

MicheleRivaCode

MicheleRivaCode

MicheleRivaCode

Find a niche

Collect feedback

Grow

MicheleRivaCode

Be consistent

MicheleRivaCode

MicheleRivaCode

@MicheleRiva

@MicheleRivaCode

/in/MicheleRiva95

www.micheleriva.dev

From ravioli maker to international speaker

By Michele Riva

From ravioli maker to international speaker

  • 347