Latest Posts (20 found)
Michael Lynch 1 months ago

Refactoring English: Month 12

Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers . Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall. At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I’ve gotten stuck on my design docs chapter. There’s a lot I want to cover, and I’m having trouble articulating some of it and deciding how much of it belongs in the book. Part of the problem is that the chapter is so long that it feels overwhelming to tackle all at once. My new plan is to break the chapter into smaller sections and focus on those one at a time. I think this is my last “hard” chapter, as I have a better sense of what I want to say in the remaining chapters. I keep procrastinating on this even though I enjoy doing it and get useful responses. I keep automating more of the logistical work in the hopes that reducing initial friction will motivate me to do it more. 3,508 people read the post, so it was somewhat successful at attracting new readers. Bob Nystrom, the author I was writing about, liked my article , which was gratifying. I figured even if my article flopped, at least it would let Bob Nystrom know how much I appreciated his work. November was a good month in terms of visits and sales. Visits were down slightly from October, but it was still one of the strongest months of the year. I did a Black Friday discount for 30% off. I only advertised it to readers on my mailing list, as I always feel strange spamming a sale everywhere. But the announcement was successful, as 18 customers purchased for a total of $359.41. Peter Spiess-Knafl , co-founder of zeitkapsl , cited Refactoring English in a blog post , which reached #1 on Lobsters . I was glad to see Peter’s post, as my plan for the book has always been for it to help readers write successful blog posts and be happy enough about the book that they recommend it. I read Hacker News so often that I feel like I’d be good at predicting which stories will reach the front page, but I’ve never tested this belief rigorously. So, I made a game to test my accuracy. The game shows me the newest submissions to Hacker News, and the player predicts whether or not they’ll reach the front page: The biggest problem with the game is that a story can take up to 24 hours to reach the front page. Waiting 24 hours for results sucks the fun out of the game. I tried changing the rules so that you’re predicting whether an article will reach the front page in its first 30 minutes, but 30 minutes still feels painfully slow. My new idea is to make a tentative call 10 minutes after a story has been submitted. Given the story’s age, upvotes, and comment count, I can calculate some rough probability of whether it has a chance of hitting the front page. So, if you predicted a story would reach the front page, but 10 minutes later, it still has no upvotes or comments, the game will tentatively tell you that you got it wrong, but you can still get the points back if the story makes a miraculous comeback in the next 24 hours. I thought about making a version of the game where you guess the results of past stories. That way, I could give instant feedback because the answer is already available, but that feels less fun, as other people have made similar games. Plus, for the HN diehards I’m hoping this game appeals to, past data ruins it because you kind of remember what was on the front page and what wasn’t. My wife and I had our first child last year , so we wanted a way to share baby photos with our family privately. Some of my friends had used apps like this, but they were all ad-supported. I hate the idea of companies slapping ads on photos of my child, so I looked for other options. When I came across TinyBeans, I thought I’d found a winner. They had a paid version that disabled ads, and privacy was the main feature they advertised: perfect! Then, I started using TinyBeans, and there were ads everywhere. “Buy our photo books!” “Give us more personal information!” I opened the app just now and had to dismiss three separate ads to see photos of my own child. TinyBeans shows me three huge ads when I open the app, even though I’m a paying customer and have dismissed these exact ads dozens of times before. It also turns out that my family members receive even more ads than I see, including for third-party services. Here’s a recent one that encourages my family to invest in some scammy AI company: When TinyBeans sends emails to my family, they stick spammy ads like these in between photos of my son. The “no ads” promise of the paid tier is limited to me and my wife; TinyBeans bombards everyone else in my family with ads and upsells. I wanted to ditch TinyBeans early on, but I was too busy with new parent stuff to find a new app and migrate my whole family to it. So, each month, I begrudgingly give TinyBeans my $9. Then, Black Friday happened. TinyBeans sent me an email patting themselves on the back for not cluttering my inbox with Black Friday deals because all the deals would be in the app. TinyBeans sends me a pointless email to boast about not cluttering my inbox with pointless emails. Great, an email congratulating yourself about how little you’ll email me. But that wasn’t even true! TinyBeans proceeded to send me four more emails telling me to check my app for Black Friday deals: After promising not to bombard me with Black Friday promotions, TinyBeans emailed me five Black Friday promotions. That pushed me over the edge, and now I’m on a spite mission to create my own TinyBeans replacement and stop giving TinyBeans my money. “And what are your reasons for wanting to create an app to share baby photos?” The only functionality I care about in TinyBeans is: How hard could that be? 20 hours of dev work? The TinyBeans web and Android apps suck anyway, so I’ll be glad to move away from them. And because the experience is mostly email-based, I can replace TinyBeans with my own app without my family having to do any work as part of the migration. I’m not starting a company to compete with TinyBeans. I just want to make a web app that replaces TinyBeans’ functionality. One of my shameful secrets as a developer is that I’m bad at managing windows on my screen. I compensate by overusing my mouse, even though that’s slow and inefficient. Last year, I switched from Windows to Linux and got a 49" ultrawide monitor . While Windows was designed for mouse-happy users like me, Linux desktops are much more keyboard-focused, so my lack of keyboard discipline began catching up with me. I’d keep opening windows and never close them, so I’d end up with 10+ VS Code windows, 10+ Firefox windows, and 5 different instances of the calculator app for one-off calculations. They were all in one big pile in the middle of my desktop. At that point, it was obvious I was wasting tons of screen real estate and burning time locating my windows. I tried a few different window managers, but I kept running into issues. Like I couldn’t get lockscreens to work, or they’d fail to use my monitor’s full 5120x1440 resolution. The fastest person I’ve ever seen navigate their computer is my friend okay zed . I asked him for advice, and he explained his approach to window management . His strategy is to use many virtual desktops where windows are almost always full screen within the desktop. He uses xmonad, but he suggested I try Awesome Window Manager. I liked okay’s philosophy of single-purpose virtual desktops, so I created an Awesome window manager configuration around it. So, I have a dedicated desktop for my blog, a dedicated desktop for my book, one for email, etc. I try to limit myself to 1-2 windows per desktop, but sometimes I’ll pull up a third or fourth while looking something up. Here’s what my blog desktop looks like, which is pretty typical: one VS Code window for editing, one Firefox window for viewing the result, and sometimes a second Firefox window for looking stuff up: I didn’t like any of the default desktop modes, so I had to roll my own . It gives each window 25% of my screen’s width, and if I open more than four, it squishes everything to fit. I can also manually expand or contract windows with Shift+Win+H and Shift+Win+L. Except sometimes I accidentally lock myself out because Win+L is my hotkey for locking the screen. Based on a few weeks with Awesome, here’s how I’m feeling: I was talking to LGUG2Z on Mastodon about how annoying it is to embed tweets on my blog. If the user deletes their tweet, I end up with dead content in my post. Even when it works, my readers have to load trackers from Twitter. I’ve been working around it by just screenshotting tweets, but that’s an ugly solution. I want to embed tweets in Hugo (the static site generator I use for this blog) with a shortcode like , and then Hugo could fetch the tweet data and store it under source control so that I don’t have an ongoing dependency on Twitter. LGUG2Z explored this idea and implemented support for it on his Zola blog. He runs a script to pre-download data once from external sources (like tweets), and then he can embed the content in his blog without re-retrieving it at blog build time or reader visit time. I tried to adapt LGUG2Z’s solution for Hugo, but it got too complicated . I wrote a standalone script that downloads data from Twitter and then I’d render it in a tweet-like UI . Regular text tweets worked okay, but once I got to tweets with embedded media or retweets, it felt like I was building too much on shaky foundation. I used to store all of my photos on Google Photos. Despite my privacy concerns, Google Photos was just so much better than anything else that I held my nose and just gave them all my photos. I’ve since become more privacy sensitive and distrustful of Google, so I stopped uploading new photos to Google Photos, but I haven’t found a replacement. I’ve heard good things about Immich and Ente, so I was glad to see this detailed writeup from Michael Stapelberg about his experience setting up an Immich server using NixOS . Firefox recently improved their Enhanced Tracking Protection , a feature I didn’t realize existed. I turned it on, and it blocks trackers that uBlock was allowing and hasn’t had any false positives. I just discovered “Rich Friend, Poor Friend” from 2022 and the follow up from a few weeks ago. I definitely relate to hiring professionals instead of asking my friends for help (e.g., hiring movers instead of asking friends). I’m maybe in the worst part of the curve where I’m wealthy enough to not want to ask friends to help me move but not so wealthy that I have a separate guest house to make it easy to host them. The Deel corporate espionage story is getting surprisingly little attention in my bubble. In March 2025, Rippling revealed that they discovered one of their employees was actually a corporate spy working for their competitor, Deel. When they caught the spy, he ran into the bathroom and tried to flush his phone down the toilet. Rippling posted an update in November that they found banking records showing that Deel had routed payments to the spy through the wife of Deel’s COO. The wife was, coincidentally, a compliance lead at Robinhood, another company known for its scummy ethics . As an unhappy former Deel customer, I’m happy to see them get their comeuppance. I’m working on a game to predict which posts will reach the front page of Hacker News. I’m creating a family photo sharing app out of spite. I switched to a keyboard-first window manager. Result : Published one new chapter Result : I only reached out to two readers (one responded). Result : Published “What Makes the Intro to Crafting Interpreters so Good?” My family can browse the baby photos and videos I’ve uploaded. My family members can subscribe to receive new photos and videos via email. My family members can comment or give emoji reactions to photos. What I like Encourages me to keep single-purpose desktops for better focus. Encourages me to navigate via keyboard hotkeys rather than mouse clicks. Doesn’t crash on suspend 2% of the time like Gnome did. What I dislike Everything is implemented in and configured through Lua, a language I don’t know. I’m using LLMs to write all my configs. The configuration is fairly low-level, so you have to write your own logic for things like filling the viewport without overflowing it. I don’t like any of the default desktop modes, so I had to roll my own. The documentation is all text, which feels bizarre for software designed specifically around graphics. If you accidentally define conflicting hotkeys, Awesome doesn’t warn you. If I click a link outside of Firefox, sometimes it loads the link in a browser that isn’t on my current desktop. I’m guessing it loads it on whatever Firefox window I most recently touched. What I still need to figure out How to implement “scratchpad” functionality. Like if I want to pull up my password manager as a floating window or summon the calculator for a quick calculation, then dismiss it. How to put more widgets into the status bar like network connectivity and resource usage. Published “What Makes the Intro to Crafting Interpreters so Good?” Published “My First Impressions of MeshCore Off-Grid Messaging” . Published “Add a VLAN to OPNsense in Just 26 Clicks Across 6 Screens” Created a tiny Zig utility called count-clicks to count clicks and keystrokes on an x11 system. Got Awesome Window Manager working. Quick feedback is important in creating a fun game. TinyBeans actually has a lot of ads, even on the paid version. The Awesome window manager is a better fit for my needs than Gnome. Publish a game that attracts people to the Refactoring English website. Publish two chapters of Refactoring English . Write a design doc for a just-for-fun family photo sharing app. If you’re interested in beta testing the “Will it Hit the Front Page?” game, reach out .

1 views
Michael Lynch 1 months ago

My First Impressions of MeshCore Off-Grid Messaging

When my wife saw me playing with my new encrypted radio, she asked what it was for. “Imagine,” I said, “if I could type a message on my phone and send it to you, and the message would appear on your phone. Instantly!” She wasn’t impressed. “It also works if phone lines are down due to a power outage… or societal collapse.” Still nothing. “If we’re not within radio range of each other, we can route our messages through a mesh network of our neighbors’ radios. But don’t worry! The radios encrypt our messages end-to-end, so nobody else can read what we’re saying.” By this point, she’d left the room. My wife has many wonderful qualities, but, if I’m being honest, “enthusiasm for encrypted off-grid messaging” has never been one of them. The technology I was pitching to my wife was, of course, MeshCore. If you’d like to skip to the end, check out the summary . MeshCore is software that runs on inexpensive long-range (LoRa) radios . LoRa radios transmit up to several miles depending on how clear the path is. Unlike HAM radios, you don’t need a license to broadcast over LoRa frequencies in the US, so anyone can pick up a LoRa radio and start chatting. MeshCore is more than just sending messages over radio. The “mesh” in the name is because MeshCore users form a mesh network. If Alice wants to send a message to her friend Charlie, but Charlie’s out of range of her radio, she can route her message through Bob, another MeshCore user in her area, and Bob will forward the message to Charlie. If Alice is within radio range of Bob but not Charlie, she can tell Bob’s MeshCore radio to forward her message to Charlie. I’m not exactly a doomsday prepper, but I plan for realistic disaster scenarios like extended power outages, food shortages, and droughts. When I heard about MeshCore, I thought it would be neat to give some devices to friends nearby so we could communicate in an emergency. And if it turned out that we’re out of radio range of each other, maybe I could convince a few neighbors to get involved as well. We could form a messaging network that’s robust against power failures and phone outages. MeshCore is a newer implementation of an idea that was popularized by a technology called Meshtastic . I first heard about Meshtastic from Tyler Cipriani’s 2022 blog post . I thought the idea sounded neat, but Tyler’s conclusion was that Meshtastic was too buggy and difficult for mainstream adoption at the time. I have no particular allegiance to MeshCore or Meshtastic, as I’ve never tried either. Some people I follow on Mastodon have been excited about MeshCore, so I thought I’d check it out. Most MeshCore-compatible devices are also compatible with Meshtastic, so I can easily experiment with one and later try the other. I only have a limited understanding of the differences between Meshtastic and MeshCore, but what I gather is that MeshCore’s key differentiator is preserving bandwidth. Apparently, Meshtastic hits scaling issues when many users are located close to each other. The Meshtastic protocol is chattier than MeshCore, so I’ve seen complaints that Meshtastic chatter floods the airwaves and interferes with message delivery. MeshCore attempts to solve that problem by minimizing network chatter. I should say at this point that I’m not a radio guy. It seems like many people in the LoRa community are radio enthusiasts who have experience with HAM radios or other types of radio broadcasting. I’m a tech-savvy software developer, but I know nothing about radio communication. If I have an incorrect mental model of radio transmission, that’s why. The MeshCore firmware runs on a couple dozen devices, but the official website recommends three devices in particular. The cheapest one is the Heltec v3. I bought two for $27/ea. At $27, the Heltec v3 is the cheapest MeshCore-compatible device I could find. I connected the Heltec v3 to my computer via the USB-C port and used the MeshCore web flasher to flash the latest firmware. I selected “Heltec v3” as my device, “Companion Bluetooth” as the mode, and “v1.9.0” as the version. I clicked “Erase device” since this was a fresh install. Then, I used the MeshCore web app to pair the Heltec with my phone over Bluetooth. Okay, I’ve paired my phone with my MeshCore device, but… now what? The app doesn’t help me out much in terms of onboarding. I try clicking “Map” to see if there are any other MeshCore users nearby. Okay, that’s a map of New Zealand. I live in the US, so that’s a bit surprising. Even if I explore the map, I don’t see any MeshCore activity anywhere, so I don’t know what the map is supposed to do. The map of New Zealand reminded me that different countries use different radio frequencies for LoRa, and if the app defaults to New Zealand’s location, it’s probably defaulting to New Zealand broadcast frequencies as well. I went to settings and saw fields for “Radio Settings,” and I clicked them expecting a dropdown, but it expects me to enter a number. And then I noticed a subtle “Choose Preset” button, which listed presets for different countries that were “suggested by the community.” I had no idea what any of them meant, but who am I to argue with the community? I chose “USA/Canada (Recommended).” I also noticed that the settings let me change my device name, so that seemed useful: It seemed like there were no other MeshCore users within range of me, which I expected. That’s why I bought the second Heltec. I repeated the process with an old phone and my second Heltec v3, but they couldn’t see each other. I eventually realized that I’d forgotten to configure my second device for the US frequency. This is another reason I wish the MeshCore app took initial onboarding more seriously. Okay, they finally see each other! They can both publish messages to the public channel. My devices could finally talk to each other over a public channel. If I communicate with friends over MeshCore, I don’t want to broadcast our whole conversation over the public channel, so it was time to test out direct messaging. I expected some way to view a contact in the public channel and send them a direct message, but I couldn’t. Clicking their name did nothing. There’s a “Participants” view, but the only option is to block, not send a direct message. This seems like an odd design choice. If a MeshCore user posts to the public channel, why can’t I talk to them? I eventually figured out that I have to “Advert.” There are three options: “Zero Hop,” “Flood Routed,” and “To Clipboard.” I don’t know what any of these mean, but I figure “flood” sounds kind of rude, whereas “Zero Hop” sounds elegant, so I do a “Zero Hop.” Great! Device 2 now sees device 1. Let’s say hi to Device 1 from Device 2. Whoops, what’s wrong? Maybe I need to “Advert” from Device 2 as well? Okay, I do, and voila! Messages now work. This is a frustrating user experience. If I have to advert from both ends, why did MeshCore let me send a message on a half-completed handshake? I’m assuming “Advert” is me announcing my device’s public key, but I don’t understand why that’s an explicit step I have to do ahead of time. Why can’t MeshCore do that implicitly when I post to a public channel or attempt to send someone a direct message? Anyway, I can talk to myself in both public channels and DMs. Onward! The Heltec v3 boards were a good way to experiment with MeshCore, but they’re impractical for real-world scenarios. They require their own power source, and a phone to pair. I wanted to power it from my phone with a USB-C to USB-C cable, but the Heltec board wouldn’t power up from my phone. In a real emergency, that’s too many points of failure. The MeshCore website recommends two other MeshCore-compatible devices, so I ordered those: the Seeed SenseCAP T-1000e ($40) and the Lilygo T-Deck+ ($100). I bought the Seeed SenseCAP T-1000e (left) and the Lilygo T-Deck+ (right) to continue experimenting with MeshCore. The T-1000e was a clear improvement over the Heltec v3. It’s self-contained and has its own battery and antenna, which feels simpler and more robust. It’s also nice and light. You could toss it into a backpack and not notice it’s there. The T-1000e feels like a more user-friendly product compared to the bare circuit board of the Heltec v3. Annoyingly, the T-1000e uses a custom USB cable, so I can’t charge it or flash it from my computer with one of my standard USB cables: The Seeed T-1000e uses a custom USB cable for charging and flashing. I used the web flasher for the Heltec, but I decided to try flashing the T-1000e directly from source: I use Nix, and the repo conveniently has a , so the dependencies installed automatically with . I then flashed the firmware for the T-1000e like this: From there, I paired the T-1000e with my phone, and it was basically the same as using the Heltec. The only difference was that the T-1000e has no screen, so it defaults to the Bluetooth pairing password of . Does that mean anyone within Bluetooth range can trivially take over my T-1000e and read all my messages? It also seems impossible to turn off the T-1000e, which is undesirable for a broadcasting device. The manufacturer advises users to just leave it unplugged for several days until the battery runs out. Update : MeshCore contributor Frieder Schrempf just fixed this in commit 07e7e2d , which is included in the v.1.11.0 MeshCore firmware. You can now power off the device by holding down the button at the top of the T-1000e. Now it was time to test the Lilygo T-Deck. This was the part of MeshCore I’d been most excited about since the very beginning. If I handed my non-techy friends a device like the T-1000e, there were too many things that could go wrong in an actual emergency. “Oh, you don’t have the MeshCore app? Oh, you’re having trouble pairing it with your phone? Oh, your phone battery is dead?” The T-Deck looked like a 2000s era Blackberry. It seemed dead-simple to use because it was an all-in-one device: no phone pairing step or app to download. I wanted to buy a bunch, and hand them out to my friends. If society collapsed and our city fell into chaos, we’d still be able to chat on our doomsday hacker Blackberries like it was 2005. As soon as I turned on my T-Deck, my berry was burst. This was not a Blackberry at all. As a reminder, this is what a Blackberry looked like in 2003: A Blackberry smartphone in 2003 Before I even get to the T-Deck software experience, the hardware itself is so big and clunky. We can’t match the quality of a hardware product that we produced 22 years ago ? Right off the bat, the T-Deck was a pain to use. You navigate the UI by clicking a flimsy little thumbwheel in the center of the device, but it’s temperamental and ignores half of my scrolls. Good news: there’s a touchscreen. But the touchscreen misses half my taps: There are three ways to “click” a UI element. You can click the trackball, push the “Enter” key, or tap the screen. Which one does a particular UI element expect? You just have to try all three to find out! I had a hard time even finding instructions for how to reflash the T-Deck+. I found this long Jeff Geerling video where he expresses frustration with how long it took him to find reflashing instructions… and then he never explains how he did it! This is what worked for me: Confusingly, there’s no indication that the device is in DFU mode. I guess the fact that the screen doesn’t load is sort of an indication. On my system, I also see logs indicating a connection. Once I figured out how to navigate the T-Deck, I tried messaging, and the experience remained baffling. For example, guess what screen I’m on here: What does this screen do? If you guessed “chat on Public channel,” you’re a better guesser than I am, because the screen looks like nothing to me. Even when it displays chat messages, it only vaguely looks like a chat interface: Oh, it’s a chat UI. I encountered lots of other instances of confusing UX, but it’s too tedious to recount them all here. The tragic upshot for me is that this is not a device I’d rely on in an emergency. There are so many gotchas and dead-ends in the UX that would trip people up and prevent them from communicating with me. Even though the T-Deck broke my heart, I still hoped to use MeshCore with a different device. I needed to see how these devices worked in the real world rather than a few inches away from each other on my desk. First, I took my T-1000e to a friend’s house about a mile away and tried messaging the Heltec back in my home office. The transmission failed, as it seemed the two devices couldn’t see each other at all from that distance. Okay, fair enough. I’m in a suburban neighborhood, and there are lots of houses, trees, and cars between my house and my friend’s place. The next time I was riding in a car away from my house, I took along my T-1000e and tried messaging the Heltec v3 in my office. One block away: messages succeeded. Three blocks away: still working. Five blocks away: failure. And then I was never able to reach my home device until returning home later that day. Maybe the issue is the Heltec? I keep trying to leave the Heltec at home, but I read that the Heltec v3 has a particularly weak antenna. I tried again by leaving my T-1000e at home and taking the T-Deck out with me. I could successfully message my T-1000e from about five blocks away, but everything beyond that failed. The other part of the MeshCore ecosystem I haven’t mentioned yet is repeaters. The SenseCAP Solar P1-Pro , a solar-powered MeshCore repeater MeshCore repeaters are like WiFi extenders. They receive MeshCore messages and re-broadcast them to extend their reach. Repeaters are what create the “mesh” in MeshCore. The repeaters send messages to other repeaters and carry your MeshCore messages over longer distances. There are some technologically cool repeaters available. They’re solar powered with an internal battery, so they run independently and can survive a few days without sun. The problem was that I didn’t know how much difference a repeater makes. A repeater with a strong antenna would broadcast messages well, but does that solve my problem? If my T-Deck can’t send messages to my T-1000e from six blocks away, how is it going to reach the repeater? By this point, my enthusiasm for MeshCore had waned, and I didn’t want to spend another $100 and mount a broadcasting device to my house when I didn’t know how much it would improve my experience. MeshCore’s firmware is open-source , so I took a look to see if there was anything I could do to improve the user experience on the T-Deck. The first surprise with the source code was that there were no automated tests. I wrote simple unit tests , but nobody from the MeshCore team has responded to my proposal, and it’s been about two months. From casually browsing, the codebase feels messy but not outrageously so. It’s written in C++, and most of the classes have a large surface area with 20+ non-private functions and fields, but that’s what I see in a lot of embedded software projects. Another code smell was that my unit test calls the function, which encodes raw bytes to a hex string . MeshCore’s implementation depends on headers for two crypto libraries , even though the function has nothing to do with cryptography. It’s the kind of needless coupling MeshCore would avoid if they wrote unit tests for each component. My other petty gripe was that the code doesn’t have consistent style conventions. Someone proposed using the file that’s already in the repo , but a maintainer closed the issue with the guidance, “Just make sure your own IDE isn’t making unnecessary changes when you do a commit.” Why? Why in 2025 do I have to think about where to place my curly braces to match the local style? Just set up a formatter so I don’t have to think about mundane style issues anymore. I originally started digging into the MeshCore source to understand the T-Deck UI, but I couldn’t find any code for it. I couldn’t find the source to the MeshCore Android or web apps either. And then I realized: it’s all closed-source. All of the official MeshCore client implementations are closed-source and proprietary. Reading the MeshCore FAQ , I realized critical components are closed-source. What!?! They’d advertised this as open-source! How could they trick me? And then I went back to the MeshCore website and realized they never say “open-source” anywhere. I must have dreamed the part where they advertised MeshCore as open-source. It just seems like such an open-source thing that I assumed it was. But I was severely disappointed to discover that critical parts of MeshCore are proprietary. Without open-source clients, MeshCore doesn’t work for me. I’m not an open-source zealot, and I think it’s fine for software to be proprietary, but the whole point of off-grid communication is decentralization and technology freedom, so I can’t get on board with a closed-source solution. Some parts of the MeshCore ecosystem are indeed open-source and liberally licensed, but critically the T-Deck firmware, the web app, and the mobile apps are all closed-source and proprietary. The firmware I flashed to my Heltec v3 and T-1000e is open-source, but the mobile and Android apps (clients) I used to use the radios were closed-source and proprietary. As far as I see, there are no open-source MeshCore clients aside from the development CLI . I still love the idea of MeshCore, but it doesn’t yet feel practical for communicating in an emergency. The software is too difficult to use, and I’ve been unable to send messages farther than five blocks (about 0.3 miles). I’m open to revisiting MeshCore, but I’m waiting on open-source clients and improvements in usability. Disconnect the T-Deck from USB-C. Power off the T-Deck. Connect the T-Deck to your computer via the USB-C port. Hold down the thumbwheel in the center. Power on the device. It is incredibly cool to send text messages without relying on a big company’s infrastructure. The concept delights the part of my brain that enjoys disaster prep. MeshCore runs on a wide variety of low-cost devices, many of which also work for Meshtastic. There’s an active, enthusiastic community around it. All of the official MeshCore clients are closed-source and proprietary. The user experience is too brittle for me to rely on in an emergency, especially if I’m trying to communicate with MeshCore beginners. Most of the hardware assumes you’ll pair it with your mobile phone over Bluetooth, which introduces many more points of failure and complexity. The only official standalone device is the T-Deck+, but I found it confusing and frustrating to use. There’s no written getting started guide. There’s a FAQ , but it’s a hodgepodge of details without much organization. There’s a good unofficial intro video , but I prefer text documentation.

0 views
Michael Lynch 3 months ago

Read My Blog With Javascript

