<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://jasmangle.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jasmangle.com/" rel="alternate" type="text/html" /><updated>2026-10-15T13:31:19+00:00</updated><id>https://jasmangle.com/feed.xml</id><title type="html">Jasmine Angle</title><subtitle>NVIDIA ASIC Engineer; UC Berkeley EECS alum; loves making chips and wearing cute dresses.</subtitle><author><name>jasmangle</name></author><entry><title type="html">OOTD 2026-10-14</title><link href="https://jasmangle.com/ootd/2026/10/14/ootd/" rel="alternate" type="text/html" title="OOTD 2026-10-14" /><published>2026-10-14T00:00:00+00:00</published><updated>2026-10-14T00:00:00+00:00</updated><id>https://jasmangle.com/ootd/2026/10/14/ootd</id><content type="html" xml:base="https://jasmangle.com/ootd/2026/10/14/ootd/"><![CDATA[<div style="text-align:center; margin: 1em;"><img class="blurb-img ootd-img" src="ootd2.webp" alt="Angelic Pretty Sweet Frill JSK" /></div><ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/ap-sweet-frill-jsk-1">Angelic Pretty Sweet Frill JSK (2023, Pink)</a></li><li><strong>KC:</strong><a href="https://lolibrary.org/items/ap-triple-ribbon-head-bow">Angelic Pretty Triple Ribbon Headbow (Pink)</a></li><li><strong>Blouse:</strong><a href="https://world.taobao.com/dianpu/103026692.htm">谛梦焚世 (Dì mèng fén shì) Lolita</a></li><li><strong>Petti:</strong><a href="https://melikestea.com/product/hybrid-poof-monster-v/">MeLikesTea</a></li><li><strong>Socks:</strong> Roji Roji</li><li><strong>Shoes:</strong> Antaina</li></ul>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="ootd" /><category term="AP" /><summary type="html"><![CDATA[Angelic Pretty Sweet Frill JSK]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/ootd.webp" /><media:content medium="image" url="https://jasmangle.com/ootd.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">OOTD 2026-10-11</title><link href="https://jasmangle.com/ootd/2026/10/11/ootd/" rel="alternate" type="text/html" title="OOTD 2026-10-11" /><published>2026-10-11T00:00:00+00:00</published><updated>2026-10-11T00:00:00+00:00</updated><id>https://jasmangle.com/ootd/2026/10/11/ootd</id><content type="html" xml:base="https://jasmangle.com/ootd/2026/10/11/ootd/"><![CDATA[<p>My latest acquisition from Angelic Pretty SF! Also my first lavender coord 💜</p><ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/ap-little-doll-jsk">Angelic Pretty Little Doll JSK (Lavender)</a></li><li><strong>Hairclips:</strong><a href="https://lolibrary.org/items/ap-dreamy-papillon-clip-set">Angelic Pretty Dreamy Papillon Clip Set (Lavender)</a></li><li><strong>(Not a) Brooch:</strong><a href="https://lolibrary.org/items/ap-dreamy-papillon-barrette">Angelic Pretty Dreamy Papillon Barette (Lavender)</a></li><li><strong>Blouse:</strong><a href="https://world.taobao.com/dianpu/103026692.htm">谛梦焚世 (Dì mèng fén shì) Lolita</a></li><li><strong>Petti:</strong><a href="https://melikestea.com/product/hybrid-poof-monster-v/">MeLikesTea</a></li><li><strong>Bag:</strong> Loris Satin Bridge Heart Bag</li><li><strong>Parasol:</strong> Gift from a friend :D (tysm 💜)</li><li><strong>Socks:</strong> Waguir</li><li><strong>Shoes:</strong> Angelic Imprint</li></ul>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="ootd" /><category term="AP" /><summary type="html"><![CDATA[Angelic Pretty Little Doll JSK]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/ootd.webp" /><media:content medium="image" url="https://jasmangle.com/ootd.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Last.fm Scrobbling Widget</title><link href="https://jasmangle.com/blurbs/2026/10/07/lastfm-api/" rel="alternate" type="text/html" title="Last.fm Scrobbling Widget" /><published>2026-10-07T00:00:00+00:00</published><updated>2026-10-07T00:00:00+00:00</updated><id>https://jasmangle.com/blurbs/2026/10/07/lastfm-api</id><content type="html" xml:base="https://jasmangle.com/blurbs/2026/10/07/lastfm-api/"><![CDATA[<p>(By the way, <a href="https://malmenmusic.bandcamp.com/track/vic-formation">here’s the link</a> to that song I’m playing in the pic! Malmen is so awesome and their music was the kind of thing I’d have on repeat for years. Go check out <a href="https://malmen.org/">Malmen’s website</a>!)</p><iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay; encrypted-media" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/soundcloud%253Atracks%253A220497741&amp;color=%238328ac&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"></iframe><div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/malmen" title="Malmen" target="_blank" style="color: #cccccc; text-decoration: none;">Malmen</a> · <a href="https://soundcloud.com/malmen/malmen-vic-formation" title="Malmen - Vic Formation" target="_blank" style="color: #cccccc; text-decoration: none;">Malmen - Vic Formation</a></div><p>Because I wanted to have a little bit more control over my widgets (nothing against WidgetStar), I decided to make my own little widget for last.fm scribbly scrobblies! And since my API endpoint exists and would be a bit of a waste to have it used <em>just</em> for my site, I’ve made this page so you can easily insert this widget into your own website!</p><p>Using the Last.fm API, all this widget does is it takes the most recent row from your scrobbles and spits it out as some JSON you can use! Ordinarily you could do this directly with last.fm, but that would require setting up a non-static endpoint with an API key yadda yadda. Of course, anyone can do this (and you can also <a href="https://git.gay/jasmangle/lastfm-api">clone my extremely simple Cloudflare worker</a>), though it is nice when it just Exists. Since I have some spare compute on my Cloudflare that I am happy to share, it is available here for you to use.</p><h2 id="i-just-want-something-that-works">I just want something that works</h2><p>Okay, the following snippet (after adding your Last.fm username) will get you pretty much what I have on my site. You can always copy the script from that link to your site to get more control over the design.</p><div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;a</span> <span class="na">id=</span><span class="s">"now-listening"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;img</span> <span class="na">id=</span><span class="s">"now-listening-img"</span><span class="nt">&gt;</span>
  <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"now-listening-info"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"now-listening-track"</span><span class="nt">&gt;</span>Loading...<span class="nt">&lt;/div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"now-listening-album"</span><span class="nt">&gt;&lt;/div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"now-listening-artist"</span><span class="nt">&gt;&lt;/div&gt;</span>
    <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"time-since-played"</span><span class="nt">&gt;&lt;/div&gt;</span>
  <span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/a&gt;</span>
