324 stories
·
5 followers

The Lost CSS Tricks of Cohost.org

1 Share

You would be forgiven if you’ve never heard of Cohost.org. The bespoke, Tumblr-like social media website came and went in a flash. Going public in June 2022 with invite-only registrations, Cohost’s peach and maroon landing page promised that it would be “posting, but better.” Just over two years later, in September 2024, the site announced its shutdown, its creators citing burnout and funding problems. Today, its servers are gone for good. Any link to cohost.org redirects to the Wayback Machine’s slow but comprehensive archive.

Screenshot of the Cohost.org homepage before it was shut down.

The landing page for Cohost.org, featuring our beloved eggbug.

Despite its short lifetime, I am confident in saying that Cohost delivered on its promise. This is in no small part due to its user base, consisting mostly of niche internet creatives and their friends — many of whom already considered “posting” to be an art form. These users were attracted to Cohost’s opinionated, anti-capitalist design that set it apart from the mainstream alternatives. The site was free of advertisements and follower counts, all feeds were purely chronological, and the posting interface even supported a subset of HTML.

It was this latter feature that conjured a community of its own. For security reasons, any post using HTML was passed through a sanitizer to remove any malicious or malformed elements. But unlike most websites, Cohost’s sanitizer was remarkably permissive. The vast majority of tags and attributes were allowed — most notably inline CSS styles on arbitrary elements.

Users didn’t take long to grasp the creative opportunities lurking within Cohost’s unassuming “new post” modal. Within 48 hours of going public, the fledgling community had figured out how to post poetry using the <details> tag, port the Apple homepage from 1999, and reimplement a quick-time WarioWare game. We called posts like these “CSS Crimes,” and the people who made them “CSS Criminals.” Without even intending to, the developers of Cohost had created an environment for a CSS community to thrive.

In this post, I’ll show you a few of the hacks we found while trying to push the limits of Cohost’s HTML support. Use these if you dare, lest you too get labelled a CSS criminal.

Width-hacking

Many of the CSS crimes of Cohost were powered by a technique that user @corncycle dubbed “width-hacking.” Using a combination of the <details> element and the CSS calc() function, we can get some pretty wild functionality: combination lockstile matching games, Zelda-style top-down movement, the list goes on.

If you’ve been around the CSS world for a while, there’s a good chance you’ve been exposed to the old checkbox hack. By combining a checkbox, a label, and creative use of CSS selectors, you can use the toggle functionality of the checkbox to implement all sorts of things. Tabbed areas, push toggles, dropdown menus, etc.

However, because this hack requires CSS selectors, that meant we couldn’t use it on Cohost — remember, we only had inline styles. Instead, we used the relatively new elements <details> and <summary>. These elements provide the same visibility-toggling logic, but now directly in HTML. No weird CSS needed.

These elements work like so: All children of the <details> element are hidden by default, except for the <summary> element. When the summary is clicked, it “opens” the parent details element, causing its children to become visible.

We can add all sorts of styles to these elements to make this example more interesting. Below, I have styled the constituent elements to create the effect of a button that lights up when you click on it.

This is achieved by giving the <summary> element a fixed position and size, a grey background color, and an outset border to make it look like a button. When it’s clicked, a sibling <div> is revealed that covers the <summary> with its own red background and border. Normally, this <div> would block further click events, but I’ve given it the declaration pointer-events: none. Now all clicks pass right on through to the <summary> element underneath, allowing you to turn the button back off.

This is all pretty nifty, but it’s ultimately the same logic as before: something is toggled either on or off. These are only two states. If we want to make games and other gizmos, we might want to represent hundreds to thousands of states.

Width-hacking gives us exactly that. Consider the following example:

In this example, three <details> elements live together in an inline-flex container. Because all the <summary> elements are absolutely-positioned, the width of their respective <details> elements are all zero when they’re closed.

Now, each of these three <details> has a small <div> inside. The first has a child with a width of 1px, the second a child with a width of 2px, and the third a width of 4px. When a <details> element is opened, it reveals its hidden <div>, causing its own width to increase. This increases the width of the inline-flex container. Because the width of the container is the sum of its children, this means its width directly corresponds to the specific <details> elements that are open.

For example, if just the first and third <details> are open, the inline-flex container will have the width 1px + 4px = 5px. Conversely, if the inline-flex container is 2px wide, we can infer that the only open <details> element is the second one. With this trick, we’ve managed to encode all eight states of the three <details> into the width of the container element.

