Before you ask, it's a brain. Wearing sunglasses. On a sailboat.
214 stories

If Cis Straight White Men Menstruated

1 Comment

TO: Citizens
FROM: The Patriarchy
SUBJECT: Menstruation- Important!!!

We do everything we can to make life easier for cisgender straight white men. Unfortunately, menstruation continues to wreak havoc on our most valued population. This memo is a reminder that their periods need to be treated with the utmost care and respect.

No one should cook, clean, or perform other household tasks while menstruating.
Ideally, the cishet white men in your life are not responsible for household chores at any point in their busy schedules—not their job. But for the love of all that is holy, do not suggest they do housework while they’re bleeding. It’s unfair to demand so much from them at such a trying time. Do you honestly expect him to carry a laundry basket up the stairs while a war is being waged inside his body? Check your privilege.

Menstruators should receive the following items from the government every month:

  • One bottle of extra strength pain reliever (choice of Advil, Aleve, Motrin, or Tylenol)
  • One box of twenty-five pads (small, medium, large, and overnight combo pack)
  • One box of twenty-five tampons (light, regular, super, and super plus combo pack)
  • Five pairs of period underwear
  • One large bag of chocolate (choice of Hershey’s Kisses or Reese’s Peanut Butter Cups—others available upon request)

NOTE: Preferences for pain relievers, supplies, and chocolate can be submitted and updated at Questions or concerns? Visit and a 24-7 service representative will be happy to assist.

Supplies are also available at participating stores.
It’s easy to forget essential items at home. Boys will be boys. Free supplies can be found at Walgreens, Rite Aid, CVS, Target, Kroger, Wegmans, Publix, Aldi, Whole Foods, Dollar General, Dollar Tree, Family Dollar, Walmart, Dick’s Sporting Goods, Cabela’s, and the three remaining Kmarts.

Period products are also accessible in public restrooms. Speaking of which, we plan to increase the number of public toilets immediately. What if a tampon needs to be changed on a long hike? Or a cross-country road trip? Men shouldn’t have to waddle around at the beach like babies needing a diaper change.

Menstruators are encouraged to take the week off from work (with pay) while menstruating.
Do you know what it’s like to empty a filled-to-the-brim menstrual cup in an office bathroom while a queue forms outside the door and an impatient jerk vigorously jiggles the handle? No, you don’t, so shut the hell up. If someone decides to work during menstruation (incredible), they will be paid time and a half. Their heroism must not go unnoticed.

When a man complains to you about the pain associated with his cycle, listen to him.
Validate his feelings. Give him a back rub (with his consent). Provide him with fuzzy socks, a soft blanket, and his favorite beverage. Remember that it is a hate crime to say any of the following things to a straight cis white man who is menstruating:

  • “You’re so dramatic.”
  • “Are you PMSing?”
  • “Suck it up.”
  • “It can’t be that bad.”
  • “What’s your problem?”
  • “Calm down.”
  • “Just stick a plug up there and get in the hot tub!”

Additional Considerations:

  • Men should be forgiven for anything they say during their period. We don’t care if he made a snide comment about your gray hair. We don’t care if he said he doesn’t actually like your mom. We don’t care if he got your middle name wrong. Maybe you should change your middle name.
  • Some menstruators might want to have sex while menstruating. This isn’t gross at all. It’s actually beautiful. Practice gratitude for this amazing opportunity if it’s presented to you.
  • Free bleeding is the act of bleeding without blocking the menstrual flow. If he wants to free bleed, celebrate it! His body, his choice.

We hope this letter reinforces that we care about cishet white men above anyone else. Stay tuned for additional guidance regarding their pregnancy in the coming weeks.

— The Patriarchy

Read the whole story
Share this story
1 public comment
11 hours ago
As much as I appreciate the sentiment, I'm quite sure RICH cis white straight men would use this as a way to keep POOR cis white straight men down. Paid time off? Come one, MAN UP and suffer through it, prole. Me? Oh, I'm C-suite; I'll be at the spa that week anyway.
Columbia, MD

Winamp Is Back From the Dead, but These Classic MP3 Players Are Sadly Gone for Good


