{"id":175,"date":"2020-03-06T19:52:00","date_gmt":"2020-03-07T00:52:00","guid":{"rendered":"http:\/\/127.0.0.1:8080\/?p=175"},"modified":"2024-01-13T14:53:09","modified_gmt":"2024-01-13T19:53:09","slug":"why-haskell","status":"publish","type":"post","link":"http:\/\/10.42.0.68:8080\/blog\/why-haskell","title":{"rendered":"Why Haskell?"},"content":{"rendered":"\n
A long time ago, I was on Basic (Amstrad<\/a>) and after Red Hat Linux<\/a> with Bash and Python<\/a>. It was my big evolution from Basic. From that day, I loved Python but I needed to use others.<\/p>\n\n\n\n\n\n\n\n During my studies, I used C and Assembly\u2026 Welcome to the electronic’s world, microcontrollers in C and ASM. I hated my first time with them and finally liked them after few weeks. I used R for data analysis and finally, I preferred to do it using Python.<\/p>\n\n\n\n I did a little of Swift and I liked it for iOS and macOS.<\/p>\n\n\n\n I tried Ruby and RoR (Ruby on Rails) for a personal project and I regretted when it was time to upgrade ruby for security purposes.<\/p>\n\n\n\n In addition, I hated Ruby’s magic\u2026<\/p>\n\n\n\n I needed to use Ruby with Chef (configuration management)<\/a> and finally, with the team, we built Ansible roles and playbooks to handle a very specific and strange task: rebooting datacenters of a cloud provider (thank you Intel for Meltdown\/Spectre).<\/p>\n\n\n\n When you have a team that did all with Ruby and finally migrates to Ansible, it’s not for nothing.<\/p>\n\n\n\n Never forget to use the language that you like and want to use. It was terrible to be forced to use one language that you dislike\/hate. Finally, you won’t see it again and it’s my case because it was the poor experience possible with Chef and Ruby.<\/p>\n\n\n\n – sycured<\/a><\/p>\n<\/blockquote>\n\n\n\n I needed to patch and customize Vault<\/a> (Hashicorp).<\/p>\n\n\n\n It’s very close to C\/C++ and it’s not a dream for me to use it.<\/p>\n\n\n\n It’s not the same thing as Swift because a lot of basic functions aren’t available natively on macOS without using Catalyst<\/a>.<\/p>\n\n\n\n I searched unbreakable language for my project (bioinformatics<\/a>) and wanted:<\/p>\n\n\n\n Python’s list comprehension syntax is taken (with trivial keyword\/symbol modifications) directly from Haskell. The idea was just too good to pass up.<\/p>\n\n\n\n – PythonVsHaskell<\/a><\/p>\n<\/blockquote>\n\n\n\n I look at my library:<\/p>\n\n\n\n I found the common point, Functional Programming<\/strong>, so I read again a little the book about C# and F#\u2026 Ok, I can use it but I remember Python’s list comprehension syntax \u2026 Haskell<\/em>. I take Real World Haskell<\/a> and Learn You a Haskell for Great Good!<\/a>.<\/p>\n\n\n\n I was a little bored and told me, go to experiment with an existing code\u2026<\/p>\n\n\n\n I rewrote my streaming_calc<\/a> to streaming_calc_haskell<\/a> with tests (HSpec<\/a>) and I liked it.<\/p>\n\n\n\n One month after, I look a good project (GraphQL for PostgreSQL) and this service is written in Haskell.<\/p>\n\n\n\n WOW! It’s what I want for my project!<\/p>\n\n\n\n Used at Facebook<\/a>, FPComplete<\/a><\/p>\n\n\n\n – sycured<\/a><\/p>\n<\/blockquote>\n\n\n\n And I find 5 Years of Haskell in Production<\/a>, this was the ultimate confirmation. Checkpad MED<\/a> uses Haskell so it’s ready for critical services.<\/p>\n\n\n\n I need to read and practice a lot more but I love Haskell and I found Reflex-FRP<\/a> that permits to do web frontend in Haskell.<\/p>\n\n\n\n We use few languages:<\/p>\n\n\n\n We use Java for 2 services and I want to migrate them to Haskell\u2026<\/p>\n\n\n\n I have a dream: Kafka rewritten in Haskell (or Go or Rust if Haskell is too hard)<\/p>\n\n\n\nDuring studies<\/h2>\n\n\n\n
Immediately after, I used C++ and I liked to be back with OOP.<\/p>\n\n\n\nRuby<\/h2>\n\n\n\n
At work before 2019<\/h2>\n\n\n\n
Ruby<\/h3>\n\n\n\n
\n
Go<\/h3>\n\n\n\n
SwiftUI<\/h2>\n\n\n\n
Haskell<\/h2>\n\n\n\n
\n
\n
\n
\n
At work from 2019<\/h2>\n\n\n\n
\n
\n