This is pretty cool. Maybe we could use this as an element of some kind of puzzle game? We could show a secret message if the right combination of buttons is checked. But how do we do that? How do we only show the secret message for a specific width of that container div?

In the preceding CodePen, I’ve added a secret message as two nested divs. Currently, this message is always visible — complete with a TODO reminding us to implement the logic to hide it unless the correct combination is set.

You may wonder why we’re using two nested divs for such a simple message. This is because we’ll be hiding the message using a peculiar method: We will make the width of the parent div.secret be zero. Because the overflow: hidden property is used, the child div.message will be clipped, and thus invisible.

Now we’re ready to implement our secret message logic. Thanks to the fact that percentage sizes are relative to the parent, we can use 100% as a stand-in for the parent’s width. We can then construct a complicated CSS calc() formula that is 350px if the container div is our target size, and 0px otherwise. With that, our secret message will be visible only when the center button is active and the others are inactive. Give it a try!

This complicated calc() function that’s controlling the secret div’s width has the following graph:

Line chart showing the width of the secret div when the container div is at different widths.

You can see that it’s a piecewise linear curve, constructed from multiple pieces using min/max. These pieces are placed in just the right spots so that the function maxes out when the container div is 2px— which we’ve established is precisely when only the second button is active.

A surprising variety of games can be implemented using variations on this technique. Here is a tower of Hanoi game I had made that uses both width and height to track the game’s state.

SVG animation

So far, we’ve seen some basic functionality for implementing a game. But what if we want our games to look good? What if we want to add ✨animations?✨ Believe it or not, this is actually possible entirely within inline CSS using the power of SVG.

SVG (Scalable Vector Graphics) is an XML-based image format for storing vector images. It enjoys broad support on the web — you can use it in <img> elements or as the URL of a background-image property, among other things.

Like HTML, an SVG file is a collection of elements. For SVG, these elements are things like <rect><circle>, and <text>, to name a few. These elements can have all sorts of properties defined, such as fill color, stroke width, and font family.

A lesser-known feature of SVG is that it can contain <style> blocks for configuring the properties of these elements. In the example below, an SVG is used as the background for a div. Inside that SVG is a <style> block that sets the fillcolor of its <circle> to red.

An even lesser-known feature of SVG is that its styles can use media queries. The size used by those queries is the size of the div it is a background of.

In the following example, we have a resizable <div> with an SVG background. Inside this SVG is a media query which will change the fill color of its <circle> to blue when the width exceeds 100px. Grab the resize handle in its bottom right corner and drag until the circle turns blue.

Because resize handles don’t quite work on mobile, unfortunately, this and the next couple of CodePens are best experienced on desktop.

This is an extremely powerful technique. By mixing it with width-hacking, we could encode the state of a game or gizmo in the width of an SVG background image. This SVG can then show or hide specific elements depending on the corresponding game state via media queries.

But I promised you animations. So, how is that done? Turns out you can use CSS animations within SVGs. By using the CSS transition property, we can make the color of our circle smoothly transition from red to blue.

Amazing! But before you try this yourself, be sure to look at the source code carefully. You’ll notice that I’ve had to add a 1×1px, off-screen element with the ID #hack. This element has a very simple (and nearly unnoticeable) continuous animation applied. A “dummy animation” like this is necessary to get around some web browsers’ buggy detection of SVG animation. Without that hack, our transition property wouldn’t work consistently.

For the fun of it, let’s combine this tech with our previous secret message example. Instead of toggling the secret message’s width between the values of 0px and 350px, I’ve adjusted the calc formula so that the secret message div is normally 350px, and becomes 351px if the right combination is set.

Instead of HTML/CSS, the secret message is now just an SVG background with a <text> element that says “secret message.” Using media queries, we change the transform scale of this <text> to be zero unless the div is 351px. With the transition property applied, we get a smooth transition between these two states.

Click the center button to activate the secret message:

The first cohost user to discover the use of media queries within SVG backgrounds was @ticky for this post. I don’t recall who figured out they could animate, but I used the tech quite extensively for this quiz that tells you what kind of soil you’d like if you were a worm.

Wrapping up

And that’s will be all for now. There are a number of techniques I haven’t touched on — namely the fun antics one can get up to with the resize property. If you’d like to explore the world of CSS crimes further, I’d recommend this great linkdump by YellowAfterlife, or this video retrospective by rebane2001.


