<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>House of Nettles: #ask</title>
  <id>https://nex-3.com/tag/ask/</id>
  <link href="https://nex-3.com/tag/ask/feed.xml" rel="self"/>
  <link href="https://nex-3.com/tag/ask/" />
  <updated>2025-04-05T03:00:17Z</updated>
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/history-of-sass/" rel="alternate"/>
      <id>https://nex-3.com/blog/history-of-sass/</id>
      <published>2025-04-05T03:00:17Z</published>
      <updated>2025-04-09T00:33:58Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="code" label="code"/><category term="sass" label="sass"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Lindsay Michael&lt;/span&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;h1 class=&#34;p-name&#34;&gt;History of SASS&lt;/h1&gt; &lt;p&gt;I am a student writing a short paper about SASS and have run into a bit of a black hole when it comes to the development of the language. Beyond a few archived blog posts, I can&#39;t find a whole lot about the conceptualization or development of the language. Would you have any pointers toward that information? I&#39;m curious about how the idea for the preprocessor came up and how the development team came together.&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;I guess there isn&#39;t much about this up anywhere particularly easy to find, is
there? Sure, let&#39;s get into the history.&lt;/p&gt;
&lt;h2 id=&#34;it-all-starts-with-haml&#34;&gt;It All Starts with Haml&lt;/h2&gt;
&lt;p&gt;So, before Sass (&lt;a href=&#34;https://sassnotsass.com/&#34;&gt;not SASS&lt;/a&gt;), there was
&lt;a href=&#34;https://haml.info/&#34;&gt;Haml&lt;/a&gt;. Haml was created way back in the summer of 2006 by
&lt;a href=&#34;https://en.wikipedia.org/wiki/Hampton_Lintorn-Catlin&#34;&gt;Hampton Lintorn-Catlin&lt;/a&gt;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn1&#34; id=&#34;fnref1&#34;&gt;[1]&lt;/a&gt;&lt;/sup&gt;, when Ruby on Rails had lit the web
development world on fire and everyone was rushing to invent cool new ways of
writing server-side-rendered web applications with light &lt;a href=&#34;https://en.wikipedia.org/wiki/Ajax_(programming)&#34;&gt;AJAX&lt;/a&gt; support. Rails
used YAML for its configuration and Hampton liked the terseness and indentation,
so (as he once described to me) he took a template written in &lt;a href=&#34;https://en.wikipedia.org/wiki/ERuby&#34;&gt;ERB&lt;/a&gt; (the
dominant templating language at the time) and just deleted redundant characters
until he got something that felt more &lt;a href=&#34;https://en.wikipedia.org/wiki/Don%27t_repeat_yourself&#34;&gt;DRY&lt;/a&gt;. After some tweaks, the result
looked essentially like modern Haml:&lt;/p&gt;
&lt;pre class=&#34;language-haml&#34;&gt;&lt;code class=&#34;language-haml&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;%section.container&lt;/span&gt;
  &lt;span class=&#34;token tag&#34;&gt;%h1&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token code&#34;&gt; post&lt;span class=&#34;token punctuation&#34;&gt;.&lt;/span&gt;title&lt;/span&gt;
  &lt;span class=&#34;token tag&#34;&gt;%h2&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token code&#34;&gt; post&lt;span class=&#34;token punctuation&#34;&gt;.&lt;/span&gt;subtitle&lt;/span&gt;
  &lt;span class=&#34;token tag&#34;&gt;.content&lt;/span&gt;
    &lt;span class=&#34;token punctuation&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token code&#34;&gt; post&lt;span class=&#34;token punctuation&#34;&gt;.&lt;/span&gt;content&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That fall, just as Haml was released to the public, I was in college taking a
Software Design and Development course&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn2&#34; id=&#34;fnref2&#34;&gt;[2]&lt;/a&gt;&lt;/sup&gt; in which the instructor encouraged us
to get involved with open source projects. Rails being the big thing at the
time, I hung out on the mailing list&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn3&#34; id=&#34;fnref3&#34;&gt;[3]&lt;/a&gt;&lt;/sup&gt; looking for good opportunities to dip
my toes in. When Haml got announced, it was a perfect opportunity: it was still
small and easy to understand, and it had a number of clear tasks that needed
doing. I started sending patches, and pretty quickly (at least in part by virtue
of having a lot more free time between classes than Hampton did with a full-time
job), I became the &lt;em&gt;de facto&lt;/em&gt; lead developer.&lt;/p&gt;
&lt;h2 id=&#34;sass-emerges&#34;&gt;Sass Emerges&lt;/h2&gt;
&lt;p&gt;Haml quickly becomes quite popular in the Rails world. Writing HTML closing tags
by hand kinda sucks, it turns out, and we&#39;re not the last to try to solve this
in various ways (although we may have been the first). Hampton is a big ideas
guy, and he&#39;s always excited to find another big thing to dig into. By this
point we&#39;re working together pretty closely, so at some point in late 2006 he
messages me about his idea for &#34;Haml for CSS&#34;, which he wants to call &#34;Sass&#34;.&lt;/p&gt;
&lt;p&gt;That was the original pitch Hampton sold to me: just like Haml was basically
just a different syntax for HTML (or more accurately, for ERB, since it did
include the ability to inject Ruby code), Sass was going to be just a different
syntax for CSS. The first draft didn&#39;t even have variables, although by the time
it was actually released&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn4&#34; id=&#34;fnref4&#34;&gt;[4]&lt;/a&gt;&lt;/sup&gt; we had added them (at the time called
&#34;constants&#34;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn5&#34; id=&#34;fnref5&#34;&gt;[5]&lt;/a&gt;&lt;/sup&gt;). Hampton drafted some examples of how the language
would look and wrote &lt;a href=&#34;https://github.com/sass/ruby-sass/commit/fa5048ba405619273e474a50400c7243fbff54fe&#34;&gt;a quick prototype&lt;/a&gt;, which I ended up &lt;a href=&#34;https://github.com/sass/ruby-sass/commit/015a1b191d06cf418b519e33d98f86970e0512ac&#34;&gt;totally refactoring&lt;/a&gt;
shortly thereafter. As for Haml, I did most of the coding work for Sass.&lt;/p&gt;
&lt;p&gt;It also looked dramatically different than the indented syntax does today:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;!color = #fff