You can now read my blog with client-side JavaScript. I’m not sure why you’d want to, but you can. Maybe you want to add a blogroll to your site with a list of recent posts from your favorite blogs, but you don’t want to fetch them server side. If you wanted to use JavaScript to show my five most recent post titles, you’d write some code like this: The above code produces this output: I got the idea from a recent comment Simon Willison made on Lobsters . The only thing I had to change to enable JavaScript access was to set Cross-Origin Resource Sharing (CORS) HTTP headers for my RSS feeds. Typically, the thing that prevents other sites from reading each other’s content with client-side JavaScript is same-origin policy . Same-origin policy says that each site (origin) can only read resources associated with its own domain. So, if you visit my blog at mtlynch.io, and I have JavaScript that tries to read your bank balance from chase.com, same-origin policy forbids JavaScript on my page from accessing that information. To allow other websites to read my blog through JavaScript, I had to set CORS headers for my blog’s RSS feeds. This blog is a static site that I currently host on Netlify, so I had to change my Netlify configuration file to specify CORS headers for my RSS feed URLs : CORS is a security mechanism, and I’m always appropriately hesitant to relax security restrictions on an Internet-facing site. But I spent a while considering the risks, and I don’t see any meaningful risk in my situation. The purpose of same-origin policy is that if a user has sensitive data on site A, then site B can’t access any of it unless site A explicitly gives permission. My blog is a static site with no secret information. When I visit mtlynch.io, I see the exact same thing everyone else does. So, even if an attacker convinces me to run malicious JavaScript on a third-party site, the code can’t abuse my privileges on my blog because I don’t have any special privileges here. I do use TalkYard for embedded commenting, and I have admin privileges there, but CORS settings for my RSS feeds don’t affect TalkYard. At first, I thought an attacker might abuse CORS settings to launch a DDoS attack against my site. What if the attacker gets millions of people to visit a page that has JavaScript in the background to constantly request my RSS feed? Then, I realized such a DDoS attack is already possible. CORS only controls whether a third-party domain can read the results of a request, but it doesn’t block the request in the first place. Any domain can make GET and POST requests to any other domain, regardless of CORS settings. Another attack I considered is impersonation. A visitor can go to evil.example.com, and the server there could send back JavaScript that reconstructs my blog in the visitor’s browser even though the URL bar still says evil.example.com. This attack could work, but there are simpler ways to impersonate my blog, regardless of my CORS settings. An impostor can run an HTTP proxy that forwards requests to my blog, which is a simpler way to impersonate my blog. Or, they could just scrape my site and host it somewhere else. Nobody asked me to enable CORS for my RSS feeds, so I don’t know that it actually benefits anyone. But I enjoy the open web and this is an interesting way to allow other sites to interoperate with mine, so I figured why not? If you end up doing anything interesting with my RSS feeds as a result of this change, let me know .

0 views
Michael Lynch 3 months ago

Refactoring English: Month 10

Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers . Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall. At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I did complete this successfully, but I spent too long on the post and felt somewhat underwhelmed with my final result. I wrote a first draft of a new chapter but didn’t publish it. I ended up spending more time than I planned on “The Software Essays that Shaped Me” and freelance editing clients. I was going to write this off and say that I’m not learning anything new anymore by reaching out to customers. Then, a few days ago, I heard back from a reader I’d reached out to who said he used what he learned from my book to get an article on the front page of Hacker News for the first time. So, that was pretty indisputably valuable and tells me I should be doing more of this. I brainstorm more about this below . September had a nice bump in website visitors and pre-orders. I’d like to get to the point where there’s a virtuous cycle of readers referring other readers, but I don’t think I’m there yet. Still, nice to make almost $1k for the month. In baseball, a bunt is when you hold the bat in the ball’s path rather than swinging the bat. The upside is that you’re less likely to miss, but the downside is that you won’t hit the ball very far. The best you can hope for with a bunt is making it to first base, but a bunt is almost never going to be a home run. Most of my blog posts are “swing for the fences” posts. I put in a lot of effort because I want to reach #1 on Hacker News, reddit, or search results. The problem is that my “swing for the fences” posts take me about a month to write, so if I’m publishing blog posts as I write my book, I’d have to put my book on hold for a month every time I write a blog post. I’ve been thinking about whether I could do some “bunt” posts instead. That way, I can only put my book on hold for a week rather than the whole month. I don’t want to take a topic that deserves a lot of care and just do a lazy version of it. Rather, I want to take a topic that’s easy to cover and just see how it does. My first bunt was, “I Once Appeared in The Old New Thing.” It was about an experience I had at 22 at my first real job. I didn’t have a lot of insightful things to say about it, but I thought it was an interesting story. I was able to write it in about four hours, and it felt complete for what it was. My next bunt was, “The Software Essays that Shaped Me.” I’ve seen other people share lists of their favorite software blog posts, and I thought it would be an easy, fun thing to do. Best of all, the people who appreciate good software writing might also find my book interesting. As I started to write “The Software Essays that Shaped Me,” it turned into more than just a bunt. I ended up spending almost all of September on it. I originally thought I’d list my favorite blog posts and call it a day, but that felt too boring. So, I tried to include short commentary about each post. Then, I got carried away and ended up writing commentary that was longer than the originals themselves. It took me several drafts to figure out what commentary felt interesting, and I still don’t feel like I quite succeeded. I ended up spending 17 hours on “The Software Essays that Shaped Me” and never stopped to evaluate whether it was still worth writing if it was going to be all that work. I think the post is interesting to people who read my blog. If someone I knew published a list of articles that influenced them, I’d find that interesting. But in comment threads about the post, people shared their own lists, and I found strangers’ lists totally uninteresting. Maybe I counteracted that some by investing a lot in my commentary, but I just don’t think a list of good blog posts can be all that interesting. Both posts did well. They both reached the front page of Hacker News, though they did it through the second chance pool , which feels a little like winning through TKO rather than a real knockout. It’s interesting that the results scaled almost linearly with the effort I invested, which I typically don’t find to be the case . Previously, when one of my Refactoring English posts did well on Hacker News, there was a noticeable uptick in readers purchasing the book . This time, “The Software Essays that Shaped Me” reached #2 and stayed on the front page for 11 hours, but only one person purchased. Maybe everyone seeing my post on Hacker News has already seen that I’m writing a book, so everyone who’s interested has already bought? I woke up the morning after my article had already fallen off the front page of Hacker News and suddenly realized: I never included the ad for the book! All the sample chapters on the book’s website include a little self-ad to tell the reader I’m writing a book on this topic, and they can buy early access. All the pages on the Refactoring English website are supposed to have a little self-ad on them for the book. I forgot to include the self-ad for the blog post, so the first 14k readers saw my post and had no idea I’m writing a book. D’oh! I’ve updated my blog template so that I can’t possibly forget to include the self-ad in the future. A few months ago, I decided to offer freelance editing services to help other developers improve writing on their blogs. My idea was that it’s an opportunity to make sure the way I explain concepts in my book makes sense to real people. The downside is that there’s a high cost to the editing. Each job takes me between four to seven hours, and it eats up my “hard thinking” of the day, so it’s tough to do my own writing in the same day. I also feel pressure to offer quick turnaround, even though nobody has asked me to hurry. But just knowing my own writing process, it sucks to be stuck for days waiting on feedback. At the beginning, freelance editing worked as I planned: it gave me good ideas for my book. As I do more jobs, I’m getting fewer ideas for my book. Now, most of the feedback I write is basically writing a personalized version of something I’ve already written for my book. I want to keep doing the editing, but only for authors who have read my book. I doubled my rates, so now my price for editing a blog post is $400. But I’m going to offer a 90% discount to readers who have read my book. At a 90% discount, it’s almost not worth charging at all, but I want clients to pay some amount so that they feel like they have skin in the game, too. I’ll continue to take on clients who haven’t read the book, but I want to charge enough that I feel like it’s worth the tradeoff of taking time from my book. $400 might still be too low, but we’ll see. I’m trying to figure out why I keep missing my goal of reader outreach. On its face, it doesn’t seem that hard, but it never seems like the most important thing, so I keep deferring it. There are other tasks I procrastinate because I don’t enjoy doing them, but I actually enjoy reaching out to readers. It’s fun to see what different readers are up to and how they might apply my techniques. Part of the issue is that emailing readers requires activation energy because I have to: It might help if I first gather a list of customers to email and their websites. That way, when I’m in the mood to reach out, I’m not starting from scratch every time. A few Refactoring English customers have emailed me confused because they paid but never got an email with a link to the book. I collect payment through Stripe, and Stripe redirects customers to the book’s URL after they complete payment. If the customer doesn’t notice the redirect or forgets to bookmark the page, they lose access to the book. Whenever customers tell me they can’t find the link to the book, I dig around in Stripe to look for a setting to customize post-purchase emails, give up after a few minutes, and then email the correct link to the customer. Last month, I finally sat down and searched through Stripe’s documentation and forum posts, and I can’t find any way to customize the email Stripe sends after a customer completes a one-time payment. As far as I can tell, the only option is to spin up your own web server to listen for Stripe webhooks, then send your own emails from your own email provider. All because Stripe can’t be bothered to let merchants customize any text in the payment completion emails… Setting up a web server to respond to webhooks shouldn’t be that hard for me, but it means writing code to glue together Stripe, Buttondown, and Netlify functions, and they all have their little gotchas and bugs. Especially Stripe. I’ve spent about 10 hours so far just trying to get emails to send after a customer makes a purchase, and I’m still not sure it’s working correctly. Here are the gotchas I’ve hit so far: I’m still tinkering with Hacker News Observer, a product that I still haven’t released and don’t know what to do with. For now, I’m just gathering data and using it to satisfy some curiosities about success on Hacker News. One curiosity I’ve had for a long time is whether there are times of day when it’s easier for a post to reach the front page of Hacker News, so I aggregated what percentage of posts reach the front page over the course of a day: I created a view in Hacker News observer to show front page stats by hour I initially thought I had a bug that overcounted the success rate, as the percentage of Hacker News submissions that reach the front page feels lower than 12% in my experience. Then, I looked at some random slices from the last few days, and it seems to match up. If I browse , there will typically be 2-5 stories that reached the front page. I found a 30-minute slice from a few days ago where 27% of submissions reached the front page, which is surprising. I thought that success rate would be significantly higher on the weekends, when there are fewer submissions. Weekend posts are more likely to reach the front page, but the effect is much smaller than I thought. I thought it was going to be like 5% on weekdays vs. 20% on weekends. It makes submitting on the weekend less attractive because your chances of hitting the front page are only slightly better, but if you succeed, there are substantially fewer readers. I’d like to try limiting the data to personal blogs like I do on HN Popularity Contest , as I’m curious to see if personal blogs have better chances at certain times. I’m experimenting with low-investment, low-payoff-style blog posts. I’m adjusting my strategy for freelance editing to work specifically with people who have read my book. My intuition was way off about the odds of reaching the front page of Hacker News. Result : Published “The Software Essays that Shaped Me” , which attracted 16k readers in the first three days Result : Didn’t publish anything new Result : Emailed two new readers Go to my list of pre-paid readers Look for ones that have a website (so I can say something personalized) Read through their website to learn more about them Write an email and word it carefully to avoid sounding AI-generated Stripe’s Go client library is compatible with exactly one version of the Stripe webhook API. No, the documentation doesn’t say which one. Run it and find out from the webhook failures! If you update your Stripe account to use the latest webhook API version and then resend a webhook for a previous event, Stripe still uses the old API version even though it claims to use the new version. Netlify silently converts HTTP header names to lowercase, so if you’re looking for the header, you have to look for . Instead of a normal v2 Go module , Stripe for some reason decided to make every package upgrade a source change as well, so when I upgrade from v83 to v84, I have to replace in every file that imports the Stripe package. Normally, you’d upgrade the version in one place without affecting imports. The Stripe webhook signing secret is different from your Stripe API key. Weekdays: 12.1% of submissions reach the front page. Weekends: 13.2% of submissions reach the front page. Published “The Software Essays that Shaped Me” Published “I Once Appeared in The Old New Thing” Published “Get xkcd Cartoons at 2x Resolution” Worked with two freelance clients for Refactoring English Set up a webhook handler to send post-purchase emails to Refactoring English customers Added “success by hour of day” feature to Hacker News observer Started contributing to the Jellyfin Roku client code Had a call with AirGradient to discuss improving relations between the company and community members Consider bailing if a low-investment post turns out to be high-investment. Stripe does not allow you to customize post-purchase emails. You have to do a bunch of other stuff to send your customers an email. Set up editing discounts for readers who have read the book. Create a list of early access customers to reach out to. Publish a new chapter of the book.

0 views
Michael Lynch 3 months ago

List of 2x-resolution xkcd Cartoons