It will always hurt to describe Cohost in the past tense. It truly was a magical place, and I don’t think I’ll be able to properly convey what it was like to be there at its peak. The best I can do is share the hacks we came up with: the lost CSS tricks we invented while “posting, but better.”


The Lost CSS Tricks of Cohost.org originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Read the whole story
CrystalDave
14 hours ago
reply
Seattle, WA
Share this story
Delete

How to get into (or catch up with) the mainline Pokémon games

1 Share

So a friend of mine posed a question on bluesky:

Apropos of Pokémon day: I've only played gen 1 and a little bit of gen 2, but I really wanted to grab one of the "newer" games (anything after gen 2) to catch up.

Which games do you recommend and why?

(translation mine obvs)

This predictably sent me down a nerd spiral. I've been "catching up" myself by playing the 3DS Pokémon games, which were the only mainline ones I had never played. The question of which games in the series are "important" or "worth playing" is really complex, I think, and depends a lot on what you value! So this is a brief rundown of what each main game's "main deal" is.

Gen 1: Pokémon Red, Blue, and Yellow

These are, obviously, the original games. I think nowadays the main interest in them is in noting everything that didn't get carried over in future installments; so much of these games became a template repeated over and over that they can kind of lose their identity entirely.

Yellow is specifically notable in that it is the first "higher version", ie an improved remake. It's also by far the weirdest one, because it drastically changes the story of the original games to line it up better with the anime; it's "yellow" as in Pikachu, your main partner pokémon in this game.

I think Yellow nowadays is mostly a game to be viewed as an odd curiosity. It is actively worse than the originals in a lot of ways; for example, just like in the anime, you are given a full set of Bulbasaur, Squirtle, and Charmander as gift pokémon. This completely wrecks the game's balance and destroys any semblance of team building, because four slots in your party are basically decided for you unless you want to deliberately challenge yourself by not using the best pokémon available.

Gen 2 (Pokémon Gold, Silver, and Crystal)

Repetition legitimizes, and the gen 2 games establish the Pokémon formula by making the decision to repeat so many of the elements of the first games. Until those games came out, there really was no definition of what a "pokémon game" was; a sequel could have omitted catching, or have totally different battle mechanics. Or, conversely, it could have repeated entirely the original set of 151 pokémon, or taken place in the same locations again.

So, the fact that Gold/Silver take place in a new region with new pokémon, but faithfully repeat the exact catching and battle mechanics as well as the same overall campaign structure, is what functionally defines what the formula is.

But these games also introduce tons and tons of new mechanics that would become series staples, so they're as responsible in defining the formula by invention as by repetition.

To name a few, they add held items, berries, different specialized varieties of pokéball, the Dark and Steel types, breeding, and an extensive postgame.