body
  :margin 0
  :font 0.85em &#34;Lucida Grande&#34;, &#34;Trebuchet MS&#34;, Verdana, sans-serif
  :color = !color
  :background url(/images/global_bg.gif)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Initially, we were a lot less concerned with making the syntax look at all like
CSS than we were with making it feel like Haml. Haml distinguished each syntax a
line could have using its initial character, so we used &lt;code&gt;:&lt;/code&gt; as the initial
character for properties in Sass. Haml used &lt;code&gt;=&lt;/code&gt; to indicate that the contents of
a tag should come from a Ruby expression, so Sass used &lt;code&gt;=&lt;/code&gt; to indicate that it
should come from a Sass expression and didn&#39;t parse it at all otherwise.&lt;/p&gt;
&lt;p&gt;Looking back, a lot of these design choices seem quaint (perhaps even
wrongheaded) in retrospect. But there was already an idea here that would become
critical to the entire concept of &#34;preprocessors&#34; and what Sass would eventually
become: &lt;em&gt;there was no Ruby code in the stylesheets at all&lt;/em&gt;. We knew from the
beginning that we wanted to support user-defined constants&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn6&#34; id=&#34;fnref6&#34;&gt;[6]&lt;/a&gt;&lt;/sup&gt;, but rather than
just having people assign Ruby variables and inject Ruby code, we knew from the
beginning we wanted a syntax that was specific to Sass.&lt;/p&gt;
&lt;h2 id=&#34;the-rails-mindset&#34;&gt;The Rails Mindset&lt;/h2&gt;
&lt;p&gt;To understand where we were coming from, we have to go back again to Haml and
the context it emerged in. The early Rails world was hard to describe in a
modern context, because the web development ecosystem it existed in was orders
of magnitude smaller. Rails in 2006 had vastly fewer users in an absolute sense
than React does today, or even something smaller like Vue.js. But it had &lt;em&gt;all&lt;/em&gt;
the mindshare. Everyone who was at all interested in the cutting edge of web
technology was either using Rails or building another framework that was a
reaction to Rails.&lt;/p&gt;
&lt;p&gt;And this wasn&#39;t just because Rails had good PR (although without a doubt that
contributed). Rails was the first really popular open-source existence proof
that web development could be simultaneously &lt;em&gt;architecturally-sound software
development&lt;/em&gt;, unlike tools like PHP or Perl which at the time were tightly
coupled to the &lt;a href=&#34;https://en.wikipedia.org/wiki/Common_Gateway_Interface&#34;&gt;CGI&lt;/a&gt; mode of page-by-page rendering; and also &lt;em&gt;lightweight and
developer-oriented&lt;/em&gt;, unlike tools like &lt;a href=&#34;http://ASP.NET&#34;&gt;ASP.NET&lt;/a&gt; or whatever Java people were
doing at the time. It made people sit up and take web development seriously, and
led to a huge boom in thought and discussions and articles&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn8&#34; id=&#34;fnref8&#34;&gt;[8]&lt;/a&gt;&lt;/sup&gt; about how best to
structure these applications.&lt;/p&gt;
&lt;p&gt;Haml was heavily influenced by these discussions. In particular, it took the
idea of &#34;thin views&#34; very seriously. Rails followed a Model/View/Controller
architecture, where the template was framed as a &#34;view&#34; of the underlying data.
It was only supposed to be responsible for displaying the data, not manipulating
it or even really getting it into a form that was easy to display. To that end,
Hampton intentionally made it annoying to write complex logic in Haml. For the
first few releases, Haml didn&#39;t even have a way of writing Ruby statements that
didn&#39;t emit values to HTML specifically to encourage people to put all that
logic in the model or controller instead.&lt;/p&gt;
&lt;p&gt;So when we were designing Sass, making sure it wasn&#39;t too powerful in the wrong
ways was at the top of our minds. We didn&#39;t want people just dumping a bunch of
code in their stylesheets, because if views should only express the translation
from a code object into a document structure, then stylesheets should only
express styles. So when we decided to add constants, we chose to invent our own
little expression language that was particularly suited to the needs of CSS
rather than just embedding Ruby expressions and calling it a day. This had its
own practical benefits as well: it allowed us to add first-class support for CSS
types that didn&#39;t have literal Ruby equivalents, like dimensions (&lt;code&gt;10px&lt;/code&gt;,
&lt;code&gt;50%&lt;/code&gt;), colors, and unquoted strings.&lt;/p&gt;
&lt;h2 id=&#34;the-preprocessor-is-born&#34;&gt;The Preprocessor is Born&lt;/h2&gt;
&lt;p&gt;I think this was the key insight that caused Sass to create the class of &lt;em&gt;CSS
preprocessor&lt;/em&gt; rather than just being a template system. CSS template systems had
existed before this, at least to the extent that people were running CSS through
ERB (and surely also PHP and so on). But no one writing those was thinking much
about how their language design would feed back into the quality and
maintainability of stylesheets written in that language. Sass was, even if at
the time it was awkward and not fully fleshed-out.&lt;/p&gt;
&lt;p&gt;And even as limited as it was, people got really excited about it! It&#39;s hard to
overstate how valuable constants in CSS were alone, and the core Haml fanbase
liked having an indented way to write it. We spent the next year largely just
making iterative improvements—adding features like comments, &lt;code&gt;@import&lt;/code&gt;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn9&#34; id=&#34;fnref9&#34;&gt;[9]&lt;/a&gt;&lt;/sup&gt;,
support for @-rules, and just generally tightening up various corners of the
language.&lt;/p&gt;
&lt;p&gt;I was still the primary developer of the language, and most of the design
direction was coming from Hampton and me talking to one another&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn10&#34; id=&#34;fnref10&#34;&gt;[10]&lt;/a&gt;&lt;/sup&gt;. I was still
in college, I had only learned to program at all a few years prior, and I was
having the time of my life writing code that actual people out in the world were
not just using but enjoying. I was majoring in computer science, but my actual
classwork didn&#39;t involve much code, and I&#39;ve always just really &lt;em&gt;liked&lt;/em&gt; the
process of writing it and the feeling of contributing something to the world.&lt;/p&gt;
&lt;p&gt;Through all this time, we were almost exclusively interacting over the internet.
Hampton was at the time living in Toronto; I was (and still am) in Seattle. His
company, the now-defunct Unspace Interactive, did fly me out to a few
conferences over the years where we were able to spend time together in person,
but those were mostly &lt;em&gt;not&lt;/em&gt; heavily technical discussions. We collaborated over
instant messenger (probably Google Chat at the time?), email, and issue
trackers.&lt;/p&gt;
&lt;p&gt;An important aside: in retrospect, this whole situation was more than slightly
exploitative. I was writing (and continue to write!) code that was being used by
corporations to make a profit without seeing any remuneration, either
commensurate to that profit or to my labor. This certainly wasn&#39;t Hampton&#39;s
fault, or his company&#39;s—it&#39;s the unfortunate nature of open source in a
capitalist world. I&#39;m still proud of the work I did, and I don&#39;t regret doing
it, but I think it&#39;s worth mentioning that I can&#39;t wholeheartedly endorse that
people take the same path of doing a lot of labor for no compensation. I was
very lucky to have the stability to spend so much time and energy on this &lt;em&gt;and&lt;/em&gt;
to work on a project and at a time when that would lead to a lot of future
career opportunities..&lt;/p&gt;
&lt;h2 id=&#34;the-next-level&#34;&gt;The next level&lt;/h2&gt;
&lt;p&gt;Anyway! I wasn&#39;t the only person working on Sass at the time. In addition to
Hampton&#39;s occasional code contributions, we were getting a &lt;em&gt;lot&lt;/em&gt; of patches from
users. Before GitHub existed&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn11&#34; id=&#34;fnref11&#34;&gt;[11]&lt;/a&gt;&lt;/sup&gt;, Hampton ran an issue-tracking tool called
&lt;a href=&#34;https://trac.edgewall.org/&#34;&gt;Trac&lt;/a&gt; that allowed people to upload patch files that we&#39;d then land in the
&lt;a href=&#34;https://subversion.apache.org/&#34;&gt;Subversion&lt;/a&gt; project. It was not great! GitHub has done some nasty stuff in the
years since&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn12&#34; id=&#34;fnref12&#34;&gt;[12]&lt;/a&gt;&lt;/sup&gt;, and the long-term effects of centralizing open source
developments in a single corporation&#39;s hands are not great, but at the time it
felt like a breath of fresh air coming from within our community.&lt;/p&gt;
&lt;p&gt;One such contribution was from one Garry Hill&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn13&#34; id=&#34;fnref13&#34;&gt;[13]&lt;/a&gt;&lt;/sup&gt;, and would go on to shape the
future of the language: &lt;a href=&#34;https://github.com/sass/ruby-sass/commit/917bd658c5e9f6c8e2d3e8e7e7cdab45919b3856&#34;&gt;the addition of mixins&lt;/a&gt; in April 2008. Although mixins
were very limited initially—they didn&#39;t even have parameters in their first
release!—they represented a broader level of abstraction than had been possible
before in stylesheets at all. While Haml was still just another syntax for HTML,
mixins cemented the idea that Sass was in a totally different tier of
expressiveness relative to vanilla CSS, and they opened the door for a cascade
of iterative improvements that would shape Sass into what it is now.&lt;/p&gt;
&lt;p&gt;In June 2008, we added the first built-in Sass function, &lt;code&gt;hsl()&lt;/code&gt;. In August, we
added mixin parameters, booleans, &lt;code&gt;@if&lt;/code&gt;, &lt;code&gt;@for&lt;/code&gt;, &lt;code&gt;@while&lt;/code&gt;. In October, we
started allowing &#34;constants&#34; to be reassigned (and, correspondingly, started
calling them &#34;variables&#34; instead). All of these made Sass less of just an
alternative stylesheet syntax and more of a language in its own right. Although
it would take another two years to add &lt;code&gt;@function&lt;/code&gt;, we were already tossing
around the idea.&lt;/p&gt;
&lt;h2 id=&#34;the-scss-era&#34;&gt;The SCSS era&lt;/h2&gt;
&lt;p&gt;Concurrently, there were a couple important things brewing. I had begun working
closely with &lt;a href=&#34;https://github.com/chriseppstein&#34;&gt;Chris Eppstein&lt;/a&gt;, who had created &lt;a href=&#34;https://github.com/Compass/compass&#34;&gt;Compass&lt;/a&gt;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn14&#34; id=&#34;fnref14&#34;&gt;[14]&lt;/a&gt;&lt;/sup&gt;. He started
submitting a number of pull requests to Sass, and we pretty quickly decided to
bring him on as a core team member. By this point Hampton was mostly focused on
other projects, so Chris and I made most of the major design decisions together
for the next few years.&lt;/p&gt;
&lt;p&gt;Several of those decisions were strongly influenced by our first real
competitor: &lt;a href=&#34;https://lesscss.org/&#34;&gt;Less&lt;/a&gt;, first released in May 2009. At the time also written in
Ruby, Less was clearly heavily inspired by Sass, but advertised one&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn16&#34; id=&#34;fnref16&#34;&gt;[16]&lt;/a&gt;&lt;/sup&gt; key
distinguishing feature: it claimed to be&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn17&#34; id=&#34;fnref17&#34;&gt;[17]&lt;/a&gt;&lt;/sup&gt; a superset of CSS. It quickly
boomed in popularity, and was even threatening to displace Sass as the most
popular preprocessor. We took this as a clear sign that the desire for the power
of a preprocessor had far outstripped the desire for a different syntax for CSS,
and we set about designing and building the SCSS syntax, which would go on to
release with Ruby Sass 3.0.0 a year later in May 2010.&lt;/p&gt;
&lt;p&gt;The addition of SCSS led to a number of additional changes to the way we thought
about the design of the syntax. We were committed to being as close to a
superset of CSS as possible&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn18&#34; id=&#34;fnref18&#34;&gt;[18]&lt;/a&gt;&lt;/sup&gt;, and in pursuit of that we wanted to make the
new syntax feel more &#34;CSS-y&#34;. We&#39;d already changed the indented declaration
syntax to allow &lt;code&gt;color: blue&lt;/code&gt; rather than &lt;code&gt;:color blue&lt;/code&gt;, but with SCSS we
decided to remove the distinction between &#34;script&#34; values (written &lt;code&gt;property = expression&lt;/code&gt;) and &#34;literal&#34; values (written &lt;code&gt;property: expression&lt;/code&gt;). This in turn
committed us to being able to parse all expression-level CSS as SassScript,
which led to a cascade of other small changes.&lt;/p&gt;
&lt;p&gt;We also became much more concerned with avoiding forwards-incompatibilies with
new CSS syntax that could theoretically be added in the future. We changed the
variable character from &lt;code&gt;!&lt;/code&gt; to &lt;code&gt;$&lt;/code&gt; to avoid conflicting with the existing CSS
&lt;code&gt;!important&lt;/code&gt; syntax, replaced the &lt;code&gt;||=&lt;/code&gt; assignment operator with &lt;code&gt;!default&lt;/code&gt;,
introduced &lt;code&gt;@mixin&lt;/code&gt; and &lt;code&gt;@include&lt;/code&gt;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn19&#34; id=&#34;fnref19&#34;&gt;[19]&lt;/a&gt;&lt;/sup&gt;, and expanded the scope of what could be
interpolated. Sass 3.0.0 was really the first modern-looking release of the
language. It laid a lot of groundwork for the future, and also made a lot of
decisions that I would eventually spend a bunch of time undoing.&lt;/p&gt;
&lt;h2 id=&#34;road-to-dart-sass&#34;&gt;Road to Dart Sass&lt;/h2&gt;
&lt;p&gt;Over the next few years, development slowed on Ruby Sass. I had graduated
college and started programming full-time, which substantially diminished the
amount of time and energy I had for programming projects that weren&#39;t my day
job. Hampton was busy with Wikimedia, and most of Chris&#39;s spare programming time
was wrapped up in Compass. We certainly made progress, gradually introducing
many of the major features that still exist today like lists, maps, user-defined
functions, more advanced mixins, and on and on.&lt;/p&gt;
&lt;p&gt;In 2012, driven by the waning popularity of Ruby in the face of the rise of
Node.js, Hampton—then working at Moovweb—launched a project to create a more
widely-usable Sass implementation written in C++. This would become &lt;a href=&#34;https://sass-lang.com/libsass/&#34;&gt;LibSass&lt;/a&gt;,
which was initially written largely by Hampton&#39;s Moovweb colleague &lt;a href=&#34;https://github.com/akhleung&#34;&gt;Aaron Leung&lt;/a&gt;
before eventually being maintained by &lt;a href=&#34;https://github.com/xzyfer&#34;&gt;Michael Mifsud&lt;/a&gt; and &lt;a href=&#34;https://github.com/mgreter&#34;&gt;Marcel Greter&lt;/a&gt;. I
can&#39;t give a tremendous amount of detail on the internal development process
here, because I never worked on it myself, but I can talk about how it was used.&lt;/p&gt;
&lt;p&gt;LibSass was quickly adopted by the Node.js community through the &lt;a href=&#34;http://npmjs.com/package/node-sass&#34;&gt;&lt;code&gt;node-sass&lt;/code&gt;&lt;/a&gt;
wrapper package. This turned out to be a bit of a double-edged sword for Sass as
a language: on the one hand, &lt;code&gt;node-sass&lt;/code&gt; was vastly faster and easier to get up
and running (even given the headaches of building a C++ Node.js plugin&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn20&#34; id=&#34;fnref20&#34;&gt;[20]&lt;/a&gt;&lt;/sup&gt;)
than Ruby Sass, which was doubtlessly crucial for the continued popularity of
Sass as the web development center of gravity shifted away from Ruby and towards
Node in the early 2010s; on the other hand, poor communication between the Sass
core team and the LibSass maintainers led to it being essentially a black-box
reimplementation whose internal diverged &lt;em&gt;massively&lt;/em&gt; from Ruby Sass, which ended
up making LibSass fairly buggy, largely incompatible, and increasingly difficult
to add new features to.&lt;/p&gt;
&lt;p&gt;It was clear that something needed to change. By the middle of the decade, Ruby
was clearly not meeting our needs anymore, so we sat down and tried to figure
out what came next. We considered a number of possibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Leaning into LibSass and declaring it the official implementation moving
forward. Although this had the obvious benefit of an existing implementation,
the reality was that we&#39;d probably need to rewrite the whole thing from the
ground up anyway.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using Rust, which was at the time still quite young. I did do a bit of work to
prototype this, and came to the conclusion that the recursive object structure
of ASTs didn&#39;t play nicely at all with Rust&#39;s memory management schema. It
would also likely force us to write our own garbage collector for Sass objects
rather than relying on the native language&#39;s, adding a lot of complexity in
exchange for native-code speeds we weren&#39;t sure we even needed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JavaScript, which had the sizable benefit of being the new &lt;em&gt;lingua franca&lt;/em&gt; of
the web (and being much more likely to hold that position than Ruby thanks to
its monopoly on the browser). The biggest drawback here was that, while the V8
JS engine was substantially faster than Ruby, we weren&#39;t sure we could get the
performance we wanted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dart, which we ended up settling on. Despite being quite obscure at the time,
Dart had a number of advantages: it had its own VM that could run code close
to native speed, it was easy to distribute cross-platform Dart executables,
and it could compile to JS for even easier distribution and a high level of
pluggability. I was also working on the Dart team at the time, so I could much
more easily justify using some of my work hours on writing a new
implementation of Sass than I could for any other language.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I spent 2016 and 2017 working on Dart Sass, using all the lessons I&#39;d learned
from Ruby Sass to improve the structure of the code and using the substantial
corpus of test cases that Chris and the LibSass team had built up to verify its
behavior. In March 2018, we released Dart Sass 1.0.0, and in April we
&lt;a href=&#34;https://sass-lang.com/blog/ruby-sass-is-deprecated/&#34;&gt;deprecated Ruby Sass&lt;/a&gt;. In October 2020, &lt;a href=&#34;https://sass-lang.com/blog/libsass-is-deprecated/&#34;&gt;LibSass followed suit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In 2019, I had the opportunity to start a dedicated CSS/Sass infrastructure team
at Google, which has included &lt;a href=&#34;http://github.com/jathak&#34;&gt;Jennifer Thakar&lt;/a&gt;, &lt;a href=&#34;https://github.com/awjin&#34;&gt;Awjin Ahn&lt;/a&gt; (who has since
moved on to Peregrine), &lt;a href=&#34;https://github.com/goodwine&#34;&gt;Carlos &#34;Goodwine&#34;&lt;/a&gt;, and &lt;a href=&#34;https://github.com/pamelalozano16&#34;&gt;Pamela Lozano&lt;/a&gt;, all of whom
have made numerous contributions to Sass (Jen in particular is responsible for
the migrator tool). Beyond that point, the history is too recent for me to put
in context effectively, but hopefully it will be easier to find information from
the last few years.&lt;/p&gt;
&lt;p&gt;I&#39;m sure this is a bit more information than you bargained for, but as I was
writing this post I realized that a lot of this information has never been
written down in any kind of unified way before, so I appreciate you giving me
the impetus to do so.&lt;/p&gt;
&lt;hr class=&#34;footnotes-sep&#34;&gt;
&lt;section class=&#34;footnotes&#34;&gt;
&lt;ol class=&#34;footnotes-list&#34;&gt;
&lt;li id=&#34;fn1&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Did Hampton call it &#34;Haml&#34; because it sounded kind of like his name
combined with &#34;HTML&#34;, and then come up with an acronym after the fact?
Absolutely yes. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref1&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn2&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;This course was taught by &lt;a href=&#34;https://en.wikipedia.org/wiki/Gayle_Laakmann_McDowell&#34;&gt;Gayle Laakman McDowell&lt;/a&gt; when she was still at
Google, a few years before she ended up hitting it big writing interview
and career advice books. I haven&#39;t actually read any of those books, but
her class was fantastic. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref2&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn3&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Back then, instead of Discord servers or subreddits, open source projects
had email lists. They might have had IRC channels too, but those were
really just for support; any discussions or announcements happened over
email lists because they could be easily archived and searched and didn&#39;t
require any particular kind of account. If you&#39;re thinking &#34;but Discord
doesn&#39;t solve any of those problems either&#34;, you&#39;re right! &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref3&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn4&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;For a long time, Sass was actually distributed as part of the Haml
RubyGem, until the release of Sass 3.3.0 in 2014 on its own. This was
initially a naked attempt on our part to promote our new language by
piggybacking on the initial popularity of Haml, although ironically Sass
quickly overshadowed its older sibling. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref4&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn5&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;After reading this over, Hampton reminded me that we originally
came to the name &#34;constants&#34; in part because we wanted to emphasize that
(unlike a template language like Haml) they weren&#39;t connected to Ruby
variables and didn&#39;t change based on serve-time state. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref5&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn6&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;CSS custom properties didn&#39;t exist yet&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn7&#34; id=&#34;fnref7&#34;&gt;[7]&lt;/a&gt;&lt;/sup&gt;, and the absence of a way to
abstract out and name repeated values was keenly felt by anyone writing
CSS to any more than a cursory extent &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref6&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn7&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;They didn&#39;t exist yet because they were largely inspired by Sass,
something I will go to my grave extremely proud of. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref7&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn8&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Rails&#39; ascent coincided with the apex of blogging culture, which
contributed to this intellectual atmosphere as well. There were a handful
of people who could regularly write essays about web development that
would then be read by essentially everyone influential. In a kind of sad
poetry, the Rails community itself contained the seeds of the downfall of
this culture: Twitter was created that same year in the Rails shop Odeo,
and went on to be the tentpole for the social media culture that
obliterated the ubiquity of personal blogs. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref8&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn9&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;One of my deepest regrets is how messy we made the semantics of &lt;code&gt;@import&lt;/code&gt;
initially. This was the downside of coming from a Ruby context—we
essentially copied Ruby&#39;s &lt;code&gt;require&lt;/code&gt; system, which did little more than
evaluate a file in the global scope. We didn&#39;t even think to copy the part
where it wouldn&#39;t load the same file twice. I&#39;m &lt;em&gt;still&lt;/em&gt; paying down the
technical debt from that nearly-20-year-old design decision. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref9&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn10&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;At times I may not have kept him as looped-in as I ought to have. Sorry,
Hampton! &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref10&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn11&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Sass actually migrated from Hampton&#39;s self-hosted SVN repository onto
GitHub during this time period. We were one of the earliest projects to do
so, even in the Ruby world that made up most of GitHub&#39;s early adopters.
&lt;a href=&#34;https://api.github.com/users/nex3&#34;&gt;My GitHub user ID&lt;/a&gt; is 188; &lt;a href=&#34;https://api.github.com/users/hamptonmakes&#34;&gt;Hampton&#39;s&lt;/a&gt; is 111. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref11&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn12&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Defense contracting and nonconsensualy training large language models on
their users&#39; code being the two that stick out most in my mind, although
the cofounder [getting ousted for sexual harassment] is also pretty
damning. Fun fact: the &#34;TOML&#34; format that Rust uses for its config files
is not only named after this guy, he&#39;s still involved with its
development! Gross! &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref12&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn13&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;There are a few &#34;Garry Hill&#34;s currently working in tech who I can find on
the internet, but I can&#39;t definitively identify any of them as the person
who submitted this change. He showed up, added mixins, and left without a
trace. Garry, if you see this, let me know what you&#39;re up to these days! &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref13&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn14&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Compass is defunct now, but it was the first framework written for Sass.
It started out as a port of Blueprint after Chris failed to convince the
team to use Sass natively&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fn15&#34; id=&#34;fnref15&#34;&gt;[15]&lt;/a&gt;&lt;/sup&gt;, but it eventually grew to be a broader
framework with flexible tools for layout and browser compatibility. It
eventually faded from relevance along with Ruby, and especially because
browsers&#39; native support for layout and tools like autoprefixer rendered
most of its functionality outmoded. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref14&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn15&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;They ended up reversing their course on this later on, of course. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref15&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn16&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;There was actually another feature that was also frequently cited by
users as a benefit: in Less you could use any style rule whose selector
was just a CSS class as a mixin, rather than declaring mixins using a
different syntax. We considered this an anti-feature, both because it
treated class names as a uniquely special type of selector, and because
the lack of separation between style rules intended as mixins and style
rules intended as styles made it inherently risky for stylesheet
libraries to change &lt;em&gt;any&lt;/em&gt; styles without potentially breaking people
using it in ways they hadn&#39;t intended. We instead took a different
approach to the goal of &#34;re-using existing style rules&#34; by creating &lt;a href=&#34;https://sass-lang.com/documentation/at-rules/extend/&#34;&gt;the
&lt;code&gt;@extend&lt;/code&gt; rule&lt;/a&gt;. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref16&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn17&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;The early versions of Less were more than a little haphazard in their
support of the CSS spec. I would eventually dig pretty deeply through its
implementation in the process of making a Less-to-SCSS transpiler, and I
found plenty of places where it would fail to parse valid CSS correctly,
or even just choke on it. I&#39;ll admit that it irked me how popular it was
despite this, given how much time we&#39;d put into aligning Sass with the
CSS spec at that point. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref17&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn18&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;There are still a few edge cases where technically valid, meaningful CSS
is interpreted differently by Sass. We&#39;re working on removing &lt;code&gt;@import&lt;/code&gt;
and the use of &lt;code&gt;/&lt;/code&gt; as division outside &lt;code&gt;calc()&lt;/code&gt;, but the last case—Sass
interpolation syntax in custom property values—will for better or worse
always prevent us from being a &lt;em&gt;true&lt;/em&gt; superset. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref18&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn19&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Previously in the indented syntax, mixins were declared with &lt;code&gt;=&lt;/code&gt; and
included with &lt;code&gt;+&lt;/code&gt;, following the Haml style of syntax being determined by
the first character on a line. You can [still use single characters in
the indented syntax], although these days I find them needlessly
line-noisey. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref19&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn20&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Inexplicably, this process &lt;em&gt;still&lt;/em&gt; uses a tool &lt;a href=&#34;https://github.com/nodejs/node-gyp&#34;&gt;named after a racial
slur&lt;/a&gt;. This industry can be a nightmare sometimes. &lt;a href=&#34;https://nex-3.com/blog/history-of-sass/#fnref20&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/whos-your-favorite-background-minor/" rel="alternate"/>
      <id>https://nex-3.com/blog/whos-your-favorite-background-minor/</id>
      <published>2024-11-20T00:10:36Z</published>
      <updated>2024-11-20T00:10:36Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="her majesty the prince" label="her majesty the prince"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://zandravandra.com/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Zandra&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;data class=&#34;u-url&#34; value=&#34;https://zandravandra.com/&#34;&gt;&lt;/data&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;p&gt;Who&#39;s your favorite background/minor character in Her Majesty The Prince? (named or unnamed)&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;Ask me this on three different days and you&#39;ll probably get three different