This is a list of all the xkcd cartoons that are available in 2x resolution, as of today’s date. See the accompanying post, “Get xkcd Cartoons at 2x Resolution,” for an explanation. 1: No higher res available 2: No higher res available 3: No higher res available 4: No higher res available 5: No higher res available 6: No higher res available 7: No higher res available 8: No higher res available 9: No higher res available 10: No higher res available 11: No higher res available 12: No higher res available 13: No higher res available 14: No higher res available 15: No higher res available 16: No higher res available 17: No higher res available 18: No higher res available 19: No higher res available 20: No higher res available 21: No higher res available 22: No higher res available 23: No higher res available 24: No higher res available 25: No higher res available 26: No higher res available 27: No higher res available 28: No higher res available 29: No higher res available 30: No higher res available 31: No higher res available 32: No higher res available 33: No higher res available 34: No higher res available 35: No higher res available 36: No higher res available 37: No higher res available 38: No higher res available 39: No higher res available 40: No higher res available 41: No higher res available 42: No higher res available 43: No higher res available 44: No higher res available 45: No higher res available 46: No higher res available 47: No higher res available 48: No higher res available 49: No higher res available 50: No higher res available 51: No higher res available 52: No higher res available 53: No higher res available 54: No higher res available 55: No higher res available 56: No higher res available 57: No higher res available 58: No higher res available 59: No higher res available 60: No higher res available 61: No higher res available 62: No higher res available 63: No higher res available 64: No higher res available 65: No higher res available 66: No higher res available 67: No higher res available 68: No higher res available 69: No higher res available 70: No higher res available 71: No higher res available 72: No higher res available 73: No higher res available 74: No higher res available 75: No higher res available 76: No higher res available 77: No higher res available 78: No higher res available 79: No higher res available 80: No higher res available 81: No higher res available 82: No higher res available 83: No higher res available 84: No higher res available 85: No higher res available 86: No higher res available 87: No higher res available 88: No higher res available 89: No higher res available 90: No higher res available 91: No higher res available 92: No higher res available 93: No higher res available 94: No higher res available 95: No higher res available 96: No higher res available 97: No higher res available 98: No higher res available 99: No higher res available 100: No higher res available 101: No higher res available 102: No higher res available 103: No higher res available 104: No higher res available 105: No higher res available 106: No higher res available 107: No higher res available 108: No higher res available 109: No higher res available 110: No higher res available 111: No higher res available 112: No higher res available 113: No higher res available 114: No higher res available 115: No higher res available 116: No higher res available 117: No higher res available 118: No higher res available 119: No higher res available 120: No higher res available 121: No higher res available 122: No higher res available 123: No higher res available 124: https://imgs.xkcd.com/comics/blogofractal_2x.png 125: No higher res available 126: No higher res available 127: No higher res available 128: No higher res available 129: No higher res available 130: No higher res available 131: No higher res available 132: No higher res available 133: No higher res available 134: No higher res available 135: No higher res available 136: No higher res available 137: No higher res available 138: No higher res available 139: No higher res available 140: No higher res available 141: No higher res available 142: No higher res available 143: No higher res available 144: No higher res available 145: No higher res available 146: No higher res available 147: No higher res available 148: No higher res available 149: No higher res available 150: No higher res available 151: No higher res available 152: No higher res available 153: No higher res available 154: No higher res available 155: No higher res available 156: No higher res available 157: No higher res available 158: No higher res available 159: No higher res available 160: No higher res available 161: No higher res available 162: No higher res available 163: No higher res available 164: No higher res available 165: No higher res available 166: No higher res available 167: No higher res available 168: No higher res available 169: No higher res available 170: No higher res available 171: No higher res available 172: No higher res available 173: No higher res available 174: No higher res available 175: No higher res available 176: No higher res available 177: No higher res available 178: No higher res available 179: No higher res available 180: No higher res available 181: No higher res available 182: No higher res available 183: No higher res available 184: No higher res available 185: No higher res available 186: No higher res available 187: No higher res available 188: No higher res available 189: No higher res available 190: No higher res available 191: No higher res available 192: No higher res available 193: No higher res available 194: No higher res available 195: No higher res available 196: No higher res available 197: No higher res available 198: No higher res available 199: No higher res available 200: No higher res available 201: No higher res available 202: No higher res available 203: No higher res available 204: No higher res available 205: No higher res available 206: No higher res available 207: No higher res available 208: No higher res available 209: No higher res available 210: No higher res available 211: No higher res available 212: No higher res available 213: No higher res available 214: No higher res available 215: No higher res available 216: No higher res available 217: No higher res available 218: No higher res available 219: No higher res available 220: No higher res available 221: No higher res available 222: No higher res available 223: No higher res available 224: No higher res available 225: No higher res available 226: No higher res available 227: No higher res available 228: No higher res available 229: No higher res available 230: No higher res available 231: https://imgs.xkcd.com/comics/cat_proximity_2x.png 232: No higher res available 233: No higher res available 234: No higher res available 235: No higher res available 236: No higher res available 237: No higher res available 238: No higher res available 239: No higher res available 240: No higher res available 241: No higher res available 242: No higher res available 243: No higher res available 244: No higher res available 245: No higher res available 246: No higher res available 247: No higher res available 248: No higher res available 249: No higher res available 250: No higher res available 251: No higher res available 252: No higher res available 253: No higher res available 254: No higher res available 255: No higher res available 256: No higher res available 257: No higher res available 258: No higher res available 259: No higher res available 260: No higher res available 261: No higher res available 262: No higher res available 263: No higher res available 264: No higher res available 265: No higher res available 266: No higher res available 267: No higher res available 268: No higher res available 269: No higher res available 270: No higher res available 271: No higher res available 272: No higher res available 273: No higher res available 274: No higher res available 275: No higher res available 276: No higher res available 277: No higher res available 278: No higher res available 279: No higher res available 280: No higher res available 281: No higher res available 282: No higher res available 283: No higher res available 284: No higher res available 285: No higher res available 286: No higher res available 287: No higher res available 288: No higher res available 289: No higher res available 290: No higher res available 291: No higher res available 292: No higher res available 293: No higher res available 294: No higher res available 295: No higher res available 296: No higher res available 297: No higher res available 298: No higher res available 299: No higher res available 300: No higher res available 301: No higher res available 302: No higher res available 303: No higher res available 304: No higher res available 305: No higher res available 306: No higher res available 307: No higher res available 308: No higher res available 309: No higher res available 310: No higher res available 311: No higher res available 312: No higher res available 313: No higher res available 314: No higher res available 315: No higher res available 316: No higher res available 317: No higher res available 318: No higher res available 319: No higher res available 320: No higher res available 321: No higher res available 322: No higher res available 323: No higher res available 324: No higher res available 325: No higher res available 326: No higher res available 327: https://imgs.xkcd.com/comics/exploits_of_a_mom_2x.png 328: No higher res available 329: No higher res available 330: No higher res available 331: No higher res available 332: No higher res available 333: No higher res available 334: No higher res available 335: No higher res available 336: No higher res available 337: No higher res available 338: No higher res available 339: No higher res available 340: No higher res available 341: No higher res available 342: No higher res available 343: No higher res available 344: No higher res available 345: No higher res available 346: No higher res available 347: No higher res available 348: No higher res available 349: No higher res available 350: No higher res available 351: No higher res available 352: No higher res available 353: No higher res available 354: No higher res available 355: No higher res available 356: No higher res available 357: No higher res available 358: No higher res available 359: No higher res available 360: No higher res available 361: No higher res available 362: No higher res available 363: No higher res available 364: No higher res available 365: No higher res available 366: No higher res available 367: No higher res available 368: No higher res available 369: No higher res available 370: No higher res available 371: No higher res available 372: No higher res available 373: No higher res available 374: No higher res available 375: No higher res available 376: No higher res available 377: No higher res available 378: No higher res available 379: No higher res available 380: No higher res available 381: No higher res available 382: No higher res available 383: No higher res available 384: No higher res available 385: No higher res available 386: https://imgs.xkcd.com/comics/duty_calls_2x.png 387: No higher res available 388: No higher res available 389: No higher res available 390: No higher res available 391: No higher res available 392: No higher res available 393: No higher res available 394: No higher res available 395: No higher res available 396: No higher res available 397: No higher res available 398: No higher res available 399: No higher res available 400: No higher res available 401: No higher res available 402: No higher res available 403: No higher res available 405: No higher res available 406: No higher res available 407: No higher res available 408: No higher res available 409: No higher res available 410: No higher res available 411: No higher res available 412: No higher res available 413: No higher res available 414: No higher res available 415: No higher res available 416: No higher res available 417: No higher res available 418: No higher res available 419: No higher res available 420: No higher res available 421: No higher res available 422: No higher res available 423: No higher res available 424: No higher res available 425: No higher res available 426: No higher res available 427: No higher res available 428: No higher res available 429: No higher res available 430: No higher res available 431: No higher res available 432: No higher res available 433: No higher res available 434: No higher res available 435: No higher res available 436: No higher res available 437: No higher res available 438: No higher res available 439: No higher res available 440: No higher res available 441: No higher res available 442: No higher res available 443: No higher res available 444: No higher res available 445: No higher res available 446: No higher res available 447: No higher res available 448: No higher res available 449: No higher res available 450: No higher res available 451: No higher res available 452: No higher res available 453: No higher res available 454: No higher res available 455: No higher res available 456: No higher res available 457: No higher res available 458: No higher res available 459: No higher res available 460: No higher res available 461: No higher res available 462: No higher res available 463: No higher res available 464: No higher res available 465: No higher res available 466: No higher res available 467: No higher res available 468: No higher res available 469: No higher res available 470: No higher res available 471: No higher res available 472: No higher res available 473: No higher res available 474: No higher res available 475: No higher res available 476: No higher res available 477: No higher res available 478: No higher res available 479: No higher res available 480: No higher res available 481: No higher res available 482: No higher res available 483: No higher res available 484: No higher res available 485: No higher res available 486: No higher res available 487: No higher res available 488: No higher res available 489: No higher res available 490: https://imgs.xkcd.com/comics/morning_routine_2x.png 491: No higher res available 492: No higher res available 493: No higher res available 494: No higher res available 495: No higher res available 496: No higher res available 497: No higher res available 498: No higher res available 499: No higher res available 500: https://imgs.xkcd.com/comics/election_2x.png 501: No higher res available 502: No higher res available 503: No higher res available 504: No higher res available 505: No higher res available 506: No higher res available 507: No higher res available 508: No higher res available 509: No higher res available 510: No higher res available 511: No higher res available 512: No higher res available 513: No higher res available 514: No higher res available 515: No higher res available 516: No higher res available 517: No higher res available 518: No higher res available 519: No higher res available 520: No higher res available 521: No higher res available 522: No higher res available 523: No higher res available 524: No higher res available 525: No higher res available 526: No higher res available 527: No higher res available 528: No higher res available 529: No higher res available 530: No higher res available 531: No higher res available 532: No higher res available 533: No higher res available 534: No higher res available 535: No higher res available 536: No higher res available 537: No higher res available 538: No higher res available 539: No higher res available 540: No higher res available 541: No higher res available 542: No higher res available 543: No higher res available 544: No higher res available 545: No higher res available 546: No higher res available 547: No higher res available 548: No higher res available 549: No higher res available 550: No higher res available 551: No higher res available 552: https://imgs.xkcd.com/comics/correlation_2x.png 553: No higher res available 554: No higher res available 555: No higher res available 556: No higher res available 557: No higher res available 558: No higher res available 559: No higher res available 560: No higher res available 561: No higher res available 562: No higher res available 563: No higher res available 564: No higher res available 565: No higher res available 566: No higher res available 567: No higher res available 568: No higher res available 569: No higher res available 570: No higher res available 571: No higher res available 572: No higher res available 573: No higher res available 574: No higher res available 575: No higher res available 576: No higher res available 577: No higher res available 578: No higher res available 579: No higher res available 580: No higher res available 581: No higher res available 582: No higher res available 583: No higher res available 584: No higher res available 585: No higher res available 586: No higher res available 587: No higher res available 588: No higher res available 589: No higher res available 590: No higher res available 591: No higher res available 592: No higher res available 593: No higher res available 594: No higher res available 595: No higher res available 596: No higher res available 597: No higher res available 598: No higher res available 599: No higher res available 600: No higher res available 601: No higher res available 602: No higher res available 603: No higher res available 604: No higher res available 605: No higher res available 606: No higher res available 607: No higher res available 608: No higher res available 609: No higher res available 610: No higher res available 611: No higher res available 612: No higher res available 613: No higher res available 614: No higher res available 615: No higher res available 616: No higher res available 617: No higher res available 618: No higher res available 619: No higher res available 620: No higher res available 621: No higher res available 622: No higher res available 623: No higher res available 624: No higher res available 625: No higher res available 626: No higher res available 627: https://imgs.xkcd.com/comics/tech_support_cheat_sheet_2x.png 628: No higher res available 629: No higher res available 630: No higher res available 631: No higher res available 632: No higher res available 633: No higher res available 634: No higher res available 635: No higher res available 636: No higher res available 637: No higher res available 638: No higher res available 639: No higher res available 640: No higher res available 641: No higher res available 642: No higher res available 643: No higher res available 644: No higher res available 645: No higher res available 646: No higher res available 647: No higher res available 648: No higher res available 649: No higher res available 650: No higher res available 651: No higher res available 652: No higher res available 653: No higher res available 654: No higher res available 655: No higher res available 656: No higher res available 657: https://imgs.xkcd.com/comics/movie_narrative_charts_2x.png 658: No higher res available 659: No higher res available 660: No higher res available 661: No higher res available 662: No higher res available 663: No higher res available 664: No higher res available 665: No higher res available 666: No higher res available 667: No higher res available 668: No higher res available 669: No higher res available 670: No higher res available 671: No higher res available 672: No higher res available 673: No higher res available 674: No higher res available 675: No higher res available 676: No higher res available 677: No higher res available 678: No higher res available 679: No higher res available 680: No higher res available 681: No higher res available 682: No higher res available 683: No higher res available 684: No higher res available 685: No higher res available 686: No higher res available 687: No higher res available 688: No higher res available 689: No higher res available 690: No higher res available 691: No higher res available 692: No higher res available 693: No higher res available 694: No higher res available 695: https://imgs.xkcd.com/comics/spirit_2x.png 696: No higher res available 697: No higher res available 698: No higher res available 699: No higher res available 700: No higher res available 701: No higher res available 702: No higher res available 703: No higher res available 704: No higher res available 705: No higher res available 706: No higher res available 707: No higher res available 708: No higher res available 709: No higher res available 710: No higher res available 711: No higher res available 712: No higher res available 713: No higher res available 714: No higher res available 715: No higher res available 716: No higher res available 717: No higher res available 718: No higher res available 719: No higher res available 720: No higher res available 721: No higher res available 722: No higher res available 723: No higher res available 724: No higher res available 725: No higher res available 726: No higher res available 727: No higher res available 728: No higher res available 729: No higher res available 730: No higher res available 731: No higher res available 732: No higher res available 733: No higher res available 734: No higher res available 735: No higher res available 736: No higher res available 737: No higher res available 738: No higher res available 739: No higher res available 740: No higher res available 741: No higher res available 742: No higher res available 743: No higher res available 744: No higher res available 745: No higher res available 746: No higher res available 747: No higher res available 748: No higher res available 749: No higher res available 750: No higher res available 751: No higher res available 752: No higher res available 753: No higher res available 754: No higher res available 755: No higher res available 756: No higher res available 757: No higher res available 758: No higher res available 759: No higher res available 760: No higher res available 761: No higher res available 762: No higher res available 763: No higher res available 764: No higher res available 765: No higher res available 766: No higher res available 767: No higher res available 768: No higher res available 769: No higher res available 770: No higher res available 771: No higher res available 772: No higher res available 773: No higher res available 774: No higher res available 775: No higher res available 776: No higher res available 777: No higher res available 778: No higher res available 779: No higher res available 780: No higher res available 781: No higher res available 782: No higher res available 783: No higher res available 784: No higher res available 785: No higher res available 786: No higher res available 787: No higher res available 788: No higher res available 789: No higher res available 790: No higher res available 791: No higher res available 792: No higher res available 793: https://imgs.xkcd.com/comics/physicists_2x.png 794: No higher res available 795: No higher res available 796: No higher res available 797: No higher res available 798: No higher res available 799: No higher res available 800: No higher res available 801: No higher res available 802: https://imgs.xkcd.com/comics/online_communities_2_2x.png 803: No higher res available 804: No higher res available 805: No higher res available 806: No higher res available 807: No higher res available 808: No higher res available 809: No higher res available 810: No higher res available 811: No higher res available 812: No higher res available 813: No higher res available 814: No higher res available 815: No higher res available 816: No higher res available 817: No higher res available 818: No higher res available 819: No higher res available 820: No higher res available 821: No higher res available 822: No higher res available 823: No higher res available 824: No higher res available 825: No higher res available 826: No higher res available 827: https://imgs.xkcd.com/comics/my_business_idea_2x.png 828: No higher res available 829: No higher res available 830: No higher res available 831: No higher res available 832: No higher res available 833: No higher res available 834: No higher res available 835: No higher res available 836: No higher res available 837: No higher res available 838: No higher res available 839: No higher res available 840: No higher res available 841: No higher res available 842: No higher res available 843: No higher res available 844: No higher res available 845: No higher res available 846: No higher res available 847: No higher res available 848: No higher res available 849: No higher res available 850: No higher res available 851: No higher res available 852: No higher res available 853: No higher res available 854: No higher res available 855: No higher res available 856: No higher res available 857: No higher res available 858: No higher res available 859: No higher res available 860: No higher res available 861: No higher res available 862: No higher res available 863: No higher res available 864: No higher res available 865: No higher res available 866: No higher res available 867: No higher res available 868: No higher res available 869: No higher res available 870: No higher res available 871: No higher res available 872: No higher res available 873: No higher res available 874: No higher res available 875: No higher res available 876: No higher res available 877: No higher res available 878: No higher res available 879: No higher res available 880: No higher res available 881: No higher res available 882: No higher res available 883: No higher res available 884: No higher res available 885: No higher res available 886: No higher res available 887: No higher res available 888: No higher res available 889: https://imgs.xkcd.com/comics/turtles_2x.png 890: No higher res available 891: No higher res available 892: No higher res available 893: No higher res available 894: No higher res available 895: No higher res available 896: No higher res available 897: No higher res available 898: No higher res available 899: No higher res available 900: No higher res available 901: No higher res available 902: No higher res available 903: No higher res available 904: No higher res available 905: No higher res available 906: No higher res available 907: No higher res available 908: No higher res available 909: No higher res available 910: No higher res available 911: https://imgs.xkcd.com/comics/magic_school_bus_2x.png 912: No higher res available 913: No higher res available 914: No higher res available 915: No higher res available 916: No higher res available 917: No higher res available 918: No higher res available 919: No higher res available 920: No higher res available 921: No higher res available 922: No higher res available 923: No higher res available 924: No higher res available 925: No higher res available 926: No higher res available 927: https://imgs.xkcd.com/comics/standards_2x.png 928: No higher res available 929: No higher res available 930: No higher res available 931: No higher res available 932: No higher res available 933: No higher res available 934: No higher res available 935: No higher res available 936: https://imgs.xkcd.com/comics/password_strength_2x.png 937: https://imgs.xkcd.com/comics/tornadoguard_2x.png 938: No higher res available 939: No higher res available 940: No higher res available 941: No higher res available 942: No higher res available 943: No higher res available 944: No higher res available 945: No higher res available 946: No higher res available 947: No higher res available 948: No higher res available 949: No higher res available 950: No higher res available 951: No higher res available 952: No higher res available 953: No higher res available 954: No higher res available 955: No higher res available 956: No higher res available 957: No higher res available 958: No higher res available 959: No higher res available 960: No higher res available 961: No higher res available 962: No higher res available 963: No higher res available 964: No higher res available 965: No higher res available 966: No higher res available 967: https://imgs.xkcd.com/comics/prairie_2x.png 968: No higher res available 969: No higher res available 970: No higher res available 971: No higher res available 972: No higher res available 973: No higher res available 974: No higher res available 975: No higher res available 976: No higher res available 977: No higher res available 978: No higher res available 979: No higher res available 980: No higher res available 981: No higher res available 982: No higher res available 983: No higher res available 984: No higher res available 985: No higher res available 986: No higher res available 987: No higher res available 988: https://imgs.xkcd.com/comics/tradition_2x.png 989: No higher res available 990: No higher res available 991: No higher res available 992: https://imgs.xkcd.com/comics/mnemonics_2x.png 993: No higher res available 994: No higher res available 995: No higher res available 996: No higher res available 997: No higher res available 998: No higher res available 999: No higher res available 1000: No higher res available 1001: No higher res available 1002: No higher res available 1003: No higher res available 1004: No higher res available 1005: No higher res available 1006: No higher res available 1007: No higher res available 1008: No higher res available 1009: No higher res available 1010: No higher res available 1011: No higher res available 1012: No higher res available 1013: https://imgs.xkcd.com/comics/wake_up_sheeple_2x.png 1014: No higher res available 1015: No higher res available 1016: No higher res available 1017: No higher res available 1018: No higher res available 1019: No higher res available 1020: No higher res available 1021: No higher res available 1022: No higher res available 1023: No higher res available 1024: No higher res available 1025: No higher res available 1026: No higher res available 1027: https://imgs.xkcd.com/comics/pickup_artist_2x.png 1028: No higher res available 1029: No higher res available 1030: No higher res available 1031: No higher res available 1032: No higher res available 1033: No higher res available 1034: No higher res available 1035: No higher res available 1036: No higher res available 1037: No higher res available 1038: No higher res available 1039: No higher res available 1040: No higher res available 1041: No higher res available 1042: No higher res available 1043: No higher res available 1044: https://imgs.xkcd.com/comics/romney_quiz_2x.png 1045: No higher res available 1046: No higher res available 1047: No higher res available 1048: No higher res available 1049: No higher res available 1050: No higher res available 1051: No higher res available 1052: No higher res available 1053: https://imgs.xkcd.com/comics/ten_thousand_2x.png 1054: No higher res available 1055: No higher res available 1056: No higher res available 1057: No higher res available 1058: No higher res available 1059: No higher res available 1060: No higher res available 1061: https://imgs.xkcd.com/comics/est_2x.png 1062: No higher res available 1063: https://imgs.xkcd.com/comics/kill_hitler_2x.png 1064: No higher res available 1065: No higher res available 1066: No higher res available 1067: No higher res available 1068: No higher res available 1069: No higher res available 1070: No higher res available 1071: No higher res available 1072: No higher res available 1073: No higher res available 1074: https://imgs.xkcd.com/comics/moon_landing_2x.png 1075: No higher res available 1076: No higher res available 1077: No higher res available 1078: No higher res available 1079: https://imgs.xkcd.com/comics/united_shapes_2x.png 1080: No higher res available 1081: No higher res available 1082: No higher res available 1083: No higher res available 1084: https://imgs.xkcd.com/comics/server_problem_2x.png 1085: https://imgs.xkcd.com/comics/contextbot_2x.png 1086: https://imgs.xkcd.com/comics/eyelash_wish_log_2x.png 1087: https://imgs.xkcd.com/comics/cirith_ungol_2x.png 1088: https://imgs.xkcd.com/comics/five_years_2x.png 1089: https://imgs.xkcd.com/comics/internal_monologue_2x.png 1090: https://imgs.xkcd.com/comics/formal_languages_2x.png 1091: https://imgs.xkcd.com/comics/curiosity_2x.png 1092: https://imgs.xkcd.com/comics/michael_phelps_2x.png 1093: https://imgs.xkcd.com/comics/forget_2x.png 1094: https://imgs.xkcd.com/comics/interview_2x.png 1095: https://imgs.xkcd.com/comics/crazy_straws_2x.png 1096: https://imgs.xkcd.com/comics/clinically_studied_ingredient_2x.png 1097: No higher res available 1098: https://imgs.xkcd.com/comics/star_ratings_2x.png 1099: https://imgs.xkcd.com/comics/tuesdays_2x.png 1100: https://imgs.xkcd.com/comics/vows_2x.png 1101: https://imgs.xkcd.com/comics/sketchiness_2x.png 1102: https://imgs.xkcd.com/comics/fastest_growing_2x.png 1103: No higher res available 1104: https://imgs.xkcd.com/comics/feathers_2x.png 1105: https://imgs.xkcd.com/comics/license_plate_2x.png 1106: https://imgs.xkcd.com/comics/add_2x.png 1107: https://imgs.xkcd.com/comics/sports_cheat_sheet_2x.png 1108: https://imgs.xkcd.com/comics/cautionary_ghost_2x.png 1109: https://imgs.xkcd.com/comics/refrigerator_2x.png 1110: No higher res available 1111: https://imgs.xkcd.com/comics/premiere_2x.png 1112: https://imgs.xkcd.com/comics/think_logically_2x.png 1113: https://imgs.xkcd.com/comics/killed_in_action_2x.png 1114: https://imgs.xkcd.com/comics/metallurgy_2x.png 1115: https://imgs.xkcd.com/comics/sky_2x.png 1116: No higher res available 1117: https://imgs.xkcd.com/comics/my_sky_2x.png 1118: https://imgs.xkcd.com/comics/microsoft_2x.png 1119: https://imgs.xkcd.com/comics/undoing_2x.png 1120: https://imgs.xkcd.com/comics/blurring_the_line_2x.png 1121: https://imgs.xkcd.com/comics/identity_2x.png 1122: https://imgs.xkcd.com/comics/electoral_precedent_2x.png 1123: https://imgs.xkcd.com/comics/the_universal_label_2x.png 1124: https://imgs.xkcd.com/comics/law_of_drama_2x.png 1125: https://imgs.xkcd.com/comics/objects_in_mirror_2x.png 1126: https://imgs.xkcd.com/comics/epsilon_and_zeta_2x.png 1127: No higher res available 1128: https://imgs.xkcd.com/comics/fifty_shades_2x.png 1129: https://imgs.xkcd.com/comics/cell_number_2x.png 1130: https://imgs.xkcd.com/comics/poll_watching_2x.png 1131: https://imgs.xkcd.com/comics/math_2x.png 1132: https://imgs.xkcd.com/comics/frequentists_vs_bayesians_2x.png 1133: https://imgs.xkcd.com/comics/up_goer_five_2x.png 1134: https://imgs.xkcd.com/comics/logic_boat_2x.png 1135: https://imgs.xkcd.com/comics/arachnoneurology_2x.png 1136: https://imgs.xkcd.com/comics/broken_mirror_2x.png 1137: https://imgs.xkcd.com/comics/rtl_2x.png 1138: https://imgs.xkcd.com/comics/heatmap_2x.png 1139: https://imgs.xkcd.com/comics/rubber_and_glue_2x.png 1140: https://imgs.xkcd.com/comics/calendar_of_meaningful_dates_2x.png 1141: https://imgs.xkcd.com/comics/two_years_2x.png 1142: https://imgs.xkcd.com/comics/coverage_2x.png 1143: https://imgs.xkcd.com/comics/location_2x.png 1144: https://imgs.xkcd.com/comics/tags_2x.png 1145: https://imgs.xkcd.com/comics/sky_color_2x.png 1146: https://imgs.xkcd.com/comics/honest_2x.png 1147: https://imgs.xkcd.com/comics/evolving_2x.png 1148: https://imgs.xkcd.com/comics/nothing_to_offer_2x.png 1149: https://imgs.xkcd.com/comics/broomstick_2x.png 1150: https://imgs.xkcd.com/comics/instagram_2x.png 1151: https://imgs.xkcd.com/comics/tests_2x.png 1152: https://imgs.xkcd.com/comics/communion_2x.png 1153: https://imgs.xkcd.com/comics/proof_2x.png 1154: https://imgs.xkcd.com/comics/resolution_2x.png 1155: https://imgs.xkcd.com/comics/kolmogorov_directions_2x.png 1156: https://imgs.xkcd.com/comics/conditioning_2x.png 1157: https://imgs.xkcd.com/comics/sick_day_2x.png 1158: https://imgs.xkcd.com/comics/rubber_sheet_2x.png 1159: https://imgs.xkcd.com/comics/countdown_2x.png 1160: https://imgs.xkcd.com/comics/drop_those_pounds_2x.png 1161: https://imgs.xkcd.com/comics/hand_sanitizer_2x.png 1162: https://imgs.xkcd.com/comics/log_scale_2x.png 1163: https://imgs.xkcd.com/comics/debugger_2x.png 1164: https://imgs.xkcd.com/comics/home_alone_2x.png 1165: https://imgs.xkcd.com/comics/amazon_2x.png 1166: https://imgs.xkcd.com/comics/argument_2x.png 1167: https://imgs.xkcd.com/comics/star_trek_into_darkness_2x.png 1168: https://imgs.xkcd.com/comics/tar_2x.png 1169: https://imgs.xkcd.com/comics/expedition_2x.png 1170: https://imgs.xkcd.com/comics/bridge_2x.png 1171: https://imgs.xkcd.com/comics/perl_problems_2x.png 1172: https://imgs.xkcd.com/comics/workflow_2x.png 1173: https://imgs.xkcd.com/comics/steroids_2x.png 1174: https://imgs.xkcd.com/comics/app_2x.png 1175: https://imgs.xkcd.com/comics/moving_sidewalks_2x.png 1176: https://imgs.xkcd.com/comics/those_not_present_2x.png 1177: https://imgs.xkcd.com/comics/time_robot_2x.png 1178: https://imgs.xkcd.com/comics/pickup_artists_2x.png 1179: https://imgs.xkcd.com/comics/iso_8601_2x.png 1180: https://imgs.xkcd.com/comics/virus_venn_diagram_2x.png 1181: https://imgs.xkcd.com/comics/pgp_2x.png 1182: No higher res available 1183: https://imgs.xkcd.com/comics/rose_petals_2x.png 1184: https://imgs.xkcd.com/comics/circumference_formula_2x.png 1185: https://imgs.xkcd.com/comics/ineffective_sorts_2x.png 1186: https://imgs.xkcd.com/comics/bumblebees_2x.png 1187: https://imgs.xkcd.com/comics/aspect_ratio_2x.png 1188: https://imgs.xkcd.com/comics/bonding_2x.png 1189: https://imgs.xkcd.com/comics/voyager_1_2x.png 1190: No higher res available 1191: https://imgs.xkcd.com/comics/the_past_2x.png 1192: https://imgs.xkcd.com/comics/humming_2x.png 1193: No higher res available 1194: https://imgs.xkcd.com/comics/stratigraphic_record_2x.png 1195: https://imgs.xkcd.com/comics/flowchart_2x.png 1196: https://imgs.xkcd.com/comics/subways_2x.png 1197: https://imgs.xkcd.com/comics/all_adobe_updates_2x.png 1198: https://imgs.xkcd.com/comics/geologist_2x.png 1199: https://imgs.xkcd.com/comics/silence_2x.png 1200: https://imgs.xkcd.com/comics/authorization_2x.png 1201: https://imgs.xkcd.com/comics/integration_by_parts_2x.png 1202: https://imgs.xkcd.com/comics/girls_and_boys_2x.png 1203: https://imgs.xkcd.com/comics/time_machines_2x.png 1204: https://imgs.xkcd.com/comics/detail_2x.png 1205: https://imgs.xkcd.com/comics/is_it_worth_the_time_2x.png 1206: https://imgs.xkcd.com/comics/einstein_2x.png 1207: https://imgs.xkcd.com/comics/airaware_2x.png 1208: https://imgs.xkcd.com/comics/footnote_labyrinths_2x.png 1209: https://imgs.xkcd.com/comics/encoding_2x.png 1210: https://imgs.xkcd.com/comics/im_so_random_2x.png 1211: https://imgs.xkcd.com/comics/birds_and_dinosaurs_2x.png 1212: https://imgs.xkcd.com/comics/interstellar_memes_2x.png 1213: https://imgs.xkcd.com/comics/combination_vision_test_2x.png 1214: https://imgs.xkcd.com/comics/geoguessr_2x.png 1215: https://imgs.xkcd.com/comics/insight_2x.png 1216: https://imgs.xkcd.com/comics/sticks_and_stones_2x.png 1217: https://imgs.xkcd.com/comics/cells_2x.png 1218: https://imgs.xkcd.com/comics/doors_of_durin_2x.png 1219: https://imgs.xkcd.com/comics/reports_2x.png 1220: https://imgs.xkcd.com/comics/hipsters_2x.png 1221: https://imgs.xkcd.com/comics/nomenclature_2x.png 1222: https://imgs.xkcd.com/comics/pastime_2x.png 1223: https://imgs.xkcd.com/comics/dwarf_fortress_2x.png 1224: https://imgs.xkcd.com/comics/council_of_300_2x.png 1225: https://imgs.xkcd.com/comics/ice_sheets_2x.png 1226: https://imgs.xkcd.com/comics/balloon_internet_2x.png 1227: https://imgs.xkcd.com/comics/the_pace_of_modern_life_2x.png 1228: https://imgs.xkcd.com/comics/prometheus_2x.png 1229: No higher res available 1230: https://imgs.xkcd.com/comics/polar_cartesian_2x.png 1231: https://imgs.xkcd.com/comics/habitable_zone_2x.png 1232: https://imgs.xkcd.com/comics/realistic_criteria_2x.png 1233: https://imgs.xkcd.com/comics/relativity_2x.png 1234: https://imgs.xkcd.com/comics/douglas_engelbart_1925_2013_2x.png 1235: https://imgs.xkcd.com/comics/settled_2x.png 1236: https://imgs.xkcd.com/comics/seashell_2x.png 1237: https://imgs.xkcd.com/comics/qr_code_2x.png 1238: https://imgs.xkcd.com/comics/enlightenment_2x.png 1239: https://imgs.xkcd.com/comics/social_media_2x.png 1240: https://imgs.xkcd.com/comics/quantum_mechanics_2x.png 1241: https://imgs.xkcd.com/comics/annoying_ringtone_champion_2x.png 1242: https://imgs.xkcd.com/comics/scary_names_2x.png 1243: https://imgs.xkcd.com/comics/snare_2x.png 1244: https://imgs.xkcd.com/comics/six_words_2x.png 1245: https://imgs.xkcd.com/comics/10_day_forecast_2x.png 1246: https://imgs.xkcd.com/comics/pale_blue_dot_2x.png 1247: https://imgs.xkcd.com/comics/the_mother_of_all_suspicious_files_2x.png 1248: https://imgs.xkcd.com/comics/sphere_2x.png 1249: https://imgs.xkcd.com/comics/meteor_showers_2x.png 1250: https://imgs.xkcd.com/comics/old_accounts_2x.png 1251: https://imgs.xkcd.com/comics/anti_glass_2x.png 1252: https://imgs.xkcd.com/comics/increased_risk_2x.png 1253: No higher res available 1254: https://imgs.xkcd.com/comics/preferred_chat_system_2x.png 1255: https://imgs.xkcd.com/comics/columbus_2x.png 1256: https://imgs.xkcd.com/comics/questions_2x.png 1257: https://imgs.xkcd.com/comics/monster_2x.png 1258: https://imgs.xkcd.com/comics/first_2x.png 1259: https://imgs.xkcd.com/comics/bee_orchid_2x.png 1260: https://imgs.xkcd.com/comics/ld50_2x.png 1261: https://imgs.xkcd.com/comics/shake_that_2x.png 1262: https://imgs.xkcd.com/comics/unquote_2x.png 1263: https://imgs.xkcd.com/comics/reassuring_2x.png 1264: No higher res available 1265: https://imgs.xkcd.com/comics/juicer_2x.png 1266: https://imgs.xkcd.com/comics/halting_problem_2x.png 1267: https://imgs.xkcd.com/comics/mess_2x.png 1268: https://imgs.xkcd.com/comics/alternate_universe_2x.png 1269: https://imgs.xkcd.com/comics/privacy_opinions_2x.png 1270: https://imgs.xkcd.com/comics/functional_2x.png 1271: https://imgs.xkcd.com/comics/hilighting_2x.png 1272: https://imgs.xkcd.com/comics/shadowfacts_2x.png 1273: https://imgs.xkcd.com/comics/tall_infographics_2x.png 1274: https://imgs.xkcd.com/comics/open_letter_2x.png 1275: https://imgs.xkcd.com/comics/int_pi_2x.png 1276: https://imgs.xkcd.com/comics/angular_size_2x.png 1277: https://imgs.xkcd.com/comics/ayn_random_2x.png 1278: https://imgs.xkcd.com/comics/giraffes_2x.png 1279: https://imgs.xkcd.com/comics/reverse_identity_theft_2x.png 1280: https://imgs.xkcd.com/comics/mystery_news_2x.png 1281: https://imgs.xkcd.com/comics/minifigs_2x.png 1282: https://imgs.xkcd.com/comics/monty_hall_2x.png 1283: https://imgs.xkcd.com/comics/headlines_2x.png 1284: https://imgs.xkcd.com/comics/improved_keyboard_2x.png 1285: https://imgs.xkcd.com/comics/third_way_2x.png 1286: https://imgs.xkcd.com/comics/encryptic_2x.png 1287: https://imgs.xkcd.com/comics/puzzle_2x.png 1288: https://imgs.xkcd.com/comics/substitutions_2x.png 1289: https://imgs.xkcd.com/comics/simple_answers_2x.png 1290: https://imgs.xkcd.com/comics/syllable_planning_2x.png 1291: https://imgs.xkcd.com/comics/shoot_for_the_moon_2x.png 1292: https://imgs.xkcd.com/comics/pi_vs_tau_2x.png 1293: https://imgs.xkcd.com/comics/job_interview_2x.png 1294: https://imgs.xkcd.com/comics/telescope_names_2x.png 1295: https://imgs.xkcd.com/comics/new_study_2x.png 1296: https://imgs.xkcd.com/comics/git_commit_2x.png 1297: https://imgs.xkcd.com/comics/oort_cloud_2x.png 1298: https://imgs.xkcd.com/comics/exoplanet_neighborhood_2x.png 1299: https://imgs.xkcd.com/comics/i_dont_own_a_tv_2x.png 1300: https://imgs.xkcd.com/comics/galilean_moons_2x.png 1301: https://imgs.xkcd.com/comics/file_extensions_2x.png 1302: https://imgs.xkcd.com/comics/year_in_review_2x.png 1303: https://imgs.xkcd.com/comics/profile_info_2x.png 1304: https://imgs.xkcd.com/comics/glass_trolling_2x.png 1305: https://imgs.xkcd.com/comics/undocumented_feature_2x.png 1306: https://imgs.xkcd.com/comics/sigil_cycle_2x.png 1307: https://imgs.xkcd.com/comics/buzzfeed_christmas_2x.png 1308: https://imgs.xkcd.com/comics/christmas_lights_2x.png 1309: https://imgs.xkcd.com/comics/infinite_scrolling_2x.png 1310: https://imgs.xkcd.com/comics/goldbach_conjectures_2x.png 1311: https://imgs.xkcd.com/comics/2014_2x.png 1312: https://imgs.xkcd.com/comics/haskell_2x.png 1313: https://imgs.xkcd.com/comics/regex_golf_2x.png 1314: https://imgs.xkcd.com/comics/photos_2x.png 1315: https://imgs.xkcd.com/comics/questions_for_god_2x.png 1316: https://imgs.xkcd.com/comics/inexplicable_2x.png 1317: https://imgs.xkcd.com/comics/theft_2x.png 1318: https://imgs.xkcd.com/comics/actually_2x.png 1319: https://imgs.xkcd.com/comics/automation_2x.png 1320: https://imgs.xkcd.com/comics/walmart_2x.png 1321: https://imgs.xkcd.com/comics/cold_2x.png 1322: https://imgs.xkcd.com/comics/winter_2x.png 1323: https://imgs.xkcd.com/comics/protocol_2x.png 1324: https://imgs.xkcd.com/comics/weather_2x.png 1325: https://imgs.xkcd.com/comics/rejection_2x.png 1326: https://imgs.xkcd.com/comics/sharks_2x.png 1327: https://imgs.xkcd.com/comics/mobile_marketing_2x.png 1328: https://imgs.xkcd.com/comics/update_2x.png 1329: https://imgs.xkcd.com/comics/standing_2x.png 1330: https://imgs.xkcd.com/comics/kola_borehole_2x.png 1331: No higher res available 1332: https://imgs.xkcd.com/comics/slippery_slope_2x.png 1333: https://imgs.xkcd.com/comics/first_date_2x.png 1334: https://imgs.xkcd.com/comics/second_2x.png 1335: No higher res available 1336: https://imgs.xkcd.com/comics/transformers_2x.png 1337: https://imgs.xkcd.com/comics/hack_2x.png 1338: https://imgs.xkcd.com/comics/land_mammals_2x.png 1339: https://imgs.xkcd.com/comics/when_you_assume_2x.png 1340: https://imgs.xkcd.com/comics/unique_date_2x.png 1341: https://imgs.xkcd.com/comics/types_of_editors_2x.png 1342: https://imgs.xkcd.com/comics/ancient_stars_2x.png 1343: https://imgs.xkcd.com/comics/manuals_2x.png 1344: https://imgs.xkcd.com/comics/digits_2x.png 1345: https://imgs.xkcd.com/comics/answers_2x.png 1346: https://imgs.xkcd.com/comics/career_2x.png 1347: https://imgs.xkcd.com/comics/t_distribution_2x.png 1348: https://imgs.xkcd.com/comics/before_the_internet_2x.png 1349: No higher res available 1350: No higher res available 1351: https://imgs.xkcd.com/comics/metamaterials_2x.png 1352: https://imgs.xkcd.com/comics/cosmologist_on_a_tire_swing_2x.png 1353: https://imgs.xkcd.com/comics/heartbleed_2x.png 1354: https://imgs.xkcd.com/comics/heartbleed_explanation_2x.png 1355: https://imgs.xkcd.com/comics/airplane_message_2x.png 1356: https://imgs.xkcd.com/comics/orbital_mechanics_2x.png 1357: https://imgs.xkcd.com/comics/free_speech_2x.png 1358: https://imgs.xkcd.com/comics/nro_2x.png 1359: https://imgs.xkcd.com/comics/phone_alarm_2x.png 1360: https://imgs.xkcd.com/comics/old_files_2x.png 1361: https://imgs.xkcd.com/comics/google_announcement_2x.png 1362: https://imgs.xkcd.com/comics/morse_code_2x.png 1363: https://imgs.xkcd.com/comics/xkcd_phone_2x.png 1364: https://imgs.xkcd.com/comics/like_im_five_2x.png 1365: https://imgs.xkcd.com/comics/inflation_2x.png 1366: https://imgs.xkcd.com/comics/train_2x.png 1367: https://imgs.xkcd.com/comics/installing_2x.png 1368: https://imgs.xkcd.com/comics/one_of_the_2x.png 1369: https://imgs.xkcd.com/comics/tmi_2x.png 1370: https://imgs.xkcd.com/comics/president_2x.png 1371: https://imgs.xkcd.com/comics/brightness_2x.png 1372: https://imgs.xkcd.com/comics/smartwatches_2x.png 1373: https://imgs.xkcd.com/comics/screenshot_2x.png 1374: https://imgs.xkcd.com/comics/urn_2x.png 1375: https://imgs.xkcd.com/comics/astronaut_vandalism_2x.png 1376: https://imgs.xkcd.com/comics/jump_2x.png 1377: https://imgs.xkcd.com/comics/fish_2x.png 1378: https://imgs.xkcd.com/comics/turbine_2x.png 1379: https://imgs.xkcd.com/comics/4_5_degrees_2x.png 1380: https://imgs.xkcd.com/comics/manual_for_civilization_2x.png 1381: https://imgs.xkcd.com/comics/margin_2x.png 1382: https://imgs.xkcd.com/comics/rocket_packs_2x.png 1383: https://imgs.xkcd.com/comics/magic_words_2x.png 1384: https://imgs.xkcd.com/comics/krypton_2x.png 1385: https://imgs.xkcd.com/comics/throwing_rocks_2x.png 1386: https://imgs.xkcd.com/comics/people_are_stupid_2x.png 1387: https://imgs.xkcd.com/comics/clumsy_foreshadowing_2x.png 1388: https://imgs.xkcd.com/comics/subduction_license_2x.png 1389: https://imgs.xkcd.com/comics/surface_area_2x.png 1390: https://imgs.xkcd.com/comics/research_ethics_2x.png 1391: https://imgs.xkcd.com/comics/darkness_2x.png 1392: https://imgs.xkcd.com/comics/dominant_players_2x.png 1393: https://imgs.xkcd.com/comics/timeghost_2x.png 1394: https://imgs.xkcd.com/comics/superm_n_2x.png 1395: https://imgs.xkcd.com/comics/power_cord_2x.png 1396: https://imgs.xkcd.com/comics/actors_2x.png 1397: https://imgs.xkcd.com/comics/luke_2x.png 1398: https://imgs.xkcd.com/comics/snake_facts_2x.png 1399: https://imgs.xkcd.com/comics/chaos_2x.png 1400: https://imgs.xkcd.com/comics/d_b_cooper_2x.png 1401: https://imgs.xkcd.com/comics/new_2x.png 1402: https://imgs.xkcd.com/comics/harpoons_2x.png 1403: https://imgs.xkcd.com/comics/thesis_defense_2x.png 1404: https://imgs.xkcd.com/comics/quantum_vacuum_virtual_plasma_2x.png 1405: https://imgs.xkcd.com/comics/meteor_2x.png 1406: https://imgs.xkcd.com/comics/universal_converter_box_2x.png 1407: https://imgs.xkcd.com/comics/worst_hurricane_2x.png 1408: https://imgs.xkcd.com/comics/march_of_the_penguins_2x.png 1409: https://imgs.xkcd.com/comics/query_2x.png 1410: https://imgs.xkcd.com/comics/california_2x.png 1411: https://imgs.xkcd.com/comics/loop_2x.png 1412: https://imgs.xkcd.com/comics/teenage_mutant_ninja_turtles_2x.png 1413: https://imgs.xkcd.com/comics/suddenly_popular_2x.png 1414: https://imgs.xkcd.com/comics/writing_skills_2x.png 1415: https://imgs.xkcd.com/comics/ballooning_2x.png 1416: No higher res available 1417: https://imgs.xkcd.com/comics/seven_2x.png 1418: https://imgs.xkcd.com/comics/horse_2x.png 1419: https://imgs.xkcd.com/comics/on_the_phone_2x.png 1420: https://imgs.xkcd.com/comics/watches_2x.png 1421: https://imgs.xkcd.com/comics/future_self_2x.png 1422: https://imgs.xkcd.com/comics/my_phone_is_dying_2x.png 1423: https://imgs.xkcd.com/comics/conversation_2x.png 1424: https://imgs.xkcd.com/comics/en_garde_2x.png 1425: https://imgs.xkcd.com/comics/tasks_2x.png 1426: https://imgs.xkcd.com/comics/reduce_your_payments_2x.png 1427: https://imgs.xkcd.com/comics/ios_keyboard_2x.png 1428: https://imgs.xkcd.com/comics/move_fast_and_break_things_2x.png 1429: https://imgs.xkcd.com/comics/data_2x.png 1430: https://imgs.xkcd.com/comics/proteins_2x.png 1431: https://imgs.xkcd.com/comics/marriage_2x.png 1432: https://imgs.xkcd.com/comics/the_sake_of_argument_2x.png 1433: https://imgs.xkcd.com/comics/lightsaber_2x.png 1434: https://imgs.xkcd.com/comics/where_do_birds_go_2x.png 1435: https://imgs.xkcd.com/comics/presidential_alert_2x.png 1436: https://imgs.xkcd.com/comics/orb_hammer_2x.png 1437: https://imgs.xkcd.com/comics/higgs_boson_2x.png 1438: https://imgs.xkcd.com/comics/houston_2x.png 1439: https://imgs.xkcd.com/comics/rack_unit_2x.png 1440: https://imgs.xkcd.com/comics/geese_2x.png 1441: https://imgs.xkcd.com/comics/turnabout_2x.png 1442: https://imgs.xkcd.com/comics/chemistry_2x.png 1443: https://imgs.xkcd.com/comics/language_nerd_2x.png 1444: https://imgs.xkcd.com/comics/cloud_2x.png 1445: https://imgs.xkcd.com/comics/efficiency_2x.png 1446: No higher res available 1447: https://imgs.xkcd.com/comics/meta-analysis_2x.png 1448: https://imgs.xkcd.com/comics/question_2x.png 1449: https://imgs.xkcd.com/comics/red_rover_2x.png 1450: https://imgs.xkcd.com/comics/ai_box_experiment_2x.png 1451: https://imgs.xkcd.com/comics/background_screens_2x.png 1452: No higher res available 1453: https://imgs.xkcd.com/comics/fmri_2x.png 1454: https://imgs.xkcd.com/comics/done_2x.png 1455: https://imgs.xkcd.com/comics/trolley_problem_2x.png 1456: https://imgs.xkcd.com/comics/on_the_moon_2x.png 1457: https://imgs.xkcd.com/comics/feedback_2x.png 1458: https://imgs.xkcd.com/comics/small_moon_2x.png 1459: https://imgs.xkcd.com/comics/documents_2x.png 1460: https://imgs.xkcd.com/comics/smfw_2x.png 1461: No higher res available 1462: https://imgs.xkcd.com/comics/blind_trials_2x.png 1463: https://imgs.xkcd.com/comics/altitude_2x.png 1464: https://imgs.xkcd.com/comics/santa_2x.png 1465: https://imgs.xkcd.com/comics/xkcd_phone_2_2x.png 1466: https://imgs.xkcd.com/comics/phone_checking_2x.png 1467: https://imgs.xkcd.com/comics/email_2x.png 1468: https://imgs.xkcd.com/comics/worrying_2x.png 1469: https://imgs.xkcd.com/comics/uv_2x.png 1470: https://imgs.xkcd.com/comics/kix_2x.png 1471: https://imgs.xkcd.com/comics/gut_fauna_2x.png 1472: https://imgs.xkcd.com/comics/geography_2x.png 1473: https://imgs.xkcd.com/comics/location_sharing_2x.png 1474: https://imgs.xkcd.com/comics/screws_2x.png 1475: https://imgs.xkcd.com/comics/technically_2x.png 1476: https://imgs.xkcd.com/comics/ceres_2x.png 1477: https://imgs.xkcd.com/comics/star_wars_2x.png 1478: https://imgs.xkcd.com/comics/p_values_2x.png 1479: https://imgs.xkcd.com/comics/troubleshooting_2x.png 1480: https://imgs.xkcd.com/comics/super_bowl_2x.png 1481: https://imgs.xkcd.com/comics/api_2x.png 1482: https://imgs.xkcd.com/comics/nowplaying_2x.png 1483: https://imgs.xkcd.com/comics/quotative_like_2x.png 1484: https://imgs.xkcd.com/comics/apollo_speeches_2x.png 1485: https://imgs.xkcd.com/comics/friendship_2x.png 1486: https://imgs.xkcd.com/comics/vacuum_2x.png 1487: https://imgs.xkcd.com/comics/tornado_2x.png 1488: https://imgs.xkcd.com/comics/flowcharts_2x.png 1489: https://imgs.xkcd.com/comics/fundamental_forces_2x.png 1490: https://imgs.xkcd.com/comics/atoms_2x.png 1491: No higher res available 1492: https://imgs.xkcd.com/comics/dress_color_2x.png 1493: https://imgs.xkcd.com/comics/meeting_2x.png 1494: https://imgs.xkcd.com/comics/insurance_2x.png 1495: https://imgs.xkcd.com/comics/hard_reboot_2x.png 1496: https://imgs.xkcd.com/comics/art_project_2x.png 1497: https://imgs.xkcd.com/comics/new_products_2x.png 1498: https://imgs.xkcd.com/comics/terry_pratchett_2x.png 1499: https://imgs.xkcd.com/comics/arbitrage_2x.png 1500: https://imgs.xkcd.com/comics/upside_down_map_2x.png 1501: https://imgs.xkcd.com/comics/mysteries_2x.png 1502: https://imgs.xkcd.com/comics/wasted_time_2x.png 1503: https://imgs.xkcd.com/comics/squirrel_plan_2x.png 1504: https://imgs.xkcd.com/comics/opportunity_2x.png 1505: https://imgs.xkcd.com/comics/ontological_argument_2x.png 1506: No higher res available 1507: https://imgs.xkcd.com/comics/metaball_2x.png 1508: https://imgs.xkcd.com/comics/operating_systems_2x.png 1509: https://imgs.xkcd.com/comics/scenery_cheat_sheet_2x.png 1510: https://imgs.xkcd.com/comics/napoleon_2x.png 1511: https://imgs.xkcd.com/comics/spice_girl_2x.png 1512: https://imgs.xkcd.com/comics/horoscopes_2x.png 1513: https://imgs.xkcd.com/comics/code_quality_2x.png 1514: https://imgs.xkcd.com/comics/permacal_2x.png 1515: https://imgs.xkcd.com/comics/basketball_earth_2x.png 1516: https://imgs.xkcd.com/comics/win_by_induction_2x.png 1517: https://imgs.xkcd.com/comics/spectroscopy_2x.png 1518: https://imgs.xkcd.com/comics/typical_morning_routine_2x.png 1519: https://imgs.xkcd.com/comics/venus_2x.png 1520: https://imgs.xkcd.com/comics/degree_off_2x.png 1521: https://imgs.xkcd.com/comics/sword_in_the_stone_2x.png 1522: https://imgs.xkcd.com/comics/astronomy_2x.png 1523: https://imgs.xkcd.com/comics/microdrones_2x.png 1524: https://imgs.xkcd.com/comics/dimensions_2x.png 1525: No higher res available 1526: https://imgs.xkcd.com/comics/placebo_blocker_2x.png 1527: https://imgs.xkcd.com/comics/humans_2x.png 1528: https://imgs.xkcd.com/comics/vodka_2x.png 1529: https://imgs.xkcd.com/comics/bracket_2x.png 1530: https://imgs.xkcd.com/comics/keyboard_mash_2x.png 1531: https://imgs.xkcd.com/comics/the_bdlpswdks_effect_2x.png 1532: https://imgs.xkcd.com/comics/new_horizons_2x.png 1533: https://imgs.xkcd.com/comics/antique_factory_2x.png 1534: https://imgs.xkcd.com/comics/beer_2x.png 1535: https://imgs.xkcd.com/comics/words_for_pets_2x.png 1536: https://imgs.xkcd.com/comics/the_martian_2x.png 1537: https://imgs.xkcd.com/comics/types_2x.png 1538: https://imgs.xkcd.com/comics/lyrics_2x.png 1539: https://imgs.xkcd.com/comics/planning_2x.png 1540: https://imgs.xkcd.com/comics/hemingway_2x.png 1541: https://imgs.xkcd.com/comics/voice_2x.png 1542: https://imgs.xkcd.com/comics/scheduling_conflict_2x.png 1543: https://imgs.xkcd.com/comics/team_effort_2x.png 1544: https://imgs.xkcd.com/comics/margaret_2x.png 1545: https://imgs.xkcd.com/comics/strengths_and_weaknesses_2x.png 1546: https://imgs.xkcd.com/comics/tamagotchi_hive_2x.png 1547: https://imgs.xkcd.com/comics/solar_system_questions_2x.png 1548: https://imgs.xkcd.com/comics/90s_kid_2x.png 1549: https://imgs.xkcd.com/comics/xkcd_phone_3_2x.png 1550: https://imgs.xkcd.com/comics/episode_vii_2x.png 1551: No higher res available 1552: https://imgs.xkcd.com/comics/rulebook_2x.png 1553: https://imgs.xkcd.com/comics/public_key_2x.png 1554: https://imgs.xkcd.com/comics/spice_girls_2x.png 1555: https://imgs.xkcd.com/comics/exoplanet_names_2_2x.png 1556: https://imgs.xkcd.com/comics/the_sky_2x.png 1557: https://imgs.xkcd.com/comics/ozymandias_2x.png 1558: https://imgs.xkcd.com/comics/vet_2x.png 1559: https://imgs.xkcd.com/comics/driving_2x.png 1560: https://imgs.xkcd.com/comics/bubblegum_2x.png 1561: https://imgs.xkcd.com/comics/water_phase_diagram_2x.png 1562: https://imgs.xkcd.com/comics/i_in_team_2x.png 1563: https://imgs.xkcd.com/comics/synonym_movies_2x.png 1564: https://imgs.xkcd.com/comics/every_seven_seconds_2x.png 1565: https://imgs.xkcd.com/comics/back_seat_2x.png 1566: https://imgs.xkcd.com/comics/board_game_2x.png 1567: https://imgs.xkcd.com/comics/kitchen_tips_2x.png 1568: https://imgs.xkcd.com/comics/synonym_movies_2_2x.png 1569: https://imgs.xkcd.com/comics/magic_tree_2x.png 1570: https://imgs.xkcd.com/comics/engineer_syllogism_2x.png 1571: https://imgs.xkcd.com/comics/car_model_names_2x.png 1572: https://imgs.xkcd.com/comics/xkcd_survey_2x.png 1573: https://imgs.xkcd.com/comics/cyberintelligence_2x.png 1574: https://imgs.xkcd.com/comics/trouble_for_science_2x.png 1575: https://imgs.xkcd.com/comics/footprints_2x.png 1576: https://imgs.xkcd.com/comics/i_could_care_less_2x.png 1577: https://imgs.xkcd.com/comics/advent_2x.png 1578: https://imgs.xkcd.com/comics/squirrelphone_2x.png 1579: https://imgs.xkcd.com/comics/tech_loops_2x.png 1580: https://imgs.xkcd.com/comics/travel_ghosts_2x.png 1581: https://imgs.xkcd.com/comics/birthday_2x.png 1582: https://imgs.xkcd.com/comics/picture_a_grassy_field_2x.png 1583: https://imgs.xkcd.com/comics/nasa_press_conference_2x.png 1584: https://imgs.xkcd.com/comics/moments_of_inspiration_2x.png 1585: https://imgs.xkcd.com/comics/similarities_2x.png 1586: https://imgs.xkcd.com/comics/keyboard_problems_2x.png 1587: https://imgs.xkcd.com/comics/food_rule_2x.png 1588: https://imgs.xkcd.com/comics/hardware_reductionism_2x.png 1589: https://imgs.xkcd.com/comics/frankenstein_2x.png 1590: https://imgs.xkcd.com/comics/the_source_2x.png 1591: https://imgs.xkcd.com/comics/bells_theorem_2x.png 1592: https://imgs.xkcd.com/comics/overthinking_2x.png 1593: https://imgs.xkcd.com/comics/play_by_play_2x.png 1594: https://imgs.xkcd.com/comics/human_subjects_2x.png 1595: https://imgs.xkcd.com/comics/30_days_hath_september_2x.png 1596: https://imgs.xkcd.com/comics/launch_status_check_2x.png 1597: https://imgs.xkcd.com/comics/git_2x.png 1598: https://imgs.xkcd.com/comics/salvage_2x.png 1599: https://imgs.xkcd.com/comics/water_delivery_2x.png 1600: https://imgs.xkcd.com/comics/marketwatch_2x.png 1601: https://imgs.xkcd.com/comics/isolation_2x.png 1602: https://imgs.xkcd.com/comics/linguistics_club_2x.png 1603: https://imgs.xkcd.com/comics/flashlights_2x.png 1604: https://imgs.xkcd.com/comics/snakes_2x.png 1605: https://imgs.xkcd.com/comics/dna_2x.png 1606: https://imgs.xkcd.com/comics/five_day_forecast_2x.png 1607: https://imgs.xkcd.com/comics/supreme_court_2x.png 1608: No higher res available 1609: https://imgs.xkcd.com/comics/food_combinations_2x.png 1610: https://imgs.xkcd.com/comics/fire_ants_2x.png 1611: https://imgs.xkcd.com/comics/baking_soda_and_vinegar_2x.png 1612: https://imgs.xkcd.com/comics/colds_2x.png 1613: https://imgs.xkcd.com/comics/the_three_laws_of_robotics_2x.png 1614: https://imgs.xkcd.com/comics/kites_2x.png 1615: https://imgs.xkcd.com/comics/red_car_2x.png 1616: https://imgs.xkcd.com/comics/lunch_2x.png 1617: https://imgs.xkcd.com/comics/time_capsule_2x.png 1618: https://imgs.xkcd.com/comics/cold_medicine_2x.png 1619: https://imgs.xkcd.com/comics/watson_medical_algorithm_2x.png 1620: https://imgs.xkcd.com/comics/christmas_settings_2x.png 1621: https://imgs.xkcd.com/comics/fixion_2x.png 1622: https://imgs.xkcd.com/comics/henge_2x.png 1623: https://imgs.xkcd.com/comics/2016_conversation_guide_2x.png 1624: https://imgs.xkcd.com/comics/2016_2x.png 1625: https://imgs.xkcd.com/comics/substitutions_2_2x.png 1626: https://imgs.xkcd.com/comics/judgment_day_2x.png 1627: https://imgs.xkcd.com/comics/woosh_2x.png 1628: https://imgs.xkcd.com/comics/magnus_2x.png 1629: https://imgs.xkcd.com/comics/tools_2x.png 1630: https://imgs.xkcd.com/comics/quadcopter_2x.png 1631: https://imgs.xkcd.com/comics/longer_than_usual_2x.png 1632: https://imgs.xkcd.com/comics/palindrome_2x.png 1633: https://imgs.xkcd.com/comics/possible_undiscovered_planets_2x.png 1634: https://imgs.xkcd.com/comics/in_case_of_emergency_2x.png 1635: https://imgs.xkcd.com/comics/birdsong_2x.png 1636: https://imgs.xkcd.com/comics/xkcd_stack_2x.png 1637: https://imgs.xkcd.com/comics/salt_mine_2x.png 1638: https://imgs.xkcd.com/comics/backslashes_2x.png 1639: https://imgs.xkcd.com/comics/to_taste_2x.png 1640: https://imgs.xkcd.com/comics/super_bowl_context_2x.png 1641: https://imgs.xkcd.com/comics/hot_dogs_2x.png 1642: https://imgs.xkcd.com/comics/gravitational_waves_2x.png 1643: https://imgs.xkcd.com/comics/degrees_2x.png 1644: https://imgs.xkcd.com/comics/stargazing_2x.png 1645: https://imgs.xkcd.com/comics/toasts_2x.png 1646: https://imgs.xkcd.com/comics/twitter_bot_2x.png 1647: https://imgs.xkcd.com/comics/diacritics_2x.png 1648: https://imgs.xkcd.com/comics/famous_duos_2x.png 1649: https://imgs.xkcd.com/comics/pipelines_2x.png 1650: https://imgs.xkcd.com/comics/baby_2x.png 1651: https://imgs.xkcd.com/comics/robotic_garage_2x.png 1652: https://imgs.xkcd.com/comics/conditionals_2x.png 1653: https://imgs.xkcd.com/comics/united_states_map_2x.png 1654: https://imgs.xkcd.com/comics/universal_install_script_2x.png 1655: https://imgs.xkcd.com/comics/doomsday_clock_2x.png 1656: https://imgs.xkcd.com/comics/it_begins_2x.png 1657: https://imgs.xkcd.com/comics/insanity_2x.png 1658: https://imgs.xkcd.com/comics/estimating_time_2x.png 1659: https://imgs.xkcd.com/comics/tire_swing_2x.png 1660: https://imgs.xkcd.com/comics/captain_speaking_2x.png 1661: https://imgs.xkcd.com/comics/podium_2x.png 1662: https://imgs.xkcd.com/comics/jack_and_jill_2x.png 1663: No higher res available 1664: https://imgs.xkcd.com/comics/mycology_2x.png 1665: https://imgs.xkcd.com/comics/city_talk_pages_2x.png 1666: https://imgs.xkcd.com/comics/brain_upload_2x.png 1667: No higher res available 1668: https://imgs.xkcd.com/comics/singularity_2x.png 1669: https://imgs.xkcd.com/comics/planespotting_2x.png 1670: https://imgs.xkcd.com/comics/laws_of_physics_2x.png 1671: https://imgs.xkcd.com/comics/arcane_bullshit_2x.png 1672: https://imgs.xkcd.com/comics/women_on_20s_2x.png 1673: https://imgs.xkcd.com/comics/timeline_of_bicycle_design_2x.png 1674: https://imgs.xkcd.com/comics/adult_2x.png 1675: https://imgs.xkcd.com/comics/message_in_a_bottle_2x.png 1676: https://imgs.xkcd.com/comics/full_width_justification_2x.png 1677: https://imgs.xkcd.com/comics/contrails_2x.png 1678: https://imgs.xkcd.com/comics/recent_searches_2x.png 1679: https://imgs.xkcd.com/comics/substitutions_3_2x.png 1680: https://imgs.xkcd.com/comics/black_hole_2x.png 1681: https://imgs.xkcd.com/comics/laser_products_2x.png 1682: https://imgs.xkcd.com/comics/bun_2x.png 1683: https://imgs.xkcd.com/comics/digital_data_2x.png 1684: https://imgs.xkcd.com/comics/rainbow_2x.png 1685: https://imgs.xkcd.com/comics/patch_2x.png 1686: https://imgs.xkcd.com/comics/feel_old_2x.png 1687: https://imgs.xkcd.com/comics/world_war_iii_2x.png 1688: https://imgs.xkcd.com/comics/map_age_guide_2x.png 1689: https://imgs.xkcd.com/comics/my_friend_catherine_2x.png 1690: https://imgs.xkcd.com/comics/time_tracking_software_2x.png 1691: https://imgs.xkcd.com/comics/optimization_2x.png 1692: https://imgs.xkcd.com/comics/man_page_2x.png 1693: https://imgs.xkcd.com/comics/oxidation_2x.png 1694: https://imgs.xkcd.com/comics/phishing_license_2x.png 1695: https://imgs.xkcd.com/comics/code_quality_2_2x.png 1696: https://imgs.xkcd.com/comics/ai_research_2x.png 1697: https://imgs.xkcd.com/comics/intervocalic_fortition_2x.png 1698: https://imgs.xkcd.com/comics/theft_quadrants_2x.png 1699: https://imgs.xkcd.com/comics/local_news_2x.png 1700: https://imgs.xkcd.com/comics/new_bug_2x.png 1701: https://imgs.xkcd.com/comics/speed_and_danger_2x.png 1702: https://imgs.xkcd.com/comics/home_itch_remedies_2x.png 1703: https://imgs.xkcd.com/comics/juno_2x.png 1704: https://imgs.xkcd.com/comics/gnome_ann_2x.png 1705: https://imgs.xkcd.com/comics/pokemon_go_2x.png 1706: https://imgs.xkcd.com/comics/genetic_testing_2x.png 1707: https://imgs.xkcd.com/comics/xkcd_phone_4_2x.png 1708: https://imgs.xkcd.com/comics/dehydration_2x.png 1709: https://imgs.xkcd.com/comics/inflection_2x.png 1710: https://imgs.xkcd.com/comics/walking_into_things_2x.png 1711: https://imgs.xkcd.com/comics/snapchat_2x.png 1712: https://imgs.xkcd.com/comics/politifact_2x.png 1713: https://imgs.xkcd.com/comics/50_ccs_2x.png 1714: https://imgs.xkcd.com/comics/volcano_types_2x.png 1715: https://imgs.xkcd.com/comics/household_tips_2x.png 1716: https://imgs.xkcd.com/comics/time_travel_thesis_2x.png 1717: https://imgs.xkcd.com/comics/pyramid_honey_2x.png 1718: https://imgs.xkcd.com/comics/backups_2x.png 1719: https://imgs.xkcd.com/comics/superzoom_2x.png 1720: https://imgs.xkcd.com/comics/horses_2x.png 1721: https://imgs.xkcd.com/comics/business_idea_2x.png 1722: https://imgs.xkcd.com/comics/debugging_2x.png 1723: https://imgs.xkcd.com/comics/meteorite_identification_2x.png 1724: https://imgs.xkcd.com/comics/proofs_2x.png 1725: https://imgs.xkcd.com/comics/linear_regression_2x.png 1726: https://imgs.xkcd.com/comics/unicode_2x.png 1727: https://imgs.xkcd.com/comics/number_of_computers_2x.png 1728: https://imgs.xkcd.com/comics/cron_mail_2x.png 1729: https://imgs.xkcd.com/comics/migrating_geese_2x.png 1730: https://imgs.xkcd.com/comics/starshade_2x.png 1731: https://imgs.xkcd.com/comics/wrong_2x.png 1732: https://imgs.xkcd.com/comics/earth_temperature_timeline_2x.png 1733: https://imgs.xkcd.com/comics/solar_spectrum_2x.png 1734: https://imgs.xkcd.com/comics/reductionism_2x.png 1735: No higher res available 1736: https://imgs.xkcd.com/comics/manhattan_project_2x.png 1737: https://imgs.xkcd.com/comics/datacenter_scale_2x.png 1738: https://imgs.xkcd.com/comics/moon_shapes_2x.png 1739: No higher res available 1740: https://imgs.xkcd.com/comics/rosetta_2x.png 1741: https://imgs.xkcd.com/comics/work_2x.png 1742: https://imgs.xkcd.com/comics/will_it_work_2x.png 1743: https://imgs.xkcd.com/comics/coffee_2x.png 1744: No higher res available 1745: https://imgs.xkcd.com/comics/record_scratch_2x.png 1746: https://imgs.xkcd.com/comics/making_friends_2x.png 1747: https://imgs.xkcd.com/comics/spider_paleontology_2x.png 1748: https://imgs.xkcd.com/comics/future_archaeology_2x.png 1749: https://imgs.xkcd.com/comics/mushrooms_2x.png 1750: https://imgs.xkcd.com/comics/life_goals_2x.png 1751: https://imgs.xkcd.com/comics/movie_folder_2x.png 1752: https://imgs.xkcd.com/comics/interplanetary_experience_2x.png 1753: https://imgs.xkcd.com/comics/thumb_war_2x.png 1754: https://imgs.xkcd.com/comics/tornado_safety_tips_2x.png 1755: https://imgs.xkcd.com/comics/old_days_2x.png 1756: https://imgs.xkcd.com/comics/im_with_her_2x.png 1757: https://imgs.xkcd.com/comics/november_2016_2x.png 1758: https://imgs.xkcd.com/comics/astrophysics_2x.png 1759: https://imgs.xkcd.com/comics/british_map_2x.png 1760: https://imgs.xkcd.com/comics/tv_problems_2x.png 1761: https://imgs.xkcd.com/comics/blame_2x.png 1762: https://imgs.xkcd.com/comics/moving_boxes_2x.png 1763: https://imgs.xkcd.com/comics/catcalling_2x.png 1764: https://imgs.xkcd.com/comics/xkcde_2x.png 1765: https://imgs.xkcd.com/comics/baby_post_2x.png 1766: https://imgs.xkcd.com/comics/apple_spectrum_2x.png 1767: https://imgs.xkcd.com/comics/us_state_names_2x.png 1768: https://imgs.xkcd.com/comics/settling_2x.png 1769: https://imgs.xkcd.com/comics/never_seen_star_wars_2x.png 1770: https://imgs.xkcd.com/comics/ui_change_2x.png 1771: https://imgs.xkcd.com/comics/it_was_i_2x.png 1772: https://imgs.xkcd.com/comics/startup_opportunity_2x.png 1773: https://imgs.xkcd.com/comics/negativity_2x.png 1774: https://imgs.xkcd.com/comics/adjective_foods_2x.png 1775: https://imgs.xkcd.com/comics/things_you_learn_2x.png 1776: https://imgs.xkcd.com/comics/reindeer_2x.png 1777: https://imgs.xkcd.com/comics/dear_diary_2x.png 1778: No higher res available 1779: https://imgs.xkcd.com/comics/2017_2x.png 1780: https://imgs.xkcd.com/comics/appliance_repair_2x.png 1781: https://imgs.xkcd.com/comics/artifacts_2x.png 1782: https://imgs.xkcd.com/comics/team_chat_2x.png 1783: https://imgs.xkcd.com/comics/emails_2x.png 1784: https://imgs.xkcd.com/comics/bad_map_projection_liquid_resize_2x.png 1785: https://imgs.xkcd.com/comics/wifi_2x.png 1786: https://imgs.xkcd.com/comics/trash_2x.png 1787: https://imgs.xkcd.com/comics/voice_commands_2x.png 1788: https://imgs.xkcd.com/comics/barge_2x.png 1789: https://imgs.xkcd.com/comics/phone_numbers_2x.png 1790: https://imgs.xkcd.com/comics/sad_2x.png 1791: https://imgs.xkcd.com/comics/telescopes_refractor_vs_reflector_2x.png 1792: https://imgs.xkcd.com/comics/bird_plane_superman_2x.png 1793: https://imgs.xkcd.com/comics/soda_sugar_comparisons_2x.png 1794: https://imgs.xkcd.com/comics/fire_2x.png 1795: https://imgs.xkcd.com/comics/all_you_can_eat_2x.png 1796: https://imgs.xkcd.com/comics/focus_knob_2x.png 1797: https://imgs.xkcd.com/comics/stardew_valley_2x.png 1798: https://imgs.xkcd.com/comics/box_plot_2x.png 1799: https://imgs.xkcd.com/comics/bad_map_projection_time_zones_2x.png 1800: https://imgs.xkcd.com/comics/chess_notation_2x.png 1801: https://imgs.xkcd.com/comics/decision_paralysis_2x.png 1802: https://imgs.xkcd.com/comics/phone_2x.png 1803: https://imgs.xkcd.com/comics/location_reviews_2x.png 1804: https://imgs.xkcd.com/comics/video_content_2x.png 1805: https://imgs.xkcd.com/comics/unpublished_discoveries_2x.png 1806: https://imgs.xkcd.com/comics/borrow_your_laptop_2x.png 1807: https://imgs.xkcd.com/comics/listening_2x.png 1808: https://imgs.xkcd.com/comics/hacking_2x.png 1809: https://imgs.xkcd.com/comics/xkcd_phone_5_2x.png 1810: https://imgs.xkcd.com/comics/chat_systems_2x.png 1811: https://imgs.xkcd.com/comics/best_tasting_colors_2x.png 1812: https://imgs.xkcd.com/comics/onboarding_2x.png 1813: https://imgs.xkcd.com/comics/vomiting_emoji_2x.png 1814: https://imgs.xkcd.com/comics/color_pattern_2x.png 1815: https://imgs.xkcd.com/comics/flag_2x.png 1816: https://imgs.xkcd.com/comics/mispronunciation_2x.png 1817: https://imgs.xkcd.com/comics/incognito_mode_2x.png 1818: https://imgs.xkcd.com/comics/rayleigh_scattering_2x.png 1819: https://imgs.xkcd.com/comics/sweet_16_2x.png 1820: https://imgs.xkcd.com/comics/security_advice_2x.png 1821: https://imgs.xkcd.com/comics/incinerator_2x.png 1822: https://imgs.xkcd.com/comics/existential_bug_reports_2x.png 1823: https://imgs.xkcd.com/comics/hottest_editors_2x.png 1824: https://imgs.xkcd.com/comics/identification_chart_2x.png 1825: https://imgs.xkcd.com/comics/7_eleven_2x.png 1826: https://imgs.xkcd.com/comics/birdwatching_2x.png 1827: https://imgs.xkcd.com/comics/survivorship_bias_2x.png 1828: https://imgs.xkcd.com/comics/iss_solar_transit_2x.png 1829: https://imgs.xkcd.com/comics/geochronology_2x.png 1830: https://imgs.xkcd.com/comics/iss_solar_transit_2_2x.png 1831: https://imgs.xkcd.com/comics/here_to_help_2x.png 1832: https://imgs.xkcd.com/comics/photo_library_management_2x.png 1833: https://imgs.xkcd.com/comics/code_quality_3_2x.png 1834: https://imgs.xkcd.com/comics/lunch_order_2x.png 1835: https://imgs.xkcd.com/comics/random_obsessions_2x.png 1836: https://imgs.xkcd.com/comics/okeanos_2x.png 1837: https://imgs.xkcd.com/comics/rental_car_2x.png 1838: https://imgs.xkcd.com/comics/machine_learning_2x.png 1839: https://imgs.xkcd.com/comics/doctor_visit_2x.png 1840: https://imgs.xkcd.com/comics/genetic_testing_results_2x.png 1841: https://imgs.xkcd.com/comics/who_2x.png 1842: https://imgs.xkcd.com/comics/anti_drone_eagles_2x.png 1843: https://imgs.xkcd.com/comics/opening_crawl_2x.png 1844: https://imgs.xkcd.com/comics/voting_systems_2x.png 1845: https://imgs.xkcd.com/comics/state_word_map_2x.png 1846: https://imgs.xkcd.com/comics/drone_problems_2x.png 1847: https://imgs.xkcd.com/comics/dubious_study_2x.png 1848: https://imgs.xkcd.com/comics/glacial_erratic_2x.png 1849: https://imgs.xkcd.com/comics/decades_2x.png 1850: https://imgs.xkcd.com/comics/air_force_museum_2x.png 1851: https://imgs.xkcd.com/comics/magnetohydrodynamics_2x.png 1852: https://imgs.xkcd.com/comics/election_map_2x.png 1853: https://imgs.xkcd.com/comics/once_per_day_2x.png 1854: https://imgs.xkcd.com/comics/refresh_types_2x.png 1855: https://imgs.xkcd.com/comics/telephoto_2x.png 1856: https://imgs.xkcd.com/comics/existence_proof_2x.png 1857: https://imgs.xkcd.com/comics/emoji_movie_2x.png 1858: https://imgs.xkcd.com/comics/4th_of_july_2x.png 1859: https://imgs.xkcd.com/comics/sports_knowledge_2x.png 1860: https://imgs.xkcd.com/comics/communicating_2x.png 1861: https://imgs.xkcd.com/comics/quantum_2x.png 1862: https://imgs.xkcd.com/comics/particle_properties_2x.png 1863: https://imgs.xkcd.com/comics/screenshots_2x.png 1864: https://imgs.xkcd.com/comics/city_nicknames_2x.png 1865: https://imgs.xkcd.com/comics/wifi_vs_cellular_2x.png 1866: https://imgs.xkcd.com/comics/russells_teapot_2x.png 1867: https://imgs.xkcd.com/comics/physics_confession_2x.png 1868: https://imgs.xkcd.com/comics/eclipse_flights_2x.png 1869: https://imgs.xkcd.com/comics/positive_and_negative_reviews_2x.png 1870: https://imgs.xkcd.com/comics/emoji_movie_reviews_2x.png 1871: https://imgs.xkcd.com/comics/bun_alert_2x.png 1872: https://imgs.xkcd.com/comics/backup_batteries_2x.png 1873: https://imgs.xkcd.com/comics/email_reply_2x.png 1874: https://imgs.xkcd.com/comics/geologic_faults_2x.png 1875: https://imgs.xkcd.com/comics/computers_vs_humans_2x.png 1876: https://imgs.xkcd.com/comics/eclipse_searches_2x.png 1877: https://imgs.xkcd.com/comics/eclipse_science_2x.png 1878: https://imgs.xkcd.com/comics/earth_orbital_diagram_2x.png 1879: https://imgs.xkcd.com/comics/eclipse_birds_2x.png 1880: https://imgs.xkcd.com/comics/eclipse_review_2x.png 1881: https://imgs.xkcd.com/comics/drone_training_2x.png 1882: https://imgs.xkcd.com/comics/color_models_2x.png 1883: https://imgs.xkcd.com/comics/supervillain_plan_2x.png 1884: https://imgs.xkcd.com/comics/ringer_volume_media_volume_2x.png 1885: https://imgs.xkcd.com/comics/ensemble_model_2x.png 1886: https://imgs.xkcd.com/comics/typing_notifications_2x.png 1887: https://imgs.xkcd.com/comics/two_down_one_to_go_2x.png 1888: https://imgs.xkcd.com/comics/still_in_use_2x.png 1889: https://imgs.xkcd.com/comics/xkcd_phone_6_2x.png 1890: https://imgs.xkcd.com/comics/what_to_bring_2x.png 1891: https://imgs.xkcd.com/comics/obsolete_technology_2x.png 1892: https://imgs.xkcd.com/comics/usb_cables_2x.png 1893: https://imgs.xkcd.com/comics/thread_2x.png 1894: https://imgs.xkcd.com/comics/real_estate_2x.png 1895: https://imgs.xkcd.com/comics/worrying_scientist_interviews_2x.png 1896: https://imgs.xkcd.com/comics/active_ingredients_only_2x.png 1897: https://imgs.xkcd.com/comics/self_driving_2x.png 1898: https://imgs.xkcd.com/comics/october_2017_2x.png 1899: https://imgs.xkcd.com/comics/ears_2x.png 1900: https://imgs.xkcd.com/comics/jet_lag_2x.png 1901: https://imgs.xkcd.com/comics/logical_2x.png 1902: https://imgs.xkcd.com/comics/state_borders_2x.png 1903: https://imgs.xkcd.com/comics/bun_trend_2x.png 1904: https://imgs.xkcd.com/comics/research_risks_2x.png 1905: https://imgs.xkcd.com/comics/cast_iron_pans_2x.png 1906: https://imgs.xkcd.com/comics/making_progress_2x.png 1907: https://imgs.xkcd.com/comics/immune_system_2x.png 1908: https://imgs.xkcd.com/comics/credit_card_rewards_2x.png 1909: https://imgs.xkcd.com/comics/digital_resource_lifespan_2x.png 1910: https://imgs.xkcd.com/comics/sky_spotters_2x.png 1911: https://imgs.xkcd.com/comics/defensive_profile_2x.png 1912: https://imgs.xkcd.com/comics/thermostat_2x.png 1913: https://imgs.xkcd.com/comics/i_2x.png 1914: https://imgs.xkcd.com/comics/twitter_verification_2x.png 1915: https://imgs.xkcd.com/comics/nightmare_email_feature_2x.png 1916: https://imgs.xkcd.com/comics/temperature_preferences_2x.png 1917: https://imgs.xkcd.com/comics/how_to_make_friends_2x.png 1918: https://imgs.xkcd.com/comics/nexus_2x.png 1919: https://imgs.xkcd.com/comics/interstellar_asteroid_2x.png 1920: https://imgs.xkcd.com/comics/emoji_sports_2x.png 1921: https://imgs.xkcd.com/comics/the_moon_and_the_great_wall_2x.png 1922: https://imgs.xkcd.com/comics/interferometry_2x.png 1923: https://imgs.xkcd.com/comics/felsius_2x.png 1924: https://imgs.xkcd.com/comics/solar_panels_2x.png 1925: https://imgs.xkcd.com/comics/self_driving_car_milestones_2x.png 1926: https://imgs.xkcd.com/comics/bad_code_2x.png 1927: https://imgs.xkcd.com/comics/tinder_2x.png 1928: https://imgs.xkcd.com/comics/seven_years_2x.png 1929: https://imgs.xkcd.com/comics/argument_timing_2x.png 1930: https://imgs.xkcd.com/comics/calendar_facts_2x.png 1931: https://imgs.xkcd.com/comics/virtual_assistant_2x.png 1932: https://imgs.xkcd.com/comics/the_true_meaning_of_christmas_2x.png 1933: https://imgs.xkcd.com/comics/santa_facts_2x.png 1934: https://imgs.xkcd.com/comics/phone_security_2x.png 1935: https://imgs.xkcd.com/comics/2018_2x.png 1936: https://imgs.xkcd.com/comics/desert_golfing_2x.png 1937: https://imgs.xkcd.com/comics/iata_airport_abbreviations_2x.png 1938: https://imgs.xkcd.com/comics/meltdown_and_spectre_2x.png 1939: https://imgs.xkcd.com/comics/2016_election_map_2x.png 1940: https://imgs.xkcd.com/comics/the_food_size_cycle_2x.png 1941: https://imgs.xkcd.com/comics/dying_gift_2x.png 1942: https://imgs.xkcd.com/comics/memorable_quotes_2x.png 1943: https://imgs.xkcd.com/comics/universal_dreams_2x.png 1944: https://imgs.xkcd.com/comics/the_end_of_the_rainbow_2x.png 1945: https://imgs.xkcd.com/comics/scientific_paper_graph_quality_2x.png 1946: https://imgs.xkcd.com/comics/hawaii_2x.png 1947: https://imgs.xkcd.com/comics/night_sky_2x.png 1948: https://imgs.xkcd.com/comics/campaign_fundraising_emails_2x.png 1949: https://imgs.xkcd.com/comics/fruit_collider_2x.png 1950: https://imgs.xkcd.com/comics/chicken_pox_and_name_statistics_2x.png 1951: https://imgs.xkcd.com/comics/super_bowl_watch_party_2x.png 1952: https://imgs.xkcd.com/comics/backpack_decisions_2x.png 1953: https://imgs.xkcd.com/comics/the_history_of_unicode_2x.png 1954: https://imgs.xkcd.com/comics/impostor_syndrome_2x.png 1955: https://imgs.xkcd.com/comics/robots_2x.png 1956: https://imgs.xkcd.com/comics/unification_2x.png 1957: https://imgs.xkcd.com/comics/2018_cve_list_2x.png 1958: https://imgs.xkcd.com/comics/self_driving_issues_2x.png 1959: https://imgs.xkcd.com/comics/the_simpsons_2x.png 1960: https://imgs.xkcd.com/comics/code_golf_2x.png 1961: https://imgs.xkcd.com/comics/interaction_2x.png 1962: https://imgs.xkcd.com/comics/generations_2x.png 1963: https://imgs.xkcd.com/comics/namespace_land_rush_2x.png 1964: https://imgs.xkcd.com/comics/spatial_orientation_2x.png 1965: https://imgs.xkcd.com/comics/background_apps_2x.png 1966: https://imgs.xkcd.com/comics/smart_home_security_2x.png 1967: https://imgs.xkcd.com/comics/violin_plots_2x.png 1968: https://imgs.xkcd.com/comics/robot_future_2x.png 1969: https://imgs.xkcd.com/comics/not_available_2x.png 1970: https://imgs.xkcd.com/comics/name_dominoes_2x.png 1971: https://imgs.xkcd.com/comics/personal_data_2x.png 1972: https://imgs.xkcd.com/comics/autogyros_2x.png 1973: https://imgs.xkcd.com/comics/star_lore_2x.png 1974: https://imgs.xkcd.com/comics/conversational_dynamics_2x.png 1975: https://imgs.xkcd.com/comics/right_click_2x.png 1976: https://imgs.xkcd.com/comics/friendly_questions_2x.png 1977: https://imgs.xkcd.com/comics/paperwork_2x.png 1978: https://imgs.xkcd.com/comics/congressional_testimony_2x.png 1979: https://imgs.xkcd.com/comics/history_2x.png 1980: https://imgs.xkcd.com/comics/turkish_delight_2x.png 1981: https://imgs.xkcd.com/comics/rickrolling_anniversary_2x.png 1982: https://imgs.xkcd.com/comics/evangelism_2x.png 1983: https://imgs.xkcd.com/comics/clutter_2x.png 1984: https://imgs.xkcd.com/comics/misinterpretation_2x.png 1985: https://imgs.xkcd.com/comics/meteorologist_2x.png 1986: https://imgs.xkcd.com/comics/river_border_2x.png 1987: https://imgs.xkcd.com/comics/python_environment_2x.png 1988: https://imgs.xkcd.com/comics/containers_2x.png 1989: https://imgs.xkcd.com/comics/imho_2x.png 1990: https://imgs.xkcd.com/comics/driving_cars_2x.png 1991: https://imgs.xkcd.com/comics/research_areas_by_size_and_countedness_2x.png 1992: https://imgs.xkcd.com/comics/safetysat_2x.png 1993: https://imgs.xkcd.com/comics/fatal_crash_rate_2x.png 1994: https://imgs.xkcd.com/comics/repairs_2x.png 1995: https://imgs.xkcd.com/comics/mc_hammer_age_2x.png 1996: https://imgs.xkcd.com/comics/morning_news_2x.png 1997: https://imgs.xkcd.com/comics/business_update_2x.png 1998: https://imgs.xkcd.com/comics/gdpr_2x.png 1999: https://imgs.xkcd.com/comics/selection_effect_2x.png 2000: https://imgs.xkcd.com/comics/xkcd_phone_2000_2x.png 2001: https://imgs.xkcd.com/comics/clickbait_corrected_p_value_2x.png 2002: https://imgs.xkcd.com/comics/lebron_james_and_stephen_curry_2x.png 2003: https://imgs.xkcd.com/comics/presidential_succession_2x.png 2004: https://imgs.xkcd.com/comics/sun_and_earth_2x.png 2005: https://imgs.xkcd.com/comics/attention_span_2x.png 2006: https://imgs.xkcd.com/comics/customer_rewards_2x.png 2007: https://imgs.xkcd.com/comics/brookhaven_rhic_2x.png 2008: https://imgs.xkcd.com/comics/irony_definition_2x.png 2009: https://imgs.xkcd.com/comics/hertzsprung_russell_diagram_2x.png 2010: https://imgs.xkcd.com/comics/update_notes_2x.png 2011: https://imgs.xkcd.com/comics/newtons_trajectories_2x.png 2012: https://imgs.xkcd.com/comics/thorough_analysis_2x.png 2013: https://imgs.xkcd.com/comics/rock_2x.png 2014: https://imgs.xkcd.com/comics/jwst_delays_2x.png 2015: https://imgs.xkcd.com/comics/new_phone_thread_2x.png 2016: https://imgs.xkcd.com/comics/oeis_submissions_2x.png 2017: https://imgs.xkcd.com/comics/stargazing_2_2x.png 2018: https://imgs.xkcd.com/comics/wall_art_2x.png 2019: https://imgs.xkcd.com/comics/an_apple_for_a_dollar_2x.png 2020: https://imgs.xkcd.com/comics/negative_results_2x.png 2021: https://imgs.xkcd.com/comics/software_development_2x.png 2022: https://imgs.xkcd.com/comics/sports_champions_2x.png 2023: https://imgs.xkcd.com/comics/y_axis_2x.png 2024: https://imgs.xkcd.com/comics/light_hacks_2x.png 2025: https://imgs.xkcd.com/comics/peer_review_2x.png 2026: https://imgs.xkcd.com/comics/heat_index_2x.png 2027: https://imgs.xkcd.com/comics/lightning_distance_2x.png 2028: https://imgs.xkcd.com/comics/complex_numbers_2x.png 2029: https://imgs.xkcd.com/comics/disaster_movie_2x.png 2030: https://imgs.xkcd.com/comics/voting_software_2x.png 2031: https://imgs.xkcd.com/comics/pie_charts_2x.png 2032: https://imgs.xkcd.com/comics/word_puzzles_2x.png 2033: https://imgs.xkcd.com/comics/repair_or_replace_2x.png 2034: https://imgs.xkcd.com/comics/equations_2x.png 2035: https://imgs.xkcd.com/comics/dark_matter_candidates_2x.png 2036: https://imgs.xkcd.com/comics/edgelord_2x.png 2037: https://imgs.xkcd.com/comics/supreme_court_bracket_2x.png 2038: https://imgs.xkcd.com/comics/hazard_symbol_2x.png 2039: https://imgs.xkcd.com/comics/begging_the_question_2x.png 2040: https://imgs.xkcd.com/comics/sibling_in_law_2x.png 2041: https://imgs.xkcd.com/comics/frontiers_2x.png 2042: https://imgs.xkcd.com/comics/rolles_theorem_2x.png 2043: https://imgs.xkcd.com/comics/boathouses_and_houseboats_2x.png 2044: https://imgs.xkcd.com/comics/sandboxing_cycle_2x.png 2045: https://imgs.xkcd.com/comics/social_media_announcement_2x.png 2046: https://imgs.xkcd.com/comics/trum_2x.png 2047: https://imgs.xkcd.com/comics/beverages_2x.png 2048: https://imgs.xkcd.com/comics/curve_fitting_2x.png 2049: https://imgs.xkcd.com/comics/unfulfilling_toys_2x.png 2050: https://imgs.xkcd.com/comics/6_6_time_2x.png 2051: https://imgs.xkcd.com/comics/bad_opinions_2x.png 2052: https://imgs.xkcd.com/comics/stanislav_petrov_day_2x.png 2053: https://imgs.xkcd.com/comics/incoming_calls_2x.png 2054: https://imgs.xkcd.com/comics/data_pipeline_2x.png 2055: https://imgs.xkcd.com/comics/bluetooth_2x.png 2056: https://imgs.xkcd.com/comics/horror_movies_2x.png 2057: https://imgs.xkcd.com/comics/internal_monologues_2x.png 2058: https://imgs.xkcd.com/comics/rock_wall_2x.png 2059: https://imgs.xkcd.com/comics/modified_bayes_theorem_2x.png 2060: https://imgs.xkcd.com/comics/hygrometer_2x.png 2061: https://imgs.xkcd.com/comics/tectonics_game_2x.png 2062: https://imgs.xkcd.com/comics/barnards_star_2x.png 2063: https://imgs.xkcd.com/comics/carnot_cycle_2x.png 2064: https://imgs.xkcd.com/comics/im_a_car_2x.png 2065: https://imgs.xkcd.com/comics/who_sends_the_first_text_2x.png 2066: https://imgs.xkcd.com/comics/ballot_selfies_2x.png 2067: https://imgs.xkcd.com/comics/challengers_2x.png 2068: https://imgs.xkcd.com/comics/election_night_2x.png 2069: https://imgs.xkcd.com/comics/wishlist_2x.png 2070: https://imgs.xkcd.com/comics/trig_identities_2x.png 2071: https://imgs.xkcd.com/comics/indirect_detection_2x.png 2072: https://imgs.xkcd.com/comics/evaluating_tech_things_2x.png 2073: https://imgs.xkcd.com/comics/kilogram_2x.png 2074: https://imgs.xkcd.com/comics/airplanes_and_spaceships_2x.png 2075: https://imgs.xkcd.com/comics/update_your_address_2x.png 2076: https://imgs.xkcd.com/comics/horror_movies_2_2x.png 2077: https://imgs.xkcd.com/comics/heist_2x.png 2078: https://imgs.xkcd.com/comics/popper_2x.png 2079: https://imgs.xkcd.com/comics/alpha_centauri_2x.png 2080: https://imgs.xkcd.com/comics/cohort_and_age_effects_2x.png 2081: https://imgs.xkcd.com/comics/middle_latitudes_2x.png 2082: https://imgs.xkcd.com/comics/mercator_projection_2x.png 2083: https://imgs.xkcd.com/comics/laptop_issues_2x.png 2084: https://imgs.xkcd.com/comics/fdr_2x.png 2085: https://imgs.xkcd.com/comics/arxiv_2x.png 2086: https://imgs.xkcd.com/comics/history_department_2x.png 2087: https://imgs.xkcd.com/comics/rocket_launch_2x.png 2088: https://imgs.xkcd.com/comics/schwarzschilds_cat_2x.png 2089: https://imgs.xkcd.com/comics/christmas_eve_eve_2x.png 2090: https://imgs.xkcd.com/comics/feathered_dinosaur_venn_diagram_2x.png 2091: https://imgs.xkcd.com/comics/million_billion_trillion_2x.png 2092: https://imgs.xkcd.com/comics/consensus_new_year_2x.png 2093: https://imgs.xkcd.com/comics/reminders_2x.png 2094: https://imgs.xkcd.com/comics/short_selling_2x.png 2095: https://imgs.xkcd.com/comics/marsiforming_2x.png 2096: https://imgs.xkcd.com/comics/mattresses_2x.png 2097: https://imgs.xkcd.com/comics/thor_tools_2x.png 2098: https://imgs.xkcd.com/comics/magnetic_pole_2x.png 2099: https://imgs.xkcd.com/comics/missal_of_silos_2x.png 2100: https://imgs.xkcd.com/comics/models_of_the_atom_2x.png 2101: https://imgs.xkcd.com/comics/technical_analysis_2x.png 2102: https://imgs.xkcd.com/comics/internet_archive_2x.png 2103: https://imgs.xkcd.com/comics/midcontinent_rift_system_2x.png 2104: https://imgs.xkcd.com/comics/biff_tannen_2x.png 2105: https://imgs.xkcd.com/comics/modern_osi_model_2x.png 2106: https://imgs.xkcd.com/comics/sharing_options_2x.png 2107: https://imgs.xkcd.com/comics/launch_risk_2x.png 2108: https://imgs.xkcd.com/comics/carbonated_beverage_language_map_2x.png 2109: https://imgs.xkcd.com/comics/invisible_formatting_2x.png 2110: https://imgs.xkcd.com/comics/error_bars_2x.png 2111: https://imgs.xkcd.com/comics/opportunity_rover_2x.png 2112: https://imgs.xkcd.com/comics/night_shift_2x.png 2113: https://imgs.xkcd.com/comics/physics_suppression_2x.png 2114: https://imgs.xkcd.com/comics/launch_conditions_2x.png 2115: https://imgs.xkcd.com/comics/plutonium_2x.png 2116: https://imgs.xkcd.com/comics/norm_normal_file_format_2x.png 2117: https://imgs.xkcd.com/comics/differentiation_and_integration_2x.png 2118: https://imgs.xkcd.com/comics/normal_distribution_2x.png 2119: https://imgs.xkcd.com/comics/video_orientation_2x.png 2120: https://imgs.xkcd.com/comics/brain_hemispheres_2x.png 2121: https://imgs.xkcd.com/comics/light_pollution_2x.png 2122: https://imgs.xkcd.com/comics/size_venn_diagram_2x.png 2123: https://imgs.xkcd.com/comics/meta_collecting_2x.png 2124: https://imgs.xkcd.com/comics/space_mission_hearing_2x.png 2125: https://imgs.xkcd.com/comics/luna_2_2x.png 2126: https://imgs.xkcd.com/comics/google_trends_maps_2x.png 2127: https://imgs.xkcd.com/comics/panama_canal_2x.png 2128: https://imgs.xkcd.com/comics/new_robot_2x.png 2129: https://imgs.xkcd.com/comics/1921_fact_checker_2x.png 2130: https://imgs.xkcd.com/comics/industry_nicknames_2x.png 2131: https://imgs.xkcd.com/comics/emojidome_2x.png 2132: https://imgs.xkcd.com/comics/percentage_styles_2x.png 2133: https://imgs.xkcd.com/comics/eht_black_hole_picture_2x.png 2134: https://imgs.xkcd.com/comics/too_much_talking_2x.png 2135: https://imgs.xkcd.com/comics/m87_black_hole_size_comparison_2x.png 2136: https://imgs.xkcd.com/comics/election_commentary_2x.png 2137: https://imgs.xkcd.com/comics/text_entry_2x.png 2138: https://imgs.xkcd.com/comics/wanna_see_the_code_2x.png 2139: https://imgs.xkcd.com/comics/email_settings_2x.png 2140: https://imgs.xkcd.com/comics/reinvent_the_wheel_2x.png 2141: https://imgs.xkcd.com/comics/ui_vs_ux_2x.png 2142: https://imgs.xkcd.com/comics/dangerous_fields_2x.png 2143: https://imgs.xkcd.com/comics/disk_usage_2x.png 2144: https://imgs.xkcd.com/comics/adjusting_a_chair_2x.png 2145: https://imgs.xkcd.com/comics/heists_and_escapes_2x.png 2146: https://imgs.xkcd.com/comics/waiting_for_the_but_2x.png 2147: https://imgs.xkcd.com/comics/appendicitis_2x.png 2148: https://imgs.xkcd.com/comics/cubesat_launch_2x.png 2149: https://imgs.xkcd.com/comics/alternate_histories_2x.png 2150: https://imgs.xkcd.com/comics/xkeyboarcd_2x.png 2151: https://imgs.xkcd.com/comics/a_b_2x.png 2152: https://imgs.xkcd.com/comics/westerns_2x.png 2153: https://imgs.xkcd.com/comics/effects_of_high_altitude_2x.png 2154: https://imgs.xkcd.com/comics/motivation_2x.png 2155: https://imgs.xkcd.com/comics/swimming_2x.png 2156: https://imgs.xkcd.com/comics/ufo_2x.png 2157: https://imgs.xkcd.com/comics/diploma_legal_notes_2x.png 2158: https://imgs.xkcd.com/comics/qualifiers_2x.png 2159: https://imgs.xkcd.com/comics/comments_2x.png 2160: https://imgs.xkcd.com/comics/ken_burns_theory_2x.png 2161: https://imgs.xkcd.com/comics/an_apple_a_day_2x.png 2162: https://imgs.xkcd.com/comics/literary_opinions_2x.png 2163: https://imgs.xkcd.com/comics/chernobyl_2x.png 2164: https://imgs.xkcd.com/comics/glacier_2x.png 2165: https://imgs.xkcd.com/comics/millennials_2x.png 2166: https://imgs.xkcd.com/comics/stack_2x.png 2167: https://imgs.xkcd.com/comics/motivated_reasoning_olympics_2x.png 2168: https://imgs.xkcd.com/comics/reading_in_the_original_2x.png 2169: https://imgs.xkcd.com/comics/predictive_models_2x.png 2170: https://imgs.xkcd.com/comics/coordinate_precision_2x.png 2171: https://imgs.xkcd.com/comics/shadow_biosphere_2x.png 2172: https://imgs.xkcd.com/comics/lunar_cycles_2x.png 2173: https://imgs.xkcd.com/comics/trained_a_neural_net_2x.png 2174: https://imgs.xkcd.com/comics/first_news_memory_2x.png 2175: https://imgs.xkcd.com/comics/flag_interpretation_2x.png 2176: https://imgs.xkcd.com/comics/how_hacking_works_2x.png 2177: https://imgs.xkcd.com/comics/gastroenterology_2x.png 2178: https://imgs.xkcd.com/comics/expiration_date_high_score_2x.png 2179: https://imgs.xkcd.com/comics/nws_warnings_2x.png 2180: https://imgs.xkcd.com/comics/spreadsheets_2x.png 2181: https://imgs.xkcd.com/comics/inbox_2x.png 2182: https://imgs.xkcd.com/comics/when_im_back_at_a_keyboard_2x.png 2183: https://imgs.xkcd.com/comics/icon_swap_2x.png 2184: https://imgs.xkcd.com/comics/unpopular_opinions_2x.png 2185: https://imgs.xkcd.com/comics/cumulonimbus_2x.png 2186: https://imgs.xkcd.com/comics/dark_matter_2x.png 2187: https://imgs.xkcd.com/comics/geologic_time_2x.png 2188: https://imgs.xkcd.com/comics/e_scooters_2x.png 2189: https://imgs.xkcd.com/comics/old_game_worlds_2x.png 2190: https://imgs.xkcd.com/comics/serena_versus_the_drones_2x.png 2191: https://imgs.xkcd.com/comics/conference_question_2x.png 2192: https://imgs.xkcd.com/comics/review_2x.png 2193: https://imgs.xkcd.com/comics/well_ordering_principle_2x.png 2194: https://imgs.xkcd.com/comics/how_to_send_a_file_2x.png 2195: https://imgs.xkcd.com/comics/dockless_roombas_2x.png 2196: https://imgs.xkcd.com/comics/nice_to_e_meet_you_2x.png 2197: https://imgs.xkcd.com/comics/game_show_2x.png 2198: https://imgs.xkcd.com/comics/throw_2x.png 2199: https://imgs.xkcd.com/comics/cryptic_wifi_networks_2x.png 2200: https://imgs.xkcd.com/comics/unreachable_state_2x.png 2201: https://imgs.xkcd.com/comics/foucault_pendulum_2x.png 2202: No higher res available 2203: https://imgs.xkcd.com/comics/prescience_2x.png 2204: https://imgs.xkcd.com/comics/ksp_2_2x.png 2205: https://imgs.xkcd.com/comics/types_of_approximation_2x.png 2206: https://imgs.xkcd.com/comics/mavis_beacon_2x.png 2207: https://imgs.xkcd.com/comics/math_work_2x.png 2208: https://imgs.xkcd.com/comics/drone_fishing_2x.png 2209: https://imgs.xkcd.com/comics/fresh_pears_2x.png 2210: https://imgs.xkcd.com/comics/college_athletes_2x.png 2211: https://imgs.xkcd.com/comics/hours_before_departure_2x.png 2212: https://imgs.xkcd.com/comics/cell_phone_functions_2x.png 2213: https://imgs.xkcd.com/comics/how_old_2x.png 2214: https://imgs.xkcd.com/comics/chemistry_nobel_2x.png 2215: https://imgs.xkcd.com/comics/faculty_student_ratio_2x.png 2216: https://imgs.xkcd.com/comics/percent_milkfat_2x.png 2217: https://imgs.xkcd.com/comics/53_cards_2x.png 2218: https://imgs.xkcd.com/comics/wardrobe_2x.png 2219: https://imgs.xkcd.com/comics/earthquake_early_warnings_2x.png 2220: https://imgs.xkcd.com/comics/imagine_going_back_in_time_2x.png 2221: https://imgs.xkcd.com/comics/emulation_2x.png 2222: https://imgs.xkcd.com/comics/terminator_dark_fate_2x.png 2223: https://imgs.xkcd.com/comics/screen_time_2x.png 2224: https://imgs.xkcd.com/comics/software_updates_2x.png 2225: https://imgs.xkcd.com/comics/voting_referendum_2x.png 2226: https://imgs.xkcd.com/comics/recombination_and_reionization_2x.png 2227: https://imgs.xkcd.com/comics/transit_of_mercury_2x.png 2228: https://imgs.xkcd.com/comics/machine_learning_captcha_2x.png 2229: https://imgs.xkcd.com/comics/rey_and_kylo_2x.png 2230: https://imgs.xkcd.com/comics/versus_bracket_2x.png 2231: https://imgs.xkcd.com/comics/the_time_before_and_after_land_2x.png 2232: https://imgs.xkcd.com/comics/hotel_room_party_2x.png 2233: https://imgs.xkcd.com/comics/aurora_meaning_2x.png 2234: https://imgs.xkcd.com/comics/how_to_deliver_christmas_presents_2x.png 2235: https://imgs.xkcd.com/comics/group_chat_rules_2x.png 2236: https://imgs.xkcd.com/comics/is_it_christmas_2x.png 2237: https://imgs.xkcd.com/comics/ai_hiring_algorithm_2x.png 2238: https://imgs.xkcd.com/comics/flu_shot_2x.png 2239: https://imgs.xkcd.com/comics/data_error_2x.png 2240: https://imgs.xkcd.com/comics/timeline_of_the_universe_2x.png 2241: https://imgs.xkcd.com/comics/brussels_sprouts_mandela_effect_2x.png 2242: https://imgs.xkcd.com/comics/ground_vs_air_2x.png 2243: https://imgs.xkcd.com/comics/star_wars_spoiler_generator_2x.png 2244: https://imgs.xkcd.com/comics/thumbtacks_and_string_2x.png 2245: https://imgs.xkcd.com/comics/edible_arrangements_2x.png 2246: https://imgs.xkcd.com/comics/christmas_presents_2x.png 2247: https://imgs.xkcd.com/comics/weird_hill_2x.png 2248: https://imgs.xkcd.com/comics/new_years_eve_2x.png 2249: https://imgs.xkcd.com/comics/i_love_the_20s_2x.png 2250: https://imgs.xkcd.com/comics/ok_okay_ok_2x.png 2251: https://imgs.xkcd.com/comics/alignment_chart_alignment_chart_2x.png 2252: https://imgs.xkcd.com/comics/parenthetical_names_2x.png 2253: https://imgs.xkcd.com/comics/star_wars_voyager_1_2x.png 2254: https://imgs.xkcd.com/comics/jpeg2000_2x.png 2255: https://imgs.xkcd.com/comics/tattoo_ideas_2x.png 2256: https://imgs.xkcd.com/comics/bad_map_projection_south_america_2x.png 2257: https://imgs.xkcd.com/comics/unsubscribe_message_2x.png 2258: https://imgs.xkcd.com/comics/solar_system_changes_2x.png 2259: https://imgs.xkcd.com/comics/networking_problems_2x.png 2260: https://imgs.xkcd.com/comics/reaction_maps_2x.png 2261: https://imgs.xkcd.com/comics/worst_thing_that_could_happen_2x.png 2262: https://imgs.xkcd.com/comics/parker_solar_probe_2x.png 2263: https://imgs.xkcd.com/comics/cicadas_2x.png 2264: https://imgs.xkcd.com/comics/satellite_2x.png 2265: https://imgs.xkcd.com/comics/tax_ai_2x.png 2266: https://imgs.xkcd.com/comics/leap_smearing_2x.png 2267: https://imgs.xkcd.com/comics/blockchain_2x.png 2268: https://imgs.xkcd.com/comics/further_research_is_needed_2x.png 2269: https://imgs.xkcd.com/comics/phylogenetic_tree_2x.png 2270: https://imgs.xkcd.com/comics/picking_bad_stocks_2x.png 2271: https://imgs.xkcd.com/comics/grandpa_jason_and_grandpa_chad_2x.png 2272: https://imgs.xkcd.com/comics/ringtone_timeline_2x.png 2273: https://imgs.xkcd.com/comics/truck_proximity_2x.png 2274: https://imgs.xkcd.com/comics/stargazing_3_2x.png 2275: https://imgs.xkcd.com/comics/coronavirus_name_2x.png 2276: https://imgs.xkcd.com/comics/self_isolate_2x.png 2277: https://imgs.xkcd.com/comics/business_greetings_2x.png 2278: https://imgs.xkcd.com/comics/scientific_briefing_2x.png 2279: https://imgs.xkcd.com/comics/symptoms_2x.png 2280: https://imgs.xkcd.com/comics/2010_and_2020_2x.png 2281: No higher res available 2282: https://imgs.xkcd.com/comics/coronavirus_worries_2x.png 2283: https://imgs.xkcd.com/comics/exa_exabyte_2x.png 2284: https://imgs.xkcd.com/comics/sabotage_2x.png 2285: https://imgs.xkcd.com/comics/recurring_nightmare_2x.png 2286: https://imgs.xkcd.com/comics/6_foot_zone_2x.png 2287: https://imgs.xkcd.com/comics/pathogen_resistance_2x.png 2288: https://imgs.xkcd.com/comics/collectors_edition_2x.png 2289: https://imgs.xkcd.com/comics/scenario_4_2x.png 2290: https://imgs.xkcd.com/comics/homemade_masks_2x.png 2291: https://imgs.xkcd.com/comics/new_sports_system_2x.png 2292: https://imgs.xkcd.com/comics/thermometer_2x.png 2293: https://imgs.xkcd.com/comics/rip_john_conway_2x.gif 2294: https://imgs.xkcd.com/comics/coronavirus_charts_2x.png 2295: https://imgs.xkcd.com/comics/garbage_math_2x.png 2296: https://imgs.xkcd.com/comics/sourdough_starter_2x.png 2297: https://imgs.xkcd.com/comics/use_or_discard_by_2x.png 2298: https://imgs.xkcd.com/comics/coronavirus_genome_2x.png 2299: https://imgs.xkcd.com/comics/coronavirus_genome_2_2x.png 2300: https://imgs.xkcd.com/comics/everyones_an_epidemiologist_2x.png 2301: https://imgs.xkcd.com/comics/turtle_sandwich_standard_model_2x.png 2302: https://imgs.xkcd.com/comics/2020_google_trends_2x.png 2303: https://imgs.xkcd.com/comics/error_types_2x.png 2304: https://imgs.xkcd.com/comics/preprint_2x.png 2305: https://imgs.xkcd.com/comics/coronavirus_polling_2x.png 2306: https://imgs.xkcd.com/comics/common_cold_2x.png 2307: https://imgs.xkcd.com/comics/alive_or_not_2x.png 2308: https://imgs.xkcd.com/comics/mount_st_helens_2x.png 2309: https://imgs.xkcd.com/comics/x_2x.png 2310: https://imgs.xkcd.com/comics/great_attractor_2x.png 2311: https://imgs.xkcd.com/comics/confidence_interval_2x.png 2312: https://imgs.xkcd.com/comics/mbmbam_2x.png 2313: https://imgs.xkcd.com/comics/wrong_times_table_2x.png 2314: https://imgs.xkcd.com/comics/carcinization_2x.png 2315: https://imgs.xkcd.com/comics/eventual_consistency_2x.png 2316: https://imgs.xkcd.com/comics/hair_growth_rate_2x.png 2317: https://imgs.xkcd.com/comics/pinouts_2x.png 2318: https://imgs.xkcd.com/comics/dynamic_entropy_2x.png 2319: https://imgs.xkcd.com/comics/large_number_formats_2x.png 2320: https://imgs.xkcd.com/comics/millennium_problems_2x.png 2321: https://imgs.xkcd.com/comics/low_background_metal_2x.png 2322: https://imgs.xkcd.com/comics/iso_paper_size_golden_spiral_2x.png 2323: https://imgs.xkcd.com/comics/modeling_study_2x.png 2324: https://imgs.xkcd.com/comics/old_days_2_2x.png 2325: https://imgs.xkcd.com/comics/endorheic_basin_2x.png 2326: https://imgs.xkcd.com/comics/five_word_jargon_2x.png 2327: https://imgs.xkcd.com/comics/oily_house_index_2x.png 2328: https://imgs.xkcd.com/comics/space_basketball_2x.png 2329: https://imgs.xkcd.com/comics/universal_rating_scale_2x.png 2330: https://imgs.xkcd.com/comics/acceptable_risk_2x.png 2331: https://imgs.xkcd.com/comics/hamster_ball_2_2x.png 2332: https://imgs.xkcd.com/comics/cursed_chair_2x.png 2333: https://imgs.xkcd.com/comics/covid_risk_chart_2x.png 2334: https://imgs.xkcd.com/comics/slide_trombone_2x.png 2335: https://imgs.xkcd.com/comics/photo_deposit_2x.png 2336: https://imgs.xkcd.com/comics/campfire_habitable_zone_2x.png 2337: https://imgs.xkcd.com/comics/asterisk_corrections_2x.png 2338: https://imgs.xkcd.com/comics/faraday_tour_2x.png 2339: https://imgs.xkcd.com/comics/pods_vs_bubbles_2x.png 2340: https://imgs.xkcd.com/comics/cosmologist_genres_2x.png 2341: https://imgs.xkcd.com/comics/scientist_tech_help_2x.png 2342: https://imgs.xkcd.com/comics/exposure_notification_2x.png 2343: https://imgs.xkcd.com/comics/mathematical_symbol_fight_2x.png 2344: https://imgs.xkcd.com/comics/26_second_pulse_2x.png 2345: https://imgs.xkcd.com/comics/wish_on_a_shooting_star_2x.png 2346: https://imgs.xkcd.com/comics/covid_risk_comfort_zone_2x.png 2347: https://imgs.xkcd.com/comics/dependency_2x.png 2348: https://imgs.xkcd.com/comics/boat_puzzle_2x.png 2349: https://imgs.xkcd.com/comics/rabbit_introduction_2x.png 2350: https://imgs.xkcd.com/comics/deer_turrets_2x.png 2351: https://imgs.xkcd.com/comics/standard_model_changes_2x.png 2352: https://imgs.xkcd.com/comics/synonym_date_2x.png 2353: https://imgs.xkcd.com/comics/hurricane_hunters_2x.png 2354: https://imgs.xkcd.com/comics/stellar_evolution_2x.png 2355: https://imgs.xkcd.com/comics/university_covid_model_2x.png 2356: https://imgs.xkcd.com/comics/constellation_monstrosity_2x.png 2357: https://imgs.xkcd.com/comics/polls_vs_the_street_2x.png 2358: https://imgs.xkcd.com/comics/gravitational_wave_pulsars_2x.png 2359: https://imgs.xkcd.com/comics/evidence_of_alien_life_2x.png 2360: https://imgs.xkcd.com/comics/common_star_types_2x.png 2361: https://imgs.xkcd.com/comics/voting_2x.png 2362: https://imgs.xkcd.com/comics/volcano_dinosaur_2x.png 2363: https://imgs.xkcd.com/comics/message_boards_2x.png 2364: https://imgs.xkcd.com/comics/parity_conservation_2x.png 2365: https://imgs.xkcd.com/comics/messaging_systems_2x.png 2366: https://imgs.xkcd.com/comics/amelias_farm_fresh_cookies_2x.png 2367: https://imgs.xkcd.com/comics/masks_2x.png 2368: https://imgs.xkcd.com/comics/bigger_problem_2x.png 2369: https://imgs.xkcd.com/comics/all_in_one_2x.png 2370: https://imgs.xkcd.com/comics/prediction_2x.png 2371: https://imgs.xkcd.com/comics/election_screen_time_2x.png 2372: https://imgs.xkcd.com/comics/dialect_quiz_2x.png 2373: https://imgs.xkcd.com/comics/chemist_eggs_2x.png 2374: https://imgs.xkcd.com/comics/10000_hours_2x.png 2375: https://imgs.xkcd.com/comics/worst_ladder_2x.png 2376: https://imgs.xkcd.com/comics/curbside_2x.png 2377: https://imgs.xkcd.com/comics/xkcd_phone_12_2x.png 2378: https://imgs.xkcd.com/comics/fall_back_2x.png 2379: https://imgs.xkcd.com/comics/probability_comparisons_2x.png 2380: https://imgs.xkcd.com/comics/election_impact_score_sheet_2x.png 2381: https://imgs.xkcd.com/comics/the_true_name_of_the_bear_2x.png 2382: https://imgs.xkcd.com/comics/ballot_tracker_tracker_2x.png 2383: https://imgs.xkcd.com/comics/electoral_precedent_2020_2x.png 2384: https://imgs.xkcd.com/comics/set_in_the_present_2x.png 2385: https://imgs.xkcd.com/comics/final_exam_2x.png 2386: https://imgs.xkcd.com/comics/ten_years_2x.png 2387: https://imgs.xkcd.com/comics/blair_witch_2x.png 2388: https://imgs.xkcd.com/comics/viral_quiz_identity_theft_2x.png 2389: https://imgs.xkcd.com/comics/unread_2x.png 2390: https://imgs.xkcd.com/comics/linguists_2x.png 2391: https://imgs.xkcd.com/comics/life_before_the_pandemic_2x.png 2392: https://imgs.xkcd.com/comics/cyber_cafe_2x.png 2393: https://imgs.xkcd.com/comics/presidential_middle_names_2x.png 2394: https://imgs.xkcd.com/comics/contiguous_41_states_2x.png 2395: https://imgs.xkcd.com/comics/covid_precaution_level_2x.png 2396: https://imgs.xkcd.com/comics/wonder_woman_1984_2x.png 2397: https://imgs.xkcd.com/comics/i_just_dont_trust_them_2x.png 2398: https://imgs.xkcd.com/comics/vaccine_tracker_2x.png 2399: https://imgs.xkcd.com/comics/2020_election_map_2x.png 2400: https://imgs.xkcd.com/comics/statistics_2x.png 2401: https://imgs.xkcd.com/comics/conjunction_2x.png 2402: https://imgs.xkcd.com/comics/into_my_veins_2x.png 2403: https://imgs.xkcd.com/comics/wrapping_paper_2x.png 2404: https://imgs.xkcd.com/comics/first_thing_2x.png 2405: https://imgs.xkcd.com/comics/flash_gatsby_2x.png 2406: https://imgs.xkcd.com/comics/viral_vector_immunity_2x.png 2407: https://imgs.xkcd.com/comics/depth_and_breadth_2x.png 2408: https://imgs.xkcd.com/comics/egg_strategies_2x.png 2409: https://imgs.xkcd.com/comics/steepen_the_curve_2x.png 2410: https://imgs.xkcd.com/comics/apple_growers_2x.png 2411: https://imgs.xkcd.com/comics/1_10000th_scale_world_2x.png 2412: https://imgs.xkcd.com/comics/1_100000th_scale_world_2x.png 2413: https://imgs.xkcd.com/comics/pulsar_analogy_2x.png 2414: https://imgs.xkcd.com/comics/solar_system_compression_artifacts_2x.png 2415: https://imgs.xkcd.com/comics/allow_captcha_2x.png 2416: https://imgs.xkcd.com/comics/trash_compactor_party_2x.png 2417: https://imgs.xkcd.com/comics/1_1000th_scale_world_2x.png 2418: https://imgs.xkcd.com/comics/metacarcinization_2x.png 2419: https://imgs.xkcd.com/comics/hug_count_2x.png 2420: https://imgs.xkcd.com/comics/appliances_2x.png 2421: https://imgs.xkcd.com/comics/tower_of_babel_2x.png 2422: https://imgs.xkcd.com/comics/vaccine_ordering_2x.png 2423: https://imgs.xkcd.com/comics/project_orion_2x.png 2424: https://imgs.xkcd.com/comics/normal_conversation_2x.png 2425: https://imgs.xkcd.com/comics/mrna_vaccine_2x.png 2426: https://imgs.xkcd.com/comics/animal_songs_2x.png 2427: https://imgs.xkcd.com/comics/perseverance_microphones_2x.png 2428: https://imgs.xkcd.com/comics/mars_landing_video_2x.png 2429: https://imgs.xkcd.com/comics/exposure_models_2x.png 2430: https://imgs.xkcd.com/comics/post_pandemic_hat_2x.png 2431: https://imgs.xkcd.com/comics/leap_year_2021_2x.png 2432: https://imgs.xkcd.com/comics/manage_your_preferences_2x.png 2433: https://imgs.xkcd.com/comics/mars_rovers_2x.png 2434: https://imgs.xkcd.com/comics/vaccine_guidance_2x.png 2435: https://imgs.xkcd.com/comics/geothmetic_meandian_2x.png 2436: https://imgs.xkcd.com/comics/circles_2x.png 2437: https://imgs.xkcd.com/comics/post_vaccine_party_2x.png 2438: https://imgs.xkcd.com/comics/siri_2x.png 2439: https://imgs.xkcd.com/comics/solar_system_cartogram_2x.png 2440: https://imgs.xkcd.com/comics/epistemic_uncertainty_2x.png 2441: https://imgs.xkcd.com/comics/imdb_vaccines_2x.png 2442: https://imgs.xkcd.com/comics/mask_opinions_2x.png 2443: https://imgs.xkcd.com/comics/immune_response_2x.png 2444: https://imgs.xkcd.com/comics/ingenuity_2x.png 2445: https://imgs.xkcd.com/comics/checkbox_2x.gif 2446: https://imgs.xkcd.com/comics/spike_proteins_2x.png 2447: https://imgs.xkcd.com/comics/hammer_incident_2x.png 2448: https://imgs.xkcd.com/comics/eradication_2x.png 2449: https://imgs.xkcd.com/comics/iss_vaccine_2x.png 2450: https://imgs.xkcd.com/comics/post_vaccine_social_scheduling_2x.png 2451: https://imgs.xkcd.com/comics/ai_methodology_2x.png 2452: https://imgs.xkcd.com/comics/aviation_firsts_2x.png 2453: https://imgs.xkcd.com/comics/excel_lambda_2x.png 2454: https://imgs.xkcd.com/comics/fully_vaccinated_2x.png 2455: https://imgs.xkcd.com/comics/virus_consulting_2x.png 2456: https://imgs.xkcd.com/comics/types_of_scientific_paper_2x.png 2457: https://imgs.xkcd.com/comics/after_the_pandemic_2x.png 2458: https://imgs.xkcd.com/comics/bubble_wrap_2x.png 2459: https://imgs.xkcd.com/comics/march_2020_2x.png 2460: https://imgs.xkcd.com/comics/vaccinated_2x.png 2461: https://imgs.xkcd.com/comics/90s_kid_space_program_2x.png 2462: https://imgs.xkcd.com/comics/nasa_award_2x.png 2463: https://imgs.xkcd.com/comics/astrophotography_2x.png 2464: https://imgs.xkcd.com/comics/mullers_ratchet_2x.png 2465: https://imgs.xkcd.com/comics/dimensional_chess_2x.png 2466: https://imgs.xkcd.com/comics/in_your_classroom_2x.png 2467: https://imgs.xkcd.com/comics/wikipedia_caltrops_2x.png 2468: https://imgs.xkcd.com/comics/inheritance_2x.png 2469: https://imgs.xkcd.com/comics/astronomy_status_board_2x.png 2470: https://imgs.xkcd.com/comics/next_slide_please_2x.png 2471: https://imgs.xkcd.com/comics/hippo_attacks_2x.png 2472: https://imgs.xkcd.com/comics/fuzzy_blob_2x.png 2473: https://imgs.xkcd.com/comics/product_launch_2x.png 2474: https://imgs.xkcd.com/comics/first_time_since_early_2020_2x.png 2475: https://imgs.xkcd.com/comics/health_drink_2x.png 2476: https://imgs.xkcd.com/comics/base_rate_2x.png 2477: https://imgs.xkcd.com/comics/alien_visitors_2x.png 2478: https://imgs.xkcd.com/comics/alien_visitors_2_2x.png 2479: https://imgs.xkcd.com/comics/houseguests_2x.png 2480: https://imgs.xkcd.com/comics/no_the_other_one_2x.png 2481: https://imgs.xkcd.com/comics/1991_and_2021_2x.png 2482: https://imgs.xkcd.com/comics/indoor_socializing_2x.png 2483: https://imgs.xkcd.com/comics/linked_list_interview_problem_2x.png 2484: https://imgs.xkcd.com/comics/h_alpha_2x.png 2485: https://imgs.xkcd.com/comics/nightmare_code_2x.png 2486: https://imgs.xkcd.com/comics/board_game_party_schedule_2x.png 2487: https://imgs.xkcd.com/comics/danger_mnemonic_2x.png 2488: https://imgs.xkcd.com/comics/board_game_argument_legacy_2x.png 2489: https://imgs.xkcd.com/comics/bad_map_projection_the_greenland_special_2x.png 2490: https://imgs.xkcd.com/comics/pre_pandemic_ketchup_2x.png 2491: https://imgs.xkcd.com/comics/immune_factory_2x.png 2492: https://imgs.xkcd.com/comics/commonly_mispronounced_equations_2x.png 2493: https://imgs.xkcd.com/comics/dual_usb_c_2x.png 2494: https://imgs.xkcd.com/comics/flawed_data_2x.png 2495: https://imgs.xkcd.com/comics/universal_seat_belt_2x.png 2496: https://imgs.xkcd.com/comics/mine_captcha_2x.png 2497: https://imgs.xkcd.com/comics/logic_gates_2x.png 2498: https://imgs.xkcd.com/comics/forest_walk_2x.png 2499: https://imgs.xkcd.com/comics/abandonment_function_2x.png 2500: https://imgs.xkcd.com/comics/global_temperature_over_my_lifetime_2x.png 2501: https://imgs.xkcd.com/comics/average_familiarity_2x.png 2502: https://imgs.xkcd.com/comics/every_data_table_2x.png 2503: https://imgs.xkcd.com/comics/memo_spike_connector_2x.png 2504: https://imgs.xkcd.com/comics/fissile_raspberry_isotopes_2x.png 2505: https://imgs.xkcd.com/comics/news_story_reaction_2x.png 2506: https://imgs.xkcd.com/comics/projecting_2x.png 2507: https://imgs.xkcd.com/comics/usv_c_2x.png 2508: https://imgs.xkcd.com/comics/circumappendiceal_somectomy_2x.png 2509: https://imgs.xkcd.com/comics/useful_geometry_formulas_2x.png 2510: https://imgs.xkcd.com/comics/modern_tools_2x.png 2511: https://imgs.xkcd.com/comics/recreate_the_conditions_2x.png 2512: https://imgs.xkcd.com/comics/revelation_2x.png 2513: https://imgs.xkcd.com/comics/saturn_hexagon_2x.png 2514: https://imgs.xkcd.com/comics/lab_equipment_2x.png 2515: https://imgs.xkcd.com/comics/vaccine_research_2x.png 2516: https://imgs.xkcd.com/comics/hubble_tension_2x.png 2517: https://imgs.xkcd.com/comics/rover_replies_2x.png 2518: https://imgs.xkcd.com/comics/lumpers_and_splitters_2x.png 2519: https://imgs.xkcd.com/comics/sloped_border_2x.png 2520: https://imgs.xkcd.com/comics/symbols_2x.png 2521: https://imgs.xkcd.com/comics/toothpaste_2x.png 2522: https://imgs.xkcd.com/comics/two_factor_security_key_2x.png 2523: https://imgs.xkcd.com/comics/endangered_2x.png 2524: https://imgs.xkcd.com/comics/comet_visitor_2x.png 2525: https://imgs.xkcd.com/comics/air_travel_packing_list_2x.png 2526: https://imgs.xkcd.com/comics/tsp_vs_tbsp_2x.png 2527: https://imgs.xkcd.com/comics/new_nobel_prizes_2x.png 2528: https://imgs.xkcd.com/comics/flag_map_sabotage_2x.png 2529: https://imgs.xkcd.com/comics/unsolved_math_problems_2x.png 2530: https://imgs.xkcd.com/comics/clinical_trials_2x.png 2531: https://imgs.xkcd.com/comics/dark_arts_2x.png 2532: https://imgs.xkcd.com/comics/censored_vaccine_card_2x.png 2533: https://imgs.xkcd.com/comics/slope_hypothesis_testing_2x.png 2534: https://imgs.xkcd.com/comics/retractable_rocket_2x.png 2535: https://imgs.xkcd.com/comics/common_cold_viruses_2x.png 2536: https://imgs.xkcd.com/comics/wirecutter_2x.png 2537: https://imgs.xkcd.com/comics/painbow_award_2x.png 2538: https://imgs.xkcd.com/comics/snack_2x.png 2539: https://imgs.xkcd.com/comics/flinch_2x.png 2540: https://imgs.xkcd.com/comics/ttsltswbd_2x.png 2541: https://imgs.xkcd.com/comics/occam_2x.png 2542: https://imgs.xkcd.com/comics/daylight_calendar_2x.png 2543: https://imgs.xkcd.com/comics/never_told_anyone_2x.png 2544: https://imgs.xkcd.com/comics/heart_stopping_texts_2x.png 2545: https://imgs.xkcd.com/comics/bayes_theorem_2x.png 2546: https://imgs.xkcd.com/comics/fiction_vs_nonfiction_2x.png 2547: https://imgs.xkcd.com/comics/siren_2x.png 2548: https://imgs.xkcd.com/comics/awful_people_2x.png 2549: https://imgs.xkcd.com/comics/edge_cake_2x.png 2550: https://imgs.xkcd.com/comics/webb_2x.png 2551: https://imgs.xkcd.com/comics/debunking_2x.png 2552: https://imgs.xkcd.com/comics/the_last_molecule_2x.png 2553: https://imgs.xkcd.com/comics/incident_report_2x.png 2554: https://imgs.xkcd.com/comics/gift_exchange_2x.png 2555: https://imgs.xkcd.com/comics/notifications_2x.png 2556: https://imgs.xkcd.com/comics/turing_complete_2x.png 2557: https://imgs.xkcd.com/comics/immunity_2x.png 2558: https://imgs.xkcd.com/comics/rapid_test_results_2x.png 2559: https://imgs.xkcd.com/comics/december_25th_launch_2x.png 2560: https://imgs.xkcd.com/comics/confounding_variables_2x.png 2561: https://imgs.xkcd.com/comics/moonfall_2x.png 2562: https://imgs.xkcd.com/comics/formatting_meeting_2x.png 2563: https://imgs.xkcd.com/comics/throat_and_nasal_passages_2x.png 2564: https://imgs.xkcd.com/comics/sunshield_2x.png 2565: https://imgs.xkcd.com/comics/latency_2x.png 2566: https://imgs.xkcd.com/comics/decorative_constants_2x.png 2567: https://imgs.xkcd.com/comics/language_development_2x.png 2568: https://imgs.xkcd.com/comics/spinthariscope_2x.png 2569: https://imgs.xkcd.com/comics/hypothesis_generation_2x.png 2570: https://imgs.xkcd.com/comics/captain_picard_tea_order_2x.png 2571: https://imgs.xkcd.com/comics/hydraulic_analogy_2x.png 2572: https://imgs.xkcd.com/comics/alien_observers_2x.png 2573: https://imgs.xkcd.com/comics/alien_mission_2x.png 2574: https://imgs.xkcd.com/comics/autoresponder_2x.png 2575: https://imgs.xkcd.com/comics/what_if_2_2x.png 2576: https://imgs.xkcd.com/comics/control_group_2x.png 2577: https://imgs.xkcd.com/comics/sea_chase_2x.png 2578: https://imgs.xkcd.com/comics/sword_pull_2x.png 2579: https://imgs.xkcd.com/comics/tractor_beam_2x.png 2580: https://imgs.xkcd.com/comics/rest_and_fluids_2x.png 2581: https://imgs.xkcd.com/comics/health_stats_2x.png 2582: https://imgs.xkcd.com/comics/data_trap_2x.png 2583: https://imgs.xkcd.com/comics/chorded_keyboard_2x.png 2584: https://imgs.xkcd.com/comics/headline_words_2x.png 2585: https://imgs.xkcd.com/comics/rounding_2x.png 2586: https://imgs.xkcd.com/comics/greek_letters_2x.png 2587: https://imgs.xkcd.com/comics/for_the_sake_of_simplicity_2x.png 2588: https://imgs.xkcd.com/comics/party_quadrants_2x.png 2589: https://imgs.xkcd.com/comics/outlet_denier_2x.png 2590: https://imgs.xkcd.com/comics/i_shouldnt_complain_2x.png 2591: https://imgs.xkcd.com/comics/qua_2x.png 2592: https://imgs.xkcd.com/comics/false_dichotomy_2x.png 2593: https://imgs.xkcd.com/comics/deviled_eggs_2x.png 2594: https://imgs.xkcd.com/comics/consensus_time_2x.png 2595: https://imgs.xkcd.com/comics/advanced_techniques_2x.png 2596: https://imgs.xkcd.com/comics/galaxies_2x.png 2597: https://imgs.xkcd.com/comics/salary_negotiation_2x.png 2598: https://imgs.xkcd.com/comics/graphic_designers_2x.png 2599: https://imgs.xkcd.com/comics/spacecraft_debris_odds_ratio_2x.png 2600: https://imgs.xkcd.com/comics/rejected_question_categories_2x.png 2601: https://imgs.xkcd.com/comics/instructions_2x.png 2602: https://imgs.xkcd.com/comics/linguistics_degree_2x.png 2603: https://imgs.xkcd.com/comics/childhood_toys_2x.png 2604: https://imgs.xkcd.com/comics/frankenstein_captcha_2x.png 2605: https://imgs.xkcd.com/comics/taylor_series_2x.png 2606: https://imgs.xkcd.com/comics/weird_unicode_math_symbols_2x.png 2607: https://imgs.xkcd.com/comics/geiger_counter_2x.png 2608: https://imgs.xkcd.com/comics/family_reunion_2x.png 2609: https://imgs.xkcd.com/comics/entwives_2x.png 2610: https://imgs.xkcd.com/comics/assigning_numbers_2x.png 2611: https://imgs.xkcd.com/comics/cutest_sounding_scientific_effects_2x.png 2612: https://imgs.xkcd.com/comics/lightsabers_2x.png 2613: https://imgs.xkcd.com/comics/bad_map_projection_madagascator_2x.png 2614: https://imgs.xkcd.com/comics/2_2x.png 2615: https://imgs.xkcd.com/comics/welcome_back_2x.png 2616: https://imgs.xkcd.com/comics/deep_end_2x.png 2617: https://imgs.xkcd.com/comics/maps_2x.png 2618: https://imgs.xkcd.com/comics/selection_bias_2x.png 2619: https://imgs.xkcd.com/comics/crepe_2x.png 2620: https://imgs.xkcd.com/comics/health_data_2x.png 2621: https://imgs.xkcd.com/comics/mainly_known_for_2x.png 2622: https://imgs.xkcd.com/comics/angular_diameter_turnaround_2x.png 2623: https://imgs.xkcd.com/comics/goofs_2x.png 2624: https://imgs.xkcd.com/comics/voyager_wires_2x.png 2625: https://imgs.xkcd.com/comics/field_topology_2x.png 2626: https://imgs.xkcd.com/comics/d65536_2x.png 2627: https://imgs.xkcd.com/comics/types_of_scopes_2x.png 2628: https://imgs.xkcd.com/comics/motion_blur_2x.png 2629: https://imgs.xkcd.com/comics/or_whatever_2x.png 2630: https://imgs.xkcd.com/comics/shuttle_skeleton_2x.png 2631: https://imgs.xkcd.com/comics/exercise_progression_2x.png 2632: https://imgs.xkcd.com/comics/greatest_scientist_2x.png 2633: https://imgs.xkcd.com/comics/astronomer_hotline_2x.png 2634: https://imgs.xkcd.com/comics/red_line_through_https_2x.png 2635: https://imgs.xkcd.com/comics/superintelligent_ais_2x.png 2636: https://imgs.xkcd.com/comics/what_if_2_countdown_2x.png 2637: https://imgs.xkcd.com/comics/roman_numerals_2x.png 2638: https://imgs.xkcd.com/comics/extended_nfpa_hazard_diamond_2x.png 2639: https://imgs.xkcd.com/comics/periodic_table_changes_2x.png 2640: https://imgs.xkcd.com/comics/the_universe_by_scientific_field_2x.png 2641: https://imgs.xkcd.com/comics/mouse_turbines_2x.png 2642: https://imgs.xkcd.com/comics/meta_alternating_current_2x.png 2643: https://imgs.xkcd.com/comics/cosmologist_gift_2x.png 2644: https://imgs.xkcd.com/comics/fmri_billboard_2x.png 2645: https://imgs.xkcd.com/comics/the_best_camera_2x.png 2646: https://imgs.xkcd.com/comics/minkowski_space_2x.png 2647: https://imgs.xkcd.com/comics/capri_suns_2x.png 2648: https://imgs.xkcd.com/comics/chemicals_2x.png 2649: https://imgs.xkcd.com/comics/physics_cost_saving_tips_2x.png 2650: https://imgs.xkcd.com/comics/deepfakes_2x.png 2651: https://imgs.xkcd.com/comics/air_gap_2x.png 2652: https://imgs.xkcd.com/comics/proxy_variable_2x.png 2653: https://imgs.xkcd.com/comics/omnitaur_2x.png 2654: https://imgs.xkcd.com/comics/chemtrails_2x.png 2655: https://imgs.xkcd.com/comics/asking_scientists_questions_2x.png 2656: https://imgs.xkcd.com/comics/scientific_field_prefixes_2x.png 2657: https://imgs.xkcd.com/comics/complex_vowels_2x.png 2658: https://imgs.xkcd.com/comics/coffee_cup_holes_2x.png 2659: https://imgs.xkcd.com/comics/unreliable_connection_2x.png 2660: https://imgs.xkcd.com/comics/gen_z_2x.png 2661: https://imgs.xkcd.com/comics/age_milestone_privileges_2x.png 2662: https://imgs.xkcd.com/comics/physics_safety_tip_2x.png 2663: https://imgs.xkcd.com/comics/tetherball_configurations_2x.png 2664: https://imgs.xkcd.com/comics/cloud_swirls_2x.png 2665: https://imgs.xkcd.com/comics/america_songs_2x.png 2666: https://imgs.xkcd.com/comics/universe_price_tiers_2x.png 2667: https://imgs.xkcd.com/comics/first_internet_interaction_2x.png 2668: https://imgs.xkcd.com/comics/artemis_quote_2x.png 2669: https://imgs.xkcd.com/comics/things_you_should_not_do_2x.png 2670: https://imgs.xkcd.com/comics/interruption_2x.png 2671: https://imgs.xkcd.com/comics/rotation_2x.png 2672: https://imgs.xkcd.com/comics/what_if_2_flowchart_2x.png 2673: https://imgs.xkcd.com/comics/cursed_mrna_cocktail_2x.png 2674: https://imgs.xkcd.com/comics/everyday_carry_2x.png 2675: https://imgs.xkcd.com/comics/pilot_priority_list_2x.png 2676: https://imgs.xkcd.com/comics/historical_dates_2x.png 2677: https://imgs.xkcd.com/comics/two_key_system_2x.png 2678: https://imgs.xkcd.com/comics/wing_lift_2x.png 2679: https://imgs.xkcd.com/comics/quantified_self_2x.png 2680: https://imgs.xkcd.com/comics/battery_life_2x.png 2681: https://imgs.xkcd.com/comics/archimedes_principle_2x.png 2682: https://imgs.xkcd.com/comics/easy_or_hard_2x.png 2683: https://imgs.xkcd.com/comics/fan_theories_2x.png 2684: https://imgs.xkcd.com/comics/road_space_comparison_2x.png 2685: https://imgs.xkcd.com/comics/2045_2x.png 2686: https://imgs.xkcd.com/comics/space_adventure_2x.png 2687: https://imgs.xkcd.com/comics/division_notation_2x.png 2688: https://imgs.xkcd.com/comics/bubble_universes_2x.png 2689: https://imgs.xkcd.com/comics/fermats_first_theorem_2x.png 2690: https://imgs.xkcd.com/comics/cool_s_2x.png 2691: https://imgs.xkcd.com/comics/encryption_2x.png 2692: https://imgs.xkcd.com/comics/interior_decorating_2x.png 2693: https://imgs.xkcd.com/comics/wirecutter_recommendation_2x.png 2694: https://imgs.xkcd.com/comics/konigsberg_2x.png 2695: https://imgs.xkcd.com/comics/soil_2x.png 2696: https://imgs.xkcd.com/comics/precision_vs_accuracy_2x.png 2697: https://imgs.xkcd.com/comics/y2k_and_2038_2x.png 2698: https://imgs.xkcd.com/comics/bad_date_2x.png 2699: https://imgs.xkcd.com/comics/feature_comparison_2x.png 2700: https://imgs.xkcd.com/comics/account_problems_2x.png 2701: https://imgs.xkcd.com/comics/change_in_slope_2x.png 2702: https://imgs.xkcd.com/comics/what_if_2_gift_guide_2x.png 2703: https://imgs.xkcd.com/comics/paper_title_2x.png 2704: https://imgs.xkcd.com/comics/faucet_2x.png 2705: https://imgs.xkcd.com/comics/spacetime_soccer_2x.png 2706: https://imgs.xkcd.com/comics/bendy_2x.png 2707: https://imgs.xkcd.com/comics/astronomy_numbers_2x.png 2708: https://imgs.xkcd.com/comics/mystery_asterisk_destination_2x.png 2709: https://imgs.xkcd.com/comics/solar_system_model_2x.png 2710: https://imgs.xkcd.com/comics/hydropower_breakthrough_2x.png 2711: https://imgs.xkcd.com/comics/optimal_bowling_2x.png 2712: https://imgs.xkcd.com/comics/gravity_2x.png 2713: https://imgs.xkcd.com/comics/data_point_2x.png 2714: https://imgs.xkcd.com/comics/cold_complaints_2x.png 2715: https://imgs.xkcd.com/comics/pando_2x.png 2716: https://imgs.xkcd.com/comics/game_night_ordering_2x.png 2717: https://imgs.xkcd.com/comics/l6_lagrange_point_2x.png 2718: https://imgs.xkcd.com/comics/new_years_eve_party_2x.png 2719: https://imgs.xkcd.com/comics/hydrogen_isotopes_2x.png 2720: https://imgs.xkcd.com/comics/biology_vs_robotics_2x.png 2721: https://imgs.xkcd.com/comics/euler_diagrams_2x.png 2722: https://imgs.xkcd.com/comics/etymonline_2x.png 2723: https://imgs.xkcd.com/comics/outdated_periodic_table_2x.png 2724: https://imgs.xkcd.com/comics/washing_machine_settings_2x.png 2725: https://imgs.xkcd.com/comics/sunspot_cycle_2x.png 2726: https://imgs.xkcd.com/comics/methodology_trial_2x.png 2727: https://imgs.xkcd.com/comics/runtime_2x.png 2728: https://imgs.xkcd.com/comics/lane_change_highway_2x.png 2729: https://imgs.xkcd.com/comics/planet_killer_comet_margarita_2x.png 2730: https://imgs.xkcd.com/comics/code_lifespan_2x.png 2731: https://imgs.xkcd.com/comics/k_means_clustering_2x.png 2732: https://imgs.xkcd.com/comics/bursa_of_fabricius_2x.png 2733: https://imgs.xkcd.com/comics/size_comparisons_2x.png 2734: https://imgs.xkcd.com/comics/electron_color_2x.png 2735: https://imgs.xkcd.com/comics/coordinate_plane_closure_2x.png 2736: https://imgs.xkcd.com/comics/only_serifs_2x.png 2737: https://imgs.xkcd.com/comics/weather_station_2x.png 2738: https://imgs.xkcd.com/comics/omniknot_2x.png 2739: https://imgs.xkcd.com/comics/data_quality_2x.png 2740: https://imgs.xkcd.com/comics/square_packing_2x.png 2741: https://imgs.xkcd.com/comics/wish_interpretation_2x.png 2742: https://imgs.xkcd.com/comics/island_storage_2x.png 2743: https://imgs.xkcd.com/comics/hand_dryers_2x.png 2744: https://imgs.xkcd.com/comics/fanservice_2x.png 2745: https://imgs.xkcd.com/comics/obituary_editor_2x.png 2746: https://imgs.xkcd.com/comics/launch_window_2x.png 2747: https://imgs.xkcd.com/comics/presents_for_biologists_2x.png 2748: https://imgs.xkcd.com/comics/radians_are_cursed_2x.png 2749: https://imgs.xkcd.com/comics/lymphocytes_2x.png 2750: https://imgs.xkcd.com/comics/flatten_the_planets_2x.png 2751: https://imgs.xkcd.com/comics/march_madness_2x.png 2752: https://imgs.xkcd.com/comics/salt_dome_2x.png 2753: https://imgs.xkcd.com/comics/air_handler_2x.png 2754: https://imgs.xkcd.com/comics/relative_terms_2x.png 2755: https://imgs.xkcd.com/comics/effect_size_2x.png 2756: https://imgs.xkcd.com/comics/qualifications_2x.png 2757: https://imgs.xkcd.com/comics/towed_message_2x.png 2758: https://imgs.xkcd.com/comics/my_favorite_things_2x.png 2759: https://imgs.xkcd.com/comics/easily_confused_acronyms_2x.png 2760: https://imgs.xkcd.com/comics/paleontology_museum_2x.png 2761: https://imgs.xkcd.com/comics/1_to_1_scale_2x.png 2762: https://imgs.xkcd.com/comics/diffraction_spikes_2x.png 2763: https://imgs.xkcd.com/comics/linguistics_gossip_2x.png 2764: https://imgs.xkcd.com/comics/cosmological_nostalgia_content_2x.png 2765: https://imgs.xkcd.com/comics/escape_speed_2x.png 2766: https://imgs.xkcd.com/comics/helium_reserve_2x.png 2767: https://imgs.xkcd.com/comics/recipe_relativity_2x.png 2768: https://imgs.xkcd.com/comics/definition_of_e_2x.png 2769: https://imgs.xkcd.com/comics/overlapping_circles_2x.png 2770: https://imgs.xkcd.com/comics/tapetum_lucidum_2x.png 2771: https://imgs.xkcd.com/comics/college_knowledge_2x.png 2772: https://imgs.xkcd.com/comics/commemorative_plaque_2x.png 2773: https://imgs.xkcd.com/comics/planetary_scientist_2x.png 2774: https://imgs.xkcd.com/comics/taxiing_2x.png 2775: https://imgs.xkcd.com/comics/siphon_2x.png 2776: https://imgs.xkcd.com/comics/crystal_ball_2x.png 2777: https://imgs.xkcd.com/comics/noise_filter_2x.png 2778: https://imgs.xkcd.com/comics/cuisine_2x.png 2779: https://imgs.xkcd.com/comics/exoplanet_high_5_2x.png 2780: https://imgs.xkcd.com/comics/physical_quantities_2x.png 2781: https://imgs.xkcd.com/comics/the_six_platonic_solids_2x.png 2782: https://imgs.xkcd.com/comics/wikipedia_article_titles_2x.png 2783: https://imgs.xkcd.com/comics/ruling_out_2x.png 2784: https://imgs.xkcd.com/comics/drainage_basins_2x.png 2785: https://imgs.xkcd.com/comics/marble_run_2x.png 2786: https://imgs.xkcd.com/comics/ufo_evidence_2x.png 2787: https://imgs.xkcd.com/comics/iceberg_2x.png 2788: https://imgs.xkcd.com/comics/musical_scales_2x.png 2789: https://imgs.xkcd.com/comics/making_plans_2x.png 2790: https://imgs.xkcd.com/comics/heat_pump_2x.png 2791: https://imgs.xkcd.com/comics/bookshelf_sorting_2x.png 2792: https://imgs.xkcd.com/comics/summer_solstice_2x.png 2793: https://imgs.xkcd.com/comics/garden_path_sentence_2x.png 2794: https://imgs.xkcd.com/comics/alphabet_notes_2x.png 2795: https://imgs.xkcd.com/comics/glass_topped_table_2x.png 2796: https://imgs.xkcd.com/comics/real_estate_analysis_2x.png 2797: https://imgs.xkcd.com/comics/actual_progress_2x.png 2798: https://imgs.xkcd.com/comics/room_temperature_2x.png 2799: https://imgs.xkcd.com/comics/frankenstein_claim_permutations_2x.png 2800: https://imgs.xkcd.com/comics/down_2x.png 2801: https://imgs.xkcd.com/comics/contact_merge_2x.png 2802: https://imgs.xkcd.com/comics/fireflies_2x.png 2803: https://imgs.xkcd.com/comics/geohydrotypography_2x.png 2804: https://imgs.xkcd.com/comics/marshmallow_2x.png 2805: https://imgs.xkcd.com/comics/global_atmospheric_circulation_2x.png 2806: https://imgs.xkcd.com/comics/anti_vaxxers_2x.png 2807: https://imgs.xkcd.com/comics/bad_map_projection_abs_longitude_2x.png 2808: https://imgs.xkcd.com/comics/daytime_firefly_2x.png 2809: https://imgs.xkcd.com/comics/moon_2x.png 2810: https://imgs.xkcd.com/comics/how_to_coil_a_cable_2x.png 2811: https://imgs.xkcd.com/comics/free_fallin_2x.png 2812: https://imgs.xkcd.com/comics/solar_panel_placement_2x.png 2813: https://imgs.xkcd.com/comics/what_to_do_2x.png 2814: https://imgs.xkcd.com/comics/perseids_pronunciation_2x.png 2815: https://imgs.xkcd.com/comics/car_wash_2x.png 2816: https://imgs.xkcd.com/comics/types_of_solar_eclipse_2x.png 2817: https://imgs.xkcd.com/comics/electron_holes_2x.png 2818: https://imgs.xkcd.com/comics/circuit_symbols_2x.png 2819: https://imgs.xkcd.com/comics/pronunciation_2x.png 2820: https://imgs.xkcd.com/comics/inspiration_2x.png 2821: https://imgs.xkcd.com/comics/path_minimization_2x.png 2822: https://imgs.xkcd.com/comics/gmail_com_2x.png 2823: https://imgs.xkcd.com/comics/fossil_2x.png 2824: https://imgs.xkcd.com/comics/abstract_pickup_2x.png 2825: https://imgs.xkcd.com/comics/autumn_and_fall_2x.png 2826: https://imgs.xkcd.com/comics/gold_2x.png 2827: https://imgs.xkcd.com/comics/brassica_2x.png 2828: https://imgs.xkcd.com/comics/exoplanet_observation_2x.png 2829: https://imgs.xkcd.com/comics/iceberg_efficiency_2x.png 2830: https://imgs.xkcd.com/comics/haunted_house_2x.png 2831: https://imgs.xkcd.com/comics/xkcd_phone_flip_2x.png 2832: https://imgs.xkcd.com/comics/urban_planning_opinion_progression_2x.png 2833: https://imgs.xkcd.com/comics/lying_2x.png 2834: https://imgs.xkcd.com/comics/book_podcasts_2x.png 2835: https://imgs.xkcd.com/comics/factorial_numbers_2x.png 2836: https://imgs.xkcd.com/comics/a_halloween_carol_2x.png 2837: https://imgs.xkcd.com/comics/odyssey_2x.png 2838: https://imgs.xkcd.com/comics/dubious_islands_2x.png 2839: https://imgs.xkcd.com/comics/language_acquisition_2x.png 2840: https://imgs.xkcd.com/comics/earth_layers_2x.png 2841: https://imgs.xkcd.com/comics/sign_combo_2x.png 2842: https://imgs.xkcd.com/comics/inspiraling_roundabout_2x.png 2843: https://imgs.xkcd.com/comics/professional_oaths_2x.png 2844: https://imgs.xkcd.com/comics/black_holes_vs_regular_holes_2x.png 2845: https://imgs.xkcd.com/comics/extinction_mechanisms_2x.png 2846: https://imgs.xkcd.com/comics/daylight_saving_choice_2x.png 2847: https://imgs.xkcd.com/comics/dendrochronology_2x.png 2848: https://imgs.xkcd.com/comics/breaker_box_2x.png 2849: https://imgs.xkcd.com/comics/under_the_stars_2x.png 2850: https://imgs.xkcd.com/comics/doctors_office_2x.png 2851: https://imgs.xkcd.com/comics/messier_objects_2x.png 2852: https://imgs.xkcd.com/comics/parameterball_2x.png 2853: https://imgs.xkcd.com/comics/redshift_2x.png 2854: https://imgs.xkcd.com/comics/date_line_2x.png 2855: https://imgs.xkcd.com/comics/empiricism_2x.png 2856: https://imgs.xkcd.com/comics/materials_scientists_2x.png 2857: https://imgs.xkcd.com/comics/rebuttals_2x.png 2858: https://imgs.xkcd.com/comics/thanksgiving_arguments_2x.png 2859: https://imgs.xkcd.com/comics/oceanography_gift_2x.png 2860: https://imgs.xkcd.com/comics/decay_modes_2x.png 2861: https://imgs.xkcd.com/comics/x_value_2x.png 2862: https://imgs.xkcd.com/comics/typical_seating_chart_2x.png 2863: https://imgs.xkcd.com/comics/space_typography_2x.png 2864: https://imgs.xkcd.com/comics/compact_graphs_2x.png 2865: https://imgs.xkcd.com/comics/the_wrong_stuff_2x.png 2866: https://imgs.xkcd.com/comics/snow_2x.png 2867: https://imgs.xkcd.com/comics/datetime_2x.png 2868: https://imgs.xkcd.com/comics/label_the_states_2x.png 2869: https://imgs.xkcd.com/comics/puzzles_2x.png 2870: https://imgs.xkcd.com/comics/love_songs_2x.png 2871: https://imgs.xkcd.com/comics/definitely_2x.png 2872: https://imgs.xkcd.com/comics/hydrothermal_vents_2x.png 2873: https://imgs.xkcd.com/comics/supersymmetry_2x.png 2874: https://imgs.xkcd.com/comics/iceland_2x.png 2875: https://imgs.xkcd.com/comics/2024_2x.png 2876: https://imgs.xkcd.com/comics/range_safety_2x.png 2877: https://imgs.xkcd.com/comics/fever_2x.png 2878: https://imgs.xkcd.com/comics/supernova_2x.png 2879: https://imgs.xkcd.com/comics/like_this_one_2x.png 2880: https://imgs.xkcd.com/comics/sheet_bend_2x.png 2881: https://imgs.xkcd.com/comics/bug_thread_2x.png 2882: https://imgs.xkcd.com/comics/net_rotations_2x.png 2883: https://imgs.xkcd.com/comics/astronaut_guests_2x.png 2884: https://imgs.xkcd.com/comics/log_alignment_2x.png 2885: https://imgs.xkcd.com/comics/spelling_2x.png 2886: https://imgs.xkcd.com/comics/fast_radio_bursts_2x.png 2887: https://imgs.xkcd.com/comics/minnesota_2x.png 2888: https://imgs.xkcd.com/comics/us_survey_foot_2x.png 2889: https://imgs.xkcd.com/comics/greenhouse_effect_2x.png 2890: https://imgs.xkcd.com/comics/relationship_advice_2x.png 2891: https://imgs.xkcd.com/comics/log_cabin_2x.png 2892: https://imgs.xkcd.com/comics/banana_prices_2x.png 2893: https://imgs.xkcd.com/comics/sphere_tastiness_2x.png 2894: https://imgs.xkcd.com/comics/research_account_2x.png 2895: https://imgs.xkcd.com/comics/treasure_chests_2x.png 2896: https://imgs.xkcd.com/comics/crossword_constructors_2x.png 2897: https://imgs.xkcd.com/comics/light_leap_years_2x.png 2898: https://imgs.xkcd.com/comics/orbital_argument_2x.png 2899: https://imgs.xkcd.com/comics/goodharts_law_2x.png 2900: https://imgs.xkcd.com/comics/call_my_cell_2x.png 2901: https://imgs.xkcd.com/comics/geographic_qualifiers_2x.png 2902: https://imgs.xkcd.com/comics/ice_core_2x.png 2903: https://imgs.xkcd.com/comics/earth_venus_venn_diagram_2x.png 2904: https://imgs.xkcd.com/comics/physics_vs_magic_2x.png 2905: https://imgs.xkcd.com/comics/supergroup_2x.png 2906: https://imgs.xkcd.com/comics/earth_2x.png 2907: https://imgs.xkcd.com/comics/schwa_2x.png 2908: https://imgs.xkcd.com/comics/moon_armor_index_2x.png 2909: https://imgs.xkcd.com/comics/moon_landing_mission_profiles_2x.png 2910: https://imgs.xkcd.com/comics/the_wreck_of_the_edmund_fitzgerald_2x.png 2911: https://imgs.xkcd.com/comics/greenland_size_2x.png 2912: https://imgs.xkcd.com/comics/cursive_letters_2x.png 2913: https://imgs.xkcd.com/comics/periodic_table_regions_2x.png 2914: https://imgs.xkcd.com/comics/eclipse_coolness_2x.png 2915: https://imgs.xkcd.com/comics/eclipse_clouds_2x.png 2916: https://imgs.xkcd.com/comics/machine_2x.png 2917: https://imgs.xkcd.com/comics/types_of_eclipse_photo_2x.png 2918: https://imgs.xkcd.com/comics/tick_marks_2x.png 2919: https://imgs.xkcd.com/comics/sitting_in_a_tree_2x.png 2920: https://imgs.xkcd.com/comics/survey_marker_2x.png 2921: https://imgs.xkcd.com/comics/eclipse_path_maps_2x.png 2922: https://imgs.xkcd.com/comics/pub_trivia_2x.png 2923: https://imgs.xkcd.com/comics/scary_triangles_2x.png 2924: https://imgs.xkcd.com/comics/pendulum_types_2x.png 2925: https://imgs.xkcd.com/comics/earth_formation_site_2x.png 2926: https://imgs.xkcd.com/comics/doppler_effect_2x.png 2927: https://imgs.xkcd.com/comics/alphabetical_cartogram_2x.png 2928: https://imgs.xkcd.com/comics/software_testing_day_2x.png 2929: https://imgs.xkcd.com/comics/good_and_bad_ideas_2x.png 2930: https://imgs.xkcd.com/comics/google_solar_cycle_2x.png 2931: https://imgs.xkcd.com/comics/chasing_2x.png 2932: https://imgs.xkcd.com/comics/driving_psa_2x.png 2933: https://imgs.xkcd.com/comics/elementary_physics_paths_2x.png 2934: https://imgs.xkcd.com/comics/bloom_filter_2x.png 2935: https://imgs.xkcd.com/comics/ocean_loop_2x.png 2936: https://imgs.xkcd.com/comics/exponential_growth_2x.png 2937: https://imgs.xkcd.com/comics/room_code_2x.png 2938: https://imgs.xkcd.com/comics/local_group_2x.png 2939: https://imgs.xkcd.com/comics/complexity_analysis_2x.png 2940: https://imgs.xkcd.com/comics/modes_of_transportation_2x.png 2941: https://imgs.xkcd.com/comics/cell_organelles_2x.png 2942: https://imgs.xkcd.com/comics/fluid_speech_2x.png 2943: https://imgs.xkcd.com/comics/unsolved_chemistry_problems_2x.png 2944: https://imgs.xkcd.com/comics/magnet_fishing_2x.png 2945: https://imgs.xkcd.com/comics/broken_model_2x.png 2946: https://imgs.xkcd.com/comics/1_2_kilofives_2x.png 2947: https://imgs.xkcd.com/comics/pascals_wager_triangle_2x.png 2948: https://imgs.xkcd.com/comics/electric_vs_gas_2x.png 2949: https://imgs.xkcd.com/comics/network_configuration_2x.png 2950: https://imgs.xkcd.com/comics/situation_2x.png 2951: https://imgs.xkcd.com/comics/bad_map_projection_exterior_kansas_2x.png 2952: https://imgs.xkcd.com/comics/routine_maintenance_2x.png 2953: https://imgs.xkcd.com/comics/alien_theories_2x.png 2954: https://imgs.xkcd.com/comics/bracket_symbols_2x.png 2955: https://imgs.xkcd.com/comics/pole_vault_2x.png 2956: https://imgs.xkcd.com/comics/number_line_branch_2x.png 2957: https://imgs.xkcd.com/comics/a_crossword_puzzle_2x.png 2958: https://imgs.xkcd.com/comics/hatchery_2x.png 2959: https://imgs.xkcd.com/comics/beam_of_light_2x.png 2960: https://imgs.xkcd.com/comics/organ_meanings_2x.png 2961: https://imgs.xkcd.com/comics/crowdstrike_2x.png 2962: https://imgs.xkcd.com/comics/president_venn_diagram_2x.png 2963: https://imgs.xkcd.com/comics/house_inputs_and_outputs_2x.png 2964: https://imgs.xkcd.com/comics/olympic_sports_2x.png 2965: https://imgs.xkcd.com/comics/chili_tornado_quake_2x.png 2966: https://imgs.xkcd.com/comics/exam_numbers_2x.png 2967: https://imgs.xkcd.com/comics/matter_2x.png 2968: https://imgs.xkcd.com/comics/university_age_2x.png 2969: https://imgs.xkcd.com/comics/vice_president_first_names_2x.png 2970: https://imgs.xkcd.com/comics/meteor_shower_psa_2x.png 2971: https://imgs.xkcd.com/comics/celestial_event_2x.png 2972: https://imgs.xkcd.com/comics/helium_synthesis_2x.png 2973: https://imgs.xkcd.com/comics/ferris_wheels_2x.png 2974: https://imgs.xkcd.com/comics/storage_tanks_2x.png 2975: https://imgs.xkcd.com/comics/classical_periodic_table_2x.png 2976: https://imgs.xkcd.com/comics/time_traveler_causes_of_death_2x.png 2977: https://imgs.xkcd.com/comics/three_kinds_of_research_2x.png 2978: https://imgs.xkcd.com/comics/stranded_2x.png 2979: https://imgs.xkcd.com/comics/sky_alarm_2x.png 2980: https://imgs.xkcd.com/comics/lava_lakes_2x.png 2981: https://imgs.xkcd.com/comics/slingshots_2x.png 2982: https://imgs.xkcd.com/comics/water_filtration_2x.png 2983: https://imgs.xkcd.com/comics/monocaster_2x.png 2984: https://imgs.xkcd.com/comics/asteroid_news_2x.png 2985: https://imgs.xkcd.com/comics/craters_2x.png 2986: https://imgs.xkcd.com/comics/every_scientific_field_2x.png 2987: https://imgs.xkcd.com/comics/tectonic_surfing_2x.png 2988: https://imgs.xkcd.com/comics/maslows_pyramid_2x.png 2989: https://imgs.xkcd.com/comics/physics_lab_thermostat_2x.png 2990: https://imgs.xkcd.com/comics/late_cenozoic_2x.png 2991: https://imgs.xkcd.com/comics/beamsplitters_2x.png 2992: https://imgs.xkcd.com/comics/uk_coal_2x.png 2993: https://imgs.xkcd.com/comics/ingredients_2x.png 2994: https://imgs.xkcd.com/comics/numenor_margaritaville_2x.png 2995: https://imgs.xkcd.com/comics/university_commas_2x.png 2996: https://imgs.xkcd.com/comics/cidabm_2x.png 2997: https://imgs.xkcd.com/comics/solar_protons_2x.png 2998: https://imgs.xkcd.com/comics/ravioli_shaped_objects_2x.png 2999: https://imgs.xkcd.com/comics/bad_map_projection_the_united_stralia_2x.png 3000: https://imgs.xkcd.com/comics/experimental_astrophysics_2x.png 3001: https://imgs.xkcd.com/comics/temperature_scales_2x.png 3002: https://imgs.xkcd.com/comics/rnaworld_2x.png 3003: https://imgs.xkcd.com/comics/sandwich_helix_2x.png 3004: https://imgs.xkcd.com/comics/wells_2x.png 3005: https://imgs.xkcd.com/comics/disposal_2x.png 3006: https://imgs.xkcd.com/comics/demons_2x.png 3007: https://imgs.xkcd.com/comics/probabilistic_uncertainty_2x.png 3008: https://imgs.xkcd.com/comics/proterozoic_rocks_2x.png 3009: https://imgs.xkcd.com/comics/number_shortage_2x.png 3010: https://imgs.xkcd.com/comics/geometriphylogenetics_2x.png 3011: https://imgs.xkcd.com/comics/europa_clipper_2x.png 3012: https://imgs.xkcd.com/comics/the_future_of_orion_2x.png 3013: https://imgs.xkcd.com/comics/kedging_cannon_2x.png 3014: https://imgs.xkcd.com/comics/arizona_chess_2x.png 3015: https://imgs.xkcd.com/comics/dnd_combinatorics_2x.png 3016: https://imgs.xkcd.com/comics/cold_air_2x.png 3017: https://imgs.xkcd.com/comics/neutrino_modem_2x.png 3018: https://imgs.xkcd.com/comics/second_stage_2x.png 3019: https://imgs.xkcd.com/comics/advent_calendar_advent_calendar_2x.png 3020: https://imgs.xkcd.com/comics/infinite_armada_chess_2x.png 3021: https://imgs.xkcd.com/comics/seismologists_2x.png 3022: https://imgs.xkcd.com/comics/making_tea_2x.png 3023: https://imgs.xkcd.com/comics/the_maritime_approximation_2x.png 3024: https://imgs.xkcd.com/comics/metar_2x.png 3025: https://imgs.xkcd.com/comics/phase_change_2x.png 3026: https://imgs.xkcd.com/comics/linear_sort_2x.png 3027: https://imgs.xkcd.com/comics/exclusion_principle_2x.png 3028: https://imgs.xkcd.com/comics/dnd_roll_2x.png 3029: https://imgs.xkcd.com/comics/sun_avoidance_2x.png 3030: https://imgs.xkcd.com/comics/lasering_incidents_2x.png 3031: https://imgs.xkcd.com/comics/time_capsule_instructions_2x.png 3032: https://imgs.xkcd.com/comics/skew_t_log_p_2x.png 3033: https://imgs.xkcd.com/comics/origami_black_hole_2x.png 3034: https://imgs.xkcd.com/comics/features_of_adulthood_2x.png 3035: https://imgs.xkcd.com/comics/trimix_2x.png 3036: https://imgs.xkcd.com/comics/chess_zoo_2x.png 3037: https://imgs.xkcd.com/comics/radon_2x.png 3038: https://imgs.xkcd.com/comics/uncanceled_units_2x.png 3039: https://imgs.xkcd.com/comics/human_altitude_2x.png 3040: https://imgs.xkcd.com/comics/chemical_formulas_2x.png 3041: https://imgs.xkcd.com/comics/unit_circle_2x.png 3042: https://imgs.xkcd.com/comics/t_rex_evolution_2x.png 3043: https://imgs.xkcd.com/comics/muons_2x.png 3044: https://imgs.xkcd.com/comics/humidifier_review_2x.png 3045: https://imgs.xkcd.com/comics/alphamove_2x.png 3046: https://imgs.xkcd.com/comics/stromatolites_2x.png 3047: https://imgs.xkcd.com/comics/rotary_tool_2x.png 3048: https://imgs.xkcd.com/comics/suspension_bridge_2x.png 3049: https://imgs.xkcd.com/comics/incoming_asteroid_2x.png 3050: https://imgs.xkcd.com/comics/atom_2x.png 3051: https://imgs.xkcd.com/comics/hardwood_2x.png 3052: https://imgs.xkcd.com/comics/archive_request_2x.png 3053: https://imgs.xkcd.com/comics/km3net_2x.png 3054: https://imgs.xkcd.com/comics/scream_cipher_2x.png 3055: https://imgs.xkcd.com/comics/giants_2x.png 3056: https://imgs.xkcd.com/comics/rna_2x.png 3057: https://imgs.xkcd.com/comics/excusing_yourself_2x.png 3058: https://imgs.xkcd.com/comics/tall_structures_2x.png 3059: https://imgs.xkcd.com/comics/water_damage_2x.png 3060: https://imgs.xkcd.com/comics/omniroll_2x.png 3061: https://imgs.xkcd.com/comics/water_balloons_2x.png 3062: https://imgs.xkcd.com/comics/off_by_one_2x.png 3063: https://imgs.xkcd.com/comics/planet_definitions_2x.png 3064: https://imgs.xkcd.com/comics/lungfish_2x.png 3065: https://imgs.xkcd.com/comics/square_units_2x.png 3066: https://imgs.xkcd.com/comics/cosmic_distance_calibration_2x.png 3067: https://imgs.xkcd.com/comics/sawstart_2x.png 3068: https://imgs.xkcd.com/comics/rock_identification_2x.png 3069: https://imgs.xkcd.com/comics/terror_bird_2x.png 3070: https://imgs.xkcd.com/comics/orogeny_2x.png 3071: https://imgs.xkcd.com/comics/decay_chain_2x.png 3072: https://imgs.xkcd.com/comics/stargazing_4_2x.png 3073: https://imgs.xkcd.com/comics/tariffs_2x.png 3074: https://imgs.xkcd.com/comics/push_notifications_2x.png 3075: https://imgs.xkcd.com/comics/anachronym_challenge_2x.png 3076: https://imgs.xkcd.com/comics/the_roads_both_taken_2x.png 3077: https://imgs.xkcd.com/comics/de_sitter_2x.png 3078: https://imgs.xkcd.com/comics/anchor_bolts_2x.png 3079: https://imgs.xkcd.com/comics/air_fact_2x.png 3080: https://imgs.xkcd.com/comics/tennis_balls_2x.png 3081: https://imgs.xkcd.com/comics/phd_timeline_2x.png 3082: https://imgs.xkcd.com/comics/chess_position_2x.png 3083: https://imgs.xkcd.com/comics/jupiter_core_2x.png 3084: https://imgs.xkcd.com/comics/unstoppable_force_and_immovable_object_2x.png 3085: https://imgs.xkcd.com/comics/about_20_pounds_2x.png 3086: https://imgs.xkcd.com/comics/globe_safety_2x.png 3087: https://imgs.xkcd.com/comics/pascals_law_2x.png 3088: https://imgs.xkcd.com/comics/deposition_2x.png 3089: https://imgs.xkcd.com/comics/modern_2x.png 3090: https://imgs.xkcd.com/comics/sail_physics_2x.png 3091: https://imgs.xkcd.com/comics/renormalization_2x.png 3092: https://imgs.xkcd.com/comics/bakers_units_2x.png 3093: https://imgs.xkcd.com/comics/drafting_2x.png 3094: https://imgs.xkcd.com/comics/mass_spec_2x.png 3095: https://imgs.xkcd.com/comics/archaea_2x.png 3096: https://imgs.xkcd.com/comics/check_engine_2x.png 3097: https://imgs.xkcd.com/comics/bridge_types_2x.png 3098: https://imgs.xkcd.com/comics/trojan_horse_2x.png 3099: https://imgs.xkcd.com/comics/neighbor_source_heat_pump_2x.png 3100: https://imgs.xkcd.com/comics/alert_sound_2x.png 3101: https://imgs.xkcd.com/comics/good_science_2x.png 3102: https://imgs.xkcd.com/comics/reading_a_big_number_2x.png 3103: https://imgs.xkcd.com/comics/exoplanet_system_2x.png 3104: https://imgs.xkcd.com/comics/tukey_2x.png 3105: https://imgs.xkcd.com/comics/interoperability_2x.png 3106: https://imgs.xkcd.com/comics/farads_2x.png 3107: https://imgs.xkcd.com/comics/weather_balloons_2x.png 3108: https://imgs.xkcd.com/comics/laser_danger_2x.png 3109: https://imgs.xkcd.com/comics/dehumidifier_2x.png 3110: https://imgs.xkcd.com/comics/global_ranking_2x.png 3111: https://imgs.xkcd.com/comics/artificial_gravity_2x.png 3112: https://imgs.xkcd.com/comics/geology_murder_2x.png 3113: https://imgs.xkcd.com/comics/fix_this_sign_2x.png 3114: https://imgs.xkcd.com/comics/building_a_fire_2x.png 3115: https://imgs.xkcd.com/comics/unsolved_physics_problems_2x.png 3116: https://imgs.xkcd.com/comics/echo_chamber_2x.png 3117: https://imgs.xkcd.com/comics/replication_crisis_2x.png 3118: https://imgs.xkcd.com/comics/inaturalist_animals_and_plants_2x.png 3119: https://imgs.xkcd.com/comics/flettner_rotor_2x.png 3120: https://imgs.xkcd.com/comics/geologic_periods_2x.png 3121: https://imgs.xkcd.com/comics/kite_incident_2x.png 3122: https://imgs.xkcd.com/comics/bad_map_projection_interrupted_spheres_2x.png 3123: https://imgs.xkcd.com/comics/canon_2x.png 3124: https://imgs.xkcd.com/comics/grounded_2x.png 3125: https://imgs.xkcd.com/comics/snake_in_the_box_problem_2x.png 3126: https://imgs.xkcd.com/comics/disclaimer_2x.png 3127: https://imgs.xkcd.com/comics/where_babies_come_from_2x.png 3128: https://imgs.xkcd.com/comics/thread_meeting_2x.png 3129: https://imgs.xkcd.com/comics/archaeology_research_2x.png 3130: https://imgs.xkcd.com/comics/predicament_2x.png 3131: https://imgs.xkcd.com/comics/cesium_2x.png 3132: https://imgs.xkcd.com/comics/coastline_similarity_2x.png 3133: https://imgs.xkcd.com/comics/dual_roomba_2x.png 3134: https://imgs.xkcd.com/comics/wavefunction_collapse_2x.png 3135: https://imgs.xkcd.com/comics/sea_level_2x.png 3136: https://imgs.xkcd.com/comics/pull_2x.png 3137: https://imgs.xkcd.com/comics/cursed_number_2x.png 3138: https://imgs.xkcd.com/comics/dimensional_lumber_tape_measure_2x.png 3139: https://imgs.xkcd.com/comics/chess_variant_2x.png 3140: https://imgs.xkcd.com/comics/biology_department_2x.png 3141: https://imgs.xkcd.com/comics/mantle_model_2x.png 3142: https://imgs.xkcd.com/comics/city_style_pizza_2x.png 3143: https://imgs.xkcd.com/comics/question_mark_2x.png 3144: https://imgs.xkcd.com/comics/phase_changes_2x.png 3145: https://imgs.xkcd.com/comics/piercing_2x.png 3146: https://imgs.xkcd.com/comics/fantastic_four_2x.png 3147: https://imgs.xkcd.com/comics/hiking_2x.png