These games really crammed absolutely everything that could be crammed into a Game Boy Color cartridge, including a reduced version of the entire original campaign from gen 1 (which acts as Gold/Silver's postgame).

Gen 3 (Pokémon Ruby, Sapphire, Emerald, Fire Red, and Leaf Green)

Gen 3 is the only generation on the relatively short-lived Game Boy Advance. The main overarching mechanical innovation is the introduction of abilities, unique powers that pokémon can have that change how they function in battle. This drastically changes what a pokémon even is; many pokémon introduced since gen 3 have their identities entirely tied up in their abilities.

It also continues the work of legitimizing, by repetition, the mechanical, narrative, and structural pattern set up in gen 2. Notably, this is the first generation to include remakes; Fire Red and Leaf Green are recreations of the original gen 1 games, but with the added inclusion of gen 3 mechanics.

This, of course, further legitimizes and solidifies the formula, because it 'retcons' the history of the franchise; there have always been abilities and held items. We have always been at war with Unova.

I actually think Fire Red/Leaf Green are really strong reintroductions to the series if you're a lapsed pokémon kid who only played the Gen 1 games.

Gen 4 (Pokémon Diamond, Pearl, Platinum, Heart Gold and Soul Silver)

Diamond/Pearl/Platinum are, to my mind, the last "classic" Pokémon games; that is, the last games before Game Freak started really tweaking the formula mechanically or conceptually. Their mechanical contribution is the special/physical split, a relatively quiet mechanical addition that actually does change the game a lot.

In gen III and before, whether a move uses the Attack or Special Attack stat depended strictly on the move's type. This basically meant that some pokémon were left out of having effective attacks; Gyarados, for example, is a powerful physical attacker, but in gen III and earlier, all water-type moves are special and so can't use Gyarado's actual attack stat.

Gen IV decouples those things. Ice Beam is a special ice-type attack, while Ice Fang is a physical ice-type attack. This creates a huge amount of novel design space, because all of sudden there's an extra layer to pokémon identities.

But, this is a fairly subtle shift that you wouldn't notice too much unless you were specifically paying attention to it. More noticeable is the fact that gen 4 is the first generation on the DS, and so it starts the series' long-running relationship to the DS's second screen; a relationship that would be at times fruitful, at times very awkward.

Gen 5 (Pokémon Black, White, Black 2, and White 2)

Gen 5 is notable as the first major shakeup to the formula; it takes place in Unova, a new region that's part of not-America (specifically, not-NYC and its environs) rather than not-Japan.

Particularly, Black and White feature no pokémon from older generations at all; every pokémon is a new one. This was widely derided at the time but I think many have since warmed up to it conceptually, and I do think it's a strong design decision that makes Black & White better than their sequels (which backpedaled this).

Perhaps because they had these two big, radical decisions at their heart, they are otherwise very conventional Pokémon games that follow the formula very closely.

B&W2 are also notable in that they are direct sequels, not remakes, to the original B&W games.

Gen 6 (Pokémon X, Y, Omega Ruby and Alpha Sapphire)

Most notable for the introduction of the first "generational battle gimmick", in this case Mega Evolution. Mega Evolutions are just forms pokémon take in battle that are more powerful and more ridiculous-looking than their normal ones; this would be dropped from the series as a feature starting with Gen 8.

This is also the first generation on the 3DS, so it's a big leap forward in modernity; these are the first pokémon games that do assume you might be online all the time, for example.

While the g en 6 games are graphically 3d, they are still '2d' in their design and approach; notably in these games you walk around with the d-pad, while in gen 7 (also on the 3DS), movement has been moved to the analog circle pad.

As such, these are the last non-remake games that use a "handheld RPG"-style presentation; characters are not rendered naturalistically in the overworld, but as squashed SD versions of themselves; the world is still made of tiles, etc.

X&Y also notably introduce the Fairy type. They're beloved for their vibes, characters, and story, but they are also the peak of another tendency that has plagued pokémon games: they really are very, very, very easy. Obviously, these are games for children, but X&Y really is a game where you can trivially beat it without catching any new pokémon or thinking at all about your team.

I'd also say that Gen 6 is the low point for the "second screen experiences" (ie, DS bottom-screen minigames) that Pokémon games had. They get substantially better in gen 7, the last generation on a DS family system.

Gen 7 (Pokémon Sun, Moon, Ultra Sun and Ultra Moon)

Generation 7 is the first generation of "truly 3D" pokémon games, as in, games that are designed with fully 3d environments not made out of tiles. Ironically this gen also drops support for the 3DS' actual 3D screen effect.

These games drop a lot of formula assumptions, and are probably the most "structurally weird" pokémon games up to that point; they don't have traditional gyms or gym badges, for example.

Ultra Sun/Moon is really, really good; it's beloved for a reason, and probably one of the pokémon games with the highest degree of just overall quality. Everything in that game really does sing, even the second-screen minigames.

Also of in Gen 7, technically: Let's Go Eevee Let's Go Pikachu, which are functionally remakes of the gen 1 games with a pared-down take on gen 7 mechanics but on the Switch. They are weird little games that probably merit their own writeup, but I'd consider them pretty inessential.

Gen 8 (Pokémon Sword, Shield, Legends: Arceus, Brilliant Diamond, Shining Pearl)

Just like how gen 2 set the template for the original pokémon formula by deciding which elements of gen 1 to repeat, gen 8 does the same for the "3D pokémon" template set up by gen 7. HM moves are still gone, there's still a greater emphasis on convenience and access to mechanics.

The most notable change here is a big move towards mechanical naturalism: pokémon now are no longer random encounters that just happen when you run into tall grass; rather, wild pokémon roam the overworld, and can be seen and interacted with as they are; you can avoid fighting them by just avoiding the pokémon themselves.1

Gym leaders are back, but the overall structure of the game is once again adapted to this game's story. Sword & Shield leans into the "sports anime" aspect of pokémon hard, with pokémon gyms reframed as the equivalent of soccer stadiums in the England-inspired Galar region. While traditional gyms, gym leaders, and badges are back, the final pokémon league challenge is a knockout tournament rather than the traditional "elite 4" gauntlet.

It also further refines the "generational gimmick" idea. While gen 7 added its own gimmick (z-moves) on top of mega evolution, in gen 8 those are both gone and replaced with Dynamax, a phenomenon in which pokémon become gigantic, appropriate to the stadium setting of gym battles.

There's a lot to love about Sword/Shield and I still think that they are overall the best Pokemon games on the Switch (though there's a lot to recommend about Scarlet/Violet also). Particularly of note is that the music in this game is some of the best in the series, including one guest track from Toby Fox (who also went on to compose several tracks for Scarlet/Violet).

