It’s been a while I have not put my thoughts in here, so this entry will be a mix of some of the papers or blogs I read recently, some thoughts about Rust and TLA+ because I started trying them both recently, and a few interesting talks I saw recently. The Aesthetics part will be discussed in the blog entry that I read recently and was an interesting reflection on how tools shape our way of thinking.
I’ll start by talking about TLA+ because it lead me to other subjects I’ll talk after. I discovered TLA+ after reading a few blog posts seen on HackerNews.
Basically the idea behind TLA+ is that writing software that is correct is extremely hard to do (more so is you include concurrency/parallelism in your software). TLA+ is a high-level language for modeling systems, that relies on math to check the correctness of the model. It has been used successfully by engineers in big company like Amazon and Intel to help them design robust systems.
TLA+ is mainly the work of Leslie Lamport (I did not know about him before), a fairly well-known computer scientist known for his work in distributed systems (and being the initial developer of LaTeX). He received many prizes including the Turing award in 2013.
On The TLA+ Home Page there is lots of resources to start using it, links to the toolbox, an introductory video course and more information to get started. I am currently at the seventh lecture of the introductory course and it is an interesting concept that I’m willing to try to put in practice. I’ll probably come back writing back more on this.
Rust is the “new” language (since 2010) developed by Mozilla with the goal to have a “safe”, low-level and performant programming language (as an alternative for C/C++). It features quite a few interesting ideas that I find intriguing and I decided to try it out.
What drew me in was:
let x = 0it is immutable but you can opt-out with the keyword
let mut x = 0)
Another good point is that because Rust is a recent language (and good fundings), it has all the niceties like package manager (Cargo), utilities for documentation included (seriously running
cargo doc --open is really a nice experience!), nice integrations to the majors editors, installation is very straightforward, so far documentation is really high quality…
I started the Rust book, very nicely done so far (I’m in the middle of chapter 3).
I will be progressing toward the end of this book and then try my hands with it. It should match very well with TLA+ as well.
I won’t talk here about all the interesting blog posts I read since the last time I wrote in this blog (a few months ago) but I wanted to highlight and share some very interesting read I had this past few months:
In this post, the author compare the difference between “classical” and “gothic” architecture (real architecture, not software architecture), the elements that characterize both (notably in how much freedom is given to the craftsman) and how we can think about programming language in the same way.
This piece is really nice and I really think you should read it too :)
This post is like many others on the internet where the author describes how he try to be a better programmer. Very quickly his point his:
And then he list a few things that helped him be a better programmer:
His blog his overall pretty interesting too so go take a look :)
The blog posts of John are very interesting (and very short) so if you like a quick read go for it!
In this one he rants about how we rank programming language by popularity (whatever that means) but that does not define how viable that language is (taking Perl, Common Lisp, F# and Erlang as examples).
Here are a few conferences talks about Rust
Considering Rust (Jon Gjengset) Making the case for Rust, while also putting emphasis on the weaknesses of it.
Rust at speed - building a fast concurrent database (Jon Gjengset) Discussion about the experience of writing Noria, a high-performance database prototype in Rust
How Rust view tradeoffs(Stephen Klabnik) Great view about the Rust culture and decision making
While reading about TLA+ and Leslie Lamport, I stumbled upon the ACM Digital Library which has free books on programming! Notably one of the latest book is a compilation of the work of Leslie Lamport on concurrency.