answers, but right now I&#39;m feelin&#39; Dusty because her metanarrative role as &#34;the
not-as-important one&#34; tickles me immensely. Despite originally being envisioned
as a way to backfill the flashback/present day chapter structure and flesh out
the setting and Lou&#39;s character, the maid chapters have ended up introducing
some extremely important characters—Sleeves is pivotal in Act 2, Chiffon is a
crucial emotional support for Lou and looks to be increasingly relevant in Act
3, even the at-the-time-unnamed guard who stumbled upon Lou in the halls has
gone on to be the storied Soixante Douze.&lt;/p&gt;
&lt;p&gt;But not Dusty! Sleeves and Chiffon both know Lou&#39;s secret, but not Dusty.
Sleeves and Chiffon have both left the city to seek adventure, but not Dusty.
Dusty just stays Dusty. She&#39;s the archetypal friend in the group who&#39;s kind of
out of the loop, doesn&#39;t really participate in the group chat, but who
everyone&#39;s glad to see during the reunions. Dusty abides. And I love her for
that.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/how-do-i-reblog-from-you/" rel="alternate"/>
      <id>https://nex-3.com/blog/how-do-i-reblog-from-you/</id>
      <published>2024-10-18T22:29:11Z</published>
      <updated>2024-10-19T01:08:16Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="web" label="web"/><category term="meta" label="meta"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://obspogon.neocities.org/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Obspogon&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;h1 class=&#34;p-name&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://obspogon.neocities.org/&#34;&gt;How do I reblog from you, webmention style?&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;I want to test out webmentions since I added h-card markup to my blog thanks to your posts. How do I reblog a post from you? What HTML and classes do I use? I&#39;m using a static site generator.&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;I&#39;ll make a more thorough post about this at some point, but the short answer is