Earlier this week, we discovered that Winamp, our media player of choice during the heyday of MP3s, is back from the dead and revitalized to run on modern Windows PCs. Whipping the llama’s ass again also got us feeling nostalgic for when our digital music collections first went mobile.


Read the whole story
Share this story
2 public comments
2 days ago
I still keep a few cheap mp3 players on hand for when I'm going to be on a potentially messy excursion and don't want to risk damage to my phone.
Columbia, MD
5 days ago
I remember most of these fondly, especially since this was the era where I held a part-time job at Circuit City during high school where we sold quite a few of these.

That said, how did they not include the Zune!? Yes, the Zune was a late entrant, but IMO it was the ultimate non-iPod MP3 player.
Los Angeles, CA

Ted Cruz Says We're A Go For Butt Stuff

1 Comment

Ted Cruz, because he is an unlikeable bigot, was one of the first senators after the Supreme Court overturned Roe to express how icky he also finds Obergefell, the ruling that brought marriage equality to the entire United States. However, he paid lip service to the notion that he doesn't really want the Court to actually overturn that one. He thinks it would be "chaotic." And besides, he thinks the Court really doesn't want to do that anyway, so we should probably all stop being so hysterical.

Of course, none of that means Cruz will vote to enshrine marriage equality in law with the marriage equality bill coming his way. Pffffft.

But he does have a message for the state lawmakers of Texas, and it is Let My People Have Butt Stuff. We are as surprised as you are! His office, according to the Dallas Morning News, believes Texas should get rid of its old crusty unenforceable sodomy laws.

“Consenting adults should be able to do what they wish in their private sexual activity, and government has no business in their bedrooms,” Cruz’s spokesman told The Dallas Morning News.

We agree with Ted Cruz, butt stuff for everyone who'd like some!

His office also says he thinks the sodomy ban is an "uncommonly silly law." The Dallas Morning News suggests this may not be that surprising, since Cruz, back in 2003, was the state's top appeals attorney, and it was his job to defend the state's stupid sodomy law at the Supreme Court in the case that ultimately overturned it. Cruz declined and made some underling do it.

Of course, this is all in the news because that case, Lawrence v. Texas, was one of the ones Clarence Thomas specifically mentioned in his concurring opinion overturning Roe, as another case maybe the Supreme Court should come for next.

And look, if you want to read all the tortured states rights garbage logic that may have led Ted Cruz to his current positions both on marriage equality and butt stuff and marriage equality, read that full Dallas Morning News article.

And don't let it lead you to think Cruz is anything less than an absolute piece of shit, and don't throw a go-go boy's thong at Ted Cruz's face and ask him to wear it in the pride parade. First of all, that's disgusting. Second of all, made you imagine Ted Cruz in a thong. Third of all:

“While we welcome bipartisan support to repeal an antiquated and harmful law, we must ensure that the same government overreach is not replicated with trans health care today,” said Ricardo Martinez, CEO of the LGBT rights group Equality Texas.


But Nathan Johnson, the state senator who filed a bill last session to repeal the unenforceable, stupid law, says he'll do it again, and maybe with a "little more optimism than last time around" because Cruz came out and said this.

So great, it's Thursday, July 28, 2022, and Ted Cruz is on the correct side of butt stuff, but almost certainly for stupid reasons. But hey, at least he wasn't like Texas Attorney General Ken Paxton, who grunted affirmative words about defending state law, when asked if he would enforce the sodomy ban, given the opportunity.

At least he wasn't like Ken Paxton. That is the nicest thing we will ever say about Ted Cruz.

[Dallas Morning News / h/t Joe.My.God]

Follow Evan Hurst on Twitter right here!

Have you heard that Wonkette DOES NOT EXIST without your donations? Please hear it now, and if you have ever enjoyed a Wonkette article, throw us some bucks, or better yet, SUBSCRIBE!

How often would you like to donate?

Select an amount (USD)

Do your Amazon shopping through this link, because reasons.

Read the whole story
Share this story
1 public comment
13 days ago
"An uncommonly silly law" reminds me of the dissent from Griswold (Which basically said "A law being super dumb is not sufficient reason for the court to strike it down") . Possibly a backhanded attempt by Cruz to further undermine the whole concept of the courts being a valid place to settle such matters?
Columbia, MD


