<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>The Scroll Art Museum - News</title><link href="/" rel="alternate"/><link href="https://scrollart.org/feeds/news.atom.xml" rel="self"/><id>/</id><updated>2026-09-30T00:00:00-04:00</updated><subtitle>Programmer art that begins in the terminal.</subtitle><entry><title>Site Relaunch 2026</title><link href="news/relaunch-sep-2026/" rel="alternate"/><published>2026-09-30T00:00:00-04:00</published><updated>2026-09-30T00:00:00-04:00</updated><author><name>Al Sweigart</name></author><id>tag:None,2026-09-30:news/relaunch-sep-2026/</id><summary type="html">&lt;p&gt;The Scroll Art Museum website is relaunching with a new design, with new artwork and features planned.&lt;/p&gt;
&lt;p&gt;From the curator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm very pleased with the new design. The site now offers a full screen experience and an automated tour, making it well suited for screensaver displays. Its customization options allow …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;p&gt;The Scroll Art Museum website is relaunching with a new design, with new artwork and features planned.&lt;/p&gt;
&lt;p&gt;From the curator:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I'm very pleased with the new design. The site now offers a full screen experience and an automated tour, making it well suited for screensaver displays. Its customization options allow visitors without programming experience to experiment with and interactively modify the artwork. Several pieces that I've had waiting in development can now be published online and experienced as intended. I also have programming tutorials and outreach with other artists for new works. It's an exciting moment for the ScrAM.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="News"/></entry><entry><title>PyBay 2024 - Scrolling Animated ASCII Art in Python</title><link href="news/pybay-2024-scrolling-animated-ascii-art/" rel="alternate"/><published>2024-09-21T00:00:00-04:00</published><updated>2024-09-21T00:00:00-04:00</updated><author><name>Al Sweigart</name></author><id>tag:None,2024-09-21:news/pybay-2024-scrolling-animated-ascii-art/</id><summary type="html">&lt;p&gt;Al Sweigart discusses scroll art at the &lt;a href="https://2024.pybay.org/"&gt;PyBay 2024&lt;/a&gt; conference in San Francisco on September 21, 2024. This is similar to the &lt;a href="news/pytexas-2024-talk-20-goto-10/"&gt;PyTexas 2024 talk&lt;/a&gt;. The talk was recorded and &lt;a href="https://pyvideo.org/pybay-2024/scrolling-animated-ascii-art-in-python.html"&gt;is available on pyvideo.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is an imperfect, machine-generated transcript:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Okay, so I'm going to give a talk on …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Al Sweigart discusses scroll art at the &lt;a href="https://2024.pybay.org/"&gt;PyBay 2024&lt;/a&gt; conference in San Francisco on September 21, 2024. This is similar to the &lt;a href="news/pytexas-2024-talk-20-goto-10/"&gt;PyTexas 2024 talk&lt;/a&gt;. The talk was recorded and &lt;a href="https://pyvideo.org/pybay-2024/scrolling-animated-ascii-art-in-python.html"&gt;is available on pyvideo.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here is an imperfect, machine-generated transcript:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Okay, so I'm going to give a talk on scroll art, but I thought I'd just start off by showing you what it is.&lt;/p&gt;
&lt;p&gt;This is about 2,000 lines of Python code. The output is all to this terminal window, which I'll be controlling from this other terminal window right here.&lt;/p&gt;
&lt;p&gt;Using a live demo music video of procedurally generated code—what could possibly go wrong?&lt;/p&gt;
&lt;p&gt;Yes, the music is &lt;em&gt;The Forbidden Zone&lt;/em&gt;, composed by Danny Elfman in the early 1980s for a cult classic movie of the same name. There are some light flashing elements, just in case you're sensitive to that.&lt;/p&gt;
&lt;p&gt;Thank you. Lights, please.&lt;/p&gt;
&lt;p&gt;[music plays]&lt;/p&gt;
&lt;p&gt;Okay, lights please. Ah, thank you. Hello. Okay.&lt;/p&gt;
&lt;p&gt;I like to make a visual impression. In fact, there's a lot of nice slides in this talk, so you might want to have your camera phone ready, if you're the type of person who likes to take photos and post them to social media. Only if you're that type of person; I'm not asking. But be sure to put hashtag PyBay if you do.&lt;/p&gt;
&lt;p&gt;Okay, talk begins now.&lt;/p&gt;
&lt;p&gt;Hello. Thanks for having me here, and thank you to all of the PyBay organizers and volunteers who make this conference not only possible, but wonderful.&lt;/p&gt;
&lt;p&gt;There's a lot in these slides, but you can download the slides later from bit.ly slash PyBay 2024 scroll art, and you can see the art at scrollart.org.&lt;/p&gt;
&lt;p&gt;It's great to be here in the beautiful Bay Area on this, our most sacred of holy days: the 21st of September.&lt;/p&gt;
&lt;p&gt;I'm Al Swigert. I'm mostly known as the author of &lt;em&gt;Automate the Boring Stuff with Python: Practical Programming for Total Beginners&lt;/em&gt;. It's a programming book for total beginners. It's like, what is the minimum amount of coding an office worker needs to be productive with a computer? So, computer programming as a trade rather than a science.&lt;/p&gt;
&lt;p&gt;I've also written a few other books. Somehow, I found myself going from a kid who wanted to program Zelda, to a computer science student, to a software engineer adult, and now I'm someone who spends a lot of time thinking about how to get people interested in coding, especially with an approachable language like Python, which is really what this talk is about.&lt;/p&gt;
&lt;p&gt;You can read all of these books for free at inventwithpython.com under a Creative Commons license. I'd like to thank my publisher, No Starch Press, for having the foresight to allow me to publish my books under a Creative Commons license. It's helped me generate more word of mouth more than anything else.&lt;/p&gt;
&lt;p&gt;And I'd also like to thank all librarians for the great amount of work they do sharing books with everyone. Thank you. Yes.&lt;/p&gt;
&lt;p&gt;These are interesting times, and if nonprofit institutions like libraries, or Wikipedia, or the Internet Archive didn't exist, I'm not sure if we would create them. And if we lose them, I'm not sure if we'd get them back. I appreciate them. I support them. I do not take them for granted.&lt;/p&gt;
&lt;p&gt;So, on the left is an artist who fills glass fish bowls with different-colored sand and pushes the grains into place to draw portraits. In the center is an artist who arranges beads on a flat board and films herself in slow motion tossing them upwards. On the right is an artist who carves patterns into the skin of a watermelon, getting different colors as they carve deeper.&lt;/p&gt;
&lt;p&gt;On the left is an artist who draws portraits only tracing along the edge of a coin. In the center is an artist who completes their illustrations using the shadow cast by common household objects. On the right is an artist who has several elaborate bubble-making tools.&lt;/p&gt;
&lt;p&gt;A good friend of mine once told me that not only will humans continue to create new art, but that there will always be new forms of art.&lt;/p&gt;
&lt;p&gt;So I'd like to talk about something I call scroll art.&lt;/p&gt;
&lt;p&gt;Scroll art is the text output of a command-line program that scrolls upward as the program continues to generate text. It's easy for beginners to create. You really only need to understand the print function and loops to make it, but it's also fun for experienced developers to explore. It's kind of a "minutes to learn, lifetime to master" sort of thing.&lt;/p&gt;
&lt;p&gt;It's sort of like an animated form of ASCII art. But, well, actually, it's easier to show you.&lt;/p&gt;
&lt;p&gt;Here's some Python programs, but to render them in the browser, I had to port them to JavaScript. I believe there's a PyScript talk after this one in this very room.&lt;/p&gt;
&lt;p&gt;So this is Zigzag. It's incredibly simple, and from the output, if you're a programmer, you can easily figure out how to make it.&lt;/p&gt;
&lt;p&gt;There's just a string of asterisks, and it starts off with zero indentation, and then one space of indentation, then two spaces of indentation, and keeps increasing over and over again until it reaches a maximum. And then it starts reducing the amount of indentation, and it produces this animated zigzag pattern.&lt;/p&gt;
&lt;p&gt;Really, a lot of the primary concern that people have when they're first learning to code is they think that coding means you have to know a lot about math. And that's kind of true and kind of not true.&lt;/p&gt;
&lt;p&gt;Really, I think a lot of it comes down to: can you identify patterns and sort of reverse-engineer them and figure out how to express them as code?&lt;/p&gt;
&lt;p&gt;And so, looking at this, you can kind of see, like, "Oh, right. I see the pattern here. We're increasing the spaces and then decreasing the spaces."&lt;/p&gt;
&lt;p&gt;This next one is called Star Field. It's random. It uses random numbers, so it's randomly generated. It's never the same each time.&lt;/p&gt;
&lt;p&gt;But you can see that the density of the asterisks in the star field continues to increase until it reaches 100%, and it's just a straight field of asterisks. And then it starts decreasing to become more and more sparse and empty, and then it just repeats in that cycle.&lt;/p&gt;
&lt;p&gt;Now, a quarter century ago, there was a movie that came out called &lt;em&gt;The Matrix&lt;/em&gt;, and it had this iconic visual of sort of like raindrop alphanumerics falling down the screen.&lt;/p&gt;
&lt;p&gt;Of course, with scroll art, we can only scroll things upwards. But I thought, "Hey, that's pretty cool. I can make that as scroll art as well."&lt;/p&gt;
&lt;p&gt;And this I call Proton Stream, because it just reminds me of a Ghostbusters proton pack. These are just characters that are doing a random left-right walk, but with the one constraint that they always have to be within a certain amount of space of each other. And I really quicken the speed of the scrolling to give it a sort of frenetic energy right here.&lt;/p&gt;
&lt;p&gt;And then there's this one. This one's kind of hard to explain, so I'm just going to go ahead and pause this.&lt;/p&gt;
&lt;p&gt;Okay, so each column has a binary state. It's either going to be a period or it's an at symbol. And randomly, I'll have what I call a toggler that appears, and it's either going to start moving left or right, toggling the state of that column.&lt;/p&gt;
&lt;p&gt;So this starts forming a little triangle down the side. And, of course, when two togglers cross paths, they cancel each other out.&lt;/p&gt;
&lt;p&gt;But the end effect is that you have this really weird emergent behavior that's kind of fun to look at, even though the actual code for this is really small.&lt;/p&gt;
&lt;p&gt;In fact, the code for all of these is usually just, like, I don't know, less than 50 lines of code. This is something that I really strive for, as far as making this something that's approachable for beginners.&lt;/p&gt;
&lt;p&gt;So you've seen scroll art, but let's go ahead and define it.&lt;/p&gt;
&lt;p&gt;Scroll art is similar to something called ASCII art, which was popular in the '90s as a way to make art out of text characters. Here's a cat and a dolphin by prolific ASCII artist Joan G. Stark.&lt;/p&gt;
&lt;p&gt;Scroll art is made out of monospace text characters by a program that's displayed in a terminal window. So all the characters are the same width, and it's animated when the terminal window fills up with text and the text starts scrolling upwards.&lt;/p&gt;
&lt;p&gt;So it's like if you were looking at a static text file and you just kept hitting the down arrow key over and over again.&lt;/p&gt;
&lt;p&gt;The main limitations of scroll art are that you can't move the cursor arbitrarily around the screen, and you can't erase text once it's been printed. But even within those constraints, there is a wide variety of creativity that you can employ.&lt;/p&gt;
&lt;p&gt;So I've posted my examples at scrollart.org.&lt;/p&gt;
&lt;p&gt;Now, if you are like me and of a certain age, you might remember this as one of your first programs that you ever wrote in a programming language called BASIC.&lt;/p&gt;
&lt;p&gt;I've named this scroll art, but I didn't really invent it. This has been done before.&lt;/p&gt;
&lt;p&gt;This program just prints "Hello" to the screen, and then the second instruction tells it to go back to the first instruction. So it prints it again and again, and then your screen just fills up with the word "Hello."&lt;/p&gt;
&lt;p&gt;The program would only stop once you pressed Control-C. But back then, I didn't know about Control-C, so the way I stopped infinite loops was just turning off the computer and then turning it back on again.&lt;/p&gt;
&lt;p&gt;So.&lt;/p&gt;
&lt;p&gt;But I want to stress that scroll art is not meant to be some kind of retro-computing thing.&lt;/p&gt;
&lt;p&gt;You know, a lot of people have a dim view of nostalgia, and I am one of those people. I'm interested in teaching people to code here in the 21st century.&lt;/p&gt;
&lt;p&gt;I don't want to make that mistake that, "Oh, people today will want to learn how to code the way I learned how to code when I was younger and didn't have to worry about mortgages."&lt;/p&gt;
&lt;p&gt;So the text-based nature of scroll art programs—it's not supposed to be some sort of old-school throwback. It's a constraint that manages expectations and makes programming approachable.&lt;/p&gt;
&lt;p&gt;So it's computer art, but without the complicated shaders and 3D vectors or AI-generated art or anything like that.&lt;/p&gt;
&lt;p&gt;So much of computing today is this magical black box, and it's really hard to connect how the code we write translates to what we see on the screen.&lt;/p&gt;
&lt;p&gt;But with scroll art, scroll art is text and the source code is text. So it really gives you this sense of cause and effect, to be able to point to the print function call and say, "Ah, this is the line of code that produces this line of output that I see."&lt;/p&gt;
&lt;p&gt;So this makes scroll art a great way to teach programming. But more importantly, sticking to text means that any computer can do scroll art. You don't need a modern laptop or a high-end graphics card.&lt;/p&gt;
&lt;p&gt;I even ported one of the scroll art programs I made to a literal Apple IIe.&lt;/p&gt;
&lt;p&gt;These photos are from a place called the Recurse Center in New York. RC is a 12-week program. It's sort of like an artist retreat, except for software developers.&lt;/p&gt;
&lt;p&gt;I first heard about it here at PyCon several years ago, but I only finally had time this year to apply. So it's where I started making scroll art, sort of out of procrastination from the project that I was supposed to be working on.&lt;/p&gt;
&lt;p&gt;Anyway, but I just want to show that scroll art is something that we could have been making 40 years ago. And I'm sure some people did, but we just didn't have the internet and social media to spread ideas like this.&lt;/p&gt;
&lt;p&gt;We didn't have conferences like PyCon that were a lot more accessible and easy to attend. Or, you know, maybe you're watching this talk in the future on YouTube, if that website is still around.&lt;/p&gt;
&lt;p&gt;But, you know, it was hard to spread these ideas of cool things you can do with computers.&lt;/p&gt;
&lt;p&gt;And every programming language can print text, but Python is especially suited for scroll art. It has a simple, readable syntax that's good for beginners. Loops are straightforward. It has a rich set of features for string manipulation and easily handles Unicode characters for non-English text.&lt;/p&gt;
&lt;p&gt;That's a major limitation of ASCII, the character set. That's the "A" in ASCII: American characters. Literally American characters only, because it has a dollar sign, but it doesn't have a British pound symbol.&lt;/p&gt;
&lt;p&gt;Scroll art is also great for procedural generation, and Python's random module is really straightforward when it comes to getting random integers or setting the random seed value.&lt;/p&gt;
&lt;p&gt;And you control the rate of scrolling by introducing pauses, so &lt;code&gt;time.sleep&lt;/code&gt; is really straightforward to use for that.&lt;/p&gt;
&lt;p&gt;And again, scroll art isn't a new technology, so all the things that already make Python great to use make it great to use for scroll art.&lt;/p&gt;
&lt;p&gt;So sticking to text also means that you don't need to install additional libraries, and that's a really big one.&lt;/p&gt;
&lt;p&gt;If you've ever had a Python workshop, you've probably had to have a pre-workshop workshop just to get Python installed on everyone's computer and set up, and also install all the third-party packages that they're going to be using.&lt;/p&gt;
&lt;p&gt;But scroll art just uses the print function and also loops. So this means that you can do scroll art even in browser-based REPLs or interactive shells, which means you can do scroll art programming from tablets and smartphones.&lt;/p&gt;
&lt;p&gt;You don't have to invent anything new. You can just use existing tools and platforms.&lt;/p&gt;
&lt;p&gt;Now, the tech industry loves to talk about radical innovation and revolutionizing our world, especially when it comes to education. But a lot of what the tech industry produces assumes a certain level of affluence or a certain level of expertise.&lt;/p&gt;
&lt;p&gt;A big part of Python's success has been making a free, open-source programming language that is approachable to people outside of the software field.&lt;/p&gt;
&lt;p&gt;Now, don't get me wrong. I think there's a lot of great stuff out there to get people, especially young people, into tech. But these things can't get everyone into tech.&lt;/p&gt;
&lt;p&gt;We need something that scales, not because it is fancy and high-tech, but something that scales because it's boring and simple.&lt;/p&gt;
&lt;p&gt;So scroll art is not about retro computing.&lt;/p&gt;
&lt;p&gt;When I say that any computer can do scroll art, I'm not thinking about PCs from the '80s. I'm talking about the tablets and Chromebooks and old desktops that parents have gathered for an after-school computer club.&lt;/p&gt;
&lt;p&gt;Or, I mean, the computers that are used by career switchers who don't want to drop a lot of money when they're just starting out.&lt;/p&gt;
&lt;p&gt;So that's what scroll art is. But why should you care?&lt;/p&gt;
&lt;p&gt;So I have an interest in programming education, which is mostly about getting people interested in programming.&lt;/p&gt;
&lt;p&gt;Some of that is teaching concepts, but it's mostly about generating enthusiasm. And most beginners want to make things.&lt;/p&gt;
&lt;p&gt;The worst feeling for beginners is they master all of these abstract concepts, and then they turn to face a blank editor and they just don't know how to write a program. They don't know how to apply all the things that they've learned.&lt;/p&gt;
&lt;p&gt;Beginners don't really have a lot of knowledge to make big things, but they have a little bit of knowledge to make small things. And small things can still be interesting.&lt;/p&gt;
&lt;p&gt;I teach Python because Python is so widespread, but I need programming projects that I can really use in any language without a lot of setup, and also no matter what hardware they have access to.&lt;/p&gt;
&lt;p&gt;But let's say that you're a senior software engineer with the latest MacBook. Scroll art is still something for you.&lt;/p&gt;
&lt;p&gt;Scroll art projects are great practice when you're learning a new programming language and you just need some small, well-defined projects to write.&lt;/p&gt;
&lt;p&gt;But even in languages that you're well-versed in, scroll art's limitations force you to apply your wide skill set in very specific ways.&lt;/p&gt;
&lt;p&gt;And there are endless ways to make scroll art. So let's examine some of them.&lt;/p&gt;
&lt;p&gt;First, I'm going to say something incredibly pretentious: scroll art creates the illusion—the illusion of movement and infinity.&lt;/p&gt;
&lt;p&gt;Ooh, wow. That's really deep.&lt;/p&gt;
&lt;p&gt;Here's what I mean.&lt;/p&gt;
&lt;p&gt;Scroll art is animated, but you aren't writing any animation code. You're just calling the print function over and over again.&lt;/p&gt;
&lt;p&gt;But you've seen it. This looks like upward movement. And if you add in random numbers, the output never repeats. It's sort of like the digits of pi.&lt;/p&gt;
&lt;p&gt;And if you put all of that into an infinite while loop, it just goes on forever.&lt;/p&gt;
&lt;p&gt;So it's like a lava lamp. It moves. It never repeats. But it has this simplicity, and it's kind of neat to stare at.&lt;/p&gt;
&lt;p&gt;So those are the kinds of programming projects that you can make with scroll art.&lt;/p&gt;
&lt;p&gt;So here's some different types.&lt;/p&gt;
&lt;p&gt;There are periodic scroll art programs that do a simple repetition. Zigzag is an example of that. It's not actually moving, but it has the illusion of movement. That's a great program to start off with.&lt;/p&gt;
&lt;p&gt;But if you want to get a little bit more complicated, and you know about the &lt;code&gt;math.sin&lt;/code&gt; function, you can add a little sine-wave version of that zigzag.&lt;/p&gt;
&lt;p&gt;I don't think I've ever used the mathematical sine function except when making silly art projects, by the way. Twenty years of a career: never use sine and cosine.&lt;/p&gt;
&lt;p&gt;Another one that I like to start people off with is this periodic program just called Spike. And it just produces this long spike over and over again.&lt;/p&gt;
&lt;p&gt;I kind of watch this, and I get this, like, rhythmic thumping noise in my head when I stare at it for too long.&lt;/p&gt;
&lt;p&gt;Here's something even simpler.&lt;/p&gt;
&lt;p&gt;I call this wallpaper scroll art because these are just static images that repeat over and over again. It's a lot of fun if you're just, like, playing around with repeating ASCII-art images.&lt;/p&gt;
&lt;p&gt;This is actually the carpet pattern from the Overlook Hotel from the movie &lt;em&gt;The Shining&lt;/em&gt;. But I'd also just play around with, like, little hexagons. The forward and backward slashes are great for that, little brick tiles, and a bunch of little miniature skulls flying around.&lt;/p&gt;
&lt;p&gt;And if you need new inspiration for new patterns, you can always just do a Google Image search for tessellation or tiles. You get tons of good results.&lt;/p&gt;
&lt;p&gt;It helps to change the search settings to find just black-and-white images or line-art images.&lt;/p&gt;
&lt;p&gt;Not everything's going to be useful, but I almost always get a handful of ideas just by sifting through existing artwork.&lt;/p&gt;
&lt;p&gt;Not just that, but I also started doing searches for Islamic geometric art. There's an entire history of art here that you can learn about.&lt;/p&gt;
&lt;p&gt;This whole process has been kind of incredible because I'll start off by, like, trying to figure out easy programming projects for beginners, and then I'm on the Wikipedia page for the Iberian Peninsula.&lt;/p&gt;
&lt;p&gt;There's a traditional form of Japanese embroidery called sashiko that involves white threads on indigo-dyed fabric to create these beautiful geometric patterns. So that's another great source of inspiration for scroll art.&lt;/p&gt;
&lt;p&gt;But ever since I've started looking at this, I kind of started looking at the world differently.&lt;/p&gt;
&lt;p&gt;These are just paver stones in Prospect Park in Brooklyn, and I just was walking down, staring at the floor, like I do when I'm walking around. And the hexagon patterns are neat, but also just the individual cracks there.&lt;/p&gt;
&lt;p&gt;And so now—I haven't finished this—but I'm working on this sort of, like, lightning-cracked algorithm involving underscores and slash ASCII-art characters.&lt;/p&gt;
&lt;p&gt;Now, wallpaper scroll art has this static look, but you can start introducing variations to the patterns with random numbers.&lt;/p&gt;
&lt;p&gt;The main example I have here is Ducklings.&lt;/p&gt;
&lt;p&gt;So this program goes through various combinations of ducklings. They're either facing left or right, and their mouths can be open or closed, and their wings can be in one of three positions, and there's three different styles of eyes.&lt;/p&gt;
&lt;p&gt;And it's really cute.&lt;/p&gt;
&lt;p&gt;This is actually a pretty good crowd pleaser, usually, especially because sometimes, randomly, they'll be, like, right next to each other and it looks like they're kissing.&lt;/p&gt;
&lt;p&gt;Aww.&lt;/p&gt;
&lt;p&gt;So I have this style of scroll art I call varying density. The Star Field one was an example of that, where it goes from mostly empty to then completely full and then back to empty.&lt;/p&gt;
&lt;p&gt;But I also have this one, which I call Triangle Grid Scaffolding.&lt;/p&gt;
&lt;p&gt;So I broke this down—let me go ahead and pause this—I broke this one down into two lines.&lt;/p&gt;
&lt;p&gt;So these are always connected. You never just see, like, a single slash by itself, but they're all part of this hidden triangular grid that sort of reveals itself as it becomes more and more fleshed out.&lt;/p&gt;
&lt;p&gt;And you can see the entire grid pattern right here.&lt;/p&gt;
&lt;p&gt;So you can just take any sort of repeating tessellated pattern like this and apply the varying-density model to it.&lt;/p&gt;
&lt;p&gt;I also have another one where I have these striped triangles that are right-side-up triangles and upside-down triangles that also start getting more and more dense, and then using two different types of slashes.&lt;/p&gt;
&lt;p&gt;So, all in all, there's four different combinations of these things.&lt;/p&gt;
&lt;p&gt;Now, so there's more to text characters than just letters, numbers, and symbols.&lt;/p&gt;
&lt;p&gt;Before graphical user interfaces came about, software had text characters that looked like lines, and these were called box-drawing characters.&lt;/p&gt;
&lt;p&gt;Usually, if your laundromat is still using some computer from 1985, you might see this as part of their text UI.&lt;/p&gt;
&lt;p&gt;It's actually making a bit of a comeback with things like Rich and Textual.&lt;/p&gt;
&lt;p&gt;So I call this one Connected Pipes, where I actually completely forget how I programmed this originally.&lt;/p&gt;
&lt;p&gt;I think I just wanted to make sure that there were never any lines that were sticking out, right? So I always wanted the text cell to be connected to the one that came before it and above it.&lt;/p&gt;
&lt;p&gt;But again, these are just text characters. You can highlight this and copy and paste it into an email. Do whatever you want. It's all just text.&lt;/p&gt;
&lt;p&gt;Now, you can also create texture by having light characters going to more filled-in characters.&lt;/p&gt;
&lt;p&gt;There was this program that had this ASCII-art rotating donut animation that was pretty popular on YouTube and social media a few years back.&lt;/p&gt;
&lt;p&gt;And you can see, like, the period takes up the least amount of space, so it's the lightest or the darkest, depending on whether you have white on black or black on white, whereas the at symbol is mostly filled in.&lt;/p&gt;
&lt;p&gt;So I've compiled all of this.&lt;/p&gt;
&lt;p&gt;I initially started using this in Python, but I wanted a way to easily show it to other people, so I had to put it on the web. So I created scrollart.org.&lt;/p&gt;
&lt;p&gt;I have this sort of text-area terminal JavaScript library that takes a textarea HTML element and gives you a print method for it, essentially, so that you can treat it like a screen to create your own scroll art.&lt;/p&gt;
&lt;p&gt;I'm really looking for any contributors there, and I've learned way too much about this weird art form.&lt;/p&gt;
&lt;p&gt;I'm not going to go into all of this, but you can download the slides from bit.ly PyBay 2024 scrollart to look at this stuff later.&lt;/p&gt;
&lt;p&gt;And I even had some more advanced ideas. I have far more ideas for projects than time to actually work on them. But again, I'll just skip all over that.&lt;/p&gt;
&lt;p&gt;But really, these were great, especially for programming projects when I'm finally going to get around to learning Rust or when I'm teaching other people how to code.&lt;/p&gt;
&lt;p&gt;And I've put some of these projects into the third edition of &lt;em&gt;Automate the Boring Stuff&lt;/em&gt;, which is coming out soon.&lt;/p&gt;
&lt;p&gt;I can tell that I'm almost done with the drafts because all the file names are like "Final, final, version 5, final.docx."&lt;/p&gt;
&lt;p&gt;But anyway, the best advice that I have for making scroll art—because whenever I tell people, especially software engineers, about this, immediately their mind wants to make it more complicated.&lt;/p&gt;
&lt;p&gt;"We can add color. We can add emojis. We can have it running on a refrigerator."&lt;/p&gt;
&lt;p&gt;And really, you want to do the complete opposite of that. You want to try to keep all of these programs short, just because it's a lot easier to play around with there.&lt;/p&gt;
&lt;p&gt;A lot of the programs I've written in Python, they're usually under about 50 lines of code.&lt;/p&gt;
&lt;p&gt;Whenever I have some great idea and I start working on it, and it builds in complexity, and after about three or four hours I realize it's actually not that great of an idea, then I have to throw away all this code.&lt;/p&gt;
&lt;p&gt;You know, this isn't really some, like, colorful Processing, p5 sort of thing, or like those demoscene elaborate animations that you see.&lt;/p&gt;
&lt;p&gt;You really want to start simple and then just iterate and build up the complexity slowly.&lt;/p&gt;
&lt;p&gt;And it's a lot more fun to have several small programs done than try to work on one big, elaborate project that you never actually finish.&lt;/p&gt;
&lt;p&gt;And, in fact, my favorite piece that I've created out of all of these is this one, which I call Orbital Travels.&lt;/p&gt;
&lt;p&gt;I'll just go ahead and set this to white on black.&lt;/p&gt;
&lt;p&gt;So all of this is just sine waves, which is incredibly simple. And I just decide, "Hey, what if I just had six or seven of these going with different characters?"&lt;/p&gt;
&lt;p&gt;The name of it comes from: if you look at the orbit of, like, the moon around the Earth, it looks like a circle. But then, when you consider that the Earth is also moving, the movement of the moon is actually a spiral that's going around.&lt;/p&gt;
&lt;p&gt;And then you consider that that's moving around the sun, and that's moving around the galactic center.&lt;/p&gt;
&lt;p&gt;And, yeah, this is really easy. I can't believe no one else has...&lt;/p&gt;
&lt;p&gt;I've looked, and I thought, "Hey, have people done something like this before?" Because it's so mind-bogglingly simple. It's just print and loops.&lt;/p&gt;
&lt;p&gt;But I kind of figured, like, "Oh, okay, well, I'll just register a domain name and then fill this out."&lt;/p&gt;
&lt;p&gt;Now, this is the part where I still have—I got a double-length slot for this talk, and so I had some remaining time—and this is the part where I can just, like, talk about the scrollart.org website.&lt;/p&gt;
&lt;p&gt;I learned a lot of surprising things about this.&lt;/p&gt;
&lt;p&gt;Most of these things are completely useless as far as computer science or getting hired in tech. But then again, a lot of science and commercial applications began with silly, useless experiments.&lt;/p&gt;
&lt;p&gt;I won't go into too many of these, but one of these was in the music video.&lt;/p&gt;
&lt;p&gt;And I accidentally discovered you can do parallax with scroll art.&lt;/p&gt;
&lt;p&gt;So that's sort of like when you're looking out your car window and the things near you are moving faster than the mountains in the distance. They appear to be moving slower.&lt;/p&gt;
&lt;p&gt;In this, we have the skulls in the background that seem to be moving slower than the hearts in the foreground that are moving up a lot faster, which seems like it's impossible.&lt;/p&gt;
&lt;p&gt;Because if we stop this, this is just text. It's just a static piece of text.&lt;/p&gt;
&lt;p&gt;And I discovered this completely by accident.&lt;/p&gt;
&lt;p&gt;So these skulls, I think, are about eight rows long. And so, you know, if you actually—if you just print one row at a time, it looks like they're just moving up one row at a time.&lt;/p&gt;
&lt;p&gt;But if you print nine rows at a time, because they're a repeating pattern, they're actually jumping up an entire pattern and then moving one row up.&lt;/p&gt;
&lt;p&gt;So it sort of looks like they're moving a lot slower. They're only moving one row at a time.&lt;/p&gt;
&lt;p&gt;But meanwhile, the hearts, which are not repeating, those you can see: "Oh, those are moving up nine rows at a time."&lt;/p&gt;
&lt;p&gt;And I realized, like, wow, you could just have as many layers of this as you want to create all sorts of weird animated effects like that.&lt;/p&gt;
&lt;p&gt;So anyway, I hope you found the idea of scroll art as intriguing as I have, and I hope that you decide to share your own scroll art programs.&lt;/p&gt;
&lt;p&gt;You know, I love looking at the output of these programs and then just thinking about how the code behind them works.&lt;/p&gt;
&lt;p&gt;And that's my favorite kind of art.&lt;/p&gt;
&lt;p&gt;I love going to art museums and looking at things that give me ideas for creations of my own—my own that I want to make.&lt;/p&gt;
&lt;p&gt;So, as said in the Zen of Python, beautiful is better than ugly, and simple is better than complex.&lt;/p&gt;
&lt;p&gt;And you can get a lot of beauty from simplicity.&lt;/p&gt;
&lt;p&gt;Thank you very much.&lt;/p&gt;
&lt;p&gt;So, yeah, I'll be out doing the book signing, or you can also purchase books, or you can just talk to me if you have any questions about scroll art.&lt;/p&gt;
&lt;p&gt;And thank you very much.&lt;/p&gt;</content><category term="News"/></entry><entry><title>PyTexas 2024 - 20 GOTO 10: How to Make Scrolling ASCII Art</title><link href="news/pytexas-2024-talk-20-goto-10/" rel="alternate"/><published>2024-06-06T00:00:00-04:00</published><updated>2024-06-06T00:00:00-04:00</updated><author><name>Al Sweigart</name></author><id>tag:None,2024-06-06:news/pytexas-2024-talk-20-goto-10/</id><summary type="html">&lt;p&gt;Al Sweigart discusses scroll art at the &lt;a href="http://pytexas.org/2024"&gt;PyTexas 2024&lt;/a&gt; conference in Austin on April 20, 2024. The talk was recorded and &lt;a href="https://pyvideo.org/pytexas-2024/20-goto-10-how-to-make-scrolling-ascii-art.html"&gt;is available on pyvideo.org&lt;/a&gt;. The &lt;a href="https://docs.google.com/presentation/d/1y850PdmI8R9PfwFTihiTi10pl_6akKvi8qdYFMcxRbs/edit?usp=sharing"&gt;slides&lt;/a&gt; are available.&lt;/p&gt;
&lt;p&gt;Here is an imperfect, machine-generated transcript:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hello. OK, thank you for having me here. And thank you to all the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Al Sweigart discusses scroll art at the &lt;a href="http://pytexas.org/2024"&gt;PyTexas 2024&lt;/a&gt; conference in Austin on April 20, 2024. The talk was recorded and &lt;a href="https://pyvideo.org/pytexas-2024/20-goto-10-how-to-make-scrolling-ascii-art.html"&gt;is available on pyvideo.org&lt;/a&gt;. The &lt;a href="https://docs.google.com/presentation/d/1y850PdmI8R9PfwFTihiTi10pl_6akKvi8qdYFMcxRbs/edit?usp=sharing"&gt;slides&lt;/a&gt; are available.&lt;/p&gt;
&lt;p&gt;Here is an imperfect, machine-generated transcript:&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Hello. OK, thank you for having me here. And thank you to all the PyTexas organizers who make this conference not only possible, but a delight. I know a lot of you have come from probably very far away. Texas is an enormous state. So thank you for coming here. I really appreciate being to speak at PyTexas 2024. I have a lot of information on these slides, but you can download them from &lt;a href="https://docs.google.com/presentation/d/1y850PdmI8R9PfwFTihiTi10pl_6akKvi8qdYFMcxRbs/edit?usp=sharing"&gt;bit.ly slash PyTexas 2024, Scroll Art&lt;/a&gt;, and also see the art at &lt;a href="https://scrollart.org"&gt;scrollart.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm Al Sweigart. I'm mostly known as the author of Automate the Boring Stuff with Python and a few other books. You can read them all online for free at &lt;a href="https://inventwithpython.com"&gt;inventwithpython.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So on the left is an artist who fills glass bowls with different colored sand and pushes the grains into place to draw portraits. In the center is an artist who arranges beads on a flat board and films herself in slow motion as she tosses them upwards. On the right is an artist who carves patterns into the skin of a watermelon, getting different colors as they carve deeper. On the left is an artist who draws portraits using only the circumference of various coins. In the center is an artist who completes their illustrations by using the shadows cast from common household objects. On the right is an artist who has several elaborate bubble making tools. On the left is an old flash game where you lay out roads and the cars play musical notes as they pass by these roadside flower pots. In the center is an artist who does elaborate dance routines as they fall off of and climb onto a ledge over a trampoline. And on the right are two musicians who use the screeching electronic noises from their barcode scanners as they scan different barcodes to make music.&lt;/p&gt;
&lt;p&gt;A good friend of mine once said something that I will remember until the day I die, not only will humans continue to create new art, but there will always be new forms of art. I'd like to talk to you about something I call scroll art. So, scroll art is the output of a type of program that's easy for beginners to get into, but it's also fun for experienced software developers to explore. It's kind of like a minute to learn lifetime to master sort of thing. It's not exactly like ASCII art, but well, it's actually just easier to show you.&lt;/p&gt;
&lt;p&gt;So, this is one that I call spike. It's just a simple repeating pattern of lengthening and shrinking dashes. And if you stare at the very bottom, I kind of get like a rhythmic thumping noise playing in my head as I watch it.&lt;/p&gt;
&lt;p&gt;This next one is called Starfield. It's just random asterisk being played on the screen. But if you notice the density of the asterisk gets greater and greater until it reaches 100%, and then it starts reducing back down to 0%, and then it just repeats over and over again.&lt;/p&gt;
&lt;p&gt;A quarter century ago, there was this movie that came out called The Matrix. Yeah, yeah, it's been that long. So it had this iconic visual of code falling down the screen like raindrops on a window pane. Scroll art can only scroll things upwards, but you can change this color scheme around into hacker colors. Yeah. Yeah.&lt;/p&gt;
&lt;p&gt;And then a really common exercise for beginners to create is to write a function that will be given in integer size, and then you have to print out a diamond shape of that size. So I incorporated that into this. I just call it diamond sky.&lt;/p&gt;
&lt;p&gt;And then computers do they can print out scroll art pretty fast. So you have to input these delays, but you can just remove that delay and just have it go as fast as possible. So this is just a random walk left or right of five different characters, but they always have to be within a certain distance of each other. So it kind of looks like the proton pack stream from Ghostbusters.&lt;/p&gt;
&lt;p&gt;And then this one will take a while to kind of explain. So let me go ahead and click on stop here. Where's my cursor? Okay, so every column can display a period or an app symbol and randomly these togglers will appear when going left and the other going right that will switch it back and forth from a period to an app symbol. So if two togglers overlap each other, then they will cancel each other out. And some of these togglers will skip a column and some will skip two or three columns. And this is a very simple rule set, but the patterns that it creates tend to get really complicated really quickly, even though the code for this I think is like 20 or 30 lines of code.&lt;/p&gt;
&lt;p&gt;So that's what scroll art is. It's the text output of a program that appears animated as it scrolls up the terminal window. Now these programs are usually short and they can be written in any language you want, but I found Python to be great for just playing around with ideas. Here's the Python source code for that spike program. Here's the Python source code for the matrix screen saver. Here's a Python program for the diamond sky program. It's a bit bigger, but you notice it still fits on a single slide. Here's that proton stream program and here's the toddler program source code in Python.&lt;/p&gt;
&lt;p&gt;So you've seen what scroll art is, but let me go ahead and define it more clearly. Scroll art is similar to something called ASCII art, which was popular in the 90s as a way to make art out of text characters. Here's a cat and a dolphin made by prolific ASCII art is Joan G Stark. So scroll art is the output produced by a program that is displayed in a terminal window. So the text characters are all the same width. And scroll art is animated when the terminal window fills up with text and the text starts scrolling upwards. So the main limitations of scroll art are that you can't erase any text that you've already printed and you can't control where the cursor is. So if you're familiar with what a standard IO is, scroll art is limited to the stream output.&lt;/p&gt;
&lt;p&gt;Now, I've named this scroll art, but I didn't exactly invent this. If you are like me and of a certain age, your first programming experience might have been something like writing this basic program. This just prints out the word hello. And then the second instruction is to go back to the first instruction, which then prints hello again and then it prints hello again and over and over and over again. This program would keep going until you press control C. But I didn't know about control C. So the way that I stopped an infinite loop was to turn off the computer and then turn it back on. Woo! Woo! Woo! Woo!&lt;/p&gt;
&lt;p&gt;So I want to stress that scroll art isn't meant to be some kind of form of retro computing or anything like that. You know, a lot of people have a dim view of nostalgia. And I am one of those people. I'm interested in teaching people to code in the 21st century. So the text-based nature of scroll art isn't meant to be some kind of old school throwback. The text is a constraint that makes programming approachable. So it's computer art without complicated shaders or 3D vectors or AI. I mean, so much of computing today is this magical black box. And it's hard to connect how the code we write results in what we see on the screen. But scroll art is text and the source code is text. So it gives you a real sense of the cause and effect to connect the print function calls to the printed text on the screen.&lt;/p&gt;
&lt;p&gt;But more importantly, sticking to text means that any computer can do scroll art. You don't need a modern laptop. You don't need a high-end graphics card. I even ported some of the scroll art programs to an Apple 2E and a Commodore 64. And it runs slowly, but it does run. And sticking to text means you don't need to install additional libraries. And that's a big one. If you've ever led a learn to code in Python workshop, you've probably had to do a pre-workshop workshop just to make sure that everybody has Python and all the libraries that you want to use installed on their laptop. Otherwise, you're going to spend the first hour and a half of your four-hour workshop trying to get Python running on people's computers.&lt;/p&gt;
&lt;p&gt;But with scroll art, that's just print and loops. And that means you can do scroll art projects in browser-based repels as well. You don't even need Python installed. And that means you could even do scroll art programming from tablets and smartphones if you have to. You don't even need to have a laptop. And that's actually pretty important. You don't have to invent anything new. You can use these existing tools and platforms. And the text industry loves to talk about radical innovation and revolutionizing our world, especially when it comes to education. But a lot of what the tech industry produces assumes a certain level of affluence, or it assumes a certain level of sophisticated expert.&lt;/p&gt;
&lt;p&gt;But a big part of Python's success has been making a free open-source programming language that is approachable for people outside of the software field. Now, don't get me wrong. I think there's a lot of great ways to get people into tech. But they can't get everyone into tech. So scroll art is not about retro computing. When I say any computer can do scroll art, I'm not really thinking about PCs from the 80s. I'm talking about the tablets and Chromebooks and old desk tops that parents have gathered for an after-school computer club. Or I mean, the computers used by career switchers who don't want to drop a lot of money on a new laptop when they're just starting out. So that's what scroll art is.&lt;/p&gt;
&lt;p&gt;But why should you care about scroll art? Well, I have an interest in programming education, which is mostly about getting people interested in programming. Some of that is teaching concepts, but mostly it's about generating enthusiasm. And beginners want to make things. The worst feeling for beginners is mastering a bunch of abstract concepts and then staring at a blank editor, not knowing how to write an actual computer program. So their idea of software are the professionally made apps that they're using on their phones. And they don't really have the knowledge to make big things like that. But they do have a little bit of knowledge to make small things. And small things can still be interesting.&lt;/p&gt;
&lt;p&gt;So I teach Python because Python is so widespread. But I need programming projects that I can use in any programming language without a lot of setup. And also, no matter what hardware they have access to. But let's say that you're a senior software engineer and with the latest Macbook, scroll art is still something for you. Scroll art's limitations force you to come up with ways to apply your wide skill set in very specific ways. And there are endless numbers of ways to make scroll art. So let's examine some of them. But first, I'm going to say something incredibly pretentious.&lt;/p&gt;
&lt;p&gt;Scroll art creates the illusion of movement and infinity. Wow. That's like, deep. No, here's what I mean. So scroll art is animated. But you're not writing any animation code. You're just calling print over and over again. But you've seen it. It looks like it's scrolling upwards. It has the illusion of movement. And if you add in random numbers, then your scroll art program will never repeat. It's the digits of pi. And then you put all of that in an infinite while loop and it goes on forever. So it's kind of like a lava lamp. It moves. It never repeats. But it has this simplicity and it's kind of neat to stare at.&lt;/p&gt;
&lt;p&gt;Those are the kinds of programming projects you can make with scroll art. And there's some different types of scroll art. There are periodic scroll art programs that just do a simple repetition. So this one is on scrollart.org. I call this zigzag. You can see it just goes to the right. And that just goes to the left. And then it repeats. Now, what I really like about this one is that you can just look at the output and kind of figure out how the code works.&lt;/p&gt;
&lt;p&gt;You can think, oh, OK, it has zero indentation and then one space of indentation and two spaces of indentation up to a maximum. And then it starts subtracting that back down to zero. So you need a variable to keep track of how much indentation there is. Another variable to keep the track of which direction is going put all that into a loop. And then you can just make this little thing. That's kind of fun to look at.&lt;/p&gt;
&lt;p&gt;And then if you know about sign and cosine, you can kind of make a fancier version of that. And again, this is just print being called over and over again. I have never actually used sign and cosine in programming unless it was for some silly artistic thing like this. Just in case you were worried that you need to be good at math. So a much simpler example is what I call wall paper scroll art. These are just static images. The code for this is all the same. It's just changing the pattern that you're doing. So it's a fun way to just create test-related ASCII art programs. I have a whole bunch of examples right here.&lt;/p&gt;
&lt;p&gt;So the main way that I get inspiration for these sorts of programs is by just googling for a tessellation and doing an image search for that. It really helps if you just limit yourself to black and white images or line art images. Another thing you can do is just do a search for Islamic geometric art. There is an entire history of art behind this that you can read up about. And I spend a lot of time instead of working on this talk just like looking at Wikipedia pages for this.&lt;/p&gt;
&lt;p&gt;You can also just do ASCII art that has several variations. So the example I have here are these ASCII art ducklings. And so these ducklings can face to the left or to the right. Their mouths can be open or closed. They have three different directions that their wings can be pointed and three different types of eyes and two different sizes. And I can just write a program that just goes through all the various combinations of these. And it looks absolutely adorable, especially when you have two ducklings line up so it looks like they're kissing each other. I have a type of scroll art that I call varying density.&lt;/p&gt;
&lt;p&gt;You saw this with the Starfield example. But really you can do this with any sort of tessellated pattern. Here I just have this triangular grid that fills out. And then it starts emptying itself over and over again. OK, so before graphical user interfaces, a lot of software just used characters that looked like lines. And we call these box drawing characters. And we still have access to this today. So you can print out these text characters but get sort of like a graphical look. This, the art here looks very elaborate. But the rules that I came up with are just like I don't want to have any dangling loose ends for the lines. And then I accidentally added some bug to it that made them stretched out vertically. And I thought actually that looks pretty nice. So I have both versions up here.&lt;/p&gt;
&lt;p&gt;A few years back, you might have seen there was this like three rotating ASCII art donut program that came out. And I realized, hey, that just uses these 12 different characters for different shading and textures. You can use that to go from lightest to darkest. So yeah, I found that scroll art is just really great for practicing new programming languages that I want to learn or I want to have more experience with.&lt;/p&gt;
&lt;p&gt;And eventually I created the scroll art.org website. And I had to create this JavaScript terminal, that JavaScript library that lets you treat a text area HTML element as a sort of terminal window so that you can just call a print function and it'll just display text in there. And that's how all the animations that you've seen work. I really encourage you to get into scroll art and also see if you want to contribute anything, especially if it's in JavaScript using this library. And we can put it on the website for other people to see it in their browser. I've spent a lot of the last two months working on this.&lt;/p&gt;
&lt;p&gt;And I've come up with several little tips that I've uncovered. I'm not going to read them off here. You can just download these slides later. I've also come up with just a lot of new ideas that I want to try out later on. And so you can just read those later. But the main thing that I want to stress is that scroll art is really simple. That's sort of the core of all scroll art. It's not some bright, elaborate, colorful processing, P5JS thing or those 64 kilobyte demo scene demos.&lt;/p&gt;
&lt;p&gt;If you're making scroll art, you can just go with simple ideas. And actually, simple ideas are better. I've spent hours with some elaborate idea that I had just to find out that when I actually ran the code, the output wasn't that cool looking. So just start small and then build up from there. Take a look at other projects and try to get ideas from that. And I think probably the best example of this is something that I created where it was just sine waves and five different sine waves. They're moving at different speeds. And I realized, wow, there's really not much to this code. But the output looks pretty amazing. I was thinking it made me think of the path of the moon orbiting around the earth is in a circle. But if you realize that the earth itself is also moving, you realize that the moon is actually drawing out a helix path around it. And that's just what I thought about this thought about when I saw this. So I called this orbital travels.&lt;/p&gt;
&lt;p&gt;But anyway, I really hope that you found this at least somewhat interesting. Maybe it gives you ideas for programs that you can make on your own or programs that you can use to teach other people how to code. I just love looking at the output of some of this stuff, because then it makes me think about, oh, how does the code work behind all of this? And that's my favorite kind of art, is the art that you look at, and it gives you ideas. So as I said in the zen of Python, beautiful is better than ugly and simple is better than complex. And you can get a lot of beauty from simplicity. Thank you very much.&lt;/p&gt;
&lt;p&gt;Believe it or not, Al, we do have scroll art questions. So by the way, Lauren, our next speaker, if you were here, I don't know why I just turned that off. Lauren, if you're here, if you'd come over to the side and Josh will help you get set up while we're doing that. OK. So the first question. "Can you run scroll art on a smart fridge?"&lt;/p&gt;
&lt;p&gt;Sure. I'm now thinking about how you would make that happen. I'm incredibly curious. I mean, it's a little bit more complicated than Doom, but yeah, I guess you could make that happen.&lt;/p&gt;
&lt;p&gt;The next question. Can you make Doom a part of this appropriately? OK. Set that up too nicely. So that recurse center thing that I talked about yesterday during my lightning talk, they're having a talent show. And I kind of want to do something like this. So I've also thought about making it interactive by having the JavaScript track the mouse position to make it slightly interactive, and then also opening up the browser developer tools and controlling it from there like a DJ. So yeah, there's, I mean, I'm not one of those people that says, oh, real origami is when you use a square sheet of paper and you don't make any cuts and you have all these. No, no, just make whatever you want. I'm not going to gatekeep scroll art. It's really just animated ASCII art and try to keep it simple and fun. So this has me thinking now, you've seen the Textual library, right? I'm going to be able to see the idea of using that with mouse tracking to have scroll art that reacts to the mouse as you. That could be fun. Yes. I mean, so like the main thing about limiting yourself to just print and not being able to move the cursor around, is that it really does force you to think more simply. Because once you start moving the text cursor around and doing all this really fancy ASCII art, then it's just not that far away from just doing regular computer art. And it's super complicated. And the expectations are just set way higher. So that's why I like just sticking with print. You can add in different colored text as well, but I just like to stick with just printing out characters.&lt;/p&gt;
&lt;p&gt;It's the high coup of textual art, right? Have you explored Stephen Wolfram's cellular automation rules?&lt;/p&gt;
&lt;p&gt;Oh, yes. That was actually a slide that I had cut. There's a book called A New Kind of Science, which is like 1,000 pages long, and short story is it's not a new kind of science. But it does cover cellular automata, which you can also use as inspiration for a kinds of art. You can also look up like dithering algorithms, which is sort of how a lot of monochromatic screens would simulate shading as well.&lt;/p&gt;
&lt;p&gt;Last one, just for fun. So did ASCII art start on printers and the follow-up comment, thanks Dave. That's also hard to erase.&lt;/p&gt;
&lt;p&gt;That is not a question. But yeah, no, there is a thing called typewriter art from 100 years ago where people just use typewriter keys to print out and try to make art that way, and which is kind of like the predecessor of ASCII art, which, yeah, I mean, there's always going to be new forms of art.&lt;/p&gt;
&lt;p&gt;Yeah. Awesome. All right. Thanks again, Al Sweigart, everyone. Thank you.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;</content><category term="News"/></entry><entry><title>Forbidden Zone</title><link href="news/forbidden-zone/" rel="alternate"/><published>2024-05-22T00:00:00-04:00</published><updated>2024-05-22T00:00:00-04:00</updated><author><name>Al Sweigart</name></author><id>tag:None,2024-05-22:news/forbidden-zone/</id><summary type="html">&lt;p&gt;In May 2024, Al Sweigart created a music video performance of &lt;a href="https://en.wikipedia.org/wiki/Danny_Elfman"&gt;Danny Elfman&lt;/a&gt;'s theme for the 1980 movie &lt;a href="https://en.wikipedia.org/wiki/Forbidden_Zone"&gt;Forbidden Zone&lt;/a&gt; made from several scroll art pieces. &lt;a href="https://www.youtube.com/watch?v=Sjk4UMpJqVs"&gt;A video recording is posted on YouTube.&lt;/a&gt;&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Sjk4UMpJqVs?si=jBuIMuv5EN1SOwKj" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Over two dozen different scroll art programs, controlled by a DJ, played in sync with "The …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In May 2024, Al Sweigart created a music video performance of &lt;a href="https://en.wikipedia.org/wiki/Danny_Elfman"&gt;Danny Elfman&lt;/a&gt;'s theme for the 1980 movie &lt;a href="https://en.wikipedia.org/wiki/Forbidden_Zone"&gt;Forbidden Zone&lt;/a&gt; made from several scroll art pieces. &lt;a href="https://www.youtube.com/watch?v=Sjk4UMpJqVs"&gt;A video recording is posted on YouTube.&lt;/a&gt;&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Sjk4UMpJqVs?si=jBuIMuv5EN1SOwKj" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Over two dozen different scroll art programs, controlled by a DJ, played in sync with "The Forbidden Zone". Released in 1980, this song is by the band Oingo Boingo, led by Danny Elfman who composed the theme song to The Simpsons. This work was the culmination of a couple weeks of effort to apply scroll art animations (including some made specifically for this music video) to parts of the song.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/asweigart/scrollart/blob/main/python/forbiddenzone.py"&gt;Python source code&lt;/a&gt;&lt;/p&gt;</content><category term="News"/></entry><entry><title>Starfield on the Apple IIe</title><link href="news/starfield-on-the-apple-iie/" rel="alternate"/><published>2024-04-04T00:00:00-04:00</published><updated>2024-04-04T00:00:00-04:00</updated><author><name>Al Sweigart</name></author><id>tag:None,2024-04-04:news/starfield-on-the-apple-iie/</id><summary type="html">&lt;p&gt;The term "scroll art" is new but these text-based programs don't require modern computers. Al Sweigart has ported Starfield to BASIC running on an Apple IIe personal computer. &lt;a href="https://www.youtube.com/watch?v=KcBBb8b26E0"&gt;A video recording is on YouTube shorts.&lt;/a&gt;&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/KcBBb8b26E0?si=cT1B5YUKrIthzKzw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;The benefit of scroll art for learning to code is that the concepts are simple …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The term "scroll art" is new but these text-based programs don't require modern computers. Al Sweigart has ported Starfield to BASIC running on an Apple IIe personal computer. &lt;a href="https://www.youtube.com/watch?v=KcBBb8b26E0"&gt;A video recording is on YouTube shorts.&lt;/a&gt;&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/KcBBb8b26E0?si=cT1B5YUKrIthzKzw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;The benefit of scroll art for learning to code is that the concepts are simple enough that they can run on any computer, even those from nearly a half-century ago!&lt;/p&gt;
&lt;p&gt;The computer is a 1983 Apple IIe, though the monitor connected to it is from a Commodore 64. They reside at the &lt;a href="https://recurse.com/"&gt;Recurse Center in Brooklyn, NY&lt;/a&gt; amongst other retro personal computers. The source code for the program appears at the beginning after the LIST command is run. This program is running at full speed with no inserted delays! The flickering and diagonal color stripe is not a part of the program; it's a "rolling bar" artifact of the &lt;a href="https://en.wikipedia.org/wiki/Cathode_ray_tube"&gt;CRT monitor&lt;/a&gt; that you don't see with the naked eye.&lt;/p&gt;
&lt;p&gt;Joshua Bell has written &lt;a href="https://www.calormen.com/jsbasic/"&gt;an Applesoft BASIC emulator online&lt;/a&gt; that you can try out in your browser without installing anything.&lt;/p&gt;
&lt;p&gt;Here is the BASIC source code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="mf"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;HOME&lt;/span&gt;
&lt;span class="mf"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CHANGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;
&lt;span class="mf"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;
&lt;span class="mf"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WIDTH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;39&lt;/span&gt;
&lt;span class="mf"&gt;40&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;IF&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;OR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CHANGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;CHANGE&lt;/span&gt;
&lt;span class="mf"&gt;50&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CHANGE&lt;/span&gt;
&lt;span class="mf"&gt;60&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="mf"&gt;70&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;FOR&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;TO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;WIDTH&lt;/span&gt;
&lt;span class="mf"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;IF&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;RND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DENSITY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;GOTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;92&lt;/span&gt;
&lt;span class="mf"&gt;90&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot; &amp;quot;&lt;/span&gt;
&lt;span class="mf"&gt;91&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;GOTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;100&lt;/span&gt;
&lt;span class="mf"&gt;92&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;
&lt;span class="mf"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;NEXT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;I&lt;/span&gt;
&lt;span class="mf"&gt;110&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;PRINT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ROW$&lt;/span&gt;
&lt;span class="mf"&gt;120&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;GOTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;40&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="News"/></entry></feed>