Gen 8 also includes Pokémon Legends: Arceus. 'Legends' is effectively a parallel side-series which has an even more mechanically naturalistic take on pokémon; you don't have to battle pokémon to catch them and can simply throw a pokéball from a neutral stance; you can sneak up on pokémon to catch them, etc. The game also has its own unique battle system that is very different (and, I'd say, not as good) as the normal pokémon battle system.

Legends: Arceus is functionally a prequel to the series, taking place in a sort of Meiji-era version of Sinnoh (the region depicted in Diamond/Pearl). All of the familiar pokémon technology - the pokédex, pokéballs and so on - is in its infancy. Pokémon are viewed as dangerous wild animals and not as friendly partners. It's a really fascinating entry in the series.

FInally, gen 8 also includes Pokémon Brilliant Diamond / Shining Pearl, which are remakes of the gen 4 games. These are notable mostly in that they are very faithful remakes, returning to the 2d pokémon conceit/format (but not to 2d sprite graphics). If anything, they disappoint because they faithfully recreate Diamond/Pearl to a fault, and not the much more beloved Platinum.

Gen 9 (Scarlet, Violet)

Gen 8 included the 'wild area', a large open area in the center of the Galar region that included several biomes/pokémon and connected to the rest of the world through gates that would gradually open over the course of the game. Gen 9 blows this concept up to a fully open-world setting; from the start of the game you can roam pretty much the entire Paldea region (roughly based on Iberia).

Gen 8 has, I'd say, probably the best narrative design of any pokémon game, with really strong integration between story, mechanics, and world design. Their main fault is that they do run horribly on the Switch's hardware. Even after patches the games struggle severely with hitching, pop-in, and vast stretches of plain repeated textures. But if you can look past the technical issues, they are fantastic games.

What you should actually play

Okay, here's base conclusions. I think that if you are completely new to the series and you want sort of a "highlighted tour" of the games that are most pivotal to the overall historical development of the series' design, I'd suggest playing, specifically:

  • Pokémon Red/Blue
  • Pokémon Emerald
  • Pokémon Heart Gold/Soul Silver
  • Pokémon Black/White
  • Pokémon Ultra Moon/Ultra Sun
  • Pokémon Sword/Shield
  • Pokémon Legends: Arceus
  • Pokémon Scarlet/Violet

If you are coming back to the series, skip earlier entries as needed. It is, of course, kind of insane to recommend several 20+ hour JRPGs as a "reading list", but those are games that fit really well to being played slowly over the course of a few weeks at a time.

If you just want to play one game to get into the mainline series, the ones I'd most highly recommend are Emerald, Black, Ultra Sun, and Scarlet; you can just pick one for a system that you want to play on, or decide how "retro" of an experience you want. But every single mainline game is designed as if it could be someone's first pokémon game, because they are games for children.

  1. This is known as a "symbol encounter" in series parlance; technically, this was introduced with *Let's Go Pikachu/Eevee", but Sword/Shield going to this model solidifies it as the "real" mechanic now, as opposed to one of Let's Go's simplifications.

Read the whole story
CrystalDave
56 days ago
reply
Seattle, WA
Share this story
Delete

Monday Morning Wake-Up Call

2 Shares

…I have spent 63 years trying to cultivate hope, but my thoughts wander in this direction too often these days. Why protect the wildflowers that grow in our yard when all the emerald yards nearby are drenched in herbicides and when their purely ornamental shrubs are drenched in insecticides? Why trouble myself to keep the stock-tank ponds filled with water when every spring there are fewer and fewer tree frogs who might need a nursery for their eggs? Why turn off the lights to protect nocturnal creatures when all around me the houses are lit up like airport runways? Why bother to plant saplings when a builder will only cut them down later, after my husband and I are gone, to make room for yet another foolishly large house that glows in the dark? …

