Michele Riva
Senior Software Architect @NearForm
Google Developer Expert
Microsoft MVP
MicheleRivaCode
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
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
Contributingto Haskell
OSS projects
Growing in my current company
Me
MicheleRivaCode
MicheleRivaCode
MicheleRivaCode
ES6
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
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
MicheleRivaCode
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
MicheleRivaCode
MicheleRivaCode
@MicheleRiva
@MicheleRivaCode
/in/MicheleRiva95
www.micheleriva.dev