<span class="nt">&lt;script
  </span><span class="na">type=</span><span class="s">"text/javascript"</span>
  <span class="na">src=</span><span class="s">"https://lastfm-api.angle.dev/widget.js?name=YOUR_USERNAME_HERE"</span>
  <span class="na">defer</span><span class="nt">&gt;&lt;/script&gt;</span>
</code></pre></div></div><p>For the horizontal layout shown below, you can use the following CSS:</p><div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nf">#now-listening</span> <span class="p">{</span>
  <span class="nl">width</span><span class="p">:</span> <span class="nb">auto</span><span class="p">;</span>
  <span class="nl">display</span><span class="p">:</span> <span class="nb">inline-flex</span><span class="p">;</span>
  <span class="nl">align-items</span><span class="p">:</span> <span class="nb">start</span><span class="p">;</span>
  <span class="nl">border</span><span class="p">:</span> <span class="m">1px</span> <span class="nb">solid</span> <span class="nx">purple</span><span class="p">;</span>
  <span class="nl">padding</span><span class="p">:</span> <span class="m">0.5em</span><span class="p">;</span>
<span class="p">}</span>

<span class="nf">#now-listening-info</span> <span class="p">{</span>
  <span class="nl">display</span><span class="p">:</span> <span class="nb">block</span><span class="p">;</span>
  <span class="nl">padding-left</span><span class="p">:</span> <span class="m">0.5em</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div><h2 id="customize-widget">Customize Widget</h2><p>Below is an example of how the widget looks. I promise, there isn’t a whole lot of JavaScript involved, but it lets you have full control over how the widget looks!</p><p><label for="name">Last.fm Username:</label><input type="text" id="lastfm-username" value="ngl_" /><button type="submit" onclick="getNowListening();">Update Widget</button></p><style>
#now-listening {
  width: auto;
  display: inline-flex;
  align-items: start;
  border: 1px solid purple;
  padding: 0.5em;
}

