Four Short Links
Nat Torkington’s eclectic collection of curated links.
Four short links: 30 July 2020
IDE in Datalog, Web Spreadsheet, ML Transparency, and Formal Systems
- Turning the IDE Inside Out with Datalog — tl;dr: I made a prototype IDE in which language semantics are specified in datalog, powered by a datalog interpreter written in TypeScript, running the browser. Demo here.
- Luckysheet — Open source web spreadsheet.
- Introducing the Model Card Toolkit for Easier Model Transparency Reporting — Model Cards […] provide a structured framework for reporting on ML model provenance, usage, and ethics-informed evaluation and give a detailed overview of a model’s suggested uses and limitations. […] To streamline the creation of Model Cards for all ML practitioners, we are sharing the Model Card Toolkit (MCT), a collection of tools that support developers in compiling the information that goes into a Model Card and that aid in the creation of interfaces that will be useful for different audiences.
- Dafny — Dafny is a language that is designed to make it easy to write correct code. This means correct in the sense of not having any runtime errors, but also correct in actually doing what the programmer intended it to do. To accomplish this, Dafny relies on high-level annotations to reason about and prove correctness of code. The effect of a piece of code can be given abstractly, using a natural, high-level expression of the desired behavior, which is easier and less error prone to write. Dafny then generates a proof that the code matches the annotations (assuming they are correct, of course!). Dafny lifts the burden of writing bug-free code into that of writing bug-free annotations. This is often easier than writing the code, because annotations are shorter and more direct.
Four short links: 29 July 2020
Golden Rule, Software History, Videochat History, and AI Product Management
- The Golden Rule of Software Quality — Prefer to push fixes upstream instead of working around problems downstream. That is to say: if you find a shortcoming in a package you use, then you should fix it and contribute your fix to that package. Don’t simply workaround it in your code.
- The Coining of the Word “Software” — In October, 1953, I coined the word ‘software.’
- Learning from Videochat in the Past — Really interesting glimpse at previous work in videoconferencing, exploring why current UX is so meh and what history suggests might be better.
- The Core Responsibilities of the AI Product Manager — In this article, we turn our attention to the process itself: how do you bring a product to market? ML-driven products are going to be weird in many ways, and will change ops, product management, and other functions.
Four short links: 27 July 2020
Tech Regulation, Editor Latency, EUV Lithography, and Quantum Internet
- Tech Regulation — ‘Tech’, of course, has all of this complexity, but we’re having to work this out a lot more quickly. It took 75 years for seatbelts to become compulsory, but tech has gone from interesting to crucial only in the last five to ten years. That speed means we have to form opinions about things we didn’t grow up with and don’t always understand quite so well as, say, supermarkets.
- Typing with Pleasure — Measuring the latency in editors: how long it takes until we see the key we just pressed. Spoiler: Gvim awesome, Atom not.
- EUV Lithography — uses extreme ultraviolet (EUV) light at a wavelength of 13.5 nm to make silicon features down to a few nanometers in size. The older I get, the more I realise that a lot of our software advances depend upon hardware advances.
- Report of the DOE Quantum Internet Blueprint Workshop — While quantum computing has garnered most of the recent headlines, quantum networking—especially with its promise of secure communication—actually is capturing the interest of a growing community across science, industry, and national security. Today, many people recognize that building and scaling quantum-protected and enhanced communication networks are among the most important technological frontiers of the 21st century. Although a general-purpose quantum computer still is many years away, the research community perceives a quantum Internet may be closer to realization.
Four short links: 24 July 2020
Audrey Tang, Remoting, Datomic Internals, and Service Meshes
- How Taiwan’s Unlikely Digital Minister Hacked the Pandemic — Taiwan and Audrey Tang occupy a unique spot in a world, where the ascendance of the internet and digital technology is marked by the twin dystopias of “post-truth” information chaos in the United States and China’s totalitarian, technologically mediated surveillance-and-censorship regime. With Audrey Tang as the symbolic figurehead, the island nation is making the radical argument that digital tools can be effectively used to build stronger, more open, more accountable democracies. Whether the challenge is fighting disinformation campaigns orchestrated by hostile powers or the existential threat of a virus run amok or simply figuring out how to regulate Uber, Taiwan is demonstrating the best ways technology can be used to marry the energy and talents of civil society with the administrative powers of government bureaucracy. A strong profile of Taiwan’s Digital Minister, who happens to be a former Perl hacker.
- Microsoft’s Remote Workforce — Microsoft looked at the way that the Covid lockdown changed the patterns of work at their organisation. People worked four more hours a week, on average, but at all sorts of hours. Multitasking during meetings didn’t spike, even though people weren’t in the same room. 10% more meetings, but they skewed towards 30m or less rather than the hour-long previous norm. Interestingly, we found that the employees who averaged the most weekly one-on-one time with their managers experienced the smallest increase in working hours.
- Unofficial Guide to Datomic Internals — How it works: persistence, indexing, query execution, and caching. Datomic is a distributed implementation of Datalog, which regular readers will know I have a fondness for.
- You Don’t Need No Service Mesh — if you have a fleet of healthy services written in a single application stack, then it’s a good idea to think twice before introducing a service mesh. By simply introducing or evolving a shared RPC library, you’ll get the exact same benefits and avoid dealing with the downsides of maintaining service meshes. Some architecture advice for the weekend.
Four short links: 26 July 2020
AI Coding, DataScript, Structured Argument, and Debugging at Google Scale
- As We May Code — why aren’t we — ostensibly the people writing software — doing more with AI in our day-to-day? Why are things like TabNine and Kite so often seen as curiosities instead of game-changers? If you take seriously the idea that ai will fundamentally change the nature of many occupations in the coming decade, what reason do you have to believe that you’ll be immune from that because you work in software? Looking at the code you’ve been paid to write over the past few years, how much of that can you honestly say is truly novel? Regular readers know this is consonant with my beliefs, though I’m not as bullish on RDF and the SemWeb as Matt may be. One of his closing lines also resonated: The truth is, I’ve come around to thinking that programming isn’t the most important thing for programmers to pay attention to right now.
- DataScript as a Lingua Franca for Domain Modeling — represent our Domain Model declaratively, as an in-program data structure (a ‘meta-database’); derive the ‘machine’ behaviour generically from this representation. Implemented using DataScript, an in-memory database / data-structure, available as a library on the JVM or JavaScript, which takes inspiration from the Datomic database.
- Structured Evidential Argumentation System — We have developed a new methodology that retains the ease-of-use, familiarity, and (some of) the free-form nature of informal methods, while benefiting from the rigor, structure, and potential for automation characteristic of formal methods. Our approach aims to foster thoughtful and timely analysis through the introduction of structure, and collaboration through access to the corporate memory of current and past analytic results. Unchanged since 2007, according to this website. I wish it were open sourced to experiment with and build on.
- Debugging Incidents in Google’s Distributed Systems — This article covers the outcomes of research performed in 2019 on how engineers at Google debug production issues, including the types of tools, high-level strategies, and low-level tasks that engineers use in varying combinations to debug effectively. It examines the research approach used to capture data, summarizing the common engineering journeys for production investigations and sharing examples of how experts debug complex distributed systems. Finally, the article extends the Google specifics of this research to provide some practical strategies that you can apply in your organization.
Four short links: 22 July 2020
Javascript Wiki, ML on Logs, Remove Chaos, and 1998 Zoom
- wiki.js — Portable open-source Javascript featureful wiki.
- Neural Embedding + Locality Sensitive Hashing for Logs — Our diff solution involves embedding each line into a low dimensional vector and (optionally “fine-tuning” or updating the embedding model at the same time), assigning it to a cluster, and identifying lines in different clusters as “different”. Locality sensitive hashing is a probabilistic algorithm that permits constant time cluster assignment and near-constant time nearest neighbors search. A clever way of getting approximate search in logs.
- Remove Chaos — Good leaders can walk into a situation where people have lost track of their goals and get everyone aligned on a clear path forward. They remove unimportant details, distill complex situations to their essence, and get the right decision-maker to make a call – even if it’s not them. They’re able to not only stop bad plans before it’s too late, but get them moving again in the right direction. It’s a life-long quest.
- 1998 Zoom — An hilarious infomercial for a 1998 version of Zoom.
Four short links: 21 July 2020
Product Management, GPT-3, Stalk Studio, and Symbolic from Deep Learning
- 22 Principles for Great Product Managers — This list—pieced together over the past few years—reflects what I believe are some of the most important principles for product managers.
- Tempering Expectations of GPT-3 and AGI — When I was curating my generated tweets, I estimated 30-40% of the tweets were usable comedically, a massive improvement over the 5-10% usability from my GPT-2 tweet generation. However, a 30-40% success rate implies a 60-70% failure rate, which is patently unsuitable for a production application. (via Simon Willison)
- Stalk Studio — open source experimental debugger & profiler built on top of distributed tracing. Intuitive DevTools-like UI for extracting useful information from complex traces; Visualize & inspect multiple traces on the same stage; It supports Jaeger and Zipkin out of the box. Nifty!
- Discovering Symbolic Models from Deep Learning with Inductive Biases — We develop a general approach to distill symbolic representations of a learned deep model by introducing strong inductive biases. We focus on Graph Neural Networks (GNNs). The technique works as follows: we first encourage sparse latent representations when we train a GNN in a supervised setting, then we apply symbolic regression to components of the learned model to extract explicit physical relations. We find the correct known equations, including force laws and Hamiltonians, can be extracted from the neural network.
Four short links: 20 July 2020
Insect-Mounted Cameras, Augmented Developers, Argument Mapping, and CD Pipelines
- A Bug-Sized Camera for Bug-Sized Robots and Bug-Sized Bugs — With a focus on small size and efficiency, they started with an off-the-shelf ultra low-power image sensor that’s 2.3 mm wide and weighs 6.7 mg. They stuck on a Bluetooth 5.0 chip (3 mm wide, 6.8 mg), and had a fun time connecting those two things together without any intermediary hardware to broadcast the camera output. A functional wireless camera also requires a lens (20 mg) and an antenna, which is just 5 mm of wire. An accelerometer is useful so that insect motion can be used to trigger the camera, minimizing the redundant frames that you’d get from a robot or an insect taking a nap. An astonishing piece of engineering, but also a disturbing advance against privacy.
- AI Writing Code Makes Software Engineers More Valuable — tools do not lead to less need for Software Engineers, because there is not a fixed limit of demand for software to be built. Rather, they allow more and better software to be built faster, opening new opportunities to apply software solutions where they weren’t previously economical, growing the software industry and actually increasing the value of the skillset needed to build software, which again, is not the same thing as the ability to write code. It’s good to see developers starting to engage with the idea of AI code generation. They have to be careful not to fall into the “only humans can …” trap, which becomes the secular version of “God of the gaps”. Only people can code — oh, code can code? Well, only humans can interpret requirements. Oh, code can translate requirements to code? Well, only humans can …
- Arguman — an [open source] argument analysis and mapping platform. I’m a huge fan of software that tries to amplify the better angels of our nature.
- Pipeline Patterns for Continuous Delivery — (1) Pipeline logic is codified, stored alongside application or infrastructure code and utilizes containerized runners. (2) Reusable libraries contain common pipeline logic that is referenceable from pipeline code and independently developed and tested. (3) Build and deploy pipelines should be logically separated, independently runnable and triggered by automated or manual events. (4) Branch commits, pull requests, and merges to the mainline can all trigger different pipeline behavior, optimized to the team’s way of working. (5) Every commit automatically triggers the right pipeline, with build pipelines especially optimized for speed and quick reporting of any issues. (6) Only versioned packages produced by the build pipeline are deployed and these deployments are triggered by humans or automated events. (7) Deploy tagged releases to production and automate the paperwork but leave a paper trail.
Four short links: 17 July 2020
Computation, Web Assembly, Indexing on Spark, and Web UI
- Matters Computational: Ideas, Algorithms, Source Code — Interesting book about how to do things at the low level. This is a book for the computationalist, whether a working programmer or anyone interested in methods of computation. The focus is on material that does not usually appear in textbooks on algorithms. It’s the kind of book where “word” means a series of bits not a series of characters.
- Hijacking Control Flow in Web Assembly — The more that WASM takes off, the more that programmers will need to know these kinds of weaknesses. For more on WASM security, see this IEEE Spectrum article.
- Microsoft Open-Sources Haystack — At a high-level, Hyperspace offers users the ability to: (1) Build indexes on your data (e.g., CSV, JSON, Parquet). (2) Maintain the indexes through a multi-user concurrency model.(3) Leverage these indexes automatically, within your Spark workloads, without any changes to your application code for query/workload acceleration.
When running test queries derived from industry-standard TPC benchmarks (Test-H and Test-DS) over 1 TB of Parquet data, we have seen Hyperspace deliver up to 11x acceleration in query performance for individual queries. Code on Github. - Shoelace — A forward-thinking library of web components. Works with all frameworks; Works with CDNs; Fully customizable with CSS; Open source. Clever approach: only contains components that work on all browsers, so if you colour within these lines then your creation will work on all browsers.
Four short links: 16 July 2020
Deriving Pseudocode from Code, Git + Docker for Data, Escape Room in Google Forms, and GPT-3 for Web Design
- Pseudogen — [open source] tool to automatically generate pseudo-code from source code. Implements Learning to Generate Pseudo-code from Source Code using Statistical Machine Translation and is written up in Pseudogen: A Tool to Automatically Generate Pseudo-code from Source Code. Exciting work for people inheriting codebases, and perhaps the first step in automated reasoning about code functionality (understand what it does, rewrite it better).
- Splitgraph — Splitgraph allows the user to manipulate data images (snapshots of SQL tables at a given point in time) as if they were code repositories by versioning, pushing and pulling them. It brings the best parts of Git and Docker, tools well-known and loved by developers, to data science and data engineering, and allows users to build and manipulate datasets directly on their database using familiar commands and paradigms. Open source.
- Escape Room in Google Forms — OnOn the day the Peters Township Public Library in McMurray, Pennsylvania, was supposed to unveil a superhero-themed escape room, the library had to close its doors due to the coronavirus pandemic. With no physical location to work with, librarian Sydney Krawiec started to devise an alternative: a digital escape room created in Google Forms. In the space of four hours, she made a Harry Potter-themed game that sent participants through a series of challenges based on locations from the book series, and they had to find their way out by solving puzzles. The Google Form went viral. And after other librarians saw it, they decided to make their own.
- Description to Design — (Twitter) Clever! A description of the webpage is used to generate the page. It’ll be interesting to see how complex it can get, and how well it generates. Trained from github data, which means its design sense is as good as the average of the projects on github … gulp.
Four short links: 15 July 2020
Being a Good Programmer, Algorithms I Use, Verifiable Data Structures, and Audio Spy Detector
- Fixing Bugs Properly — Why did a fix that seems so simple when looking at the changes made take two days to complete? Good programmers leave things better than they found them.
- Data Structures and Algorithms I Actually Use — This article is a set of real-world examples where data structures like trees, graphs, and various algorithms were used in production. It’s good to see them used outside interviews.
- Trillian — Trillian implements a Merkle tree [cryptographically-verified tree] whose contents are served from a data storage layer, to allow scalability to extremely large trees. On top of this Merkle tree, Trillian provides two modes: An append-only Log mode […], An experimental Map mode that allows transparent storage of arbitrary key:value pairs derived from the contents of a source Log.
- LeakyPick: IoT Audio Spy Detector — Our proof-of-concept is a LeakyPick device that is placed in a user’s smart home and periodically “probes” other devices in its environment and monitors the subsequent network traffic for statistical patterns that indicate audio transmission. Our prototype is built on a Raspberry Pi for less than USD40 and has a measurement accuracy of 94% in detecting audio transmissions for a collection of 8 devices with voice assistant capabilities. Furthermore, we used LeakyPick to identify 89 words that an Amazon Echo Dot misinterprets as its wake-word, resulting in unexpected audio transmission.
Four short links: 14 July 2020
Misinfo, Datalog in Clojure, WASM on Arduino, and Mobile Manipulators
- Neutralizing Misinformation through Inoculation — We found that false-balance media coverage (giving contrarian views equal voice with climate scientists) lowered perceived consensus overall[..]. Likewise, misinformation that confuses people about the level of scientific agreement […] had a polarizing effect […]. However, we found that inoculating messages that (1) explain the flawed argumentation technique used in the misinformation or that (2) highlight the scientific consensus on climate change were effective in neutralizing those adverse effects of misinformation.
- Datascript — An immutable in-memory database and Datalog query engine in Clojure and ClojureScript. Datalog fascinates me — a declarative query language that’s a subset of Prolog.
- WARduino — In this paper we investigate the feasibility of using WebAssembly to program Arduino compatible microcontrollers. Our experiments lead to extending the standard WebAssembly VM with: 1) safe live code updates for functions and data 2) remote debugging support at the VM level 3) programmer configurable (Arduino) modules in order to keep the virtual machine’s footprint as small as possible. The resulting WARDuino VM enables the programmer to have better performance than an interpreted approach while simultaneously increasing the ease of development. To evaluate our approach, we implemented a simple breakout game and conducted micro benchmarks which show that the VM runs approximately 5 times faster than Espruino, a popular JavaScript interpreter for the ESP32 microcontroller. This is clever! (Source code available)
- Mobile Manipulators — (IEEE Spectrum) Stretch has been relentlessly optimized to be the absolutely minimum robot to do mobile manipulation in a home or workplace environment.
Four short links: 13 July 2020
Efficiency, Voice Separation, Design Docs, and Counterfeit Hardware
- Too Efficiency — (Tim Bray) Think of efficiency as optimising for one variable. As anyone who has seen a greyhound or a dalmation up close knows, optimising for one aspect of a complex system can weaken other aspects. Tim cites software security, food, work hours, and others. The best optimisation advice I received was “never set one target, always at least two: what you hope to get, and what you don’t want to lose to get there.”
- Voice Separation — (Facebook AI) a new method to separate up to five voices speaking simultaneously on a single microphone. Our method surpasses previous state-of-the-art performance on several speech source separation benchmarks, including ones with challenging noise and reverberations. One step closer to being able to drop a mic into a room and emerge with a transcript of what was said in a meeting.
- Design Docs at Google — A nice structure which may inspire you when compared to your current design documentation. (You have design documentation, right?)
- Counterfeit Hardware — We bought over 1000 “waterproof” probes or bare chips from more than 70 different vendors on ebay, AliExpress, and online stores -big and small- in 2019. All of the probes bought on ebay and AliExpress contained counterfeit DS18B20 sensors, and almost all sensors bought on those two sites were counterfeit. Supply chains are hard, says counterfeit Barbiee[tm].
Four short links: 10 July 2020
CRDTs, Reverse Engineering Malware, GDPR, and A Whole Lot of Research
- Notes on Splicing CRDTs for Structured Hypertext — It’s a great feeling, seeing everyone around you create beautiful 3D graphical masterpieces or fully complete web applications while you spend twelve hours a day struggling to read technical papers that you don’t even understand. This is what happens when you attempt to do things with CRDTs.
- FinFisher Exposed — FinFisher is not afraid of using all kinds of tricks, ranging from junk instructions and “spaghetti code” to multiple layers of virtual machines and several known and lesser-known anti-debug and defensive measures. What a cunning piece of code this malware is! It has its own virtual machine, which means that typical reverse-engineering tools fail.
- GDPR Explained by People Who Attack It For Having What it Actually Has — Richard Stallman argues [against the GDPR] that laws must prohibit data collection if it is not necessary or not justified, and that systems must be designed not to collect certain data. That is why, since 1995, EU data protection law regulates not only data use, but also the collection of personal data.
- Evidence-Based Software Engineering Based on Publicly-Available Data — the first half discusses the major areas of software engineering, driven by an analysis of the publicly available data. The aim is to provide the information needed to reduce the resources needed to build and maintain software systems, and to make efficient use of available resources. Many topics usually covered in software engineering textbooks are not discussed because public data relating to them could not be located. I don’t know that it has that much to say on software engineering, but it’s a fascinating summary/tour of a whole lot of research in many interesting fields.
Four short links: 9 July 2020
Fallback, Observability, Developer Productivity, and Explorable Explanations
- Avoiding Fallback in Distributed Systems — In this article, the focus will be on how fallback strategies can cause more problems than they fix. We’ll include examples of where fallback strategies have caused problems at Amazon. Finally, we’ll discuss alternatives to fallback that we use at Amazon.
- So You Want to Build an Observability Tool — It may not be as catchy as “three pillars”, but in order to claim your tool delivers observability, it should support/deliver the following: Arbitrarily-wide structured raw events; Context persisted through the execution path; Without indexes or schemas; High-cardinality, high-dimensionality; Ordered dimensions for traceability; Client-side dynamic sampling; An exploratory visual interface that lets you slice and dice and combine dimensions; In close to real-time.
- What Predicts Software Developers Productivity? — Our results suggest that the factors that most strongly correlate with self-rated productivity were non-technical factors, such as job enthusiasm, peer support for new ideas, and receiving useful feedback about job performance. Compared to other knowledge workers, our results also suggest that software developers’ self-rated productivity is more strongly related to task variety and ability to work remotely.
- Loopy — I love visual simulations, especially interactive ones, as a way of generating deep understanding of a complex situation. This lets you build a model of interactions and levers, and then you play with it as it simulates flow through the system. It’s not complex, and you can probably think of ways to improve it (you can, it’s open source). But what do you understand that you could simulate for your colleagues to better understand?
Four short links: 8 July 2020
AI Weirdness, Experimentation, ML Ops, and Engineer Productivity
- When Data is Messy — I love stories that illustrate the ways machine learning can draw the wrong conclusions. Researchers at the University of Tuebingen trained a neural net to recognize images, and then had it point out which parts of the images were the most important for its decision. When they asked it to highlight the most important pixels for the category “tench” (a kind of fish) it highlighted human fingers on a green background. Because most of the tench pictures the neural net had seen were of people holding the fish as a trophy. (via Simon Willison)
- Large Scale Experimentation — The internet era has made data-driven decision making easier, faster, and better than ever before. With it come unique challenges and the possibility to rethink how to optimally experiment. We propose a Bayesian setting that implicitly captures the opportunity cost of having multiple interventions to test. Featuring a nifty simulation to help you feel what it is to learn from experiments.
- CI/CD for Machine Learning — an ecosystem of tools. CML helps you bring your favorite DevOps tools to machine learning. Ops for ML projects is interesting because it brings new problems with no widely-known solutions.
- Engineer Productivity — (Charity Majors) Some of the hardest and most impactful engineering work will be all but invisible on any set of individual metrics. You want people to trust that their manager will have their backs and value their contributions appropriately at review time, if they simply act in the team’s best interest. You do not want them to waste time gaming the metrics or courting personal political favor.
Four short links: 7 July 2020
Scifi Terminal, Detecting Tampering, Wireframing, and Work Schedules
- eDEX-ui — a fullscreen, cross-platform terminal emulator and system monitor that looks and feels like a sci-fi computer interface.
- Announcing Microsoft Freta — Microsoft have a service for detecting evidence of OS and sensor sabotage, such as rootkits and advanced malware, in memory snapshots of live Linux systems.
- Placeholdifier — Turn any website into a live wireframe.
- Work Schedules — (1) How does my organization’s scheduling practices affect employee effectiveness and well-being? (2) Can we better align our work schedules with the needs, desires, and personalities of our employees? (3) What are the implications of creating customized schedules or giving employees more control over their schedules? (4) Can we effectively balance the needs and desires of both the organization and employees? With links to research on each concern.
Four short links: 6 July 2020
Better Conversations, Multicore OCaml, Validation, and Tabular Data
- Debubble — I like that people are trying software like this, to bring out our better angels.
- Parallel Programming in Multicore OCaml — A glimpse at how OCaml is handling parallelism. There’s a lot to learn from the paradigms of “weird languages”.
- Language Independent Validation Rules — Multi-language supported validation rules. The two languages that matter the most? Javascript and whatever you’re using on the backend.
- TaBERT — TaBERT is the first model that has been pretrained to learn representations for both natural language sentences and tabular data. These sorts of representations are useful for natural language understanding tasks that involve joint reasoning over natural language sentences and tables. A representative example is semantic parsing over databases, where a natural language question (e.g., “Which country has the highest GDP?”) is mapped to a program executable over database (DB) tables. Applying ML to database systems is interesting.