2 Comments and 5 Shares
If so great a deductive mind as Arthur Conan Doyle can be fooled by the Cottingley Deepfakes, what chance do we mortals have? Soon our very reality will be dictated by the whims of Frances (9) and Elsie (16).
Read the whole story
Share this story
2 public comments
15 days ago
The story of technology is ALWAYS "Oh no this new technology will let us do the terrible thing!" "Wait, turns out we've always been able to do the terrible thing, this just lets us do it faster." Turns out the problem was us.
Columbia, MD
15 days ago
Since this seems relevant:
15 days ago
Thanks for this!

What happens when you press a key in your terminal?

1 Comment

I’ve been confused about what’s going on with terminals for a long time.

But this past week I was using xterm.js to display an interactive terminal in a browser and I finally thought to ask a pretty basic question: when you press a key on your keyboard in a terminal (like Delete, or Escape, or a), which bytes get sent?

As usual we’ll answer that question by doing some experiments and seeing what happens :)

remote terminals are very old technology

First, I want to say that displaying a terminal in the browser with xterm.js might seem like a New Thing, but it’s really not. In the 70s, computers were expensive. So many employees at an institution would share a single computer, and each person could have their own “terminal” to that computer.

For example, here’s a photo of a VT100 terminal from the 70s or 80s. This looks like it could be a computer (it’s kind of big!), but it’s not – it just displays whatever information the actual computer sends it.

DEC VT100 terminal

Of course, in the 70s they didn’t use websockets for this, but the information being sent back and forth is more or less the same as it was then.

(the terminal in that photo is from the Living Computer Museum in Seattle which I got to visit once and write FizzBuzz in ed on a very old Unix system, so it’s possible that I’ve actually used that machine or one of its siblings! I really hope the Living Computer Museum opens again, it’s very cool to get to play with old computers.)

what information gets sent?

It’s obvious that if you want to connect to a remote computer (with ssh or using xterm.js and a websocket, or anything else), then some information needs to be sent between the client and the server.


  • the client needs to send the keystrokes that the user typed in (like ls -l)
  • the server needs to tell the client what to display on the screen

Let’s look at a real program that’s running a remote terminal in a browser and see what information gets sent back and forth!

we’ll use goterm to experiment

I found this tiny program on GitHub called goterm that runs a Go server that lets you interact with a terminal in the browser using xterm.js. This program is very insecure but it’s simple and great for learning.

I forked it to make it work with the latest xterm.js, since it was last updated 6 years ago. Then I added some logging statements to print out every time bytes are sent/received over the websocket.

Let’s look at sent and received during a few different terminal interactions!

example: ls

First, let’s run ls. Here’s what I see on the xterm.js terminal:

bork@kiwi:/play$ ls

and here’s what gets sent and received: (in my code, I log sent: [bytes] every time the client sends bytes and recv: [bytes] every time it receives bytes from the server)

sent: "l"
recv: "l"
sent: "s"
recv: "s"
sent: "\r"
recv: "\r\n\x1b[?2004l\r"
recv: "file\r\n"
recv: "\x1b[?2004hbork@kiwi:/play$ "