#now-listening-info {
  display: block;
  padding-left: 0.5em;
}
</style><div style="display: flex; justify-content: center;"><a id="now-listening" class="lastfm"><img id="now-listening-img" /><div id="now-listening-info"><div id="now-listening-track">Loading...</div><div id="now-listening-album"></div><div id="now-listening-artist"></div><div id="time-since-played"></div></div></a></div><script>const container=document.getElementById("now-listening"),eImg=document.getElementById("now-listening-img"),eTrack=document.getElementById("now-listening-track"),eAlbum=document.getElementById("now-listening-album"),eArtist=document.getElementById("now-listening-artist"),eTimeSince=document.getElementById("time-since-played"),getNowListening=async()=>{const e=document.getElementById("lastfm-username").value,t=await fetch(`https://lastfm-api.angle.dev/?name=${e}`),n=await t.json();if(n.hasOwnProperty("error"))return eImg.src="",container.href="",eTrack.innerHTML="Oops, I encountered an error.",eAlbum.innerHTML=n.error,eArtist.innerHTML="",eTimeSince.innerHTML="",void console.log(`Last.fm widget error: ${n.error}`);let i=n.data["@attr"]?.nowplaying||!1;container.href=n.data.url,eImg.src=n.data.image[1]["#text"],eTrack.innerHTML=n.data.name,eAlbum.innerHTML=n.data.album["#text"],eArtist.innerHTML=n.data.artist["#text"],eTimeSince.innerHTML=i?"Now Playing!":n.data.date.timeStr};getNowListening();</script><p>The API call made here retrieves an object that mostly mirrors <a href="https://www.last.fm/api/show/user.getRecentTracks">the Last.fm API for user.getRecentTracks</a>, though when a user is not actively listening to something, I haave added a <code class="language-plaintext highlighter-rouge">timeStr</code> value to the <code class="language-plaintext highlighter-rouge">data.date</code> object so that you do not need to do any special calculation for a string like “3 hours ago.” The script automatically updates every 45 seconds, which is very reasonable for scrobbles and seems like a good balance for server load.</p><p>On the client side, this is all that is pulled in from the <code class="language-plaintext highlighter-rouge">widget.js</code> endpoint. Feel free to yoink this and customize it to your heart’s content! It is much faster to load if you include this chunk in your site’s JS rather than pulling the JS from my site :)</p><div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Scribbly scrobbly</span>
<span class="c1">// https://jasmangle.com</span>
<span class="kd">const</span> <span class="nx">container</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">now-listening</span><span class="dl">"</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">eImg</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">now-listening-img</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">eTrack</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">now-listening-track</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">eAlbum</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">now-listening-album</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">eArtist</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">now-listening-artist</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">eTimeSince</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">time-since-played</span><span class="dl">'</span><span class="p">);</span>

