Posts

Showing posts from June, 2021

Humans of Computer Systems: IndianDev

Programming How did you learn to program? I started programming at a relatively young age, around 6th standard (in India). Initially leanred HTML, CSS from w3school and online tutorial blogs/videos, then learned C++, mostly from School curriculum book. In college, I throughly enjoyed reading "Thinking in C++". Tell us about the most interesting/significant piece of code you wrote. I remember the first project I did in school which I'm really proud of, even though it was more of a toy fun project. It was an image editor for BMP files, written in C++.  Who did you learn most from about computer systems? Hacker News, I have been following it since high school. Who is the greatest programmer you met, and what is impressive about them? Interestingly, my own definition of good programmer has changed few times. In college times, I used to admire programmers who had strong algorithmic skills required for ICPC like competitions, but lately I have realised it's equally importan...

Humans of Computer Systems: Dalecooper

Programming How did you learn to program? Two MOOCs: "Python for Everybody" on Coursera, and University of Helsinki's Java MOOC. Tell us about the most interesting/significant piece of code you wrote. Decryption processor for use in Apache NiFi Who did you learn most from about computer systems? The Internet Who is the greatest programmer you met, and what is impressive about them? My co-worker. His ability to hold onto macro concepts and think about systems as a whole while coding, instead of tunnel-visioning and focusing only on the "micro" aspect of implementation, is impressive.  What do you believe are the most important skills to be successful in your field? Communication, critical thinking, and problem-solving (the latter two often going hand-in-hand). What quality or ability do you value most in a computer systems person? Strong communication skills Personal Which of your work/code/accomplishments are you most proud of? Creating a decryption processor fo...

Humans of Computer Systems: Obdurodon

Programming How did you learn to program? Some college, some self taught, mostly on the job Tell us about the most interesting/significant piece of code you wrote. Cluster manager (leader election + fault detection/response) for HACMP/6000 in 1983. Primitive by today's standards, but cutting edge for its time. Used in production at a significant percentage of banks, retail stores, etc. for about a decade. Who did you learn most from about computer systems? Various senior/principal engineers at Encore when I was still junior in ~1990. It was one of the early UNIX SMP systems. Learned much of what I know about kernels, TCP/IP, multi-processor synchronization, memory hierarchies, etc. Who is the greatest programmer you met, and what is impressive about them? TBH some of the best programmers I've met worked primarily in Verilog, designing chips and tools around them - e.g. Wilson Snyder and others at SiCortex/Veripool. Huge volume, but also rigorous testing leading to *very* low de...

Humans of Computer Systems: A. Jesse Jiryu Davis

Programming How did you learn to program? First learned with LOGO on an Apple II in an elementary school summer program. Taught myself C++ from a textbook in high school, and majored in Computer Science in college. Tell us about the most interesting/significant piece of code you wrote. I wanted to ensure all MongoDB drivers, in a dozen programming languages, implement the MongoDB wire protocol the same. I encoded sample network protocol conversations in YAML, and wrote a multi-language test framework to check that each driver creates the exact messages in the same sequence as in the YAML samples. Who is the greatest programmer you met, and what is impressive about them? Ben Darnell, whose async Python framework, Tornado, inspired Python's standard asyncio module. What do you believe are the most important skills to be successful in your field? First, to recognize the engineering challenges worth doing, and do them instead of those that are the most fun or aesthetically satisfying. ...

Humans of Computer Systems: afk

 Continuing with the  Humans of Computer Systems series ... If you enjoy reading this series and like to read more,  consider taking 10 minutes and submitting a response . All questions are optional. You can skip most, and tell a lot more on some questions you choose. Programming How did you learn to program? self taught, bit more formally than usual Tell us about the most interesting/significant piece of code you wrote. A search engine Who did you learn most from about computer systems? open source codebases, wikipedia, specifications, man pages. so really the foss community in general. What do you believe are the most important skills to be successful in your field? successful as in billionaire? marketing. successful as in stable job? javascript and css nowadays, unfortunately. successful as in well known but not a billionaire? blogging. successful as in peaceful? ignorance. What quality or ability do you value most in a computer systems person? communication Personal W...

Humans of Computer Systems: Rafael

 Continuing with the  Humans of Computer Systems serie s. If you enjoy reading this series and like to read more, consider taking 10 minutes and submitting a response . All questions are optional. You can skip most, and tell a lot more on some questions you choose. Programming How did you learn to program? When I was 7 my teacher gave me a "My First Computer Book" to read, it was for kids, in the 80s. It taught kids how to program in BASIC and I was hooked. Tell us about the most interesting/significant piece of code you wrote. I once implemented the original UNIX filesystem for Linux. Who did you learn most from about computer systems? Helpful people on IRC. Who is the greatest programmer you met, and what is impressive about them? I don't really know what a great programmer is supposed to be, but I feel like everyone else is better than me at something so I guess... every programmer? What do you believe are the most important skills to be successful in your field? Persi...

Humans of Computer Systems: Arcot

