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 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.
>First, I suppose I need to get to a point in my career and personal life where my finances are good enough that I don't have to decide where I spend my effort based on the income it'll bring me.
This. Waiting for the right moment to start working on your long term plan is, according to me, not a good idea. Instead of taking a giant step after some point of time, consider taking small steps on a regular basis.
I really like your idea, would you like to discuss how are you planning to approach this problem?
Firefox has a really good market in the mobile industry. I really wanted Firefox OS to catch up, but it didn't. I am still looking for privacy-focused OS alternative to Android, any suggestions?
The thread example given in article is only limited to a single writer and multiple readers. Things get interesting when you want to have lock free concurrency with multiple readers and writers. One of the famous techniques is using software transactional memory (https://en.m.wikipedia.org/wiki/Software_transactional_memor...). But it hasn't really caught up in the industry and it still exists within academia.
As another user pointed out, why should be the chromatic polynomial of rectangle with deleted edge be: q^4 - 3q^3 + 2q^2 and not q * (q - 1)^3. A counter example: when q=2, we have two ways to color the rectangle with a deleted edge. Am I missing something?
I think fixating q as the number of possible ways to color the end points of the deleted edge leads to the wrong result.
It's true that these institutes haven't started something revolutionary, but there has been considerable amount of work in the right direction. I think there are multiple possible reasons behind it: 1) Most of the undergraduate students from these institutes either go study abroad or take up a job; which leaves only a fraction of the top students in these institutes. 2) Students who come for MS in these institutes have to clear GATE exam and most of them, according to what I have seen, join these institutes just for getting a good job and not for serious research.
Disclaimer: I work at one of the top institutes you mentioned.
There's also Blogel [0] which is a distributed graph processing framework in C++ and it runs significantly faster than its counterpart in Java, Apache Giraph [1].
I have started wondering if the big data developers really care about the speed; the advantages of these Java softwares start to fade out when compared with their C++ counterparts.
I recently met a professor, he said that most of his students are working in Deep Learning and he is finding it difficult to get people to work on other interesting problems. So there is really a demand of students to work on other areas as well. But most of the students get carried away by the trending fields.