I noticed 3 things in this output:

  1. Echoing: The client sends l and then immediately receives an l sent back. I guess the idea here is that the client is really dumb – it doesn’t know that when I type an l, I want an l to be echoed back to the screen. It has to be told explicitly by the server process to display it.
  2. The newline: when I press enter, it sends a \r (carriage return) symbol and not a \n (newline)
  3. Escape sequences: \x1b is the ASCII escape character, so \x1b[?2004h is telling the terminal to display something or other. I think this is a colour sequence but I’m not sure. We’ll talk a little more about escape sequences later.

Okay, now let’s do something slightly more complicated.

example: Ctrl+C

Next, let’s see what happens when we interrupt a process with Ctrl+C. Here’s what I see in my terminal:

bork@kiwi:/play$ cat

And here’s what the client sends and receives.

sent: "c"
recv: "c"
sent: "a"
recv: "a"
sent: "t"
recv: "t"
sent: "\r"
recv: "\r\n\x1b[?2004l\r"
sent: "\x03"
recv: "^C"
recv: "\r\n"
recv: "\x1b[?2004h"
recv: "bork@kiwi:/play$ "

When I press Ctrl+C, the client sends \x03. If I look up an ASCII table, \x03 is “End of Text”, which seems reasonable. I thought this was really cool because I’ve always been a bit confused about how Ctrl+C works – it’s good to know that it’s just sending an \x03 character.

I believe the reason cat gets interrupted when we press Ctrl+C is that the Linux kernel on the server side receives this \x03 character, recognizes that it means “interrupt”, and then sends a SIGINT to the process that owns the pseudoterminal’s process group. So it’s handled in the kernel and not in userspace.

example: Ctrl+D

Let’s try the exact same thing, except with Ctrl+D. Here’s what I see in my terminal:

bork@kiwi:/play$ cat

And here’s what gets sent and received:

sent: "c"
recv: "c"
sent: "a"
recv: "a"
sent: "t"
recv: "t"
sent: "\r"
recv: "\r\n\x1b[?2004l\r"
sent: "\x04"
recv: "\x1b[?2004h"
recv: "bork@kiwi:/play$ "

It’s very similar to Ctrl+C, except that \x04 gets sent instead of \x03. Cool! \x04 corresponds to ASCII “End of Transmission”.

what about Ctrl + another letter?

Next I got curious about – if I send Ctrl+e, what byte gets sent?

It turns out that it’s literally just the number of that letter in the alphabet, like this:

  • Ctrl+a => 1
  • Ctrl+b => 2
  • Ctrl+c => 3
  • Ctrl+d => 4
  • Ctrl+z => 26

Also, Ctrl+Shift+b does the exact same thing as Ctrl+b (it writes 0x2).

What about other keys on the keyboard? Here’s what they map to:

  • Tab -> 0x9 (same as Ctrl+I, since I is the 9th letter)
  • Escape -> \x1b
  • Backspace -> \x7f
  • Home -> \x1b[H
  • End: \x1b[F
  • Print Screen: \x1b\x5b\x31\x3b\x35\x41
  • Insert: \x1b\x5b\x32\x7e
  • Delete -> \x1b\x5b\x33\x7e
  • My Meta key does nothing at all

What about Alt? From my experimenting (and some Googling), it seems like Alt is literally the same as “Escape”, except that pressing Alt by itself doesn’t send any characters to the terminal and pressing Escape by itself does. So:

  • alt + d => \x1bd (and the same for every other letter)
  • alt + shift + d => \x1bD (and the same for every other letter)
  • etcetera

Let’s look at one more example!

example: nano

Here’s what gets sent and received when I run the text editor nano:

recv: "\r\x1b[Kbork@kiwi:/play$ "
sent: "n" [[]byte{0x6e}]
recv: "n"
sent: "a" [[]byte{0x61}]
recv: "a"
sent: "n" [[]byte{0x6e}]
recv: "n"
sent: "o" [[]byte{0x6f}]
recv: "o"
sent: "\r" [[]byte{0xd}]
recv: "\r\n\x1b[?2004l\r"
recv: "\x1b[?2004h"
recv: "\x1b[?1049h\x1b[22;0;0t\x1b[1;16r\x1b(B\x1b[m\x1b[4l\x1b[?7h\x1b[39;49m\x1b[?1h\x1b=\x1b[?1h\x1b=\x1b[?25l"
recv: "\x1b[39;49m\x1b(B\x1b[m\x1b[H\x1b[2J"
recv: "\x1b(B\x1b[0;7m  GNU nano 6.2 \x1b[44bNew Buffer \x1b[53b \x1b[1;123H\x1b(B\x1b[m\x1b[14;38H\x1b(B\x1b[0;7m[ Welcome to nano.  For basic help, type Ctrl+G. ]\x1b(B\x1b[m\r\x1b[15d\x1b(B\x1b[0;7m^G\x1b(B\x1b[m Help\x1b[15;16H\x1b(B\x1b[0;7m^O\x1b(B\x1b[m Write Out   \x1b(B\x1b[0;7m^W\x1b(B\x1b[m Where Is    \x1b(B\x1b[0;7m^K\x1b(B\x1b[m Cut\x1b[15;61H"

You can see some text from the UI in there like “GNU nano 6.2”, and these \x1b[27m things are escape sequences. Let’s talk about escape sequences a bit!

ANSI escape sequences

These \x1b[ things above that nano is sending the client are called “escape sequences” or “escape codes”. This is because they all start with \x1b, the “escape” character. . They change the cursor’s position, make text bold or underlined, change colours, etc. Wikipedia has some history if you’re interested.

As a simple example: if you run

echo -e '\e[0;31mhi\e[0m there'

in your terminal, it’ll print out “hi there” where “hi” is in red and “there” is in black. This page has some nice examples of escape codes for colors and formatting.

I think there are a few different standards for escape codes, but my understanding is that the most common set of escape codes that people use on Unix come from the VT100 (that old terminal in the picture at the top of the blog post), and hasn’t really changed much in the last 40 years.

Escape codes are why your terminal can get messed up if you cat a bunch of binary to your screen – usually you’ll end up accidentally printing a bunch of random escape codes which will mess up your terminal – there’s bound to be a 0x1b byte in there somewhere if you cat enough binary to your terminal.

can you type in escape sequences manually?

A few sections back, we talked about how the Home key maps to \x1b[H. Those 3 bytes are Escape + [ + H (because Escape is \x1b).

And if I manually type Escape, then [, then H in the xterm.js terminal, I end up at the beginning of the line, exactly the same as if I’d pressed Home.

I noticed that this didn’t work in fish on my computer though – if I typed Escape and then [, it just printed out [ instead of letting me continue the escape sequence. I asked my friend Jesse who has written a bunch of Rust terminal code about this and Jesse told me that a lot of programs implement a timeout for escape codes – if you don’t press another key after some minimum amount of time, it’ll decide that it’s actually not an escape code anymore.

Apparently this is configurable in fish with fish_escape_delay_ms, so I ran set fish_escape_delay_ms 1000 and then I was able to type in escape codes by hand. Cool!

terminal encoding is kind of weird

I want to pause here for a minute here and say that the way the keys you get pressed get mapped to bytes is pretty weird. Like, if we were designing the way keys are encoded from scratch today, we would probably not set it up so that:

  • Ctrl + a does the exact same thing as Ctrl + Shift + a
  • Alt is the same as Escape
  • control sequences (like colours / moving the cursor around) use the same byte as the Escape key, so that you need to rely on timing to determine if it was a control sequence of the user just meant to press Escape

But all of this was designed in the 70s or 80s or something and then needed to stay the same forever for backwards compatibility, so that’s what we get :)

changing window size

Not everything you can do in a terminal happens via sending bytes back and forth. For example, when the terminal gets resized, we have to tell Linux that the window size has changed in a different way.

Here’s what the Go code in goterm to do that looks like:


This is using the ioctl system call. My understanding of ioctl is that it’s a system call for a bunch of random stuff that isn’t covered by other system calls, generally related to IO I guess.

syscall.TIOCSWINSZ is an integer constant which which tells ioctl which particular thing we want it to to in this case (change the window size of a terminal).

this is also how xterm works

In this post we’ve been talking about remote terminals, where the client and the server are on different computers. But actually if you use a terminal emulator like xterm, all of this works the exact same way, it’s just harder to notice because the bytes aren’t being sent over a network connection.

that’s all for now!

There’s defimitely a lot more to know about terminals (we could talk more about colours, or raw vs cooked mode, or unicode support, or the Linux pseudoterminal interface) but I’ll stop here because it’s 10pm, this is getting kind of long, and I think my brain cannot handle more new information about terminals today.

Thanks to Jesse Luehrs for answering a billion of my questions about terminals, all the mistakes are mine :)

Read the whole story
Share this story
1 public comment
19 days ago
Linux in the '90s could be very clunky with the keyboard because of these inherited conventions, with basic quality-of-life things like the behavior of the home and end keys not working quite right, backspace and delete doing the opposite of what you'd expect, or the escape key being a de facto modifier key. I think that a big part of what gave vi its staying power: you weren't as dependent on any of the keys whose behavior might not be predictable.
Columbia, MD


2 Comments and 5 Shares
It's hard to believe, but lots of kids these days ONLY know how to buy prepackaged molecules.
Read the whole story
Share this story
2 public comments
12 days ago
milky way
21 days ago
Remember, if you can't make your own niacin, store-bought is fine.
Columbia, MD
Next Page of Stories