0 views
Michael Lynch 3 months ago

Get xkcd Cartoons at 2x Resolution

I recently learned a neat trick from Marcus Buffett : xkcd has an undocumented way to get images of the cartoons at double their normal resolution. For example, xkcd #2582 “Data Trap” lists this URL as the direct link: That leads to this 275x275px image, quite small by today’s standards: But there’s a trick! Add a to the filename in the URL: That gives you a version that’s 2x the original resolution, at 550x550px: I couldn’t find the 2x versions documented or linked anywhere except for some old , obscure reddit posts. I hope this knowledge saves you from stretching out poor, low-resolution xkcd comics. Update (2025-10-02) : My friend Matthew Riley let me know that the URL actually appears in xkcd’s HTML in the image’s attribute : Matthew also did some sleuthing at the Internet Archive and noticed that Randall Munroe added the version for older cartoons recently, as #124 “Blogofractal” had no attribute in this 2023 snapshot , but this 2024 snapshot includes . Not every xkcd is availble in 2x resolution. I vibe-coded a Python script to check which cartoons have a 2x-resolution version and published the current list: The earliest version with 2x available is #124, “Blogofractal” ( 2x version ). Starting with #1084, “Server Problem” ( 2x version ), almost every xkcd is available at 2x-resolution. https://imgs.xkcd.com/comics/data_trap.png https://imgs.xkcd.com/comics/data_trap_2x.png List of 2x-resolution xkcd Cartoons #1683 “Digital Data” : The 2x version is lower quality than the original .

