TLA+ is mentioned a lot here and many people point out how it's practically infeasible to use it in real world systems. Just curious, is there any alternative to write specifications which are more closer to common programming languages and can be used by an average programmer to formally prove correctness?
I've heard Alloy is easier to learn. That being said, Alloy and TLA+ are both languages for specifications, so they can't prove an implementation is correct.
I found this short paper really interesting to understand the fundamental limitations of distributed systems: Consistency Tradeoffs in Modern Distributed Database System Design http://www.cs.umd.edu/~abadi/papers/abadi-pacelc.pdf . The theorem introduced in the paper (PACELC) provides a better way to understand the design of modern distributed systems than CAP.
>I have rarely found the need to code one up in my job
Depending on your job profile, these data structures may not be used at all. But programming puzzles have become the norm for interviews in the industry.
I have been using Zim[0] for quite few years now. With various plugins, it allows me to write LaTeX equations, formatted code, tables etc. Overall it has been really good, but I feel the only thing missing is the support for mobile devices.
The former paper appeared in SIBVOIK 2017 (http://www.sigbovik.org/), where you can find other such papers. My personal favorites are "On The Turing Completeness of PowerPoint" (https://www.youtube.com/watch?v=uNjxe8ShM-8) and "Automated Distributed Execution of LLVM code using SQL JIT Compilation"
> Following the popularity of MapReduce, a whole ecosystem of Apache Incubator Projects has emerged that all solve the same problem. Famous examples include Apache Hadoop, Apache Spark, Apache Pikachu, Apache Pig, German Spark and Apache Hive [1]
Slightly OT, but I wanted to know if there's any group/forum where we can read and discuss papers regularly?
I know the morning paper (https://blog.acolyer.org/), but it is not so interactive, in the sense that you can't have discussions with peers and it turns into just passive reading.
At Spotify, we have a reading group. I started one at SoundCloud and at Google there were multiple focused on very specific topics. If you can prove to your company the value in investing in a reading group, you can probably start one in your company too.
KTH, Stockholm's main technical university, has an open reading group too, open to everyone. Probably if you have a big enough university in your area they have something similar.
Alternatively try reddit, ie.: on r/machinelearning.
That said, the value of doing this in real life, in front of a whiteboard, is worth going extra mile and find someone to team up with.
Somewhat related,a general purpose annotation platform is http://hypothes.is - a great feature is that PDF annotations are location independent because they use some kind of fingerprint to identify the document.