<span class="kd">const</span> <span class="nx">getNowListening</span> <span class="o">=</span> <span class="k">async </span><span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="kd">const</span> <span class="nx">request</span> <span class="o">=</span> <span class="k">await</span> <span class="nf">fetch</span><span class="p">(</span><span class="dl">"</span><span class="s2">https://lastfm-api.angle.dev/?name=YOUR_USERNAME_HERE</span><span class="dl">"</span><span class="p">);</span>
  <span class="kd">const</span> <span class="nx">json</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">request</span><span class="p">.</span><span class="nf">json</span><span class="p">();</span>

  <span class="k">if </span><span class="p">(</span><span class="nx">json</span><span class="p">.</span><span class="nf">hasOwnProperty</span><span class="p">(</span><span class="dl">'</span><span class="s1">error</span><span class="dl">'</span><span class="p">))</span> <span class="p">{</span>
    <span class="nx">eImg</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="dl">''</span><span class="p">;</span>
    <span class="nx">container</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="dl">''</span><span class="p">;</span>
    <span class="nx">eTrack</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">Oops, I encountered an error.</span><span class="dl">'</span><span class="p">;</span>
    <span class="nx">eAlbum</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">error</span><span class="p">;</span>
    <span class="nx">eArtist</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span><span class="p">;</span>
    <span class="nx">eTimeSince</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span><span class="p">;</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Last.fm widget error: </span><span class="p">${</span><span class="nx">json</span><span class="p">.</span><span class="nx">error</span><span class="p">}</span><span class="s2">`</span><span class="p">);</span>
    <span class="k">return</span><span class="p">;</span>
  <span class="p">}</span>

  <span class="kd">let</span> <span class="nx">isPlaying</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">[</span><span class="dl">'</span><span class="s1">@attr</span><span class="dl">'</span><span class="p">]?.</span><span class="nx">nowplaying</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span>

  <span class="nx">container</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">url</span><span class="p">;</span>
  <span class="nx">eImg</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">image</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="dl">'</span><span class="s1">#text</span><span class="dl">'</span><span class="p">];</span>
  <span class="nx">eTrack</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
  <span class="nx">eAlbum</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">album</span><span class="p">[</span><span class="dl">'</span><span class="s1">#text</span><span class="dl">'</span><span class="p">];</span>
  <span class="nx">eArtist</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">artist</span><span class="p">[</span><span class="dl">'</span><span class="s1">#text</span><span class="dl">'</span><span class="p">];</span>
  <span class="k">if </span><span class="p">(</span><span class="nx">isPlaying</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">eTimeSince</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">Now Playing!</span><span class="dl">"</span><span class="p">;</span>
  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
    <span class="nx">eTimeSince</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">date</span><span class="p">.</span><span class="nx">timeStr</span><span class="p">;</span>
  <span class="p">}</span>
<span class="p">};</span>
<span class="nf">getNowListening</span><span class="p">();</span>
<span class="nf">setInterval</span><span class="p">(()</span> <span class="o">=&gt;</span> <span class="p">{</span> <span class="nf">getNowListening</span><span class="p">();</span> <span class="p">},</span> <span class="mi">45000</span><span class="p">);</span>
</code></pre></div></div>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="blurbs" /><category term="Webdev" /><category term="Last.fm" /><summary type="html"><![CDATA[It's what I use on my site! And you can use it, too!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/now-playing.png" /><media:content medium="image" url="https://jasmangle.com/now-playing.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">OOTD 2026-10-05</title><link href="https://jasmangle.com/ootd/2026/10/05/ootd/" rel="alternate" type="text/html" title="OOTD 2026-10-05" /><published>2026-10-05T00:00:00+00:00</published><updated>2026-10-05T00:00:00+00:00</updated><id>https://jasmangle.com/ootd/2026/10/05/ootd</id><content type="html" xml:base="https://jasmangle.com/ootd/2026/10/05/ootd/"><![CDATA[<ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/ap-dreamy-fancy-doughnut-jsk">Angelic Pretty Dreamy Fancy Doughnut JSK (Mint)</a></li><li><strong>KC:</strong><a href="https://lolibrary.org/items/ap-dreamy-fancy-doughnut-head-bow">Angelic Pretty Dreamy Fancy Doughnut Head Bow</a></li><li><strong>Blouse:</strong><a href="https://lolibrary.org/items/indie-melty-sprinkles-blouse">Sleepyland Melty Sprinkles Blouse</a></li><li><strong>Brooch:</strong><a href="https://lolibrary.org/items/ap-dreamy-fancy-doughnut-brooch">Angelic Pretty Dreamy Fancy Doughnut Brooch</a></li><li><strong>Petti:</strong> Aurora &amp; Ariel</li><li><strong>Socks:</strong> Roji Roji</li><li><strong>Shoes:</strong> Angelic Imprint</li><li><strong>Invisalign Case (yes it matches…):</strong><a href="https://shop.invisalign.com/products/invisalign-aligner-case-donut">Invisalign Aligner Case - Donut</a></li></ul><p>Just because the blouse doesn’t show up super well in the main pic, here’s a close up:</p><div style="text-align:center; margin: 1em;"><img class="blurb-img ootd-img" src="close-up.webp" /></div>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="ootd" /><category term="AP" /><summary type="html"><![CDATA[AP Dreamy Fancy Doughnut]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/ootd.webp" /><media:content medium="image" url="https://jasmangle.com/ootd.webp" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">BTSSB SF Haul! Unboxing + Pics</title><link href="https://jasmangle.com/blurbs/2026/09/27/btssb-haul/" rel="alternate" type="text/html" title="BTSSB SF Haul! Unboxing + Pics" /><published>2026-09-27T00:00:00+00:00</published><updated>2026-09-27T00:00:00+00:00</updated><id>https://jasmangle.com/blurbs/2026/09/27/btssb-haul</id><content type="html" xml:base="https://jasmangle.com/blurbs/2026/09/27/btssb-haul/"><![CDATA[<p>A RARE OCCASION HAS COME!!! I HAVE GONE TO BABY SF!!! my wallet cries but my fashion thrives.</p><p>This is a big moment…. for these are my FIRST BABY DRESSES (and first Baby items altogether)!!!</p><p>I’ll be showin’ y’all my “unboxing” (or I guess my <em>re</em>-unboxing after trying it on at the store)! I loved these JSKs SOOOOOOOOO much!!</p><h2 id="first-my-coord-from-the-day">First, my coord from the day</h2><p><a href="coord-of-the-day.png"><img class="blurb-img" src="coord-of-the-day.png" alt="Picture of Jasmine wearing the sax blue Angelic Pretty ribbon shirring JSK with a pink blouse and pink platforms." /></a></p><p>Idk why I kinda look like I’m in pain in this picture oops</p><p>My coord is the same as what I wore to take the photo on my website logo! I like the mix of light pink and baby blue ^-^</p><ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/ap-ribbon-shirring-jsk-2025">Angelic Pretty Ribbon Shirring (Sax)</a></li><li><strong>KC:</strong><a href="https://lolibrary.org/items/ap-triple-ribbon-head-bow">Angelic Pretty Triple Ribbon Headbow (Pink, not shown in pic)</a></li><li><strong>Blouse:</strong> DMFS Lolita</li><li><strong>Petti:</strong><a href="https://melikestea.com/product/hybrid-poof-monster-v/">MeLikesTea</a></li><li><strong>Shoes:</strong> Angelic Imprint</li></ul><h2 id="unboxing">Unboxing</h2><p>This video is hella bad but… it exists if you <em>really</em> want to watch it. Next time I’ll do a better setup, I promise.</p><p>I still haven’t uploaded the video oops. youtube hard</p><h2 id="rubancrème-à-la-vanille-headdress"><a href="https://lolibrary.org/items/btssb-rubancreme-a-la-vanille-headdress">Ruban♡Crème à la Vanille Headdress</a></h2><p><a href="btssb-rubancreme-headdress.jpg"><img class="blurb-img" src="btssb-rubancreme-headdress.jpg" alt="Picture of the Ruban Crème à la Vanille Headdress." /></a></p><p>I first went into BTSSB with getting these in mind…. of course you saw the title so now you know I absolutely did not leave with JUST this. This kind of pink and blue mix would work PERFECTLY with the coord above (and most of my other pink+blue coords), so I just had to get it!</p><h2 id="swinging-strawberrys-happy-berry-present-jsk">Swinging Strawberry’s Happy Berry Present JSK</h2><div class="home-grid" style="align-items: center;"><a href="btssb-strawberry-coord.jpg" class="col-12 col-md-6"><img class="blurb-img" src="btssb-strawberry-coord.jpg" alt="Picture of Jasmine wearing the Swinging Strawberry's Happy Berry Present JSK." /></a><div class="col-12 col-md-6"><div class="home-grid"><a href="btssb-strawberry-coord-front.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-strawberry-coord-front.jpg" /></a><a href="btssb-strawberry-coord-left.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-strawberry-coord-left.jpg" /></a><a href="btssb-strawberry-coord-back.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-strawberry-coord-back.jpg" /></a><a href="btssb-strawberry-coord-right.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-strawberry-coord-right.jpg" /></a></div></div></div><ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/btssb-swinging-strawberrys-happy-berry-present-jsk-2026">Swinging Strawberry’s Happy Berry Present JSK (Sax)</a></li><li><strong>KC:</strong><a href="https://lolibrary.org/items/btssb-swinging-strawberry-happy-berry-present-head-bow-2026">Swinging Strawberry Happy Berry Present Head Bow (Sax)</a></li></ul><p>I absolutely LOVE THIS DRESS SO MUCH!! The crocheted <strong>pink</strong> (not red like the others!) strawberries are soo cute and having it on the headbow just adds such a good touch to the whole fit. EVEN THE WAIST TIE BUTTONS ARE LITTLE BLUE STRAWBERRIES!! This is absolutely gonna be a fit I gravitate towards in the future!</p><h2 id="ribbon-ribbonwrapping-heart-jsk">Ribbon Ribbon♡Wrapping Heart JSK</h2><div class="home-grid" style="align-items: center;"><a href="btssb-ribbonheart-coord.jpg" class="col-12 col-md-6"><img class="blurb-img" src="btssb-ribbonheart-coord.jpg" alt="Picture of Jasmine wearing the Ribbon Ribbon Wrapping Heart JSK." /></a><div class="col-12 col-md-6"><div class="home-grid"><a href="btssb-ribbonheart-coord-front.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-ribbonheart-coord-front.jpg" /></a><a href="btssb-ribbonheart-coord-left.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-ribbonheart-coord-left.jpg" /></a><a href="btssb-ribbonheart-coord-back.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-ribbonheart-coord-back.jpg" /></a><a href="btssb-ribbonheart-coord-right.jpg" class="col-6 col-sm-6"><img class="blurb-img" src="btssb-ribbonheart-coord-right.jpg" /></a></div></div></div><ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/btssb-ribbon-ribbon-wrapping-heart-jsk">Ribbon Ribbon♡Wrapping Heart JSK (Pink x Mint)</a></li><li><strong>Headdress:</strong><a href="https://lolibrary.org/items/btssb-ribbon-ribbon-wrapping-heart-headdress">Ribbon Ribbon ♡ Wrapping Heart Headdress (Pink x Mint)</a></li></ul><p>Soo…. this is my first entry (besides the shoes) for my mint era! I like having mint as an accent color, since these Angelic Imprint shoes just work sooo well with them and make it all come together. The heart on the front is so cute and both the heart and the bow are detachable! I was super happy that this fit me, especially since I was a little bit over the upper bound on their bust sizing, though it works out perfectly for me!</p><p>Anyways, those are my new fits! Hope ya liked em :D</p><p>Cya!</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="blurbs" /><category term="Lolita" /><category term="BTSSB" /><category term="Coords" /><summary type="html"><![CDATA[Swinging Strawberry's Happy Berry Present JSK + Ribbon Ribbon♡Wrapping Heart JSK]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/btssb-bag.png" /><media:content medium="image" url="https://jasmangle.com/btssb-bag.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">OOTD 2026-09-27</title><link href="https://jasmangle.com/ootd/2026/09/27/ootd/" rel="alternate" type="text/html" title="OOTD 2026-09-27" /><published>2026-09-27T00:00:00+00:00</published><updated>2026-09-27T00:00:00+00:00</updated><id>https://jasmangle.com/ootd/2026/09/27/ootd</id><content type="html" xml:base="https://jasmangle.com/ootd/2026/09/27/ootd/"><![CDATA[<ul><li><strong>JSK:</strong><a href="https://lolibrary.org/items/ap-ribbon-shirring-jsk-2025">Angelic Pretty Ribbon Shirring (Sax)</a></li><li><strong>KC:</strong><a href="https://lolibrary.org/items/ap-triple-ribbon-head-bow">Angelic Pretty Triple Ribbon Headbow (Pink, not shown in pic)</a></li><li><strong>Blouse:</strong> DMFS Lolita</li><li><strong>Petti:</strong><a href="https://melikestea.com/product/hybrid-poof-monster-v/">MeLikesTea</a></li><li><strong>Shoes:</strong> Angelic Imprint</li></ul>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="ootd" /><category term="AP" /><summary type="html"><![CDATA[OOTD 2026-09-27]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/coord-of-the-day.png" /><media:content medium="image" url="https://jasmangle.com/coord-of-the-day.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">ajskhfdjsalkg (updates)</title><link href="https://jasmangle.com/blurbs/2026/09/23/ajskhfdjsalkg/" rel="alternate" type="text/html" title="ajskhfdjsalkg (updates)" /><published>2026-09-23T00:00:00+00:00</published><updated>2026-09-23T00:00:00+00:00</updated><id>https://jasmangle.com/blurbs/2026/09/23/ajskhfdjsalkg</id><content type="html" xml:base="https://jasmangle.com/blurbs/2026/09/23/ajskhfdjsalkg/"><![CDATA[<p>eheh the little jax :D (thanks feli) also dang my hair is goin wild in that pic</p><p>RAAAAAAAAAAAAAAHHHHHHHHHH its been too long &gt;.&lt; wahhhhh</p><p>Goodness gracious this year has been CRAZY thus far. All sorts of silly wacky goofy ups and downs, but I’m still kicking and doing my best! :D</p><h2 id="update-my-poor-laptop">Update: my poor laptop</h2><p>It seems my laptop (a.k.a., my <strong><em>ThinkPad P15 Gen 2 20YQ</em></strong> :P) has been <em>really</em> going through it. A couple years ago, I made a NixOS partition thinking “Hmm, <em>mayyyyybe</em> I should try to be one of those super nerdy Linux users that has all their cool keybinds and everything” but man when I tell you I wanted to chuck my laptop out my window, I mean it. All the time it took me to just get a single terminal to show up (mind you, I did the non-graphical install from scratch…), I just switched back over to Ubuntu and called it a day. I like my operating systems to at least be relatively operational.</p><p>Well, imagine my surprise a few weeks ago when I boot up my laptop to be greeted with this lovely message!</p><p><a href="permission-denied.png"><img class="blurb-img" src="permission-denied.png" alt="Picture of a laptop display showing Permission Denied when running /sbin/init." /></a></p><p><em>Ahem…</em> Permission denied… to <em>me</em>??? Upon <em>boot</em>??? Can I… <code class="language-plaintext highlighter-rouge">sudo boot</code> or something??</p><p>Well, uh, turns out Windows 11 is the biggest loser of an operating system given how one of its update routines genuinely messed up my entire Ubuntu install somehow! I was checking what happened before this and the last thing I was doing was innocently minding my business dual-booting into Windows 11, which already made me want to take a shower, but geez to wage a full on war against MY LINUX… tsk tsk tsk</p><p>Anyways, after many hours of trying to debug this, typing out the hardware ID of my boot disk and the paths to vmlinuz/initrd countless times in the GRUB command line, I found out that somehow my entire <code class="language-plaintext highlighter-rouge">grub.cfg</code> and other mildly important system libraries (Linux.x86_64 seems mildly important) just turned into a whole bunch of null bytes. Fun!</p><p>Thankfully everything is still safe, but uh if anyone happens to have any tips for figuring this out, feel free to send mail with pointers. And yes, I am very much aware that the root solution here would be to just not use Windows. I want to transition to using VMs for that in the future.</p><p>So now… with only one other choice left on my laptop without having to deal with reinstalling a whole new OS…</p><h3 id="i-am-now-forced-to-be-a-nixos-user">I am now forced to be a NixOS user.</h3><p>I gotta say… now that my GNOME works (kinda, for some reason my second monitor just freezes on one picture), it is actually kinda… nice.</p><p>I don’t really know what the “proper” way is to structure the nix configuration files, but I like the idea behind the flakes for individual projects. If only I had actual time to spend learning the syntax and getting acquainted with it. Before I could write any of this post, I had to get the Nix stuff <a href="https://github.com/jasmangle/jaswebsite/commit/1110beb700a59e7eb948c7b8e1c24f42bd7e7230">working for this website</a>, which was a mild pain and only a couple hours of my life I’ll never get back. But, in that time, it did make me appreciate the flexibility that Nix has to offer for environment management.</p><p>Right now, my <code class="language-plaintext highlighter-rouge">/etc/nix</code> is literally just a git repository in its own right and I am just making verbatim changes in there. I don’t have secrets management fully set up yet, so I am definitely not pushing anything up to a public repo, but at least it’s starting to take shape. I see all the cool GitHub repos everyone has of their NixOS setups and uhhhhh it looks wayyy too intimidating for me right now.</p><h2 id="update-bike">Update: bike!</h2><p><a href="bike.png"><img class="blurb-img" src="bike.png" alt="Picture of my Trek 4500 red and black bike." /></a></p><p>Recently I ended up getting a <a href="https://bikeindex.org/bikes/3495946">nice used bike</a> (a Trek 4500) from <a href="https://www.goodkarmabikes.org/">Good Karma Bikes</a>! I haven’t been on a bike since I was super tiny, so it is kinda nice to finally have one. Honestly, the idea of biking on the road kinda freaked me out for a while, but I figured starting out riding it early in the morning when it isn’t too busy outside can ease me into it. Since I don’t have a car, it certainly makes doing small trips around SJ much easier. I really gotta work on my leg muscles though, I’m terribly out of shape.</p><h2 id="update-stress-yay-positive">Update: stress! yay! (positive)</h2><p>There have indeed been times this year that have felt stressful for one reason or another, leading me down a silly spiral of negative feelings that led to restless nights, preoccupation with anxiety during the day, and all kinds of not so fun thoughts. Thankfully, everything is all good now after plenty of therapy and time to get myself back on track, though I think the biggest thing that helped for me significantly was taking a break during the day for mindfulness.</p><p>These days, in the mornings, I’ll go out to a small park, sit on a bench, close my eyes, and just breathe, focusing on the feeling of my rear end pressing on the seat and letting all the sounds of nature just pass by. I started out doing the “Daily Trip” sessions by Jeff Warren on the <a href="https://www.calm.com/">Calm app</a> (no this isn’t an ad, don’t send me hate mail for this), since I had already been using the app for soundscapes (highly recommend for sleep) and the meditation programs were included from my insurance, though you really don’t need an app for it (and I don’t use it much for that nowadays). Starting the day with a nice meditation session, a good bike ride, and a nice cup of tea has helped me feel significantly more “ready” for the stressors of a typical day.</p><p>Hah, “I’m ready”… now I sound like Spongebob :P</p><h2 id="yup-thats-a-birds-eye-view-of-whats-going-on">yup, that’s a bird’s eye view of what’s going on</h2><p>Of course, this isn’t <em>everything</em> that is happening. I’ll try to make more posts now that I actually have a real development environment I can type from, rather than a broken Jekyll instance that seemed to never work (and GitHub Pages, which decided to just not serve anything).</p><p>Cya! :D</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="blurbs" /><category term="Random" /><summary type="html"><![CDATA[idk lmao, just some things I've been up to]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/beach-lookout.png" /><media:content medium="image" url="https://jasmangle.com/beach-lookout.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Berkeley graduation update!</title><link href="https://jasmangle.com/blurbs/2025/06/21/graduation/" rel="alternate" type="text/html" title="Berkeley graduation update!" /><published>2025-06-21T00:00:00+00:00</published><updated>2025-06-21T00:00:00+00:00</updated><id>https://jasmangle.com/blurbs/2025/06/21/graduation</id><content type="html" xml:base="https://jasmangle.com/blurbs/2025/06/21/graduation/"><![CDATA[<p>Wellll… I’ve had the blurbs section on my website for far too long and I’ve yet to use it! Ended up turning into a “one of these days” type of project. Berkeley was keeping me far too busy and I needed to update my website’s layout to support it, so it was difficult to find the time to sit down and get it done. UNTIL NOW :D</p><p>Anyways, wow, four years really flew by. A lot has changed! I’ve met so many cool people, taught some classes, worked some internships, made some chips do some cool things, helped get a paper accepted for said chips, and now I’m at NVIDIA making even more chips do cool things.</p><p>I would say that these were some of the most difficult years of my life. From insane work schedules to personal challenges (which I’ll probably talk about more in another blurb), it really built character over the years. This blurb will just have highlights of the main pieces of advice from my Berkeley experience, saving further details for later blurbs.</p><h2 id="seminars">Seminars</h2><p><img class="blurb-img" src="seminars.webp" alt="Pictures of a balloon with a GPS beacon attached followed by a screenshot of a solar sail trajectory simulation." /></p><p>Despite having to deal with the hectic lower division courses during my freshman year, what kept me motivated throughout were the interesting <a href="https://curricularconnections.berkeley.edu/freshman-and-sophomore-seminars/">Berkeley seminars</a> offered that were tailored specifically for freshmen or sophomores. They are usually just a unit or two and very worthwhile! They are great ways to talk with instructors in a smaller class context (around 20 people) while discussing something that suits both of your interests.</p><p>In my first semester, I took the <a href="https://www.ssl.berkeley.edu/the-bliss-project-small-solar-sails-could-be-the-next-giant-leap-for-interplanetary-space-exploration/">BLISS: Berkeley Low-Cost Interplanetary Solar Sail seminar</a>, led by Dr. Andrew Westphal and Prof. Kris Pister. The goal: designing a ~10g spacecraft piloted using MEMS actuators to act as a low-cost method of exploring the solar system. We got to experiment with various types of carbon fiber rods and materials for making a solar sail, then attempted to see what would fit within a CubeSat, figuring out the feasibility of fitting multiple spacecraft to decrease cost. This seminar was an incredible introduction to Berkeley research early on; I would highly recommend taking a similar type of seminar if offered in the future.</p><p>In my second semester, I took the <a href="https://classes.berkeley.edu/content/2022-spring-eleng-39-001-sem-001">Hands-On-Ham Radio seminar</a> led by Prof. Miki Lustig. Here, we launched two balloons with APRS and WSPR GPS beacons and tracked their locations as they flew across the world. In this seminar, you also work towards getting your FCC technician amateur radio license and are given a starter handheld radio. It was tons of fun messing around with SDRs and listening in to different broadcasts, plus talking on the UC Berkeley net every Wednesday was a neat experience. This is an annual tradition that is held in this seminar and is not super technical, so if you have a chance to take it, it’s a great way to both get your amateur radio license and have fun launching balloons.</p><h2 id="teaching">Teaching</h2><p><img class="blurb-img" src="jasmine-soda-277.webp" alt="Picture of the Soda 277 lab focused on a whiteboard that says 'Jasmine was here' followed by a heart." /></p><p>One thing I absolutely do not regret was my decision to become a teaching assistant. My personal interests lean heavily towards low-level software and hardware design, thus I really enjoyed taking CS 61C (machine structures). I started teaching CS 61C as an academic intern in Spring 2023, then progressed to tutor the following semester, then a TA for two semesters afterwards. After I had taken the tapeout and bringup courses, I became a teaching assistant for the following class tapeout project in Spring 2025.</p><p>I would have started teaching other classes earlier, but due to some self-esteem issues early on, I worried that I was just not qualified to teach in any capacity. This was absolutely unjustified, however, and honestly teaching was one of the best things I had done.</p><p>Teaching is so much fun!!!</p><p>It was an incredible privilege to be afforded the opportunity to teach other students in this capacity. This ended up being one of the biggest highlights of my time at Berkeley and was some of the most fun I had. I learned a ton from my peers and I would absolutely do it again.</p><h2 id="work-life-balance">Work-Life Balance</h2><p><img class="blurb-img" src="wlb-berkeley-hills.webp" alt="Picture of the bay as visible from the top of Picnic View Ridge in the Berkeley Hills." /></p><p>Preserving work-life balance at Berkeley was one of the hardest things for me to maintain. Looking back, it’s probably the biggest thing I wish I had handled differently during college, but even in the moment, I knew it was something I struggled with.</p><p>When you are thrown into an environment that is conducive to overwork, it becomes surprisingly easy to let all-nighters become routine, especially in research. In EECS, both in academics and in the lab, this was a very common theme from what I observed and experienced.</p><p>No matter how many times I would try to enforce that I keep a schedule or block out time for personal things, work would always find a way to creep back in to fill up the gaps.</p><p>I got to work on some really exciting projects, especially during the Spring 2024 bringup of the Berkeley chips. I do wish I could have regulated the time spent there a bit more, though. Entering the lab during the day, losing track of time and leaving at midnight was incredibly common and I absolutely had to set alarms to let me know when to leave.</p><p>To keep myself from molding into the shape of a chair, I was able to manage the stress by forcing myself to get outside and go on hikes or hang out with friends. Despite this, drowning in work was a terribly isolating experience. If you can, try to budget a little bit of time to a hobby of some sort. It wasn’t very feasible for me to do this, but try to budget this into your schedule before it gets too hectic.</p><p>Small bit of advice if any current Berkeley students happen to be reading this: <a href="https://uhs.berkeley.edu/caps">CAPS exists</a>, is free, and carried me through points of intense struggle. There is no shame in using it and I would strongly recommend it.</p><h2 id="spring-2023-a-cursed-semester">Spring 2023 (a cursed semester)</h2><p><img class="blurb-img" src="sp23-eecs151.webp" alt="Picture of waveforms being shown on GTKWave." /></p><p><strong><em>Do not take EECS 151, Physics 7B, CS 70, and the HOPE DeCal at the same time. That was a really bad idea. I found myself left with almost no free time at all.</em></strong></p><p>save your sanity. preserve your hair. I’m sure I knocked like 5 years off my lifespan during that semester. For prioritizing mental health, it is genuinely not worth enduring this schedule. At the very least, take physics a different semester if you are focused on digital IC design. Having two problem-set heavy courses constantly assigning more work on top of EECS 151’s final project and the HOPE DeCal project in the back of your mind at all times is not a healthy combination.</p><p>That being said, I will say that I am happy that I took EECS 151 early on (sophomore spring). This is what ultimately allowed me to be a TA for tapeout later on, while going through the tapeout/bringup course flow entirely. Sure, I could have taken the bringup course in the following fall semester, but I needed a relatively lighter semester to rest.</p><h2 id="whats-next">What’s Next?</h2><p>Now that I’ve graduated and settled into San Jose, I’ll now be able to actually pursue some hobbies I’ve had, which I previously didn’t have time to do. Some of this does align with EECS-related things like hobbyist hardware development or DIY projects, but a lot doesn’t, like sewing or language learning. Most of the future blurbs here will likely follow this trend, but other random things will be coming soon!</p><p>Until next time! :D</p>]]></content><author><name>{&quot;picture&quot;=&gt;&quot;/assets/img/jasmine2.jpg&quot;, &quot;twitter&quot;=&gt;&quot;jasmangle&quot;}</name></author><category term="blurbs" /><category term="Berkeley" /><summary type="html"><![CDATA[A brief reflection on my academic journey at UC Berkeley.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://jasmangle.com/jasmine-heart-chip.png" /><media:content medium="image" url="https://jasmangle.com/jasmine-heart-chip.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>