0 views
Michael Lynch 4 months ago

I Once Appeared in The Old New Thing

I’m a pretty humble guy, so most people don’t know this extremely impressive fact about me: Raymond Chen once mentioned me on The Old New Thing , the classic Windows development blog. No, he didn’t mention me by name nor did he provide any way to identify me, but I still deserve credit for how little I boast about this stunning achievement

0 views
Michael Lynch 4 months ago

Refactoring English: Month 9

Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers . Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall. At the start of each month, I declare what I’d like to accomplish

0 views
Michael Lynch 4 months ago

Give Your Spouse the Gift of a Couple's Email Domain

I’ve only been married for a few years, but I have a fantastic marriage tip you won’t hear from any marriage counselor or book: My wife and I share a . com domain name for email. I’m not going to reveal our real domain name, but pretend it’s this: Emails to michael@shinytable. com go to both me and my wife, and the same for her name

0 views
Michael Lynch 4 months ago

Flash an AirGradient ONE from the Command Line

I’ve purchased two AirGradient ONE indoor quality monitors to measure air quality in my home. AirGradient devices are open-source, so you can flash your own custom firmware and collect your air data locally rather than sending it to AirGradient’s proprietary cloud dashboard. I keep an AirGradient ONE air quality monitor in my office to measure CO2 and pollution