More and more I find it hard not to ask the question I have spent my adult life avoiding: What is the point of even trying? …

At my lowest, I have never entirely given up my faith that good people working together can change the world for the better. When I have been downhearted in the past, I have always explained to myself that I am not alone in my efforts to cultivate change — by writing, by planting, by loving the living world in every way I can find to love it. Individual efforts gather momentum through the individual efforts of others…

In saving the leaves for the moths and the fireflies and the dark-eyed juncos, I am still trying. And in the trying perhaps I can save my own soul.

Margaret Renkl, from “How to Keep Your Own Soul Safe in the Dark” (NY Times, December 9, 2024)

Read the whole story
CrystalDave
126 days ago
reply
Seattle, WA
Share this story
Delete

The Tiny Toolkit Manifesto

1 Comment and 2 Shares

Most of us have some form of an on-the-go toolkit, but how much thought have we put into its contents? \there’s a community of people who put a lot of thought into this, and EMF Camp have put up one of their talks from earlier in the summer in which [Drew Batchelor] sets out their manifesto and introduces tinytoolk.it, a fascinating resource.

The talk is well worth a watch, as rather than setting the tools you should be carrying, it instead examines the motivations for your kit in the firs place, and how to cull those which don’t make the grade. If an items seems to see little use, put a piece of tape with the date on it every time it comes out, to put a number on it. As an example he ended up culling a multi-tool from his kit, not because it’s not an extremely useful tool, but because he found everything it did was better done by other items in the kit.

It’s probable we’ll all look at our carry-around kit with new eyes after watching this, it’s certain that ours could use a few tweaks. What’s in your kit, and how could you improve it? Let us know in the comments.

Read the whole story
CrystalDave
213 days ago
reply
Seattle, WA
Share this story
Delete
1 public comment
JayM
213 days ago
reply
Neat. I had been using a pen roll, but picked up the large multi-layer one of the robot repair kits was based on… was cheap at $21 from Cult Pens. Will give that a shot.
Atlanta, GA

[MeFi Site Update] June 19th

1 Comment and 2 Shares
Hi there, MetaFilter!

This month's Site Update includes a particularly important announcement. You can find the last site update here.

I'm looking forward to your feedback and questions!

SPECIAL ANNOUNCEMENT Since Kirkaracha joined our team 4 months ago, I have been shifting our priorities more towards the technical side. So far we have reviewed the site infrastructure and tackled small side projects which have allowed him to get more familiar with the current state of the site's back end. After a few months of going over feature requests from staff, members, and the BIPOC Board, we have made the decision to focus resources on rebuilding the entire site from scratch to make it easier to maintain and to iterate. Goodbye ColdFusion! Kirk started working on this several weeks ago to determine how complex it would be and has made a lot of progress already. What to expect? - For now, we are trying to replicate the UI, flow and features of the site as they are, with some minor accessibility and design improvements. Once the new site is live, we can start thinking about new features/changes. - Kirk will put the new beta site on a test server and the next step will be to start gradually giving members access to test it as soon as it is ready. - I'll make a separate post about this once we're ready for testing and share screenshots of the progress with the community at large there. Profit & Loss – You can find this month's P&L report here. The previous P&L reports are here. Admin/Moderation – We're going ahead with the Trans Members Initiative as outlined in the past site update. – A separate Meta to crowd-source questions from Trans members for the survey will be posted next Monday. – We are getting close to both MeFi's 25th Anniversary and Fundraising month, depending on how timing goes with the new site, we would like to plug all 3 of these together. I'll keep you posted about this. Tech – Repaired Archives and made sure that they update – Fixed several recurring tasks that were not running. – Updated infodump and made sure that it is reloading correctly. – Fixes to make sure contact form e-mails are not dropped by gmail. – Frimble is updating and testing the site backup process BIPOC Advisory Board – The last meeting was postponed due to last minute scheduling conflicts and we'll resume as soon as possible. I'll confirm once the pending Meeting Minutes have been approved and posted. If you have any questions or feedback not related to this particular update, please Contact Us instead. If you want to discuss a particular subject not covered here with the community, you're welcome to open a separate MetaTalk thread for it.
Read the whole story
jepler
309 days ago
reply
goodbye coldfusion !?
Earth, Sol system, Western spiral arm
CrystalDave
309 days ago
reply
Seattle, WA
Share this story
Delete