I had sent out a call for this yesterday . The idea is to share stories from people working on computer systems (including distributed, security, databases, webservices, OS, hardware, enterprise, cloud etc). Today one response arrived. Here it is. I enjoyed reading this. I learned about the nature of software work in manufacturing companies. I learned about an interesting blog to follow.  If you enjoy reading this response, and like to read more like that, please take 10 minutes and submit a response. All questions are optional . (Yesterday I messed up about this due to the bad UI in Google forms. It wasn't clear which direction of "Required" was turning it on vs off. Sorry about it.) You can skip most, and tell a lot more on some questions you choose. Programming How did you learn to program?  Reading manuals, and practice.  Tell us about the most interesting/significant piece of code you wrote.  Code downloader for Comcast Cable card.  Who did you learn most f...

Humans of computer systems

I follow "Humans of New York" account on Twitter, and I am inspired by the interesting stories of everyday people tell in that account.  I like to have the same thing for "Humans of Computer Systems". I want to read about the human stories from people working on computer systems (including distributed, security, databases, webservices, OS, hardware, enterprise, cloud etc.). "Coders at Work" was a great book. I think it came close to capturing the humans of computer systems vision. But I want to see this to be open to everyday people of computer systems, not just famous coders. I want to hear human stories from developers, practitioners, graduate students, hobbyists, theoreticians, open-source hackers, hardware hackers, automated verification people, self-learners, veterans, everyone. OK, fine, even machine learning people. I want this to be instructive as well. Let's learn from everyone. Every one has a story to tell, and interesting thing to teach. ...

FoundationDB Record Layer: A Multi-Tenant Structured Datastore

Image
This is a 2019 arxiv report . Back in 2019, when the report was out, I wrote a review about it, but did not publish it then because I felt I didn't have enough information on FoundationDB yet. With FoundationDB Sigmod 2021 paper out recently , I am now releasing that earlier write up. I will follow up on this soon with a review of the Sigmod21 paper on FoundationDB. UPDATE : I wrote a summary of the Sigmod 2021 paper here. Introduction FoundationDB made a bold design choice of ACID key-value store. They had released a transaction manifesto: Everyone needs transactions Transactions make concurrency simple Transactions enable abstraction Transactions enable efficient data representations Transactions enable flexibility Transactions are not as expensive as you think Transactions are the future of NoSQL FoundationDB, available as opensource , consists of the transactional minimalist storage engine as the base layer, and other layers are developed on top of the base layer to...

Genius: The Life and Science of Richard Feynman

This is a 1992 biography of Feynman by James Gleick. The book provides good coverage of both the life and science of Feynman. Having read most of the books about Feynman, I can say that this is the best out there.  In contrast to the other books which were anecdote heavy, this provides a more balanced coverage of Feynman's life and science together. The book also gives good insights into some aspects of Feynman's personality that was missing in the other books. I hadn't read about Feynman's nervous break down on his father's grave, his depressive episodes, and his rivalry with other physicians before. The book also has a chapter discussing Feynman's unacceptable attitude towards women. The science coverage in the book is top notch, and gives a detailed explanation of how the field of quantum physics started and grew in to a discipline alongside Feynman's life. We get a good picture of how the proposed theories get refined and evolve as they interact with oth...

Silent data corruptions at scale

Image
This paper from Facebook (Arxiv Feb 2021) is referred in the Google fail-silent Corruption Execution Errors (CEEs) paper as the most related work. Both papers discuss the same phenomenon, and say that we need to update our belief about quality-tested CPUs not having logic errors, and that if they had an error it would be a fail-stop or at least fail-noisy hardware errors triggering machine checks. This paper provides an account of how Facebook have observed CEEs over several years. After running a wide range of silent error test scenarios across 100K  machines, they found that 100s of CPUs are identified as having these errors, showing that CEEs are a systemic issue across generations. This paper, as the Google paper, does not name specific vendor or chipset types. Also the ~1/1000 ratio reported here matches the ~1/1000 mercurial core ratio that the Google paper reports. The paper claims that silent data corruptions can occur due to device characteristics and are repeatable at s...

Cores that don't count

This paper is from Google and appeared at HotOS 2021 . There is also a very nice 10 minute video presentation for it. So Google found fail-silent Corruption Execution Errors (CEEs) at CPU/cores. This is interesting because we thought tested CPUs do not have logic errors, and if they had an error it would be a fail-stop or at least fail-noisy hardware errors triggering machine checks. Previously we had known about fail-silent storage and network errors due to bit flips, but the CEEs are new because they are computation errors. While it is easy to detect data corruption due to bit flips, it is hard to detect CEEs because they are rare and require expensive methods to detect/correct in real-time.  What are the causes of CEEs? This is mostly due to ever-smaller feature sizes that push closer to the limits of CMOS scaling, coupled with ever-increasing complexity in architectural design. Together, these create new challenges for the verification methods that chip makers use to detect div...

Popular posts from this blog

Hints for Distributed Systems Design

Learning about distributed systems: where to start?

Making database systems usable

Looming Liability Machines (LLMs)

Foundational distributed systems papers

Advice to the young

Linearizability: A Correctness Condition for Concurrent Objects

Understanding the Performance Implications of Storage-Disaggregated Databases

Scalable OLTP in the Cloud: What’s the BIG DEAL?

Designing Data Intensive Applications (DDIA) Book