0 views
Michael Lynch 5 months ago

Refactoring English: Month 8

Hi, I’m Michael. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a book called Refactoring English: Effective Writing for Software Developers . Every month, I publish a retrospective like this one to share how things are going with my book and my professional life overall. At the start of each month, I declare what I’d like to accomplish

0 views
Michael Lynch 5 months ago

Migrating a ZFS pool from RAIDZ1 to RAIDZ2

I recently upgraded my home TrueNAS server and migrated 18 TB of data from a 4-disk RAIDZ1 ZFS pool to a new RAIDZ2 pool. The neat part is that I did it with only three additional 8 TB disks and never transferred my data to external storage

0 views
Michael Lynch 6 months ago

Refactoring English: Month 7

At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I ran the initial pre-sale through Kickstarter, so I decided to just stick with it for subsequent pre-orders. After a couple of months, I realized Kickstarter requires customers to create an account to buy the book, which adds a lot of friction and discourages people from buying

0 views
Michael Lynch 6 months ago

goHardDrive Leaked Personal Data for Thousands of Customers

I recently returned a product to goHardDrive, a merchant that specializes in selling used hard drives. During the return process, I discovered that they were accidentally publishing details about thousands of their customers, including their full names, mailing addresses, email addresses, and order details

0 views
Michael Lynch 6 months ago