that all you &lt;em&gt;really&lt;/em&gt; need to do is tell my Webmention receiver the URL to your
post and the URL to the post it&#39;s reblogging. You can do that manually by
pasting the link to your post in the little webmention form beneath each of
mine, or automatically by hooking up your blog&#39;s RSS feed to &lt;a href=&#34;https://webmention.app/docs#using-ifttt-to-trigger-checks&#34;&gt;webmention.app&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The only bit of markup that can help here is adding either &lt;code&gt;class=&#34;u-repost-of&#34;&lt;/code&gt;
or &lt;code&gt;class=&#34;u-in-reply-to&#34;&lt;/code&gt;&lt;sup class=&#34;footnote-ref&#34;&gt;&lt;a href=&#34;https://nex-3.com/blog/how-do-i-reblog-from-you/#fn1&#34; id=&#34;fnref1&#34;&gt;[1]&lt;/a&gt;&lt;/sup&gt; on your post to indicate what it&#39;s reposting
or replying to. Use &lt;code&gt;u-repost-of&lt;/code&gt; if it&#39;s just a plain repost without any
additions, and &lt;code&gt;u-in-reply-to&lt;/code&gt; if you&#39;re adding any additional content. You can
put these on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A simple &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag whose &lt;code&gt;href&lt;/code&gt; is my post.&lt;/li&gt;
&lt;li&gt;The root element of an &lt;a href=&#34;https://microformats.org/wiki/h-cite&#34;&gt;&lt;code&gt;h-cite&lt;/code&gt;&lt;/a&gt; that
provides more metadata about my post.&lt;/li&gt;
&lt;li&gt;The root element of an &lt;a href=&#34;https://microformats.org/wiki/h-card&#34;&gt;&lt;code&gt;h-entry&lt;/code&gt;&lt;/a&gt; fully
embeds my post in your blog. (This is technically non-standard but it&#39;s what I
do and it seems to work with everything I&#39;ve tested.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&#39;ve set up my site so that it hides Webmention likes and reposts, but displays
replies as comments below the post. See &lt;a href=&#34;https://nex-3.com/blog/i-should-write-a-novel/&#34;&gt;this post&lt;/a&gt; for an example of that in
action.&lt;/p&gt;
&lt;hr class=&#34;footnotes-sep&#34;&gt;
&lt;section class=&#34;footnotes&#34;&gt;
&lt;ol class=&#34;footnotes-list&#34;&gt;
&lt;li id=&#34;fn1&#34; class=&#34;footnote-item&#34;&gt;&lt;p&gt;Technically you can also do &lt;code&gt;class=&#34;u-like-of&#34;&lt;/code&gt; to indicate a like but
that&#39;s not something that makes a lot of sense in a static site context. &lt;a href=&#34;https://nex-3.com/blog/how-do-i-reblog-from-you/#fnref1&#34; class=&#34;footnote-backref&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/have-you-played-with-webc/" rel="alternate"/>
      <id>https://nex-3.com/blog/have-you-played-with-webc/</id>
      <published>2024-10-10T06:09:15Z</published>
      <updated>2024-10-10T06:09:15Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="web" label="web"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://fools-pyrite.com/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Ryan&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;data class=&#34;u-url&#34; value=&#34;https://fools-pyrite.com/&#34;&gt;&lt;/data&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;p&gt;Have you played with &lt;a href=&#34;https://www.11ty.dev/docs/languages/webc/&#34;&gt;WebC&lt;/a&gt;? Like a lot of 11ty stuff they&#39;re not super well documented, but they seem like a good way to do code reuse without having to send JS to the browser (unlike web components or HTMX or things like that). I recently ported my blog over and while there&#39;s some weirdness that I had to get over, they&#39;re a good experience overall.&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;I haven&#39;t seen this, and it does look pretty cool. I appreciate a take on the
web component idea that&#39;s legitimately built around running on the server and
sending down normal HTML. That said, while I&#39;m &lt;em&gt;also&lt;/em&gt; not a huge fan of web
components as a dev pattern either. I tend to pass a bunch of parameters to my
components and that&#39;s intrinsically kind of messy with HTML.&lt;/p&gt;
&lt;p&gt;I&#39;m also rotating in my mind the possibility of pulling some of my embed logic
out into re-usable packages, and if I do that I&#39;d like to make them as
general-purpose as possible. The less I can lock them into the Eleventy
ecosystem, the happier I am, and this seems &lt;em&gt;very&lt;/em&gt; tightly bound to 11ty.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/hiii-just-wanted-to-say/" rel="alternate"/>
      <id>https://nex-3.com/blog/hiii-just-wanted-to-say/</id>
      <published>2024-10-09T23:57:12Z</published>
      <updated>2024-10-09T23:57:12Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="web" label="web"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://tilde.town/~slimelia/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;alice slimelia&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;data class=&#34;u-url&#34; value=&#34;https://tilde.town/~slimelia/&#34;&gt;&lt;/data&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;p&gt;HIII just wanted to say thank you for bringing h-entry to my attention! I&#39;ve added it to my own static blog generator and, by extension, &lt;a href=&#34;https://tilde.town/~slimelia/pages/h-entry%20support.html&#34;&gt;my blog&lt;/a&gt;! there&#39;s so many things out there in the world you just never know about and would never stumble upon without someone going &#34;hey look at this cool thing&#34;&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;hell yeah glad to see more people doing it! consider also annotating your
&lt;code&gt;p-author&lt;/code&gt; with an &lt;a href=&#34;https://microformats.org/wiki/h-card&#34;&gt;&lt;code&gt;h-card&lt;/code&gt;&lt;/a&gt; so you can
provide an avatar—I had to pull this one manually from your tumblr&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/are-you-going-to-play-silent/" rel="alternate"/>
      <id>https://nex-3.com/blog/are-you-going-to-play-silent/</id>
      <published>2024-10-07T02:51:27Z</published>
      <updated>2024-10-07T04:42:04Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="silent hill" label="silent hill"/><category term="silent hill 2" label="silent hill 2"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Máxima&lt;/span&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;h1 class=&#34;p-name&#34;&gt;Are you going to play Silent Hill 2 OG or Remake this halloween?&lt;/h1&gt; &lt;p&gt;As good as the remake looks, it&#39;s made by an entirely different team&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;Good question! For those unfamiliar, I&#39;ve had a yearly tradition since 2021 of
playing a classic survival horror game each October, because I like themes. I&#39;ve
played &lt;em&gt;Resident Evil&lt;/em&gt; (GameCube version), &lt;em&gt;Silent Hill&lt;/em&gt; (PlayStation version
which I think is the only one), and &lt;em&gt;Resident Evil 2&lt;/em&gt; (2019 remake) so far. This
year, as Máxima accurately recalls, I am planning to play &lt;em&gt;Silent Hill 2&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Originally I thought I would obviously be playing the original, since the remake
was being made by Bloober Team whose horror output has not seemed particularly
great. But with this remake reviewing quite well, I did take some time to
consider it as a real possibility. Ultimately, particularly after consulting &lt;span class=&#34;mention h-card&#34;&gt;&lt;a class=&#34;p-name         u-url u-uid&#34; href=&#34;https://soundretro.co/&#34;&gt;Christa&lt;/a&gt;&lt;data class=&#34;p-nickname&#34; value=&#34;OhPoorPup&#34;&gt;&lt;/data&gt;&lt;/span&gt; who has strong opinions about these sorts of things, I
decided to stick with the original.&lt;/p&gt;
&lt;p&gt;Where I&#39;ve found my interest in &lt;em&gt;Resident Evil&lt;/em&gt; as a series largely orbiting its
mechanics and the use of game design to convey a notion of &#34;horror&#34;, at least in
the first &lt;em&gt;Silent Hill&lt;/em&gt; much more of what I found compelling was wrapped up in
the story and atmosphere. That&#39;s much harder to preserve, let alone elaborate
on, in a remake. Even a really good remake made in 2024 will still have 2024-era
textures and mocap and movement. If I&#39;m playing a game for its vibe, I think I
want the first time I play it to be with the original vibe.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/cohost-grid-generator/" rel="alternate"/>
      <id>https://nex-3.com/blog/cohost-grid-generator/</id>
      <published>2024-10-03T22:22:43Z</published>
      <updated>2024-10-03T22:22:43Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="utilities" label="utilities"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://www.brendanmcleod.dev/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Brendan McLeod&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;h1 class=&#34;p-name&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://www.brendanmcleod.dev/&#34;&gt;Cohost grid generator!&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;Hey, just wanted to thank you for making cohost grid generator, and hoping that you will keep it up online! It works great with bearblog and it makes my media posts look nice!&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;Yeah, I plan to keep all my generators online more or less indefinitely (except maybe letterboxd which does cost a bit of money to host a proxy). I might actually rework the grid generator a bit to be more explicitly targeted at general websites rather than just Cohost. Maybe add a mode where it provides you a simple stylesheet so it can use fewer inline classes and actually make the text properly responsive so captions look better on phones.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/have-you-tried-using/" rel="alternate"/>
      <id>https://nex-3.com/blog/have-you-tried-using/</id>
      <published>2024-10-02T08:36:18Z</published>
      <updated>2024-10-02T08:36:18Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="ask" label="ask"/><category term="serializd" label="serializd"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;Máxima&lt;/span&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;p&gt;Have you tried using serializd for reviewing and logging TV Shows?&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;I actually do log what I watch there kind of sporadically. It&#39;s all right! I
wish it had a better app and were a bit more like Letterboxd in general, but
it&#39;s certainly better than Trakt, its most direct competitor.&lt;/p&gt;
&lt;p&gt;Part of the reason I don&#39;t use it is the lack of the app, but part of it is also
that it&#39;s a lot of effort to log &lt;em&gt;every single episode&lt;/em&gt; of anything I watch, but
if I only log season-by-season I&#39;ll often forget to log at all when it comes to
the finale.&lt;/p&gt;
&lt;p&gt;The final nail in the coffin of using it the same way I do other review apps is
that I just don&#39;t have that much to say about &lt;em&gt;a single season&lt;/em&gt; of a television
show. (I find I have similar issues when I try to write reviews for manga
volumes.) There&#39;s often not that much different from the season before or the
season after, and I&#39;ll usually express everything I have to say about the show
in the first review or two and then run out of steam.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title></title>
      <link href="https://nex-3.com/blog/rss-feed-for-embeds/" rel="alternate"/>
      <id>https://nex-3.com/blog/rss-feed-for-embeds/</id>
      <published>2024-10-01T05:53:52Z</published>
      <updated>2024-10-01T05:53:52Z</updated>
      <author><name>Natalie Weizenbaum</name>
          <uri>https://nex-3.com/</uri></author><category term="meta" label="meta"/><category term="rss" label="rss"/><category term="web" label="web"/><category term="ask" label="ask"/><content type="html"> &lt;blockquote class=&#34;h-entry u-in-reply-to&#34; style=&#34; padding: 0.75rem; margin: 1rem 0.2rem 1.15rem; border-radius: 0.5rem; box-shadow: 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.2); &#34;&gt; &lt;p&gt; &lt;strong class=&#34;p-author h-card&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://reccanti.art/&#34;&gt;&lt;span class=&#34;p-name&#34;&gt;RECCANTI&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt; asked: &lt;/p&gt; &lt;div class=&#34;e-content&#34;&gt;&lt;h1 class=&#34;p-name&#34;&gt;&lt;a class=&#34;u-url&#34; href=&#34;https://reccanti.art/&#34;&gt;RSS feeds for embeds&lt;/a&gt;&lt;/h1&gt; &lt;p&gt;I was trying to parse the content field of your RSS (Atom?) feed, and I noticed I get a sort of flat structure for embedded posts like this:&lt;/p&gt; &lt;pre class=&#34;language-html&#34;&gt;&lt;code class=&#34;language-html&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;...&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;64&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token special-attr&#34;&gt;&lt;span class=&#34;token attr-name&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt; float: left; width: auto; max-width: 64x; margin-top: 1rem; margin-right: 1rem; border-radius: 32px; &lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;npf_row&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;div&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;npf_col&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;figure&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;tmblr-full&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;post_media_photo_anchor&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;data-big-photo&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;...&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;data-big-photo-height&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;680&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;data-big-photo-width&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;669&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;img&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;post_media_photo image&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;...&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;srcset&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;...&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;sizes&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;...&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;image&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;figure&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;div&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; have you heard about the &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;https://itch.io/b/2672/sickos-selection-1&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Sicko’s Selection&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;? me and 14 other adult artists/authors put together a bundle of artbooks, novellas, and comics for you to enjoy! there’s over $75 worth of our hot hot smut in here, and you get it for just $15! &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; i, for one, have offered up Poker Night with the Arizona Dogs, AND if it reaches its stretch goal of $5000, i’ll be premiering another new artbook a few weeks ahead of its planned release! &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&#34;token attr-name&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;token attr-value&#34;&gt;&lt;span class=&#34;token punctuation attr-equals&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;https://itch.io/b/2672/sickos-selection-1&lt;span class=&#34;token punctuation&#34;&gt;&#34;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;so what are you waiting for, sicko?? go get your porn!&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token tag&#34;&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&#34;token punctuation&#34;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;I&#39;m having a hard time figuring out how to render this out as an embed with the current markup and was wondering if you had any ideas?&lt;/p&gt; &lt;p&gt;Also, I think the max-width on the avatar is incorrect. It&#39;s currently 64x, not 64px&lt;/p&gt; &lt;p&gt;Anyway, I&#39;m really excited about all the stuff you&#39;re doing with h-entry, webmentions, and things like that. I hope I can integrate some of that stuff into my blog eventually!&lt;/p&gt;&lt;/div&gt; &lt;/blockquote&gt; 

&lt;p&gt;Thank you for giving me a reason to make an ask component. 🙂&lt;/p&gt;
&lt;p&gt;When I include a repost like this in my Atom feed, I treat it as though the post
I&#39;m reblogging is itself in the feed, rather than a wrapper that contains that
post. Generally speaking, As such, most of the metadata (author name, link,
title if it has one) is in the rest of the feed entry rather than in the HTML
contents. I don&#39;t create embeds directly from feeds—I always go to the source
web page and create the embed from that—but if I were to do so, I&#39;d treat all
that metadata the same way I treat &lt;a href=&#34;https://microformats.org/wiki/h-entry&#34;&gt;h-entry metadata&lt;/a&gt; for sites.&lt;/p&gt;
&lt;p&gt;I also &lt;em&gt;always&lt;/em&gt; wrap the things I&#39;m embedding in some extra markup to get the
nice little boxes and floating avatars and responsive design going. You can even
edit the HTML a bit! It&#39;s your website, you aren&#39;t tethered to the specific code
the stuff you&#39;re embedding uses.&lt;/p&gt;
&lt;p&gt;Thanks for the tip on the 64x, I fixed it this afternoon!&lt;/p&gt;
</content>
    </entry>
  
</feed>

