On performance analyzing again:
Gathering and visualizing flamegraphs in
realtime in Linux environment
Alex Chistyakov, DataArt
Linux Piter 2016, Russia, SPb.
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 1 / 51
Who I am (very quickly)
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 2 / 51
• Senior SW Developer @ DataArt
• More than 18 years of professional experience
• Researcher @ ISST Lab, ITMO
• Used to be a DevOps Engineer and still probably am
• Can’t quit making presentations w/lots of bullets (that’s
terrible, I know)
Performance optimization is not that hard
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 3 / 51
Ever heard of a ’comfort zone’?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 4 / 51
• It’s crucial to be out of it to learn something new
Ever heard of a ’comfort zone’?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 5 / 51
• It’s crucial to be out of it to learn something new
• So I made this presentation in TeX
Ever heard of a ’comfort zone’?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 6 / 51
• It’s crucial to be out of it to learn something new
• So I made this presentation in TeX
• With lots of bullets, you know
Ever heard of a ’comfort zone’?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 7 / 51
• It’s crucial to be out of it to learn something new
• So I made this presentation in TeX
• With lots of bullets, you know
• Because I’m not ready yet to leave my comfort zone
entirely
Ever heard of a ’comfort zone’?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 8 / 51
• It’s crucial to be out of it to learn something new
• So I made this presentation in TeX
• With lots of bullets, you know
• Because I’m not ready yet to leave my comfort zone
entirely
• Damn, TeX seems to be my new comfort zone ;(
Okay, flashback to LP 2015 (w/no bullets)
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 9 / 51
Fast-forward to 2016
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 10 / 51
Brendan Gregg declared Linux DTrace-complete!
A great step forward for mankind...
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 11 / 51
...but I’m a cat
So, what is this all about?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 12 / 51
• Modern GNU/Linux
So, what is this all about?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 13 / 51
• Modern GNU/Linux
• A web application
So, what is this all about?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 14 / 51
• Modern GNU/Linux
• A web application
• Collecting flamegraphs
So, what is this all about?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 15 / 51
• Modern GNU/Linux
• A web application
• Collecting flamegraphs
• Visualizing collected flamegraphs
Okay, but what are these flame... things?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 16 / 51
Did you attend LP 2015?
Doing flamegraphs in 2016 is extremely easy
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 17 / 51
A hicker needs good boots
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 18 / 51
So, we need a language
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 19 / 51
The obvious choice
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 20 / 51
Why Lisp?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 21 / 51
• Homoiconicity
Why Lisp?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 22 / 51
• Homoiconicity
• Macros
Why Lisp?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 23 / 51
• Homoiconicity
• Macros
• Immutability (?)
Why Lisp?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 24 / 51
• Homoiconicity
• Macros
• Immutability (?)
• Lambdas
But that was not too democratic, so...
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 25 / 51
...what about Golang?
Unfortunately, Golang loses
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 26 / 51
• Way too modern (uses design ideas from 1970s while Lisp
was born in 1958)
Unfortunately, Golang loses
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 27 / 51
• Way too modern (uses design ideas from 1970s while Lisp
was born in 1958)
• Not functional enough (as in ’functional programming’)
Unfortunately, Golang loses
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 28 / 51
• Way too modern (uses design ideas from 1970s while Lisp
was born in 1958)
• Not functional enough (as in ’functional programming’)
• Targets Java 1.2 and PHP 4.x market share (designed for
apes not humans)
Runtime matters!
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 29 / 51
• Static linking is a must
Runtime matters!
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 30 / 51
• Static linking is a must
• Decent GC is a must
Runtime matters!
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 31 / 51
• Static linking is a must
• Decent GC is a must
• Resulting files should not be too big
Runtime matters!
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 32 / 51
• Static linking is a must
• Decent GC is a must
• Resulting files should not be too big
• Let’s consider measureable things only
So, Lisps then
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 33 / 51
• Common Lisp
• Scheme
Common Lisp
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 34 / 51
Statically linked file is over 30Mb (Golang does around 8Mb)
Scheme
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 35 / 51
Is minimalist by design (way too minimalist I’d say)
So, no boots then?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 36 / 51
Nim to the rescue!
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 37 / 51
Nim (formerly Nimrod)
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 38 / 51
• Strong typing
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 39 / 51
• Strong typing
• Static typing
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 40 / 51
• Strong typing
• Static typing
• Homoiconicity
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 41 / 51
• Strong typing
• Static typing
• Homoiconicity
• Macro system (hygienic)
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 42 / 51
• Strong typing
• Static typing
• Homoiconicity
• Macro system (hygienic)
• Immutability
Nim: the good parts
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 43 / 51
• Strong typing
• Static typing
• Homoiconicity
• Macro system (hygienic)
• Immutability
• Templates (generics)
Nim: runtime goodness
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 44 / 51
• Uses C as an IR
Nim: runtime goodness
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 45 / 51
• Uses C as an IR
• Per thread GC (as in Erlang)
Nim: runtime goodness
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 46 / 51
• Uses C as an IR
• Per thread GC (as in Erlang)
• Statically linked files < 1Mb (not stripped)
Project Kaldur
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 47 / 51
• Means ’cold’ in Faroese
• Because it’s quite cold now
• https://github.com/alexclear/kaldur
Project Kaldur
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 48 / 51
• Is live at http://185.37.61.240:5000
• Has a TODO list on Github
• Has an issues list on Github
Conclusions
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 49 / 51
• TeX is great!
• Nim is great too!
• Flamegraphs are great!
• Linux is great!
• Open source projects are great!
Questions, please?
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 50 / 51
• Why FP?
• Why Linux?
• ...?
So long, and thanks for all the fish
Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 51 / 51
• achistyakov@dataart.com
• https://telegram.me/lhommequipleure

More Related Content

PDF
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
PDF
Functional IoT: Programming Language and OS
PPTX
[Defcon Russia #29] Борис Савков - Bare-metal programming на примере Raspber...
PDF
Hacktoberfest - An Open Source Story
PDF
Effective code reviews
PDF
Metasepi team meeting #19: ATS application on Arduino
PDF
Introduction to Kotlin JVM language
PDF
Emacs verilog-mode is coming to Debian, again
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
Functional IoT: Programming Language and OS
[Defcon Russia #29] Борис Савков - Bare-metal programming на примере Raspber...
Hacktoberfest - An Open Source Story
Effective code reviews
Metasepi team meeting #19: ATS application on Arduino
Introduction to Kotlin JVM language
Emacs verilog-mode is coming to Debian, again

What's hot (15)

PDF
ATS Programming Tutorial
PDF
No, we can't do continuous delivery
PDF
Metasepi team meeting #14: ATS programming on MCU
PDF
Engineering Software and Software Lifecycle
PDF
Scrum with Kanban; small adjustments, big improvements
PDF
Metasepi team meeting #16: Safety on ATS language + MCU
PDF
Using Go in DevOps
PDF
Perl::Lint - Yet Another Perl Source Code Linter
PDF
Introduction to Kotlin coroutines
PDF
Let's contribute, HTML5Rocks/ko!
ODP
The influence of "Distributed platforms" on #devops
PPTX
[Defcon Russia #29] Алексей Тюрин - Spring autobinding
PDF
Feelin' Groovy: A Groovy Developer in the Java World
PDF
Hands on React Native: From Zero to Hero
PDF
TAP-Harness + friends
ATS Programming Tutorial
No, we can't do continuous delivery
Metasepi team meeting #14: ATS programming on MCU
Engineering Software and Software Lifecycle
Scrum with Kanban; small adjustments, big improvements
Metasepi team meeting #16: Safety on ATS language + MCU
Using Go in DevOps
Perl::Lint - Yet Another Perl Source Code Linter
Introduction to Kotlin coroutines
Let's contribute, HTML5Rocks/ko!
The influence of "Distributed platforms" on #devops
[Defcon Russia #29] Алексей Тюрин - Spring autobinding
Feelin' Groovy: A Groovy Developer in the Java World
Hands on React Native: From Zero to Hero
TAP-Harness + friends
Ad

Viewers also liked (20)

PDF
Tk conf daniel-podolsky-sqlvsnosql
PDF
My talk at Linux Piter 2015
PDF
My talk on monitoring systems at RootConf 2016
PDF
NoSQL — неспроста ли это "ЖЖЖ"?
PDF
My talk at CEE-SECR 2016
PDF
My talk at YouCon Saratov 2016
PDF
My talk at DevParty 2017
PDF
My talk on HBase ops engineering at TBD Jun 2016
PDF
PDF
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
PDF
Сергей Житинский, Александр Чистяков (Git in Sky)
PDF
My talk at LVEE 2016
PDF
Harry Potter and the Daemons of Berkeley
PDF
My talk on Piter Py 2016
PDF
My talk from PgConf.Russia 2016
PDF
Ansible in the enterprise
PDF
My talk on programming languages at SPbLUG Mar 2017
ODP
My talk on LeoFS, HappyDev 2014
PDF
On Docker
PDF
My talk on Salt and Ansible from DevConf 2014
Tk conf daniel-podolsky-sqlvsnosql
My talk at Linux Piter 2015
My talk on monitoring systems at RootConf 2016
NoSQL — неспроста ли это "ЖЖЖ"?
My talk at CEE-SECR 2016
My talk at YouCon Saratov 2016
My talk at DevParty 2017
My talk on HBase ops engineering at TBD Jun 2016
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Сергей Житинский, Александр Чистяков (Git in Sky)
My talk at LVEE 2016
Harry Potter and the Daemons of Berkeley
My talk on Piter Py 2016
My talk from PgConf.Russia 2016
Ansible in the enterprise
My talk on programming languages at SPbLUG Mar 2017
My talk on LeoFS, HappyDev 2014
On Docker
My talk on Salt and Ansible from DevConf 2014
Ad

Similar to My talk at Linux Piter 2016 (20)

PPTX
Deep Learning with Python (PyData Seattle 2015)
PPTX
Explaining machine learning models with python
PDF
How digital tools develop, sustain and transform the demo scene
PDF
The Data Mullet: From all SQL to No SQL back to Some SQL
PPTX
CILK/CILK++ and Reducers
PDF
Eliptic-Curve Cryptography and the Internet
PPTX
February 2017 HUG: Data Sketches: A required toolkit for Big Data Analytics
PDF
Matplotlib_Complete review_2021_abridged_version
PDF
Matplotlib Review 2021
PPTX
Teaching Computer Architecture Labs using a MCU Platform
PDF
PyDresden 20170824 - Deep Learning for Computer Vision
PDF
lec01.pdf
PPTX
Programming with Semantic Broad Data
PDF
Need for Async: Hot pursuit for scalable applications
PDF
Machine language/nandtotetris/lecture_3
PDF
Hyun joong
PDF
Datalake project
PDF
Gradoop: Scalable Graph Analytics with Apache Flink @ Flink & Neo4j Meetup Be...
PPT
lecture1.ppt
PPTX
Introduction to Deep Learning for Image Analysis at Strata NYC, Sep 2015
Deep Learning with Python (PyData Seattle 2015)
Explaining machine learning models with python
How digital tools develop, sustain and transform the demo scene
The Data Mullet: From all SQL to No SQL back to Some SQL
CILK/CILK++ and Reducers
Eliptic-Curve Cryptography and the Internet
February 2017 HUG: Data Sketches: A required toolkit for Big Data Analytics
Matplotlib_Complete review_2021_abridged_version
Matplotlib Review 2021
Teaching Computer Architecture Labs using a MCU Platform
PyDresden 20170824 - Deep Learning for Computer Vision
lec01.pdf
Programming with Semantic Broad Data
Need for Async: Hot pursuit for scalable applications
Machine language/nandtotetris/lecture_3
Hyun joong
Datalake project
Gradoop: Scalable Graph Analytics with Apache Flink @ Flink & Neo4j Meetup Be...
lecture1.ppt
Introduction to Deep Learning for Image Analysis at Strata NYC, Sep 2015

More from Alex Chistyakov (20)

PDF
My slides from DevOpsDays 2019
PDF
My slides from BMM №3 May 2019
PDF
My slides from DevOps-40 meetup Jun 2019
PDF
My slides from SECR'2018
PDF
My slides from the first SPb SRE community meetup at DataArt
PDF
My slides from CC'2019
PDF
My slides from BMM №4 Nov 2019
PDF
My slides from DevOps-40 meetup Oct 2019
PDF
My slides from DevOps-40 meetup Dec 2019
PDF
Configuration management and Kubernetes
PDF
Ansible and other stuff
PDF
Python performance engineering in 2017
PDF
My talk at SPb SQA sub-meetup of ITGM
PDF
My talk at SECR 2017
PDF
On scaling teams
PDF
MariaDB workshop
PDF
Docker for JS people
PDF
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
PDF
My talk on GitHub open data at ITGM #10
PDF
My talk on DevOps :) at Stachka 2017
My slides from DevOpsDays 2019
My slides from BMM №3 May 2019
My slides from DevOps-40 meetup Jun 2019
My slides from SECR'2018
My slides from the first SPb SRE community meetup at DataArt
My slides from CC'2019
My slides from BMM №4 Nov 2019
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Dec 2019
Configuration management and Kubernetes
Ansible and other stuff
Python performance engineering in 2017
My talk at SPb SQA sub-meetup of ITGM
My talk at SECR 2017
On scaling teams
MariaDB workshop
Docker for JS people
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on GitHub open data at ITGM #10
My talk on DevOps :) at Stachka 2017

Recently uploaded (20)

PDF
Zenith AI: Advanced Artificial Intelligence
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
Modernising the Digital Integration Hub
PDF
August Patch Tuesday
PPT
Geologic Time for studying geology for geologist
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Architecture types and enterprise applications.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
DOCX
search engine optimization ppt fir known well about this
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
sustainability-14-14877-v2.pddhzftheheeeee
Zenith AI: Advanced Artificial Intelligence
A novel scalable deep ensemble learning framework for big data classification...
Final SEM Unit 1 for mit wpu at pune .pptx
Group 1 Presentation -Planning and Decision Making .pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Getting started with AI Agents and Multi-Agent Systems
Modernising the Digital Integration Hub
August Patch Tuesday
Geologic Time for studying geology for geologist
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
A comparative study of natural language inference in Swahili using monolingua...
Hindi spoken digit analysis for native and non-native speakers
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Architecture types and enterprise applications.pdf
observCloud-Native Containerability and monitoring.pptx
search engine optimization ppt fir known well about this
Enhancing emotion recognition model for a student engagement use case through...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Developing a website for English-speaking practice to English as a foreign la...
sustainability-14-14877-v2.pddhzftheheeeee

My talk at Linux Piter 2016

  • 1. On performance analyzing again: Gathering and visualizing flamegraphs in realtime in Linux environment Alex Chistyakov, DataArt Linux Piter 2016, Russia, SPb. Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 1 / 51
  • 2. Who I am (very quickly) Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 2 / 51 • Senior SW Developer @ DataArt • More than 18 years of professional experience • Researcher @ ISST Lab, ITMO • Used to be a DevOps Engineer and still probably am • Can’t quit making presentations w/lots of bullets (that’s terrible, I know)
  • 3. Performance optimization is not that hard Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 3 / 51
  • 4. Ever heard of a ’comfort zone’? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 4 / 51 • It’s crucial to be out of it to learn something new
  • 5. Ever heard of a ’comfort zone’? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 5 / 51 • It’s crucial to be out of it to learn something new • So I made this presentation in TeX
  • 6. Ever heard of a ’comfort zone’? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 6 / 51 • It’s crucial to be out of it to learn something new • So I made this presentation in TeX • With lots of bullets, you know
  • 7. Ever heard of a ’comfort zone’? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 7 / 51 • It’s crucial to be out of it to learn something new • So I made this presentation in TeX • With lots of bullets, you know • Because I’m not ready yet to leave my comfort zone entirely
  • 8. Ever heard of a ’comfort zone’? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 8 / 51 • It’s crucial to be out of it to learn something new • So I made this presentation in TeX • With lots of bullets, you know • Because I’m not ready yet to leave my comfort zone entirely • Damn, TeX seems to be my new comfort zone ;(
  • 9. Okay, flashback to LP 2015 (w/no bullets) Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 9 / 51
  • 10. Fast-forward to 2016 Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 10 / 51 Brendan Gregg declared Linux DTrace-complete!
  • 11. A great step forward for mankind... Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 11 / 51 ...but I’m a cat
  • 12. So, what is this all about? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 12 / 51 • Modern GNU/Linux
  • 13. So, what is this all about? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 13 / 51 • Modern GNU/Linux • A web application
  • 14. So, what is this all about? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 14 / 51 • Modern GNU/Linux • A web application • Collecting flamegraphs
  • 15. So, what is this all about? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 15 / 51 • Modern GNU/Linux • A web application • Collecting flamegraphs • Visualizing collected flamegraphs
  • 16. Okay, but what are these flame... things? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 16 / 51 Did you attend LP 2015?
  • 17. Doing flamegraphs in 2016 is extremely easy Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 17 / 51
  • 18. A hicker needs good boots Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 18 / 51
  • 19. So, we need a language Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 19 / 51
  • 20. The obvious choice Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 20 / 51
  • 21. Why Lisp? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 21 / 51 • Homoiconicity
  • 22. Why Lisp? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 22 / 51 • Homoiconicity • Macros
  • 23. Why Lisp? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 23 / 51 • Homoiconicity • Macros • Immutability (?)
  • 24. Why Lisp? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 24 / 51 • Homoiconicity • Macros • Immutability (?) • Lambdas
  • 25. But that was not too democratic, so... Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 25 / 51 ...what about Golang?
  • 26. Unfortunately, Golang loses Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 26 / 51 • Way too modern (uses design ideas from 1970s while Lisp was born in 1958)
  • 27. Unfortunately, Golang loses Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 27 / 51 • Way too modern (uses design ideas from 1970s while Lisp was born in 1958) • Not functional enough (as in ’functional programming’)
  • 28. Unfortunately, Golang loses Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 28 / 51 • Way too modern (uses design ideas from 1970s while Lisp was born in 1958) • Not functional enough (as in ’functional programming’) • Targets Java 1.2 and PHP 4.x market share (designed for apes not humans)
  • 29. Runtime matters! Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 29 / 51 • Static linking is a must
  • 30. Runtime matters! Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 30 / 51 • Static linking is a must • Decent GC is a must
  • 31. Runtime matters! Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 31 / 51 • Static linking is a must • Decent GC is a must • Resulting files should not be too big
  • 32. Runtime matters! Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 32 / 51 • Static linking is a must • Decent GC is a must • Resulting files should not be too big • Let’s consider measureable things only
  • 33. So, Lisps then Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 33 / 51 • Common Lisp • Scheme
  • 34. Common Lisp Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 34 / 51 Statically linked file is over 30Mb (Golang does around 8Mb)
  • 35. Scheme Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 35 / 51 Is minimalist by design (way too minimalist I’d say)
  • 36. So, no boots then? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 36 / 51
  • 37. Nim to the rescue! Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 37 / 51 Nim (formerly Nimrod)
  • 38. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 38 / 51 • Strong typing
  • 39. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 39 / 51 • Strong typing • Static typing
  • 40. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 40 / 51 • Strong typing • Static typing • Homoiconicity
  • 41. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 41 / 51 • Strong typing • Static typing • Homoiconicity • Macro system (hygienic)
  • 42. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 42 / 51 • Strong typing • Static typing • Homoiconicity • Macro system (hygienic) • Immutability
  • 43. Nim: the good parts Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 43 / 51 • Strong typing • Static typing • Homoiconicity • Macro system (hygienic) • Immutability • Templates (generics)
  • 44. Nim: runtime goodness Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 44 / 51 • Uses C as an IR
  • 45. Nim: runtime goodness Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 45 / 51 • Uses C as an IR • Per thread GC (as in Erlang)
  • 46. Nim: runtime goodness Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 46 / 51 • Uses C as an IR • Per thread GC (as in Erlang) • Statically linked files < 1Mb (not stripped)
  • 47. Project Kaldur Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 47 / 51 • Means ’cold’ in Faroese • Because it’s quite cold now • https://github.com/alexclear/kaldur
  • 48. Project Kaldur Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 48 / 51 • Is live at http://185.37.61.240:5000 • Has a TODO list on Github • Has an issues list on Github
  • 49. Conclusions Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 49 / 51 • TeX is great! • Nim is great too! • Flamegraphs are great! • Linux is great! • Open source projects are great!
  • 50. Questions, please? Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 50 / 51 • Why FP? • Why Linux? • ...?
  • 51. So long, and thanks for all the fish Alex Chistyakov, DataArt Gathering and visualizing flamegraphs in realtime 51 / 51 • achistyakov@dataart.com • https://telegram.me/lhommequipleure