https://spectrum.ieee.org/mpguino [ ] IEEE.orgIEEE Xplore Digital LibraryIEEE StandardsMore Sites Sign InJoin IEEE An MPGuino Fuel-Economy Computer with a Retro Look Share FOR THE TECHNOLOGY INSIDER Search: [ ] Explore by topic AerospaceArtificial IntelligenceBiomedicalComputingConsumer ElectronicsEnergyHistory of TechnologyRoboticsSemiconductorsSensors TelecommunicationsTransportation IEEE Spectrum FOR THE TECHNOLOGY INSIDER Topics AerospaceArtificial IntelligenceBiomedicalComputingConsumer ElectronicsEnergyHistory of TechnologyRoboticsSemiconductorsSensors TelecommunicationsTransportation Sections FeaturesNewsOpinionCareersDIYThe Big PictureEngineering Resources More Special ReportsCollectionsExplainersPodcastsVideosNewslettersTop Programming LanguagesRobots Guide For IEEE Members Current IssueMagazine ArchiveThe InstituteTI Archive For IEEE Members Current IssueMagazine ArchiveThe InstituteTI Archive IEEE Spectrum About UsContact UsReprints & PermissionsAdvertising Follow IEEE Spectrum Support IEEE Spectrum IEEE Spectrum is the flagship publication of the IEEE -- the world's largest professional organization devoted to engineering and applied sciences. Our articles, podcasts, and infographics inform our readers about developments in technology, engineering, and science. Join IEEE Subscribe About IEEEContact & SupportAccessibilityNondiscrimination PolicyTerms IEEE Privacy Policy (c) Copyright 2023 IEEE -- All rights reserved. A not-for-profit organization, IEEE is the world's largest technical professional organization dedicated to advancing technology for the benefit of humanity. IEEE websites place cookies on your device to give you the best user experience. By using our websites, you agree to the placement of these cookies. To learn more, read our Privacy Policy. view privacy policy accept & close Enjoy more free content and benefits by creating an account Saving articles to read later requires an IEEE Spectrum account The Institute content is only available for members Downloading full PDF issues is exclusive for IEEE Members Access to Spectrum's Digital Edition is exclusive for IEEE Members Following topics is a feature exclusive for IEEE Members Adding your response to an article requires an IEEE Spectrum account Create an account to access more content and features on IEEE Spectrum, including the ability to save articles to read later, download Spectrum Collections, and participate in conversations with readers and editors. For more exclusive content and features, consider Joining IEEE. Join the world's largest professional organization devoted to engineering and applied sciences and get access to all of Spectrum's articles, archives, PDF downloads, and other benefits. Learn more - CREATE AN ACCOUNTSIGN IN JOIN IEEESIGN IN Close Access Thousands of Articles -- Completely Free Create an account and get exclusive content and features: Save articles, download collections, and talk to tech insiders -- all free! For full access and benefits, join IEEE as a paying member. CREATE AN ACCOUNTSIGN IN DIYTopicMagazineHands OnType An MPGuino Fuel-Economy Computer with a Retro Look This Arduino-based project outputs MPGs on a vintage dashboard gauge David Schneider 23 Feb 2023 5 min read This line drawing shows the location of the device in the car. This DIY fuel-economy gauge can show instantaneous miles per gallon, trip miles per gallon, and tank miles per gallon. James Provost type:departmentsmpguinoArduinofuel economy Russia's invasion of Ukraine and the skyrocketing fuel prices that ensued last year got me thinking about how to cut down on my consumption of gasoline. I thought briefly about purchasing a car that got better gas mileage, but it made sense first to see how much fuel economy I could eek out from the aging econobox I am now driving: a 1991 Toyota Corolla. Possible strategies for improving its fuel economy include putting on some low-rolling-resistance tires, adding a shroud below the engine compartment (to reduce aerodynamic drag), even removing the alternator (as some racers do) or having it operate only when braking. And just driving it differently could also help a great deal. --------------------------------------------------------------------- I knew, though, that it was going to be difficult to test out different driving techniques without more immediate feedback of their effects on fuel economy. Many newer cars show instantaneous fuel consumption on the dash. Mine doesn't. Nor would this be something easy to add. Owners of most vehicles can purchase, for example, a ScanGauge and plug it into the OBD-II (On Board Diagnostics II) data port of their cars, which would allow them to view an estimate of instantaneous MPG while driving. But my car was manufactured years before OBD-II became standard. So I decided to revisit a project I first explored in 2009, when I installed an Arduino-based fuel-economy computer dubbed "MPGuino" in the car that I was driving at the time. An MPGuino taps into two signals available at a car's electronic control unit (ECU): One is from the vehicle-speed sensor; the other runs the fuel injectors. With those two signals, an MPGuino can calculate how fast the car is going and how much fuel it is using, so it can show the driver instantaneous fuel economy in miles per gallon (MPG). It also records the amount of fuel used and the distance traveled over longer periods, so it can display average MPG for a single trip, or for the last tank of gas. I recall that this gizmo was very helpful. But having since sold the car in which I had installed it, I would need now to find another MPGuino for my Corolla. Although the software side of MPGuino is still being actively developed, hardware for it is now harder to come by. The companies listed on the MPGuino Wiki page as selling MPGuino boards or kits at one time are now out of that business. But it wasn't too difficult to cobble one together from schematics using an Arduino (I used an Arduino Nano), a 16-by-2 LCD display board, and a few discrete components. I recalled, though, how much I didn't like having to look at that tiny LCD display while driving. So this time around I was determined to do better. This drawing shows some of the parts used in the project. The components used in this project include two Arduino Nano boards, three push buttons, and a 16-by-2 LCD display board. The unit also includes a vintage VDO oil-pressure gauge, used to show instantaneous fuel economy in units of miles-per-gallon divided by 10.James Provost Some MPGuino enthusiasts, I discovered, were sending its output to a color flat-panel display--for the modern, glass-cockpit look. I decided to go the other direction and have mine show instantaneous gas mileage on an analog gauge. For that, I obtained (through eBay, naturally) a vintage VDO oil-pressure gauge, one that was salvaged from a Porsche that was not too much older than my car. In my youth, I used to drive a Porsche, but just because I am now tooling around in a tattered Corolla doesn't mean I can't still enjoy that cool look of VDO instrumentation! Using that gauge with standard MPGuino hardware proved tricky though. While I'm pretty sure it could be done, the MPGuino code is quite complex, involving interrupts setting and clearing flags. My mind reeled at the prospect of trying to hack on it. So I decided to add a second Arduino Nano to this project, which I figured I could use initially to drive the VDO gauge and later might employ to calculate other parameters for display. It has a serial data connection with the Arduino in the MPGuino, which I found worked best with a 2016-vintage version of the MPGuino software, one tailored to output data serially in different formats. The VDO gauge I obtained is normally connected to a sender unit that varies in resistance with changes in oil pressure. To mimic that variable resistance, I used a general-purpose NPN transistor. The base of this transistor is driven (through a 220-ohm resistor) by one of the digital output pins on the second Arduino, which outputs a pulse-width-modulated (PWM) wave of the appropriate duty cycle to drive the meter. It took some experimentation to determine how to calibrate this analog display. Initially, I wrote code for the second Arduino that would slowly increase the duty cycle of the PWM signal, while showing the current duty cycle through the Arduino's serial monitor. I noted the PWM values that corresponded to each digit on the gauge. I could then use linear interpolation to set the PWM value for numbers between those points, coding things so that the gauge would show MPG divided by 10. (The range on this particular oil-pressure gauge goes from 0 to 10 bars.) The needle on the gauge was a little twitchy initially, so I amended my code so that the gauge would display a running average of the MPG values calculated by the MPGuino. This drawing shows the connections between the main components of this project.A standard MPGuino--which includes an Arduino, an LCD display and three pushbuttons, along with some discrete components (not shown)--is supplemented with a second Arduino and vintage oil-pressure gauge. The variable-resistance sender unit normally used to drive that gauge is replaced here by an NPN transistor, which is switched on and off rapidly by a pulse-width-modulated signal from the second Arduino. James Provost Tapping into the two needed signals at my car's ECU proved to be straightforward--I could get to the relevant wires without having to disassemble the dashboard, and I was able to figure out which they were easily enough from my car's factory-service manual. But I would also need to tap into the car's 12-volt power. Normally, an MPGuino should be connected to a 12-V source that remains always on. Parasitic drain is not an issue, because the MPGuino turns off the display and goes into a low-power sleep mode soon after the car is shut down. Connecting my device in the same way would have been problematic, because the VDO gauge and second Arduino I added would have continuously drawn power. So I added a second power input, tapping into the switched 12-V power that runs the car's radio. This powers the added Arduino (through a second 5-V regulator) and the VDO gauge, which both then turn completely off when I shut down the engine. It's not yet clear how many more miles per gallon I'll be able to achieve just from changes in how I drive the car. But even if I'm not able to improve my gas mileage all that much, I'm finding that having the information presented on a gauge from a Porsche in my old Corolla really makes me smile. From Your Site Articles * Smarter Cruise Control Can Boost Hybrid Fuel Economy and Safety > * Algorithms Will Let You Coast Your Way to a Lower Fuel Bill > * A Fuel-Economy Gauge for the Rest of Us > Related Articles Around the Web * MPGuino: Open source instrumentation - Make: > * MPGuino: Open-source, DIY Fuel Economy Instrumentation for ... > * MPGuino - EcoModder Forum Wiki > type:departmentsmpguinoArduinofuel economy David Schneider David Schneider is a senior editor at IEEE Spectrum. His beat focuses on computing, and he contributes frequently to Spectrum's Hands On column. He holds a bachelor's degree in geology from Yale, a master's in engineering from UC Berkeley, and a doctorate in geology from Columbia. The Conversation (0) A photo-illustration of Chris Taylor TelecommunicationsTopicMagazineTypeOpinion Aalyria's Lasers and Routers Could Close the Digital Divide 6h 3 min read Flight Simulator Gave Birth to 3D Video-Game Graphics Consumer ElectronicsTopicMagazineTypeFeature Flight Simulator Gave Birth to 3D Video-Game Graphics 26 Feb 2023 11 min read 4 section image of 2 red and blue swirls on top and 2 lighter red and blue swirls on bottom Artificial IntelligenceTopicTypeNews 200-Year-Old Math Opens Up AI's Mysterious Black Box 25 Feb 2023 4 min read Related Stories CareersTopicMagazineTypeComputingProfile Eugene H. Spafford: Malware Nemesis History of TechnologyTopicMagazineArticleTypeFebruary 2023 RCA's Lucite Phantom Teleceiver Introduced the Idea of TV DIYTopicArtificial IntelligenceMagazineHands OnTypeFebruary 2023 Play Infinite Versions of AI-Generated Pong on the Go DIYTopicTypeFeature From WinZips to Cat GIFs, Jacob Ziv's Algorithms Have Powered Decades of Compression The lossless-compression pioneer received the 2021 IEEE Medal of Honor Tekla S. Perry 21 Apr 2021 11 min read Vertical Photo: Rami Shlush Yellow Lossless data compression seems a bit like a magic trick. Its cousin, lossy compression, is easier to comprehend. Lossy algorithms are used to get music into the popular MP3 format and turn a digital image into a standard JPEG file. They do this by selectively removing bits, taking what scientists know about the way we see and hear to determine which bits we'd least miss. But no one can make the case that the resulting file is a perfect replica of the original. Not so with lossless data compression. Bits do disappear, making the data file dramatically smaller and thus easier to store and transmit. The important difference is that the bits reappear on command. It's as if the bits are rabbits in a magician's act, disappearing and then reappearing from inside a hat at the wave of a wand. The world of magic had Houdini, who pioneered tricks that are still performed today. And data compression has Jacob Ziv. In 1977, Ziv, working with Abraham Lempel, published the equivalent of Houdini on Magic: a paper in the IEEE Transactions on Information Theory titled "A Universal Algorithm for Sequential Data Compression." The algorithm described in the paper came to be called LZ77--from the authors' names, in alphabetical order, and the year. LZ77 wasn't the first lossless compression algorithm, but it was the first that could work its magic in a single step. Jacob Ziv A photo of Jacob Ziv RAMI SHLUSH Current job: Technion Distinguished Professor Emeritus, Faculty of Electrical Engineering Date of birth: 27 November 1931 Birthplace: Tiberias, British-ruled Palestine (now Israel) Height: 172 centimeters Family: Married to Shoshana, four children, nine grandchildren Education: BSc, Dip-Eng, MSc, all in electrical engineering from Technion, in 1954, 1955, 1957; Sc.D, MIT, 1962 Favorite books: Detective stories, particularly those featuring Perry Mason Favorite kind of music: classical, particularly Bach; jazz Favorite food: Falafel, ice cream How he starts the day: A cup of espresso and a piece of dark chocolate Favorite movie: Casablanca (1942) Organizational memberships: Israel Academy of Science and Humanities, U.S. National Academy of Engineering, U.S. National Academy of Sciences, American Philosophical Society, IEEE Fellow Major awards: IEEE Medal of Honor "for fundamental contributions to information theory and data compression technology, and for distinguished research leadership"; BBVA Foundation Frontiers of Knowledge Award; Claude E. Shannon Award of the IEEE Information Theory Society The following year, the two researchers issued a refinement, LZ78. That algorithm became the basis for the Unix compress program used in the early '80s; WinZip and Gzip, born in the early '90s; and the GIF and TIFF image formats. Without these algorithms, we'd likely be mailing large data files on discs instead of sending them across the Internet with a click, buying our music on CDs instead of streaming it, and looking at Facebook feeds that don't have bouncing animated images. Ziv went on to partner with other researchers on other innovations in compression. It is his full body of work, spanning more than half a century, that earned him the 2021 IEEE Medal of Honor "for fundamental contributions to information theory and data compression technology, and for distinguished research leadership." Ziv was born in 1931 to Russian immigrants in Tiberias, a city then in British-ruled Palestine and now part of Israel. Electricity and gadgets--and little else--fascinated him as a child. While practicing violin, for example, he came up with a scheme to turn his music stand into a lamp. He also tried to build a Marconi transmitter from metal player-piano parts. When he plugged the contraption in, the entire house went dark. He never did get that transmitter to work. When the Arab-Israeli War began in 1948, Ziv was in high school. Drafted into the Israel Defense Forces, he served briefly on the front lines until a group of mothers held organized protests, demanding that the youngest soldiers be sent elsewhere. Ziv's reassignment took him to the Israeli Air Force, where he trained as a radar technician. When the war ended, he entered Technion--Israel Institute of Technology to study electrical engineering. After completing his master's degree in 1955, Ziv returned to the defense world, this time joining Israel's National Defense Research Laboratory (now Rafael Advanced Defense Systems) to develop electronic components for use in missiles and other military systems. The trouble was, Ziv recalls, that none of the engineers in the group, including himself, had more than a basic understanding of electronics. Their electrical engineering education had focused more on power systems. "We had about six people, and we had to teach ourselves," he says. "We would pick a book and then study together, like religious Jews studying the Hebrew Bible. It wasn't enough." The group's goal was to build a telemetry system using transistors instead of vacuum tubes. They needed not only knowledge, but parts. Ziv contacted Bell Telephone Laboratories and requested a free sample of its transistor; the company sent 100. "That covered our needs for a few months," he says. "I give myself credit for being the first one in Israel to do something serious with the transistor." In 1959, Ziv was selected as one of a handful of researchers from Israel's defense lab to study abroad. That program, he says, transformed the evolution of science in Israel. Its organizers didn't steer the selected young engineers and scientists into particular fields. Instead, they let them pursue any type of graduate studies in any Western nation. "In order to run a computer program at the time, you had to use punch cards and I hated them. That is why I didn't go into real computer science." Ziv planned to continue working in communications, but he was no longer interested in just the hardware. He had recently read Information Theory (Prentice-Hall, 1953), one of the earliest books on the subject, by Stanford Goldman, and he decided to make information theory his focus. And where else would one study information theory but MIT, where Claude Shannon, the field's pioneer, had started out? Ziv arrived in Cambridge, Mass., in 1960. His Ph.D. research involved a method of determining how to encode and decode messages sent through a noisy channel, minimizing the probability and error while at the same time keeping the decoding simple. "Information theory is beautiful," he says. "It tells you what is the best that you can ever achieve, and [it] tells you how to approximate the outcome. So if you invest the computational effort, you can know you are approaching the best outcome possible." Ziv contrasts that certainty with the uncertainty of a deep-learning algorithm. It may be clear that the algorithm is working, but nobody really knows whether it is the best result possible. While at MIT, Ziv held a part-time job at U.S. defense contractor Melpar, where he worked on error-correcting software. He found this work less beautiful. "In order to run a computer program at the time, you had to use punch cards," he recalls. "And I hated them. That is why I didn't go into real computer science." Back at the Defense Research Laboratory after two years in the United States, Ziv took charge of the Communications Department. Then in 1970, with several other coworkers, he joined the faculty of Technion . Younger photo of Jacob Ziv two men in front of a chalk board.Jacob Ziv (with glasses), who became chair of Technion's electrical engineering department in the 1970s, worked earlier on information theory with Moshe Zakai. The two collaborated on a paper describing what became known as the Ziv-Zakai bound.Photo: Jacob Ziv/Technion There he met Abraham Lempel. The two discussed trying to improve lossless data compression. The state of the art in lossless data compression at the time was Huffman coding. This approach starts by finding sequences of bits in a data file and then sorting them by the frequency with which they appear. Then the encoder builds a dictionary in which the most common sequences are represented by the smallest number of bits. This is the same idea behind Morse code: The most frequent letter in the English language, e, is represented by a single dot, while rarer letters have more complex combinations of dots and dashes. Huffman coding, while still used today in the MPEG-2 compression format and a lossless form of JPEG, has its drawbacks. It requires two passes through a data file: one to calculate the statistical features of the file, and the second to encode the data. And storing the dictionary along with the encoded data adds to the size of the compressed file. Ziv and Lempel wondered if they could develop a lossless data-compression algorithm that would work on any kind of data, did not require preprocessing, and would achieve the best compression for that data, a target defined by something known as the Shannon entropy. It was unclear if their goal was even possible. They decided to find out. Ziv says he and Lempel were the "perfect match" to tackle this question. "I knew all about information theory and statistics, and Abraham was well equipped in Boolean algebra and computer science." The two came up with the idea of having the algorithm look for unique sequences of bits at the same time that it's compressing the data, using pointers to refer to previously seen sequences. This approach requires only one pass through the file, so it's faster than Huffman coding. Ziv explains it this way: "You look at incoming bits to find the longest stretch of bits for which there is a match in the past. Let's say that first incoming bit is a 1. Now, since you have only one bit, you have never seen it in the past, so you have no choice but to transmit it as is." "But then you get another bit," he continues. "Say that's a 1 as well. So you enter into your dictionary 1-1. Say the next bit is a 0. So in your dictionary you now have 1-1 and also 1-0." Here's where the pointer comes in. The next time that the stream of bits includes a 1-1 or a 1-0, the software doesn't transmit those bits. Instead it sends a pointer to the location where that sequence first appeared, along with the length of the matched sequence. The number of bits that you need for that pointer is very small. "Information theory is beautiful. It tells you what is the best that you can ever achieve, and (it) tells you how to approximate the outcome." "It's basically what they used to do in publishing TV Guide," Ziv says. "They would run a synopsis of each program once. If the program appeared more than once, they didn't republish the synopsis. They just said, go back to page x." Decoding in this way is even simpler, because the decoder doesn't have to identify unique sequences. Instead it finds the locations of the sequences by following the pointers and then replaces each pointer with a copy of the relevant sequence. The algorithm did everything Ziv and Lempel had set out to do--it proved that universally optimum lossless compression without preprocessing was possible. "At the time they published their work, the fact that the algorithm was crisp and elegant and was easily implementable with low computational complexity was almost beside the point," says Tsachy Weissman, an electrical engineering professor at Stanford University who specializes in information theory. "It was more about the theoretical result." Eventually, though, researchers recognized the algorithm's practical implications, Weissman says. "The algorithm itself became really useful when our technologies started dealing with larger file sizes beyond 100,000 or even a million characters." "Their story is a story about the power of fundamental theoretical research," Weissman adds. "You can establish theoretical results about what should be achievable--and decades later humanity benefits from the implementation of algorithms based on those results." Ziv and Lempel kept working on the technology, trying to get closer to entropy for small data files. That work led to LZ78. Ziv says LZ78 seems similar to LZ77 but is actually very different, because it anticipates the next bit. "Let's say the first bit is a 1, so you enter in the dictionary two codes, 1-1 and 1-0," he explains. You can imagine these two sequences as the first branches of a tree." "When the second bit comes," Ziv says, "if it's a 1, you send the pointer to the first code, the 1-1, and if it's 0, you point to the other code, 1-0. And then you extend the dictionary by adding two more possibilities to the selected branch of the tree. As you do that repeatedly, sequences that appear more frequently will grow longer branches." "It turns out," he says, "that not only was that the optimal [approach], but so simple that it became useful right away." Photo of Jacob Ziv (left) and Abraham Lempel.Jacob Ziv (left) and Abraham Lempel published algorithms for lossless data compression in 1977 and 1978, both in the IEEE Transactions on Information Theory. The methods became known as LZ77 and LZ78 and are still in use today. Photo: Jacob Ziv/Technion While Ziv and Lempel were working on LZ78, they were both on sabbatical from Technion and working at U.S. companies. They knew their development would be commercially useful, and they wanted to patent it. "I was at Bell Labs," Ziv recalls, "and so I thought the patent should belong to them. But they said that it's not possible to get a patent unless it's a piece of hardware, and they were not interested in trying." (The U.S. Supreme Court didn't open the door to direct patent protection for software until the 1980s.) However, Lempel's employer, Sperry Rand Corp., was willing to try. It got around the restriction on software patents by building hardware that implemented the algorithm and patenting that device. Sperry Rand followed that first patent with a version adapted by researcher Terry Welch, called the LZW algorithm. It was the LZW variant that spread most widely. Ziv regrets not being able to patent LZ78 directly, but, he says, "We enjoyed the fact that [LZW] was very popular. It made us famous, and we also enjoyed the research it led us to." One concept that followed came to be called Lempel-Ziv complexity, a measure of the number of unique substrings contained in a sequence of bits. The fewer unique substrings, the more a sequence can be compressed. This measure later came to be used to check the security of encryption codes; if a code is truly random, it cannot be compressed. Lempel-Ziv complexity has also been used to analyze electroencephalograms--recordings of electrical activity in the brain--to determine the depth of anesthesia, to diagnose depression, and for other purposes. Researchers have even applied it to analyze pop lyrics, to determine trends in repetitiveness. Over his career, Ziv published some 100 peer-reviewed papers. While the 1977 and 1978 papers are the most famous, information theorists that came after Ziv have their own favorites. For Shlomo Shamai, a distinguished professor at Technion, it's the 1976 paper that introduced the Wyner-Ziv algorithm, a way of characterizing the limits of using supplementary information available to the decoder but not the encoder. That problem emerges, for example, in video applications that take advantage of the fact that the decoder has already deciphered the previous frame and thus it can be used as side information for encoding the next one. For Vincent Poor, a professor of electrical engineering at Princeton University, it's the 1969 paper describing the Ziv-Zakai bound, a way of knowing whether or not a signal processor is getting the most accurate information possible from a given signal. Ziv also inspired a number of leading data-compression experts through the classes he taught at Technion until 1985. Weissman, a former student, says Ziv "is deeply passionate about the mathematical beauty of compression as a way to quantify information. Taking a course from him in 1999 had a big part in setting me on the path of my own research." He wasn't the only one so inspired. "I took a class on information theory from Ziv in 1979, at the beginning of my master's studies," says Shamai. "More than 40 years have passed, and I still remember the course. It made me eager to look at these problems, to do research, and to pursue a Ph.D." In recent years, glaucoma has taken away most of Ziv's vision. He says that a paper published in IEEE Transactions on Information Theory this January is his last. He is 89. "I started the paper two and a half years ago, when I still had enough vision to use a computer," he says. "At the end, Yuval Cassuto, a younger faculty member at Technion, finished the project." The paper discusses situations in which large information files need to be transmitted quickly to remote databases. As Ziv explains it, such a need may arise when a doctor wants to compare a patient's DNA sample to past samples from the same patient, to determine if there has been a mutation, or to a library of DNA, to determine if the patient has a genetic disease. Or a researcher studying a new virus may want to compare its DNA sequence to a DNA database of known viruses. "The problem is that the amount of information in a DNA sample is huge," Ziv says, "too much to be sent by a network today in a matter of hours or even, sometimes, in days. If you are, say, trying to identify viruses that are changing very quickly in time, that may be too long." The approach he and Cassuto describe involves using known sequences that appear commonly in the database to help compress the new data, without first checking for a specific match between the new data and the known sequences. "I really hope that this research might be used in the future," Ziv says. If his track record is any indication, Cassuto-Ziv--or perhaps CZ21--will add to his legacy. This article appears in the May 2021 print issue as "Conjurer of Compression." Related Articles Around the Web * An introduction to Generative Art: what it is, and how you make it > * Creating Art With Code > Keep Reading |Show less