QueuePub Date : 2021-08-31DOI: 10.1145/3487019.3487353
T. Kelly
{"title":"Crashproofing the Original NoSQL Key-Value Store","authors":"T. Kelly","doi":"10.1145/3487019.3487353","DOIUrl":"https://doi.org/10.1145/3487019.3487353","url":null,"abstract":"Fortifying software to protect persistent data from crashes can be remarkably easy if a modern file system handles the heavy lifting. This episode of Drill Bits unveils a new crash-tolerance mechanism that vaults the venerable gdbm database into the league of transactional NoSQL data stores. We'll motivate this upgrade by tracing gdbm's history. We'll survey the subtle science of crashproofing, navigating a minefield of traps for the unwary. We'll arrive at a compact and rugged design that leverages modern file-system features, and we'll tour the production-ready implementation of this design and its ergonomic interface. This new approach is quite generic: It can enable a wide range of software to tolerate crashes.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"5 - 18"},"PeriodicalIF":0.0,"publicationDate":"2021-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"45188151","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-08-31DOI: 10.1145/3487019.3487021
Patrick Thomson
{"title":"Static Analysis: An Introduction","authors":"Patrick Thomson","doi":"10.1145/3487019.3487021","DOIUrl":"https://doi.org/10.1145/3487019.3487021","url":null,"abstract":"Modern static-analysis tools provide powerful and specific insights into codebases. The Linux kernel team, for example, developed Coccinelle, a powerful tool for searching, analyzing, and rewriting C source code; because the Linux kernel contains more than 27 million lines of code, a static-analysis tool is essential both for finding bugs and for making automated changes across its many libraries and modules. Another tool targeted at the C family of languages is Clang scan-build, which comes with many useful analyses and provides an API for programmers to write their own analyses. Like so many things in computer science, the utility of static analysis is self-referential: To write reliable programs, we must also write programs for our programs. But this is no paradox. Static-analysis tools, complex though their theory and practice may be, are what will enable us, and engineers of the future, to overcome this challenge and yield the knowledge and insights that we practitioners deserve.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"29 - 41"},"PeriodicalIF":0.0,"publicationDate":"2021-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"43116443","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-08-31DOI: 10.1145/3487019.3487024
Ayman Nadeem
{"title":"Human-Centered Approach to Static-Analysis-Driven Developer Tools","authors":"Ayman Nadeem","doi":"10.1145/3487019.3487024","DOIUrl":"https://doi.org/10.1145/3487019.3487024","url":null,"abstract":"Complex and opaque systems do not scale easily. A human-centered approach for evolving tools and practices is essential to ensuring that software is scaled safely and securely. Static analysis can unveil information about program behavior, but the goal of deriving this information should not be to accumulate hairsplitting detail. HCI can help direct static-analysis techniques into developer-facing systems that structure information and embody relationships in representations that closely mirror a programmer's thought. The survival of great software depends on programming languages that support, rather than inhibit, communicating, reasoning, and abstract thinking.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"68 - 95"},"PeriodicalIF":0.0,"publicationDate":"2021-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"43550836","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-08-31DOI: 10.1145/3487019.3487022
Timothy Clem, Patrick Thomson
{"title":"Static Analysis at GitHub","authors":"Timothy Clem, Patrick Thomson","doi":"10.1145/3487019.3487022","DOIUrl":"https://doi.org/10.1145/3487019.3487022","url":null,"abstract":"The Semantic Code team at GitHub builds and operates a suite of technologies that power symbolic code navigation on github.com. We learned that scale is about adoption, user behavior, incremental improvement, and utility. Static analysis in particular is difficult to scale with respect to human behavior; we often think of complex analysis tools working to find potentially problematic patterns in code and then trying to convince the humans to fix them. Our approach took a different tack: use basic analysis techniques to quickly put information that augments our ability to understand programs in front of everyone reading code on GitHub with zero configuration required and almost immediate availability after code changes.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"42 - 67"},"PeriodicalIF":0.0,"publicationDate":"2021-08-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"46935540","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3469647
Pat Helland
{"title":"ACID: My Personal","authors":"Pat Helland","doi":"10.1145/3466132.3469647","DOIUrl":"https://doi.org/10.1145/3466132.3469647","url":null,"abstract":"I had a chance recently to chat with my old friend, Andreas Reuter, the inventor of ACID. He and his Ph.D. advisor, Theo Härder, coined the term in their famous 1983 paper, Principles of Transaction-Oriented Database Recovery. I had blinders on after almost four decades of seeing C based on my assumptions. One big lesson for me is to work hard to ALWAYS question your assumptions. Try hard to surround yourself with curious and passionate people, both young and old, who will challenge you and try to dislodge your blinders. Foster a culture that makes them safe as they do so.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"17 - 20"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3469647","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"48816991","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3466779
Atefeh Mashatan, D. Heintzman
{"title":"The Complex Path to Quantum Resistance","authors":"Atefeh Mashatan, D. Heintzman","doi":"10.1145/3466132.3466779","DOIUrl":"https://doi.org/10.1145/3466132.3466779","url":null,"abstract":"There is a new technology on the horizon that will forever change the information security and privacy industry landscape. Quantum computing, together with quantum communication, will have many beneficial applications but will also be capable of breaking many of today's most popular cryptographic techniques that help ensure data protection?in particular, confidentiality and integrity of sensitive information. These techniques are ubiquitously embedded in today's digital fabric and implemented by many industries such as finance, health care, utilities, and the broader information communication technology (ICT) community. It is therefore imperative for ICT executives to prepare for the transition from quantum-vulnerable to quantum-resistant technologies.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"65 - 92"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3466779","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"45059674","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3468263
T. Kelly, Weiwei Gu, Vladimir Maksimovski
{"title":"Schrödinger's Code","authors":"T. Kelly, Weiwei Gu, Vladimir Maksimovski","doi":"10.1145/3466132.3468263","DOIUrl":"https://doi.org/10.1145/3466132.3468263","url":null,"abstract":"Undefined behavior ranks among the most baffling and perilous aspects of popular programming languages. This installment of Drill Bits clears up widespread misconceptions and presents practical techniques to banish undefined behavior from your own code and pinpoint meaningless operations in any software—techniques that reveal alarming faults in software supporting business-critical applications at Fortune 500 companies.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"28 - 44"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3468263","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"48028480","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3469121
George Neville-Neil
{"title":"In Praise of the Disassembler","authors":"George Neville-Neil","doi":"10.1145/3466132.3469121","DOIUrl":"https://doi.org/10.1145/3466132.3469121","url":null,"abstract":"When you're starting out you want to be able to hold the entire program in your head if at all possible. Once you're conversant with your first, simple assembly language and the machine architecture you're working with, it will be completely possible to look at a page or two of your assembly and know not only what it is supposed to do but also what the machine will do for you step by step. When you look at a high-level language, you should be able to understand what you mean it to do, but often you have no idea just how your intent will be translated into action. Assembly and machine code is where the action is.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"21 - 28"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3469121","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"43830065","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3469844
Jessie Frazelle
{"title":"A New Era for Mechanical CAD","authors":"Jessie Frazelle","doi":"10.1145/3466132.3469844","DOIUrl":"https://doi.org/10.1145/3466132.3469844","url":null,"abstract":"The hardware industry is desperate for a modern way to do mechanical design. A new CAD program created for the modern world would lower the barrier to building hardware, decrease the time of development, and usher in a new era of building. The tools used to build with today are supported on the shoulders of giants, but a lot could be done to make them even better. At some point, mechanical CAD lost some of its roots of innovation. Let's dive into a few of the problems with the CAD programs that exist today and see how to make them better.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"5 - 16"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3469844","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"42729997","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
QueuePub Date : 2021-04-30DOI: 10.1145/3466132.3467860
Michael Gardiner, Alexander Truskovsky, George Neville-Neil, Atefeh Mashatan
{"title":"Quantum-safe Trust for Vehicles","authors":"Michael Gardiner, Alexander Truskovsky, George Neville-Neil, Atefeh Mashatan","doi":"10.1145/3466132.3467860","DOIUrl":"https://doi.org/10.1145/3466132.3467860","url":null,"abstract":"In the automotive industry, cars now coming off assembly lines are sometimes referred to as \"rolling data centers\" in acknowledgment of all the entertainment and communications capabilities they contain. The fact that autonomous driving systems are also well along in development does nothing to allay concerns about security. Indeed, it would seem the stakes of automobile cybersecurity are about to become immeasurably higher just as some of the underpinnings of contemporary cybersecurity are rendered moot.","PeriodicalId":39042,"journal":{"name":"Queue","volume":"19 1","pages":"93 - 115"},"PeriodicalIF":0.0,"publicationDate":"2021-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1145/3466132.3467860","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"41913641","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}