Playboy image from 1972 gets ban from IEEE computer journals

1 Share
Playboy image from 1972 gets ban from IEEE computer journals

Enlarge (credit: Aurich Lawson | Getty Image)

On Wednesday, the IEEE Computer Society announced to members that, after April 1, it would no longer accept papers that include a frequently used image of a 1972 Playboy model named Lena Forsén. The so-called "Lenna image," (Forsén added an extra "n" to her name in her Playboy appearance to aid pronunciation) has been used in image processing research since 1973 and has attracted criticism for making some women feel unwelcome in the field.

In an email from the IEEE Computer Society sent to members on Wednesday, Technical & Conference Activities Vice President Terry Benzel wrote, "IEEE's diversity statement and supporting policies such as the IEEE Code of Ethics speak to IEEE's commitment to promoting an including and equitable culture that welcomes all. In alignment with this culture and with respect to the wishes of the subject of the image, Lena Forsén, IEEE will no longer accept submitted papers which include the 'Lena image.'"

An uncropped version of the 512×512-pixel test image originally appeared as the centerfold picture for the December 1972 issue of Playboy Magazine. Usage of the Lenna image in image processing began in June or July 1973 when an assistant professor named Alexander Sawchuck and a graduate student at the University of Southern California Signal and Image Processing Institute scanned a square portion of the centerfold image with a primitive drum scanner, omitting nudity present in the original image. They scanned it for a colleague's conference paper, and after that, others began to use the image as well.

The original 512×512 "Lenna" test image, which is a cropped portion of a 1972 Playboy centerfold.

The original 512×512 "Lenna" test image, which is a cropped portion of a 1972 Playboy centerfold. (credit: Playboy / Wikipedia)

The image's use spread in other papers throughout the 1970s, 80s, and 90s, and it caught Playboy's attention, but the company decided to overlook the copyright violations. In 1997, Playboy helped track down Forsén, who appeared at the 50th Annual Conference of the Society for Imaging Science in Technology, signing autographs for fans. "They must be so tired of me ... looking at the same picture for all these years!" she said at the time. VP of new media at Playboy Eileen Kent told Wired, "We decided we should exploit this, because it is a phenomenon."

The image, which features Forsén's face and bare shoulder as she wears a hat with a purple feather, was reportedly ideal for testing image processing systems in the early years of digital image technology due to its high contrast and varied detail. It is also a sexually suggestive photo of an attractive woman, and its use by men in the computer field has garnered criticism over the decades, especially from female scientists and engineers who felt that the image (especially related to its association with the Playboy brand) objectified women and created an academic climate where they did not feel entirely welcome.

Due to some of this criticism, which dates back to at least 1996, the journal Nature banned the use of the Lena image in paper submissions in 2018.

The comp.compression Usenet newsgroup FAQ document claims that in 1988, a Swedish publication asked Forsén if she minded her image being used in computer science, and she was reportedly pleasantly amused. In a 2019 Wired article, Linda Kinstler wrote that Forsén did not harbor resentment about the image, but she regretted that she wasn't paid better for it originally. "I’m really proud of that picture," she told Kinstler at the time.

Since then, Forsén has apparently changed her mind. In 2019, Creatable and Code Like a Girl created an advertising documentary titled Losing Lena, which was part of a promotional campaign aimed at removing the Lena image from use in tech and the image processing field. In a press release for the campaign and film, Forsén is quoted as saying, "I retired from modelling a long time ago. It’s time I retired from tech, too. We can make a simple change today that creates a lasting change for tomorrow. Let’s commit to losing me."

It seems like that commitment is now being granted. The ban in IEEE publications, which have been historically important journals for computer imaging development, will likely further set a precedent toward removing the Lenna image from common use. In his email, the IEEE's Benzel recommended wider sensitivity about the issue, writing, "In order to raise awareness of and increase author compliance with this new policy, program committee members and reviewers should look for inclusion of this image, and if present, should ask authors to replace the Lena image with an alternative."

Read Comments

Read the whole story
CrystalDave
391 days ago
reply
Seattle, WA
Share this story
Delete
Next Page of Stories