My First Impressions of Gleam

I’m looking for a new programming language to learn this year, and Gleam looks like the most fun. It’s an Elixir-like language that supports static typing. I read the language tour , and it made sense to me, but I need to build something before I can judge a programming language well

0 views
Michael Lynch 7 months ago

A Simple Example of Calling an Elixir Library from Gleam

I’ve been experimenting a bit with Gleam and Elixir lately as part of my search for a new programming language . One of Gleam’s flagship features is that it can call Elixir code and libraries, but I couldn’t find any examples of how to do that. I wrote a simple example of calling an Elixir library from a Gleam project, based on my beginner’s understanding of the Gleam/Elixir/Erlang ecosystem

0 views
Michael Lynch 7 months ago

Refactoring English: Month 6

At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I completed these chapters and sent them to pre-order customers. Explicit time limits have helped me avoid spinning on the same chapter forever. I kept putting this off because it’s so boring to adapt existing chapters from Hugo to Asciidoc, but it will be good to get done

0 views
Michael Lynch 7 months ago

Which New Language Should I Learn for Web Development?

One of my goals for the year is to learn a new programming language. It’s been a while since I learned a new language, and I feel like a lot of the languages I know well (Go, Python, C++) are similar to each other, so I want to try getting out of my comfort zone a bit with a language that feels weird to me

0 views
Michael Lynch 7 months ago

Notes from Simon Willison's Interview on Software Misadventures

I just finished listening to Simon Willison’s interview on the Software Misadventures podcast . I learned a lot from the interview, so I wrote up my notes. This is not a summary of the whole interview, just the parts that were new to me or that I’d like to remember

0 views
Michael Lynch 8 months ago

Refactoring English: Month 5

At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals: I originally set out to write a guide that focused on Kickstarter, but the more I wrote, the less I felt like Kickstarter was the interesting part. I was more excited about crowdfunding as a path for self-published authors, and Kickstarter is just one way of crowdfunding

0 views