<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anna Villarreal</title>
    <description>The latest articles on DEV Community by Anna Villarreal (@annavi11arrea1).</description>
    <link>https://dev.to/annavi11arrea1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1467610%2F3e4ce925-fffd-4643-9aae-8ee77cf01828.png</url>
      <title>DEV Community: Anna Villarreal</title>
      <link>https://dev.to/annavi11arrea1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/annavi11arrea1"/>
    <language>en</language>
    <item>
      <title>Microserver Updated with Mini Catbot! ✨😻 mew!</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Mon, 09 Nov 2026 01:55:38 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/microserver-updated-with-mini-catbot-mew-3aa0</link>
      <guid>https://dev.to/annavi11arrea1/microserver-updated-with-mini-catbot-mew-3aa0</guid>
      <description>&lt;p&gt;View mini Catbot Live: &lt;a href="https://www.annavillarreal.com/" rel="noopener noreferrer"&gt;mew!&lt;/a&gt;&lt;/p&gt;





&lt;p&gt;Sunday Funday... Updated my server hub which had been snoozing for a bit. The page was screaming AI-created and it was bothering me. I finally had a second to sit with it and make it feel a little bit more me-like. I get paid $0 for doing stuff like this, and I do it for pure entertainment value.&lt;/p&gt;

&lt;p&gt;Sometimes in life, there is a point where you realize it is much faster to drop in a vector graphic, than try to reinvent the whole damn thing with CSS. Don't get me wrong, I love CSS, but I had a plan, and it absolutely had to happen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff9cc1nm2bafpix5onthi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff9cc1nm2bafpix5onthi.png" alt="blacklight created by gemini" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;
Gemini generated image after given reference photos.







&lt;p&gt;The first part of my plan was to have blacklights casting onto to page content. I soon realized that the best placement for them was horizontally and shining down. But, before I could place my blacklights, I had to have my graphic. Generally, I am not satisfied with clipart and stock. I want my own thing, because apparently I am a digital brat. &lt;/p&gt;

&lt;p&gt;So I chose the fast method of finding reference images of the exact blacklight I had in mind and giving them to Gemini to produce a mockup starting point. After A few renditions, I got something workable. I took that version and dropped it in illustrator, where I vectorized it using outlines and tweaked to taste. I nearly ended up with a whole damn schematic of blacklights and scaffolding. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6smd8dwunipnw83mj8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6smd8dwunipnw83mj8e.png" alt="finishing the blacklight svg" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;
Finishing touches for blacklight svg file







&lt;p&gt;Rabbit holes are so easy to fall into. Anyways, happy with my new creation, I used it as my blacklight on the page, and mounted it snuggly to the ceiling with some scaffolding. Perfect. &lt;/p&gt;

&lt;p&gt;Then it was time to turn the lights on. That was a little bit of css-figuring that involved gradients and placement via percent. This could have also been a rabbit hole, but this is enough for now. 🤣 After I got the lights appearing properly, I realized it would be WAY COOLER to have a button. So I made a fun button that toggles the blacklights on and off, which also alters how the text and borders appear on the page. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flauwnw39mqy1o0srwz1h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flauwnw39mqy1o0srwz1h.png" alt="mini catbot appears" width="799" height="325"&gt;&lt;/a&gt;&lt;/p&gt;
Mini Catbot







&lt;p&gt;And then I realized... I have a purrfect platform for a mini catbot to walk across! 🤣✨ So, having the full scale catbot at my disposal, I used claude to generate a 'mini catbot'. Mini Catbot will follow your cursor above the scaffolding, bat at the power button, and meow. And of course I updated some of the content which also served as a reminder I have more work to do. No homework or studying today... just 'fuzzacating' LOL&lt;/p&gt;

&lt;p&gt;Claude handled the simple animation very well, I cannot take credit for that. But I do absolutely love it. ✨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2le9bjw7n614ocj2qsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2le9bjw7n614ocj2qsb.png" alt="fuzzy kitty wants button" width="321" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8uw5j2tzkrfaa0nm1gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8uw5j2tzkrfaa0nm1gs.png" alt="fuzzy kitty does not get button" width="275" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now my page feels much better! 😹&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>threejs</category>
      <category>css</category>
      <category>hobby</category>
    </item>
    <item>
      <title>🤷‍♀️ Soul Searching Amid Tech Frustrations</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Thu, 05 Nov 2026 17:22:25 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/soul-searching-amid-tech-frustrations-1jj6</link>
      <guid>https://dev.to/annavi11arrea1/soul-searching-amid-tech-frustrations-1jj6</guid>
      <description>&lt;p&gt;Alright it’s time to check in. I have wanted to share some findings between now and my last post, but I have been too preoccupied playing catching up with school work and zip-tying my online shop together. I say zip-tie, because that is what it feels like at this point. I am feeling a little burnt at the moment, so I am going to protest by sharing my drama.&lt;/p&gt;

&lt;h2&gt;
  
  
  There is a couple things I want to talk about:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.everfluorescent.com" rel="noopener noreferrer"&gt;everfluorescent.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Optimizing Google tools for small business&lt;/li&gt;
&lt;li&gt;Creative atrophy&lt;/li&gt;
&lt;li&gt;Judgement, fear, and failure&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  everfluorescent.com
&lt;/h3&gt;

&lt;p&gt;Last you heard from me, I had taken on quite an undertaking of configuring my home network with a Juniper switch. It has been smooth sailing so far. (My development server has turned into a tiny production server and it must be saved at all costs.) 😂 Protect the tiny server! I have actually impressed myself that my switch is buzzing along, doing its thing. &lt;/p&gt;

&lt;p&gt;An unexpected feeling has reared its head from this experience. I realize that I now sit cozily tucked behind multiple firewalls. Paired with multiple sources of traffic monitoring, I think this is boss mode. Look at me protecting and analyzing. I did not plan for this. 😂 I just wanted to play with CSS all day but here we are. 🤷‍♀️ Remember: do not get &lt;em&gt;too&lt;/em&gt; cozy!&lt;/p&gt;

&lt;p&gt;Upon getting my network recombobulated, I went straight back to my website checklist. On that list was creating unified location for managing social media posts. As you know, there are too many and it is a lot to deal with. That is why big companies hire social media managers and content creators. However, I do not really consider myself a content creator. When I think of content creators, (and please forgive me here if this is your profession) some images come to mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Well endowed females selling a ‘lose weight fast’ or ‘skin care’ product comes to mind. It’s not realistic and we know it.&lt;/li&gt;
&lt;li&gt;Soccer mom gets organized with new travel mug that has pockets for essentials in its carrying case and all of her children wear clothing that have tracking devices sewn into the seams because she is karen 2.0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think you get the idea. 😂😂&lt;/p&gt;

&lt;p&gt;Basically, the idea of ‘content creation’ causes me to do an internal eye roll. Dude, I am an artist, I am already a creator. But now there has to be two of me? I really groan at the idea of additionally having to market myself. I came to realize that I actually have a ton of raw content - pictures, videos, stories - they just need to be re-organized and published in a way that makes sense to the public.&lt;/p&gt;





&lt;p&gt;Feeling overwhelmed, I started to look for free tools or tools with free tiers that could help me manage this situation. Without too much explaining, here is what I’ve landed on so far:&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Buffer: Add up to 3 social media sites for free for scheduled content posting to rebuild brand awareness. I added Facebook, Instagram and TikTok to Buffer’s free tier.&lt;/li&gt;
&lt;li&gt;Custom spreadsheet with several columns of data including date to be published, platform, links for media, text, status, and others.&lt;/li&gt;
&lt;li&gt;A Google bot service that reads from my spreadsheet when called (manually, from terminal) The bot schedules the posts for me in Buffer, changes the status for each row when appropriate, which lets me know if it has been added to the cue or not.
The Google bot cannot use a Google drive link to upload media links to Buffer. However, it can read them and put them somewhere else. The Google bot takes the media from my chosen Google drive folder, uploads the media to a Cloudflare R2 storage container, then loads them into Buffer from Cloudflare. Media files in Cloudflare are automatically deleted after 30 days, keeping it clean.&lt;/li&gt;
&lt;li&gt;Canva: great for making short videos with content I already have. I do not need to be the next Steven King, I just need to have some effective communication here, on a very small time budget. This fits the bill. Thank you, templates.&lt;/li&gt;
&lt;li&gt;Brevo: Promotional email management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffixsgoj0gfvvrwq2pgwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffixsgoj0gfvvrwq2pgwn.png" alt="buffer snapshot" width="552" height="190"&gt;&lt;/a&gt;&lt;/p&gt;
Buffer handles scheduled posting



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Firlh6stqxndbkt264hmn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Firlh6stqxndbkt264hmn.png" alt="brevo snapshot" width="788" height="320"&gt;&lt;/a&gt;&lt;/p&gt;
Brevo handles promotional emails



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0qi6vkc9514ekgdp9ka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo0qi6vkc9514ekgdp9ka.png" alt="spreadsheet snapshot" width="325" height="207"&gt;&lt;/a&gt;&lt;/p&gt;
A tiny peek at my spreadsheet







&lt;h3&gt;
  
  
  Google Analytics Tall Tale
&lt;/h3&gt;

&lt;p&gt;Now I am not some big fancy super analytics boss, but I do have tools. We can build amazing things with the right tools. Let me tell you my Google Analytics tall tale.&lt;/p&gt;

&lt;p&gt;In a previous post, I shared the 404/redirect nightmare I was having. Years of trying to do online business left me with a ton of redirects and broken links. Broken links were found in an old shopify account that was connected to social medias, other places I rarely had used like X, pinterest, square, and other deeply nested what-have-yous. Customers were being sent to an empty room. I found that out, the hard way. Since then, I have cleaned up my act and spent a lot of time refining things where appropriate. &lt;/p&gt;

&lt;h4&gt;
  
  
  That involved:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Shutting down my shopify fully&lt;/li&gt;
&lt;li&gt;Removing or updating links in various platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have been trying to understand why I was getting so much traffic but almost no sales. This fix was only part of the problem, I learned later. Continuing on through time, I checked my Google analytics and ads daily. My money was still being spent, with no improvement in sales. However I did feel better that the 404s have almost ceased to exist. 😂🤷‍♀️ But this obviously needs further intervention. So what is the deal, Google? I had to allow some time to pass to get actual data now that the redirect and 404 nightmare was cleaned up. I let a week or so pass, then I summoned Claude to check Supermetrics while my free tier was still working. I learned ALOT.&lt;/p&gt;

&lt;p&gt;Sure, pay for Google ads they say, increase your reach, blah blah blah. It is so much more than that. You can not just pay $5, $10, or $100 and get a sale. You must analyze clicks and traffic to optimize your money and ultimately, supposedly, your business’s success. &lt;/p&gt;

&lt;p&gt;This is a new area for me. I am flying by the seat of my chair and clinging on for dear life, wondering how much of my own pocket will deplete before the beast becomes sustainable. &lt;/p&gt;

&lt;p&gt;There is no promise, no guarantee, just a million miles of the internet. How do we clear the digital weeds?&lt;/p&gt;





&lt;h2&gt;
  
  
  Digital Weeds
&lt;/h2&gt;

&lt;p&gt;As it turns out, SEO is not enough. You think you mastered that? Good job. Time for phase two: target practice. Upon drawing data for something like the 20th time in my free trial, Claude reported back to me that the majority of my money was being wasted on garbage clicks. Excuse me, Google? What are you doing, bro? &lt;em&gt;Ahem&lt;/em&gt; Garbage clicks, sir? 🤣🤣🤣 You are going to just waste money like that? We all want to blame everyone but ourselves, it is human nature. When I learned that money was quite literally being wasted, and having the prior knowledge of customers being sent to 404’s, a thought occurred to me: “For the past few months, I have been paying for customers that are not interested, to go no where.” &lt;/p&gt;

&lt;p&gt;People were clicking my ads after searching for things like “cat carrying hoodie” and other oddities.&lt;/p&gt;

&lt;p&gt;This is where I learned the importance of negative keywords in Google searches. Searches that are not related to your product generally should not result in your product ad appearing. That is admittedly bad marketing. You can add negative keywords to help refine when your ads appear after a Google search, to help you reach the right audience. &lt;/p&gt;

&lt;p&gt;I checked my Google ads spending before and after refining keywords with Supermetrics. Clicks are down but spending is still up, so I’m turning off AI Max since it is likely resulting in my brand appearing for other brand searches, cool, but expensive. I’m also turning off ‘Search Partners’ as well as that could be a source of unrelated expensive clicks. I have also crimped my budget extremely for the time being until I get a grasp on traffic and clicks. &lt;/p&gt;

&lt;p&gt;Some may view this as a failure and waste of money, but what actually happened was a tremendous amount of learning the landscape. Throwing myself into a fire and learning is tremendously more beneficial than saving a bit of cash in the here and now. I bit that bullet for you, so any new aspiring web developer with a plan does not have to. If you already know your broad search terms and negative keywords ahead of time, then you are a step ahead. Retrospectively, I would try to gather all the data you can on your intended audience and have a chat with your favorite AI agent before deciding to spend money on ads. Just do not be surprised when it requires continued refinement! And please if you are not experienced use the Supermetrics free trial with your agent. It does a lot of heavy lifting! Do not make it more difficult than it has to be. &lt;/p&gt;


 

&lt;h2&gt;
  
  
  The Fun Updates
&lt;/h2&gt;

&lt;p&gt;It is not all analytical doom and gloom, I had my significant other craft me a shiny new version of my logo for the hero area on my website. And I must say, it is freaking awesome. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0mophnakwlzu64lurqv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0mophnakwlzu64lurqv.png" alt="Fun Logo" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;
A fun logo I can be proud of on the landing page.



&lt;p&gt;I have also added some more images of my art in the gallery area for viewing. That is found at &lt;a href="https://www.everfluorescent.com/gallery" rel="noopener noreferrer"&gt;https://www.everfluorescent.com/gallery&lt;/a&gt; and consists of only my bigger fancier pieces at the moment.&lt;/p&gt;

&lt;p&gt;I have also added some policy pages to comply with Google merchant centers requirements, which are now found at the bottom of the page. In addition, I have included a proper signup area for promotions. If you signup and verify your email, you get a unique code for $5 off. I have been wanting this feature added for some time now, and I have found that managing it through Brevo on the free tier for now works just fine. It was not hard to set up and I highly recommend giving that a whirl if you are in need of managing promotional email. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1t3nv480to571841saib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1t3nv480to571841saib.png" alt="sign up area screenshot" width="798" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, A tiny blog area in the about section has been added. Two existing stories from my old square site were refined and placed there. This is an area that I will be working on through time.&lt;/p&gt;

&lt;p&gt;Social media links have been updated on the page, and set the repo to private. Sorry guys, I would love to keep sharing, but I am sure you understand. &lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Confidence Concerns
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data is stored in another location.&lt;/li&gt;
&lt;li&gt;Financials are all handled through Stripe, a reputable transaction handling partner.&lt;/li&gt;
&lt;li&gt;Google Places API to pulls in actual Google reviews, I’ve been doing this a while!
Social media efforts will slowly bring brand awareness and direct customers to my site. &lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;
  
  
  Unrelated Contemplations
&lt;/h2&gt;

&lt;p&gt;Last night, I got absorbed into a new painting, nothing big or fancy, just wanted to get out of my head. I have been doing the “tech world” thing for nearly 4 years. I completed an apprenticeship, went back to school for second bachelors, and worked multiple IT jobs. Here I sit now again, unemployed, in front of a canvas and computer screen. &lt;/p&gt;

&lt;p&gt;Years ago, I used to dye my hair brilliant colors, neon, galaxy, whatever striking color I was obsessed with at the time. Knowing about the conservative nature of corporate environments and harsh barriers to entry for a junior dev, I dyed my hair a “natural” color with a conservative hair style and maintained that image the last 4 years while I tried to be a “professional”. If I can say one real fact, it is that I had more money when I was out there being myself, with lime green rainbow hair. &lt;/p&gt;

&lt;p&gt;I have refrained from doing certain things for years in case an opportunity arose. But considering the lack of opportunity despite my best efforts, I am about to not care again. I have also navigated a lot of other things during this time. I went into hiding, dark mode, quiet. I feel that “trying to be perfect so much as to never even get a speeding ticket” has gotten me no where. I stopped posting on social media so that certain people would stop digitally attacking me, to say the least. It has been years, and I am tired of it. Tired of being a ghost, tired of hiding, tired of being perfect, and not dying my hair fun colors for what? The interviews and job offers that do not exist? 🤣 This is insanity, and I want to express myself how I deem warranted. If you judge me based on my neon hair - I am not sorry I blinded you. Get some sunglasses. However, natural hair color is low maintenance, and was an optimal choice for turbulent times. &lt;/p&gt;

&lt;p&gt;What do you think - should I be myself - or continue to seek and wait for opportunity? Tell me, what are the current thoughts of society for professional visual aesthetic? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdthtfa1pzs1la0d2cjwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdthtfa1pzs1la0d2cjwo.png" alt="hair styles over the years" width="799" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>mentalhealth</category>
      <category>career</category>
    </item>
    <item>
      <title>Juniper-Pi Network Configuration</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Fri, 30 Oct 2026 04:58:19 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/juniper-pi-network-configuration-552d</link>
      <guid>https://dev.to/annavi11arrea1/juniper-pi-network-configuration-552d</guid>
      <description>&lt;p&gt;I spent a lot of time on the short video cutting down 2 hours of content into 5 minutes, so this is brief.&lt;/p&gt;

&lt;p&gt;Since my last post, I've setup my Juniper switch behind my consumer router and handled  the double NAT using a raspberry pi, which also acts as another small firewall. &lt;/p&gt;

&lt;p&gt;At the end of the video you can see that I decorated my switch in celebration of course to match my keyboard. 😂&lt;/p&gt;

&lt;p&gt;In the last 48 hours I have also: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;setup a maintenance page when the server is not reachable&lt;/li&gt;
&lt;li&gt;created a social media management plan with 6 social media apps and am preparing content.&lt;/li&gt;
&lt;li&gt;finished an online webdev class (was already close to the end)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope you like the video! 👾&lt;/p&gt;

</description>
      <category>network</category>
      <category>security</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Lessons Learned: Wifi Server Disaster</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Wed, 28 Oct 2026 04:35:13 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/lessons-learned-wifi-server-disaster-16oc</link>
      <guid>https://dev.to/annavi11arrea1/lessons-learned-wifi-server-disaster-16oc</guid>
      <description>&lt;p&gt;So there I was, figuring out how to set up all my social media for branded automated posting. Pinterest requires a privacy policy link to do certain things. No problem. I have that. Or at least I thought I did...&lt;/p&gt;

&lt;p&gt;When I went to my site to grab the privacy policy link, it returned with some strange error I had never seen before. It was like 1003 or something like that. Complete and utter failure. Shocked, I reached for sentry (which I had been leaning on, of course) free tier used up. No more uptime monitoring enabled. I got too cozy. I go to the server,  it's on and running, and appears functional. After some quick digging,  I discovered it was wifi. The server was still running on wifi. I knew that, but I never experienced a disaster like this first hand.&lt;/p&gt;

&lt;p&gt;Why is it on wifi, you ask? The original intention was for poking around, learning, and other activities not intended for a production server. 😂 it has snowballed into something with a tiny heartbeat. ****&lt;/p&gt;

&lt;p&gt;Back to the why: it's sitting next to the switch that I have yet to configure. 2 switches actually. A juniper and a cisco. I am at a crossroads. The juniper would be free, but I was studying cisco. I started studying networking stuff but I've been very busy. And im not putting my desktop on wifi. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Want some sprinkles? The server is on the opposite side of the house, on a different floor, with lots of structure in between. I have 2 cat6a cables running down. We have about 25+ things that need internet, in that room alone. Have fun thinking about that.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Damnit! 😂 I wasn't ready yet! My plans have now changed. Tomorrow I attempt a network configuration. No one to hold my hand and walk me through the process here. Certain panic. Wish me luck. &lt;/p&gt;

&lt;p&gt;My server that I have been working so hard on had an unplanned 2 hour outage while I updated it in a panic. This must be what it feels like to work in cybersecurity. Panic panic everywhere.&lt;/p&gt;

&lt;p&gt;I have an actual big server (its old) but I haven't got it fully configured, and also I wanted my switch up. Its a big fat cycle of excuses. I can't continue like this. 😂😂😂&lt;/p&gt;

&lt;p&gt;I guess I have to be a baby system admin now. This was not a part of my original plan. I swear I spend more time fixing problems (that I created) than anything else. &lt;/p&gt;

&lt;p&gt;I fully updated my tiny server since it was already down, and turned off power saving. Its not enough, but if I'm lucky, I'll get a switch working tomorrow... maybe?&lt;/p&gt;

&lt;p&gt;I also learned I need a redirect page for when my server is down for maintenence. Basic stuff if you think about it. I am but a single junior dev, don't shoot. XD&lt;/p&gt;





&lt;p&gt;Side note: As I was explaining this to my significant other, first, his jaw dropped. Then, he busted out laughing because he said he was planning on "play with the wifi tomorrow." Then my jaw dropped. &lt;/p&gt;

&lt;p&gt;Disasters. &lt;/p&gt;

&lt;p&gt;Undoubtedly this should make for an interesting story, if nothing else.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwil9j7leam99ffrm27rx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwil9j7leam99ffrm27rx.png" alt="danger" width="799" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
    <item>
      <title>🏢 Ever Fluorescent: Project Plan and Debrief</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Mon, 26 Oct 2026 21:24:08 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/ever-fluorescent-project-plan-and-debrief-2i7c</link>
      <guid>https://dev.to/annavi11arrea1/ever-fluorescent-project-plan-and-debrief-2i7c</guid>
      <description>&lt;p&gt;&lt;em&gt;This is going to cover a lot, and I will do my best to keep it brief. Thank you for following the journey of an independent artist powering through the web. Small, but mighty. ⚡&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Last night I had one of those nights where my brain just refused to shut off, despite being tired. This is pretty rare for me, I like the peace that comes with sleeping, and the bed can be a very strong magnet.&lt;/p&gt;

&lt;p&gt;Before I fell asleep, I decided I was a project manager, and that my entire strategy needed a facelift. &lt;/p&gt;

&lt;p&gt;As solo developer, I leaned into claude to sort out my 9,000 thoughts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7edg2hffcjdlkf3u7rh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx7edg2hffcjdlkf3u7rh.png" alt="pikachu comes to realization" width="469" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🏹 Strengths: Creativity, drive, ideas, writing, communication, time management, learning, technical skills, inspiring others, general management, and life administration.&lt;/p&gt;

&lt;p&gt;⬇️ Weaknesses: Deviating from plans, emotions, self doubt, and other anxieties&lt;/p&gt;





&lt;h2&gt;
  
  
  👾 Claudinarian
&lt;/h2&gt;

&lt;p&gt;Something clicked in my brain last night. I thought to myself: “This project is so vast that I need A project manager and another developer so that I can run things.” 🤣I sat with that idea for a bit, feeling overwhelmed. I gave some thought to what my real issues were on a very deep and personal level. I reflected on my own existence.&lt;/p&gt;

&lt;p&gt;I decided to organize my thoughts with Claude, as is my go-to. I have become quite the claudinarian. Having messed with the “Projects” feature of claude before, the multi-agent bot with an orchestrator at the top, I knew the most appropriate manner to share my thoughts. I had previously gotten lost with this feature in the sub-bots and frequently lost my place and it was very confusing. Having that experience I knew I had to approach claude with targeted, specific and detailed requests. This way, claude would send a minion to do the bidding. Once that started, I could return to claude boss to place a new request. I think I’ve got it figured out now, I won't navigate to a minion and try to complete a project from a sub-agent (Guilty!)&lt;/p&gt;

&lt;p&gt;As each task completed, I had Claude build me and artifact for that area of focus. I was creating and collecting organized documentation for myself so I could build a legitimate project plan with enough work to keep me busy for literally weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it started
&lt;/h2&gt;

&lt;p&gt;The original plan was to optimize SEO, after having been absolutely devastated by my website performance (yes, I felt like a failure for a second “wow, how do I suck that bad? I try so hard!”) 😂&lt;/p&gt;

&lt;p&gt;In my previous post, I shared a redirect disaster created from years of doing things on the web for my business as a non-developer. I had made a giant mess for myself. I’m sure if I went to a 'professional' they would have said something like “Here is the rebranding plan for your new business…” not wanting to deal with my disaster. Good thing I started learning web development a few years ago! I have gained so many skills that will be useful for running my small business. Monumentally powerful and not something that too many CEOs can say they can do themselves. &lt;code&gt;Maniacal Laughter&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Side tangent again. 😂 &lt;code&gt;pivot&lt;/code&gt; Too many redirects in my brain.&lt;/p&gt;





&lt;h2&gt;
  
  
  First Task
&lt;/h2&gt;

&lt;p&gt;SO, I have boss claude and the minion claudettes doing some legwork. This is my team for the night. Before I created the first task, I did some personal research. After fixing the redirect problem, I investigated my accessibility features to keep it clean. (I had recently completed a formal webdev class and the accessibility stuff was fresh in my head). everfluorescent.com came out mostly good, but I created a To-Do list and added that to it. No big deal, I can handle that.&lt;/p&gt;

&lt;p&gt;With redirects created properly, canonical set as it should be and a decent user-friendliness score, I proceeded to run everfluorescent.com through multiple SEO checkers. They returned mixed results as expected. Here is some free ones I used that you may find useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SEOptimizer (Full audit)&lt;/li&gt;
&lt;li&gt;Open Graph Preview Tool (Found no share image)&lt;/li&gt;
&lt;li&gt;SEObility.net (Came back with on-page score of 87%)&lt;/li&gt;
&lt;li&gt;SavageAudit (85/100 overall - details locked)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Savage Audit is awesome even on the free tier. Look what it said 🤣&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpd1ozth4e0ab8ququapm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpd1ozth4e0ab8ququapm.jpg" alt="savage audit screenshot" width="800" height="1444"&gt;&lt;/a&gt;&lt;/p&gt;
Savage Audit







&lt;p&gt;I fed claude the data from all 4 sources, I told it to use it as a reference to build my plan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fngwz9jacxqd32vy4e62l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fngwz9jacxqd32vy4e62l.png" alt="It says my site is fine" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;
Lengthy document describing how to address remaining issues.







&lt;p&gt;This morning, I still had a bajillion tabs open and I noticed something. Before implementing the next wave of SEO optimization (not the first time I’m doing this), my average rank in searches was at position 5.3. 5.3!!!! That’s the first page of a Google Search! Boss.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3n7ucutr9x5q00xumnr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw3n7ucutr9x5q00xumnr.png" alt="search ranking is excellent" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;
If I'm doing a good job then what's the issue?




 

&lt;p&gt;My indexing is currently being fixed as well. As you can see from the chart below, the trends are now moving in the right direction. Redirects improving, proper canonical tag, and 404s have trended downward as well. This is excellent news. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc8kxzulwjpo6kvav7y90.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc8kxzulwjpo6kvav7y90.png" alt="undergoing indexing" width="799" height="340"&gt;&lt;/a&gt;&lt;/p&gt;
This is currently in process, but I can be patient.







&lt;h2&gt;
  
  
  Second Task
&lt;/h2&gt;

&lt;p&gt;Diving into the problem of reach is next. This is something that I am not surprised about. Due to personal reasons, I had basically ghosted all of my social medias for the last few years. This is a significant area of pain for my brand and shop. &lt;em&gt;(This was one of those situations where personal life disintegrated work life, I would always get compliments at live events, and it was very difficult to stop doing it.)&lt;/em&gt; I came up with a plan to create 365 days of unique content. Posting will be set to semi automatic. This will undoubtedly be a tremendous amount of work, but luckily I am mostly ready to take on the challenge. &lt;/p&gt;

&lt;p&gt;Before I do that I will collect all of my information from wherever it lives, and I will have lots of stories to tell and share with the world about my brand, experiences, and travels. I'm not sure what provoked me at midnight last night. Perhaps a small inner voice silently screaming: &lt;em&gt;"Move woman! You can cover a lot of ground quickly now!"&lt;/em&gt;&lt;/p&gt;





&lt;h2&gt;
  
  
  Third Task
&lt;/h2&gt;

&lt;p&gt;Rebranding and breathing life back into a business is no easy task, that is what the importance of the regular scheduled content creation is. The plan is to cleanup security and management features on all social medias (I did this a while back, but it's going to get rechecked and updated with a tedious checklist!) I will use an external free tool for scheduled content posting. (Metricool fits the bill at the moment) This way, I can rest assured that my brand and content is being shared without needing to take so much time out everyday for posting and managing social media. &lt;/p&gt;





&lt;h2&gt;
  
  
  24 hours of evidence!
&lt;/h2&gt;

&lt;p&gt;With some of the most severe issues addressed, It appears that I am already heading in the right direction! The chart does not lie. &lt;/p&gt;

&lt;p&gt;I just checked my Google analytics and here is the story:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8cr5p475ljj4s53blm06.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8cr5p475ljj4s53blm06.png" alt="Immediate impact after changes" width="604" height="298"&gt;&lt;/a&gt;&lt;/p&gt;
Results don't lie!







&lt;p&gt;Things are looking up, and we are getting back on the right track. I've still got a monumental amount of work to do, but one thing at a time. I don't want to get excited over some 'blip anomaly' and I'm going to watch it like an obsessed hawk for a while. &lt;/p&gt;

&lt;p&gt;Man, I'm so pleased to see that line finally peeled itself off the floor in google analytics!&lt;/p&gt;

&lt;p&gt;Thank you for sharing my excitement and reading my post! &amp;lt;3&lt;/p&gt;

</description>
      <category>startup</category>
      <category>webdev</category>
      <category>claude</category>
      <category>artist</category>
    </item>
    <item>
      <title>👻 The $249 Ghost Sale</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Sun, 25 Oct 2026 03:24:11 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/the-249-ghost-sale-12do</link>
      <guid>https://dev.to/annavi11arrea1/the-249-ghost-sale-12do</guid>
      <description>&lt;p&gt;&lt;em&gt;Before I get into it, I just want to say that my recent unemployment has left me a vast amount of tinkering time, which I very much enjoy. I have so much unfinished business and projects, I'm not even sure that I want to actively look for work right now. 😅 It is absolutely amazing to have some free time to work on things! I consider myself lucky to be in a position at the moment where I can (sort of 😅) afford to take a brief break from the working world.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;You know when you are working full time and doing all that life demands of you, it's nearly impossible to fully immerse your self in a bunch of little visions that sprout in your brain. You may try, but it's simply not the same as a full on investment. You start projects, have ideas, grand plans even. You start them, you get distracted, and they get placed on the back burner and fade into the sands of time. &lt;code&gt;dramatic ethereal sounds&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not this woman and not at this moment! 👻 So let's get to it, the ghost sales.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5dg80fyk39nqd6olns7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5dg80fyk39nqd6olns7.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Hat
&lt;/h2&gt;

&lt;p&gt;I asked claude to put on it's google analytics hat. Yes, I actually told it that. I sell blacklight reactive art, tapestries, and clothing. The designs come from my own paintings or graphic art. I recently built a Rails shop for it and run it on a tiny server at home. Sales were seriously lacking and I wanted to know what the best move was so I could get a few more sales.&lt;/p&gt;

&lt;p&gt;I connected my analytics and ad accounts to claude and asked the question: "given the historical data, what should I do?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm1pmqhee6hesyucxv10b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm1pmqhee6hesyucxv10b.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Confident Wrong Answers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;First Idea: Purchase tracking was broken because my Google Analytics tag lived on my old Shopify store. Wrong, the tag was on my real site, and was sending ecommerce events for weeks.&lt;/li&gt;
&lt;li&gt;Second Idea: My ads were sending people to the dead Shopify store. They were not, the ads pointed to the right place the whole time. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After these ideas were checked off the list, claude ran some checking of hostnames, page sources, and the actual code. This produced some monumental findings. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3mq01grmy2wpblh1425.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3mq01grmy2wpblh1425.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A customer placed a large order, and Google never saw it
&lt;/h2&gt;

&lt;p&gt;Google analytics was showing ZERO purchases, ever. I knew with my own eyes, discord alert bot, stripe dashboard, and bank account that this transaction did indeed happen. Someone had placed an order for about $249.&lt;/p&gt;

&lt;p&gt;😅 So for as long as this store has existed, Google Ads had been trying to find more buyers without ever being told what a buyer looked like. It was instead optimizing for add to carts, which, in October, also numbered zero.&lt;/p&gt;

&lt;p&gt;Here is my October: 675 visits 29 product views, and 0 add-to-carts. Claude stated exactly: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"People walked in, looked at the homepage like it was a museum lobby, and left."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My art can't possibly be that terrible. 😂😂😂 Without letting it eat away at my ego, I knew that I had unfinished business with Google Analytics, and that this storm was bound to happen. So I braced for the impending doom.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fperlod2jsvz0jgc1uesk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fperlod2jsvz0jgc1uesk.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Ads: 2 Accounts, one was empty
&lt;/h2&gt;

&lt;p&gt;Of my two Google Ads accounts, one had all the history. The other had nothing at all, just vibing out in the Google Analytics cosmos. 🕶️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzhwey5zjr75xaip9w6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzhwey5zjr75xaip9w6a.png" alt="snippet of claude artifact" width="799" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fstm1vm70g6ov3uk4cvn0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fstm1vm70g6ov3uk4cvn0.png" alt="is this why I'm broke meme" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fie61l3pmatpnnhs8w9gs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fie61l3pmatpnnhs8w9gs.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Graveyard of dead links 🪦
&lt;/h2&gt;

&lt;p&gt;I've been selling online for years. The Shopify and Etsy links were still out in the wild wreaking havoc on my ads performance. &lt;/p&gt;

&lt;p&gt;This included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facebook Posts&lt;/li&gt;
&lt;li&gt;Google results&lt;/li&gt;
&lt;li&gt;a dev.to article&lt;/li&gt;
&lt;li&gt;Instagram&lt;/li&gt;
&lt;li&gt;Snapchat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analytics logged 155 different old paths getting visits, each resulting in a 404. &lt;code&gt;dies, rolls over, and dies a second time&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;--&amp;gt; Side Tangent: You can connect claude to supermetrics and use a free trial. That was a saving grace for someone new to Google Analytics. Highly recommend, they have a free trial! &lt;/p&gt;

&lt;p&gt;Claude built me a redirect map with 191 entries. Old products go to their new pages. A retired bikini goes to a search for bikinis. Old policy goes to new policy. Every link was checked against the live site.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;click http://shop.everfluorescent.art/products/winged-cat-fleece-hoodie-mens-fleece-full-zip-hoodie-model-h60
301   https://www.everfluorescent.com/products/winged-cat-fleece-hoodie-mens-fleece-full-zip-hoodie-model-h60
301   https://www.everfluorescent.com/products/winged-cat-fleece-hoodie
200   a hoodie, at last
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I had to make a detour to the domain registrar. The first forwards were 'temporary' and 'don't include the path,' so all the old links landed on the homepage. Back to the museum lobby. Then I discovered an expired SSL certificate which expired on October 9th. It's supposed to be renewing at the moment. 😂&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9mdfu9ggmfn5nogahbcf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9mdfu9ggmfn5nogahbcf.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Production running a feature branch, and other confessions
&lt;/h2&gt;

&lt;p&gt;I'm just going to drop a screenshot, the artifact frames it beautifully. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tpdic7tzx47yxtomg0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tpdic7tzx47yxtomg0x.png" alt="What have I done" width="800" height="1019"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...in my defense the aftermath of having too much unfinished business! 😅🤣&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkdi98stlj7kfycf1xum.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkdi98stlj7kfycf1xum.png" alt="divider" width="790" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  End of Day Summary 10/24/2026
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Old links that now go somewhere&lt;/td&gt;
&lt;td&gt;191&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Products ready for Google Shopping&lt;/td&gt;
&lt;td&gt;340 items&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Purchases Google can now actually see&lt;/td&gt;
&lt;td&gt;All of them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ad campaigns I paused by accident&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confidently wrong diagnoses&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commands I typed that the AI didn't suggest, which worked&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mystery ad accounts still at large&lt;/td&gt;
&lt;td&gt;Maybe 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;





&lt;h2&gt;
  
  
  No guilt or shame, just slight embarrassment.
&lt;/h2&gt;

&lt;p&gt;I have only myself to answer to. I have definitely wasted money. All the more reason to hold myself accountable for fixing it. I guess I didn't realize how wild I made things, having Etsy shops and Shopify's from 2019. You have to clean up all your old stuff. The big lesson here I learned is just that. I spent so much time trying to create a brand presence online that I polluted the web with broken links and old paths. &lt;/p&gt;

&lt;p&gt;That very behavior was sending potential customers to repeated 404 pages, and for that, I feel slightly unnerved albeit comedic for the reader. This is me being as transparent as possible in my journey. &lt;/p&gt;

&lt;p&gt;If you recently visited one of my links and got a 404 I would encourage you to try again, and let me know how bad my work is tomorrow. 🤣 Thanks for reading my drama, everyone. &lt;/p&gt;

&lt;p&gt;&lt;small&gt;** I used snippets of an artifact I had Claude create for me after this experience to help me write this post. Some things were re-written from the artifact and somethings are my own unique thoughts.&lt;/small&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>webdev</category>
      <category>rails</category>
      <category>analytics</category>
    </item>
    <item>
      <title>👾 Nested Bookmarks Organizer for Chrome w/Custom Ticker</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Sat, 24 Oct 2026 14:37:39 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/nested-bookmarks-organizer-for-chrome-wcustom-ticker-267p</link>
      <guid>https://dev.to/annavi11arrea1/nested-bookmarks-organizer-for-chrome-wcustom-ticker-267p</guid>
      <description>&lt;p&gt;✨ Finally, some positive excitement! ✨&lt;/p&gt;

&lt;p&gt;I went on a tiny mission last night to build something I wanted for myself. I was inspired by seeing a space theme on someone's browser in a tutorial and thinking, "I am a developer, I want a cool browser!"&lt;/p&gt;





&lt;h2&gt;
  
  
  🔎 What I Found
&lt;/h2&gt;

&lt;p&gt;It just so happens that space is generally my favorite theme. Feeling inspired, I found a cool theme in the chrome store. I generally avoid extensions but was feeling strongly about this one.&lt;/p&gt;

&lt;p&gt;Between Google chromes sidebar/group coloring and the space background, I was starting to feel more at home. But that was just the beginning. &lt;/p&gt;





&lt;h2&gt;
  
  
  👷‍♀️ What I Did
&lt;/h2&gt;

&lt;p&gt;Then I remembered my chaotic array of bookmarks. I really wanted to manage them better, with nested folders and groups, as is the tried and true method in general. There were a few options available on the chrome webstore, but nothing that was truly motivating. &lt;/p&gt;

&lt;p&gt;I wanted to hold onto a space/cyberpunk theme so I would love it. Using Claude Opus 5.5 I was able to get the extension loaded and bookmarks organized quickly. I was shocked at the sheer speed I was able to pull this off. Within that same time frame, I realized I had gained a tremendous amount of space at the bottom of my bookmarks organizer. What is this foreign land? 😂 I thought to myself It would be really cool if I had a ticker with updates from sources that matter to me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa2c76e4ja42rw690js69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa2c76e4ja42rw690js69.png" alt="Preview of browser with extension" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;
Making the browser an artisan workspace.







&lt;h3&gt;
  
  
  Connecting Ticker Feeds
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I had Claude pull data from DEV from my notifications, and the same method 'unofficially' works for linked in. &lt;/li&gt;
&lt;li&gt;I added a server activity ticker. I had already implemented a traffic analysis tool prior, building off of Goaccess server logs and fail2ban. So this was an easy setup. That being the case I still learned about &lt;code&gt;symlink&lt;/code&gt; (symbolic links) which is a special pointer that references another drive or partition on another device. So cool! I always wanted that! 😂 So I fed my server notifications to my browser ticker with a symlink. &lt;/li&gt;
&lt;li&gt;To see recent sales on my store, I simply integrated stripe with a heavily restricted API key. This helps ensure I can act quickly for a customer. This pairs well with my discord notification bot. I am usually in my browser or in discord, so no excuses! 😂&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F75r67k00af1p8qhj5kz1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F75r67k00af1p8qhj5kz1.png" alt="custom ticker" width="767" height="224"&gt;&lt;/a&gt;&lt;/p&gt;
Close-up image of the ticker.







&lt;p&gt;Originally a tabbed interface, I switched it to a stacked layer view so I can see updates in real time with a glance. I LOVE that.&lt;/p&gt;

&lt;p&gt;Beautifully nested folders in a cyberpunk UI with drag-and-drop and label editing, a personalized ticker, and a space background! I am feeling much more in the element and overall please with the situation. I will undoubtedly add more tickers for interesting things as I go through time. But this is a fabulous improvement. &lt;/p&gt;

&lt;p&gt;What cool browser creations have you made? Please share below! &lt;/p&gt;

&lt;p&gt;I have a template repo up for anyone that might be interested. (If you find it useful could you leave me a star? 😂)&lt;/p&gt;

&lt;p&gt;I made sure I templated the project this time and added an MIT license. I think I covered everything this time? +1 XP? 🤣 &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnnaVi11arrea1" rel="noopener noreferrer"&gt;
        AnnaVi11arrea1
      &lt;/a&gt; / &lt;a href="https://github.com/AnnaVi11arrea1/cyber-bookmarks" rel="noopener noreferrer"&gt;
        cyber-bookmarks
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A much cooler way to keep track of the information you deem important right in the chrome browser.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;NEURAL//LINKS — Cyberpunk Bookmarks&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A neon side-panel bookmark manager for Chrome, with an optional &lt;strong&gt;Signal Feed&lt;/strong&gt; that pulls in your LinkedIn and dev.to notifications, Stripe sales, and security alerts from your own Linux server.&lt;/p&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/154029176/683618754-d0fe5196-ba1f-496e-86f6-2c4af3a4bdd8.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5MzYyMTksIm5iZiI6MTc5MjkzNTkxOSwicGF0aCI6Ii8xNTQwMjkxNzYvNjgzNjE4NzU0LWQwZmU1MTk2LWJhMWYtNDk2ZS04NmY2LTJjNGFmM2E0YmRkOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxMzQ1MTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kZGQzNDAyMjQ1N2U1YTVhNWZhODBhMWEzNWYyYzM4MjM3ZGZlMTVlM2JiYjc4M2MyN2QwYjAwYzQ2NTQ3OGM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.gOFBNyep-wDZPEgxUSSs0ZrURZAPLNB2ukFeHiiGfd0"&gt;&lt;img width="761" height="517" alt="preview of extension" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F154029176%2F683618754-d0fe5196-ba1f-496e-86f6-2c4af3a4bdd8.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3OTI5MzYyMTksIm5iZiI6MTc5MjkzNTkxOSwicGF0aCI6Ii8xNTQwMjkxNzYvNjgzNjE4NzU0LWQwZmU1MTk2LWJhMWYtNDk2ZS04NmY2LTJjNGFmM2E0YmRkOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYxMDI1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MTAyNVQxMzQ1MTlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kZGQzNDAyMjQ1N2U1YTVhNWZhODBhMWEzNWYyYzM4MjM3ZGZlMTVlM2JiYjc4M2MyN2QwYjAwYzQ2NTQ3OGM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.gOFBNyep-wDZPEgxUSSs0ZrURZAPLNB2ukFeHiiGfd0" class="js-gh-image-fallback"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bookmarks in the side panel.&lt;/strong&gt; Drag to reorder, drop onto a folder to nest it, and group items into folders with Ctrl/Shift+click and then &lt;strong&gt;⧉ GROUP&lt;/strong&gt; (Ctrl+G). Right-click an item for more options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full-screen view.&lt;/strong&gt; Click &lt;strong&gt;⤢&lt;/strong&gt; to open the same tree in a tab.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal Feed.&lt;/strong&gt; It checks every 5 minutes and shows new items as a badge count on the toolbar icon. It can also send desktop alerts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your real bookmarks.&lt;/strong&gt; It edits Chrome's own bookmarks, so changes sync wherever Chrome sync does.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install the extension&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Download or clone this repo.&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;chrome://extensions&lt;/code&gt; and turn on &lt;strong&gt;Developer mode&lt;/strong&gt; (top right).&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Load unpacked&lt;/strong&gt; and select the project folder (the one with &lt;code&gt;manifest.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnnaVi11arrea1/cyber-bookmarks" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Generally, to get this effect, I had to build on top of Googles pre-existing bookmarks since that cannot be changed. So this bookmarks interface is an extension that build on top of what already exists - not a replacement. This is a solid way to manage things in a lightweight manner.&lt;/p&gt;

&lt;h3&gt;
  
  
  Space Explorer Mode: Activated! 👾⚡
&lt;/h3&gt;

</description>
      <category>webdev</category>
      <category>themes</category>
      <category>customization</category>
      <category>browser</category>
    </item>
    <item>
      <title>Understanding What AI just Created in the 500mph Landscape</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Fri, 23 Oct 2026 15:59:05 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/understanding-what-ai-just-created-in-the-500mph-landscape-1m52</link>
      <guid>https://dev.to/annavi11arrea1/understanding-what-ai-just-created-in-the-500mph-landscape-1m52</guid>
      <description>&lt;p&gt;&lt;em&gt;How to understand what AI wrote: For beginners!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8uoxvnel8b57el6xn6kr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8uoxvnel8b57el6xn6kr.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Avoid lack of dopamine, mental atrophy, and other terrible things
&lt;/h3&gt;

&lt;p&gt;You spin up a simple website quickly, and you want to understand what is actually happening, because you feel your sharpness drifting away in a sea of automation. What can be done? Here is one simple method I found that works for me: The simple comment.&lt;/p&gt;

&lt;h4&gt;
  
  
  Ask yourself some questions:
&lt;/h4&gt;

&lt;p&gt;Can you go through the AI generated code line by line and understand what it is doing? Sure. But you have not really gone through it, have you? To really understand code, one must sit with it, digest it, and go on to the next part having the knowledge of what is happening so far. That investigative understanding is the part I feel many of us are missing. As a self proclaimed junior-ish developer, I miss the satisfaction of knowing I understand what just happened, and why it is working. I am certain developers of all experiences are feeling this now, based on the articles I have been reading.&lt;/p&gt;

&lt;h4&gt;
  
  
  🛏️ Anti-laziness movement
&lt;/h4&gt;

&lt;p&gt;Now, I could have just committed the damn file, I knew it worked and was simple javascript. But this did not resonate well with me. Not this time. I went on a little side mission of commenting on every single line, explaining what each line was doing. I can tell you, I feel much better about it after doing so. Sure, it took 10 times as long. But who cares? I have a hamburger menu I can explain and share with others that are trying to learn. Do not auto-tab the comments or have AI write you comments that you are not going to read, that defeats the purpose. Type them out. Allow typos. Make mistakes. Above all... Learn!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7peh0qmruk5lkyuna2a4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7peh0qmruk5lkyuna2a4.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Start with something simple
&lt;/h3&gt;

&lt;p&gt;I dissected a simple hamburger menu, something that I am slightly obsessed with. Can we just appreciate the simple magnificence for one second?&lt;/p&gt;

&lt;p&gt;=￣ω￣=&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsuhormayz7rlkfsyg4fi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsuhormayz7rlkfsyg4fi.png" alt="Hamburger menu displays on small screens" width="453" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These have been around for ages and I am certain many of us use borrowed code or let AI do it. But what are we missing actually? I built a mockup website for a pretend business with simple HTML and CSS. Then I added javascript, admittedly my Achilles heel. An overwhelming amount of frameworks and cutting edge technologies leaves someone that is trying to learn in complete disarray. I had Claude write me up a hamburger menu that shows on small screens using vanilla javascript.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjdysn85go6dd90yle4gi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjdysn85go6dd90yle4gi.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pause before going forward
&lt;/h4&gt;

&lt;p&gt;At this point I hit the breaks, and dissected the javascript. By slowing down and creating space for learning, a certain level of satisfaction and pride is returned to our work. Your coding experience does not always have to feel like: &lt;em&gt;"Ahhhh! 500mph everything - new tech - no idea - must make work and do it fast!"&lt;/em&gt; This my friends, is the fast track to burnout, especially for those just beginning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0vpbt40iw3x4wcsjqbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0vpbt40iw3x4wcsjqbn.png" alt="Adding in the comments" width="799" height="325"&gt;&lt;/a&gt;&lt;/p&gt;
The comments will help walk us through the heavy lifting of understanding what is happening in our code.



&lt;h4&gt;
  
  
  What it is actually doing:
&lt;/h4&gt;

&lt;p&gt;For browsers that have javascript enabled, it creates the hamburger menu and a multi-select dropdown so users can select more than one event at a time. Small things like this, give us a real appreciation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn52aw3pujwrcuvw0sjbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn52aw3pujwrcuvw0sjbv.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ✨ Learning - Do not skip this part if you can find time
&lt;/h3&gt;

&lt;p&gt;What I learned:  does not support multi dropdown options, highlighting the use case of javascript here. What if I am a new user and want information on three events? Submitting 3 separate inquiries clogs up the whole user-support pipeline! Eww. However, it is good to know that in the edge case where users may have javascript disabled, they will still be able to select at least one option from the dropdown, allowing them to at least select something from the available options. That is a nice little built-in fall back feature!

Here is the full javascript I used for the hamburger menu and navbar UI components. Of course you will need some CSS and HTML So I’ve stripped down the website to bare bones for demonstration purposes only. Been a minute since I used codepen!

There are alot of comments, I reccommend going to codepen and making your screen super wide. 🤣

&lt;/p&gt;


&lt;iframe height="600" src="https://codepen.io/editor/AnnaVi11arrea1/embed/01a16932-e06b-7aaf-90b8-ba1165e2a823?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;



Everyone is of course welcome to use my example. No need to ask. 👾 The point of all of this is that the root of our satisfaction comes from knowing why things are working and understanding on a deep level. I have never had a project manager, but I would have to say I'd be better equipped to explain things to others in ways they can understand if I understand technically speaking, the whys and the wherefores of what is possible, or not.


</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>🌑 Blue October</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Fri, 16 Oct 2026 15:44:45 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/blue-october-1jia</link>
      <guid>https://dev.to/annavi11arrea1/blue-october-1jia</guid>
      <description>&lt;p&gt;TLDR: A brief summary of how I got here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyzkmume67kjrw6exghgo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyzkmume67kjrw6exghgo.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mindset
&lt;/h2&gt;

&lt;p&gt;For the last 3 years, I have been learning tech. It started with feeling tired of working at dead end jobs. The trigger was asking myself "How bad could it be if I just tried to learn programming?" &lt;/p&gt;

&lt;p&gt;This mindset was around 2023 when I was working at a printing company doing graphic mock-ups for clients and reviewing installer plans, among other things. I was good at this but it was very boring and the smell from acrylic being cut by lasers periodically gave me frequent headaches and made me feel nauseous. I had additional stresses going on in my life that made me feel, to put it lightly, not so great. &lt;/p&gt;

&lt;p&gt;I ended up quitting that job because my performance started to tank, and I knew it. I would be sitting at my desk and trying very hard to hold back my emotions. I quit, and a month later I had an emergency surgery. While laying on the couch post-surgery and unable to basically walk around for a month, I decided my laptop was my new best friend. 💻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3r7cesefc0dzbilwv8fn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3r7cesefc0dzbilwv8fn.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Student
&lt;/h2&gt;

&lt;p&gt;I approached programming like an academic - researching schools, bootcamps, salaries, potential wages, life-work balance, and job outlook. Making the conscious decision to learn programming in the post-pandemic landscape was not a venture for money, but of personal curiosity. If I must work, I want to do something I actually like and find interesting. A long, long time ago, in a galaxy far away, I had taken an interest in the programming classes offered at my high school. Of course, back in 2005 with myspace near its peak, I thought I was some king s*** styling my page with HTML and CSS. I wanted to have what all the other cool people had, so I figured out how to do it myself. IT WAS SO COOL 😂&lt;/p&gt;





&lt;h3&gt;
  
  
  Unique Experiences
&lt;/h3&gt;

&lt;p&gt;Anyways, I got away from all that. I pursued art and nutrition at the university. I was inspired to become a video game creator/3D model artist after taking some not-for-credit classes at the Academy of Art in San Francisco as a teenager. I absolutely loved that experience. I remember the game design teacher, a large man with a ponytail. He commented on my stature since I was in wrestling in high school for a while and had continued to maintain physical fitness in the years the followed. For a large chunk of my teenage and younger adult life, I was very physically fit, and unafraid of humans in general. &lt;/p&gt;

&lt;p&gt;That same summer, living with my sister, I got to experience san-fran through teenager eyes. I visited amazing restaurants, like "The Stinking Rose" - a garlic based restaurant where I had probably the best roasted garlic I will ever eat in my life. My sister was also into wellness, and she took me to some edgy meditation classes. I'll never forget seeing the people sitting around me, covered in tattoos and piercings, the most metal-head looking people you ever saw, sitting peacefully on cushions on the ground leading a meditation. This group is still around, they are called Dharma Punx. I highly recommend checking them out &lt;a href="https://www.againstthestream.com/dharma-punx-merch/dharma-punx-book" rel="noopener noreferrer"&gt;Dharma Punx&lt;/a&gt;. I am far removed but it's on my agenda at some point to visit them again. &lt;/p&gt;





&lt;h3&gt;
  
  
  High School Frustrations
&lt;/h3&gt;

&lt;p&gt;I think it was probably that same year returning to the high school where I had another interesting experience. There was a girl at the high school that would always, always, ALWAYS make fun of me and she would get her friends on board making fun of me. I was never sure why, I never did anything to her. She didn't like me when I made my move from the nerd table to the goth table after obtaining a boyfriend. Retrospectively she may have been jealous. But I didn't see that. I saw hate, accusations, lies, and repeated embarrassment. She was pretty bad. Everyday, I couldn't sit at that table without getting hated on. Of course I did it for love. A cute boy liked me, I must persevere. What stupidity. After months of this, one day at the lunch table she said something that totally triggered me. I think it had to do with my boyfriend pretending to like me or repeated name calling. &lt;/p&gt;

&lt;p&gt;Whatever the case, a storm was brewing inside my hormone-fueled teenage body. Something inside of me snapped. I quite literally hunted her down in the hallway. She had no idea I was coming for her. I found her, slammed her to the ground and drew back a fist. I looked her straight in the eye pinning her down with the other hand. I said absolutely nothing. I thought with every cell in my body I was going to knock her out. &lt;/p&gt;

&lt;p&gt;A tiny voice inside me held my fist back: "She is weak, and she is not actually trying to kill you." Frustrated, I let her go. I think the knowledge of knowing what I could do was enough for me. But as soon as let her go, I picked her up and literally threw her in a garbage can. (She remained physically unharmed.) Everyone was watching at this point. I was generally quiet, and probably shocked a few people. I was suspended for a week. It was awesome. I felt like I had proven a point after years of bullying. I was high on pride and my mom bought me DDR and some of those flexible dance pads, and I played DDR the whole week staying home "suspended". My dad told me he was proud of me after I explained myself. That meant a lot. Those were not words I heard a lot. He is an engineer, and is very intelligent. I never felt the need to do such a thing ever again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trying Things
&lt;/h3&gt;

&lt;p&gt;Let me circle back. I tried a few things at the university, with interests in illustration, green engineering, meteorology, graphic design, and nutrition. I changed my major so many times I was lucky I graduated at all. My problem is that I like everything, because everything is interesting. It has been a real problem. Top that with a people pleasing personality for many years and I was basically lost and confused. &lt;/p&gt;

&lt;p&gt;After I graduated I discovered electronic dance music and got heavy into the festival scene. So much so that I started a vending business called Ever Fluorescent where I would sell my art and clothing at festivals around the nation. This was a main stream of income for a while. It's still alive, but on the back burner at the moment. The unpredictable nature of income generated from festivals makes it extremely difficult for a solo artist to budget life expenses. So, needing structure, I started working regular full time jobs. Starting with that printing factory I mentioned earlier. &lt;/p&gt;

&lt;p&gt;That's a whole lot of life summarization compacted very small. Now that you know I didn't just randomly arrive here, I can continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw4vzbooz3brygin631qd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw4vzbooz3brygin631qd.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Recent Timeline
&lt;/h2&gt;

&lt;p&gt;I think a timeline would work here. 📈&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Late 2023 - Started relearning HTML and CSS&lt;/li&gt;
&lt;li&gt;Very early 2024 - Explored JavaScript&lt;/li&gt;
&lt;li&gt;Spring 2024 - Found and Applied to Full Stack Web Dev Apprenticeship&lt;/li&gt;
&lt;li&gt;Summer 2024 - Studied Ruby/Rails&lt;/li&gt;
&lt;li&gt;Fall 2024 - Started Apprenticeship&lt;/li&gt;
&lt;li&gt;Winter 2024 - Completed Apprenticeship&lt;/li&gt;
&lt;li&gt;Early 2025- Completed Google IT Support Cert&lt;/li&gt;
&lt;li&gt;Spring 2025 - Worked temporarily as TA at University of Chicago, then got first part-time IT job&lt;/li&gt;
&lt;li&gt;Winter 2025 - Received an offer for fulltime work doing IT elsewhere&lt;/li&gt;
&lt;li&gt;Early 2026 - Hired full time as building tech for a middle school&lt;/li&gt;
&lt;li&gt;Currently - Unemployed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxijp38zulhqzhw31nwxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxijp38zulhqzhw31nwxl.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Status
&lt;/h2&gt;

&lt;p&gt;Through all of these changes I have also been pursuing classes for a second bachelors in computer science. I have even taken a few masters level classes. This would be my second bachelors. I have also been studying CCNA topics on the side. After being let go from my previous job after nearly a year, I have been left feeling defeated despite trying my hardest. I started this tech journey wanting to simply be a web developer. With the current state of things - post pandemic layoffs, AI, fierce competition - I sometimes feel like I waste my time.&lt;/p&gt;

&lt;p&gt;Frustrated, I try to reframe my thinking. That is part of the reason why I thought studying CCNA topics would be a good idea. This way, I can have a deeper general understanding of things and why they are the way they are. I went so far as to buy multiple books and networking equipment to aid the journey, as I am a fan of tangible items. The news of losing my job that I was trying so hard at has left me in a turbulent emotional state. I did the only thing I know I could do - find a distraction. This time, that distraction is HTB. Why this choice, you may ask. Well, as any developer would likely do, I ran to Google for some counseling. I simply asked it: "Would knowledge of penetration testing help me find a job as a developer?" I'll let you hypothesize what the answer was. As someone who appreciates a good rabbit hole, this is both a blessing and a curse. &lt;/p&gt;

&lt;p&gt;I cannot say for sure where I am going, but I can tell you that I will get there in an unrelenting manner, persevering in the darkness with no compass, and no flashlight. Yesterday I learned what a .ko file was after asking "What is ELF&amp;gt;?" &lt;/p&gt;

&lt;p&gt;There is a humongous unexplored world hiding right in front of me. 😮 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk48qvaz3gjp4cgx8e3qu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk48qvaz3gjp4cgx8e3qu.png" alt="divider" width="793" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>💅 Keyboard Makeover</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Sun, 11 Oct 2026 02:25:47 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/keyboard-makeover-i6a</link>
      <guid>https://dev.to/annavi11arrea1/keyboard-makeover-i6a</guid>
      <description>&lt;p&gt;I have had this interesting piece of psychedelic looking vinyl for some time. Today I finally found a use case for it. I turned a regular keyboard into a way more fun and exciting one. &lt;/p&gt;

&lt;p&gt;I shared my general process and supplies in the video if anyone wants to try! It's a super affordable way to make your space feel more like yours. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F76lnrjsolg9ta0v9eadt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F76lnrjsolg9ta0v9eadt.jpg" alt="Fun Keyboard" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd also love to see anyone else creations!&lt;/p&gt;





&lt;h2&gt;
  
  
  Update: 10-16-2026
&lt;/h2&gt;

&lt;p&gt;Some women like flowers, some women like jewelry, but you know he loves you when he buys you CNC cut metal keys for your keyboard! I am obsessed with the the see-thorough edges that let the led light shine through. My keyboard is starting to feel like a cyberpunk festival. Where psychedelic meets industrial is sort of my vibe. Artists like&lt;br&gt;
&lt;a href="https://samuelfarrand.com/?srsltid=AU7gw4VuRVGXolJ7HIyvcaDbN5inB3A3EHhlQ0W6EK_n414IgW4VPdzs" rel="noopener noreferrer"&gt;Samuel Farrand&lt;/a&gt; and &lt;a href="https://brizbazaar.com/" rel="noopener noreferrer"&gt;BrizBazaar&lt;/a&gt; have been inspirations to me for some time.&lt;/p&gt;

&lt;p&gt;Anyways, update photo time! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F04xehp9gnsaidr5rl765.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F04xehp9gnsaidr5rl765.jpg" alt="metal keycaps" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love it so much! It's some sort of aluminum/steel alloy and they came in a cool little carbon fiber box. A cool surprise I did not expect, was a new tool. I'm not sure what it's called so I guess i'll refer to it as a 'key-grabber'. 😂&lt;/p&gt;

&lt;p&gt;Here is the new kit details in photos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5timcdelqbrvp8nj58qb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5timcdelqbrvp8nj58qb.jpg" alt="metal keycap kit with key grabber" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftoblwkcuiiehdublh9m1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftoblwkcuiiehdublh9m1.jpg" alt="key grabber demo" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, I wanted to let everyone know that the vinyl is holding up well despite my best efforts to power through a HTB module. (Post incoming LOL) Sides staying down, no peeling, vinyl staying put!&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>craft</category>
    </item>
    <item>
      <title>⚡ Proprietary RJ50 Cable Reveals the Truth ⚡</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Wed, 07 Oct 2026 01:19:17 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/proprietary-rj50-cable-reveals-the-truth-5dlc</link>
      <guid>https://dev.to/annavi11arrea1/proprietary-rj50-cable-reveals-the-truth-5dlc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Follow-up Post
&lt;/h2&gt;

&lt;p&gt;Previously I wrote about my experience where I built an app for my dad to analyze our home power use. You can read about that here:&lt;/p&gt;


&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg" class="crayons-story__hidden-navigation-link"&gt;⚡ Dad Complains About Electric Bill, So I Built Him an Energy Dashboard and Found the Panels Lied ⚡&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/annavi11arrea1" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1467610%2F3e4ce925-fffd-4643-9aae-8ee77cf01828.png" alt="annavi11arrea1 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/annavi11arrea1" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Anna Villarreal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Anna Villarreal
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
                &lt;img alt="Community Curator" class="community-leader-icon" src="https://assets.dev.to/assets/community-leader-icon-b72c9e74eff54916e5c46c962f47ba40c9f611a71f8b157511f9613f69c0001b.svg"&gt;
              
              &lt;div id="story-author-preview-content-4798737" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/annavi11arrea1" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1467610%2F3e4ce925-fffd-4643-9aae-8ee77cf01828.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Anna Villarreal&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 5&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg" id="article-link-4798737"&gt;
          ⚡ Dad Complains About Electric Bill, So I Built Him an Energy Dashboard and Found the Panels Lied ⚡
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;21&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            7 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;But for this post... Ahhh, &lt;em&gt;this&lt;/em&gt; post...&lt;/p&gt;

&lt;p&gt;My proprietary wire has arrived and and my UPS has been communicating to my computer since yesterday. &lt;/p&gt;

&lt;p&gt;First I want to explain Mr. RJ50, and how I got here. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanna give dad the run down on my personal electrical consumption, so I can dismiss myself from being soley responsible for the high electric bill. Was there ever a greater force? 😂&lt;/p&gt;

&lt;p&gt;I don't have a nice streamlined method in place for collecting electrical usage around the house. That changes now. With the most important reading first: my personal desktop. 😂 As any inquisitive person would do, I take a peek at the back of my UPS, knowing I saw some suspicious ports back there at one point. Upon researching, I discover that the only usable port on my UPS for my use case is the specific data port. Now, this port, has secrets. It looks like you can just pop an ethernet cable in and your good to go. I tried that, and no. The answer is no. 😂 Don't do what I did. &lt;/p&gt;

&lt;p&gt;It is better to accept that you need a proprietary cable that is not sold in your nearby big-box box retailer or same-day on amazon. You must &lt;em&gt;wait&lt;/em&gt; for your wire to arrive. SUCH impatience. Come to terms with that now. I nearly threw a fit like a child when I found out I couldn't have my wire in .5 seconds (Not the first time, or even the second, probably not the last). Somewhere between proprietary cable 2 and 3, you accept that you are a bonified techie. Look, I was so close to trying to solder my own wire so I could be proud of it, but then I discovered, that will likely not work. I was forced to buy one. All of this drama, to excuse myself of the mental burden of the electric bill. Woe is me and my $15 proprietary wire. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsyrj9kl84v2jpwesn39x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsyrj9kl84v2jpwesn39x.gif" alt="Drama"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me explain Mr. proprietary RJ50 in comparison with our standard RJ45:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;RJ45&lt;/th&gt;
&lt;th&gt;RJ50&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Common configuration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8P8C&lt;/td&gt;
&lt;td&gt;10P10C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Contact positions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typical application&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ethernet networking&lt;/td&gt;
&lt;td&gt;Specialized equipment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typical wiring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;T568A or T568B&lt;/td&gt;
&lt;td&gt;Usually device-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Common equipment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Routers, switches, computers and cameras&lt;/td&gt;
&lt;td&gt;Scanners, POS terminals and controllers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Standardization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Highly standardized for Ethernet&lt;/td&gt;
&lt;td&gt;Often proprietary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Directly interchangeable&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;RJ50 is wider, has a different pinout, and is often proprietary. Not only did I need RJ50, but I needed the other end to terminate as some sort of USB to connect to my desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the special wire:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmiddh2gyeancnmnj1fij.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmiddh2gyeancnmnj1fij.jpg" alt="RJ50"&gt;&lt;/a&gt;&lt;/p&gt;
Finally, I hold the proper wire in my possession







&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpd8s1ob08246fx3tm2to.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpd8s1ob08246fx3tm2to.jpg" alt="RJ50 plugged into UPS"&gt;&lt;/a&gt;&lt;/p&gt;
RJ50 snuggly clicked in its proprietary hole



&lt;p&gt;Bam. Data! Ok no, its not that simple. 😂&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmosr7t04n0xr5e2gg6f3.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found some open source software to give me a neat presentation on my desktop initially. That looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F21byxo015evq9mja2589.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F21byxo015evq9mja2589.png" alt="open source software"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have an APC UPS and would like to try this yourself, I will share that I used the open source software found at &lt;a href="https://sourceforge.net/projects/apcupsd/" rel="noopener noreferrer"&gt;Sourceforge&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;After I got that working, I was able to use the data from that and pull it back into my custom solar panel app where I put an entry at the bottom. That looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzgbd0synzo7mmb0ij27i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzgbd0synzo7mmb0ij27i.png" alt="Not Guilty"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, my average responsibility for my workstation is $22 a month. And that's without taking into consideration energy generated from solar panels. Considering the current home use and solar panel production for this time of year  (solar panels covering 41% of energy needs in their current state) This makes my contribution to the electric bill (from my workstation, the area in question, of course "all that stuff in the basement" 😂) a whopping $13 at best. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqljn1zu2p5in26uf0v7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feqljn1zu2p5in26uf0v7.png" alt="dabbing unicorn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fksvad28j6vdrdf486qbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fksvad28j6vdrdf486qbg.png" alt="divider"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hardware</category>
      <category>rj50</category>
      <category>powergrid</category>
      <category>iot</category>
    </item>
    <item>
      <title>⚡ Dad Complains About Electric Bill, So I Built Him an Energy Dashboard and Found the Panels Lied ⚡</title>
      <dc:creator>Anna Villarreal</dc:creator>
      <pubDate>Mon, 05 Oct 2026 03:20:58 +0000</pubDate>
      <link>https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg</link>
      <guid>https://dev.to/annavi11arrea1/dad-complains-about-electric-bill-so-i-built-him-an-energy-dashboard-and-found-the-panels-lied-3jhg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;My dad recently complained about how high the electric bill was. Most of us know the feeling: the impending doom of being the culprit, because you're the "computer person." (We'll see about that, Dad!)&lt;/p&gt;

&lt;p&gt;So I set out on a mission to prove I was not the sole contributor to the high electric bill, and I built my dad a resource to actually understand it. It turned into much more than a re-skinned utility app. It pulls together:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live data from our solar panels&lt;/strong&gt;, straight from the Enphase gateway on our home network, every minute, down to each individual panel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Problems list&lt;/strong&gt; that flags dead microinverters, panels producing less than their neighbors, expiring tokens, and big jumps in home usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Government data on what our roof &lt;em&gt;should&lt;/em&gt; produce&lt;/strong&gt;: PVWatts, a model from the U.S. national renewable energy lab, drawn as markers on the monthly chart so we can see if we're falling short&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Our actual electric bills&lt;/strong&gt; from ComEd, combined with the solar data to work out how much power the house really uses, compared to last year and to the average Illinois home&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Where the power goes&lt;/strong&gt;: per-device and per-room usage from smart plugs in Home Assistant, ranked by what each one costs per month (Smart plugs ordered, not here yet!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dad's briefing&lt;/strong&gt;: a short, plain-English note at the top of the dashboard, written by &lt;strong&gt;Gemma running locally on our home PC&lt;/strong&gt;, that explains all of the above without a single chart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll be honest, it turned into chaos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmz8ze9ndysz9k0uixz8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmz8ze9ndysz9k0uixz8s.png" alt="dashboard charts" width="800" height="771"&gt;&lt;/a&gt;&lt;/p&gt;





&lt;h3&gt;
  
  
  The roof mystery
&lt;/h3&gt;

&lt;p&gt;Everything was fun and games at first, connecting an API here, pulling in a spreadsheet there. Our solar company even has a free developer portal. Then I started digging deeper than I'd planned. I learned there was an optional consumption meter our system could have had, but it was never installed. I learned you can put devices on your circuit breaker to see which circuit (or room, like my brother's... &lt;em&gt;cough cough&lt;/em&gt;) is using what at any moment.&lt;/p&gt;

&lt;p&gt;We already knew two of the microinverters were bad. What alarmed me was when my app started warning that some &lt;em&gt;random&lt;/em&gt; panels were underperforming: four more, reporting between 11% and 30% of their normal output. They weren't clustered in one area.&lt;/p&gt;

&lt;p&gt;Confused, I stepped outside to see if a squirrel had built a house up there. Nope, just neatly positioned solar panels... wait. &lt;strong&gt;They run up the roof vertically.&lt;/strong&gt; That's not what they look like on the map. I went in and out of the house several times, standing on chairs, taking pictures, and showing my dad. &lt;em&gt;Dad! They are not horizontal!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzc8pvt4lnrj0ah0kdwll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzc8pvt4lnrj0ah0kdwll.png" alt="strange panels" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkgfqjt2lhn8esqkl9usj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkgfqjt2lhn8esqkl9usj.png" alt="panels in new app" width="799" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It took some convincing from a difficult angle, but I proved it. And it wasn't just the orientation. The official app (and mine, since it uses the same layout) shows two long rows and then a short row. What's actually on the roof is &lt;strong&gt;long, short, long&lt;/strong&gt;. A bona fide discrepancy.&lt;/p&gt;

&lt;p&gt;Here's why. Two to three years ago, storms ripped through the neighborhood and damaged our roof. Insurance covered it, but to fix a roof you have to take the solar panels down. The whole process took 18 months. When the panels went back up, everything &lt;em&gt;seemed&lt;/em&gt; fine. Shortly after, the two microinverters stopped responding.&lt;/p&gt;

&lt;p&gt;I'd been blaming the underperformers on wildfire smoke, a dust storm, and bird poop. Then it clicked: whoever reinstalled the panels never updated the map. &lt;strong&gt;The system reports panels in places they are not.&lt;/strong&gt; To test it, I checked where a tree's shade actually lands. It does cover some panels. Just not the ones the map says are underperforming.&lt;/p&gt;

&lt;p&gt;Why does this matter? If I point a technician at "the second panel in the first row" and it's really the one next to it, he "fixes" the wrong panel, says "you'll see it working tomorrow," and I can't prove anything. That could get expensive. Before I start directing people, I need to know exactly which panel is which. That call to the solar company is coming, and it's going to be a serious one.&lt;/p&gt;





&lt;h3&gt;
  
  
  So, was it me?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk3gsc5qwfmthjew88dkm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk3gsc5qwfmthjew88dkm.png" alt="Not guilty" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Partly in my defense: ComEd raised prices about 12% for all residents. Add two dead microinverters (plus whatever is going on with the mystery panels) and a full house, and the bill makes a lot more sense. To be fair, the dashboard also says the house really is using more power than last year, which is exactly why the smart plugs are next. Soon we'll know &lt;em&gt;who&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAD'S REACTION:&lt;/strong&gt;&lt;br&gt;
I have been instructed to contact Enphase and find out what is going on with the solar panels, at which point I will then be able to contact someone to come climb on the roof and do the actual fixing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The live dashboard is password-protected because it shows our home's real data. A temporary view has been created for judges with password that expires in 30 days: &lt;code&gt;Dev_judge$&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Preview the drama in action: &lt;br&gt;
&lt;a href="https://solar-dashboard-coral.vercel.app/login" rel="noopener noreferrer"&gt;Solar Dashboard&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnnaVi11arrea1" rel="noopener noreferrer"&gt;
        AnnaVi11arrea1
      &lt;/a&gt; / &lt;a href="https://github.com/AnnaVi11arrea1/solar-dashboard" rel="noopener noreferrer"&gt;
        solar-dashboard
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Solar dashboard&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Private dashboard for the home Enphase system: &lt;a href="https://solar-dashboard-coral.vercel.app" rel="nofollow noopener noreferrer"&gt;https://solar-dashboard-coral.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;Home PC ── collector/collector.mjs (every 60 s)
   ├─ Ollama (gemma3:4b, local) ── Dad's briefing every 6 h
   ├─ IQ Gateway (192.168.1.166, local API, owner token)
   └─ APC UPS (not yet — needs APC USB cable 940-0127)
        │ POST /api/ingest  (Bearer INGEST_SECRET)
        ▼
Vercel (Next.js 16) ── Upstash Redis ── dashboard page (DASHBOARD_PASSWORD)
        ▲
        └─ /api/cron/daily (Vercel Cron, 11:00 UTC) → Enphase cloud API v4
           summary + daily history, ~3 calls/day of the free 1,000/month
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Collector&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Runs from the Windows scheduled task &lt;strong&gt;Solar Dashboard Collector&lt;/strong&gt; (starts at logon, hidden
logs to &lt;code&gt;collector/collector.log&lt;/code&gt;).&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;node collector/collector.mjs --once --print   &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; one reading, printed and pushed&lt;/span&gt;
node collector/collector.mjs --probe          &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; dump raw gateway JSON to collector/probe/&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Config is &lt;code&gt;collector/.env&lt;/code&gt; (template: &lt;code&gt;collector/.env.example&lt;/code&gt;). The gateway token expires
yearly — the dashboard's Problems list warns 30 days ahead. Renew at
&lt;a href="https://entrez.enphaseenergy.com" rel="nofollow noopener noreferrer"&gt;https://entrez.enphaseenergy.com&lt;/a&gt; using the &lt;strong&gt;homeowner&lt;/strong&gt; login (not…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnnaVi11arrea1/solar-dashboard" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home PC ── collector (Node, every 60 s)
   ├─ Enphase IQ Gateway (local API, per-panel data)
   ├─ Home Assistant (smart plug wattage + rooms)
   └─ Ollama + Gemma 3 4B ── Dad's briefing every 6 h
        │
        ▼
Vercel (Next.js 16) ── Upstash Redis ── dashboard
        ▲
        └─ daily cron → Enphase cloud API (history)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16 on Vercel&lt;/strong&gt; for the dashboard, with &lt;strong&gt;Upstash Redis&lt;/strong&gt; for storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small Node collector on our home PC&lt;/strong&gt; that reads the Enphase gateway on the local network and Home Assistant every minute&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enphase's cloud API&lt;/strong&gt; (the free developer tier) for years of history, &lt;strong&gt;ComEd's Green Button export&lt;/strong&gt; for the bills, and &lt;strong&gt;PVWatts&lt;/strong&gt; for expected production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The open-source AI piece is Gemma 3 4B running in Ollama on that same home PC.&lt;/strong&gt; A dashboard full of charts is great for me, but my dad doesn't want charts. He wants to know three things: is the solar working, why is the bill what it is, and does he need to do anything?&lt;/p&gt;

&lt;p&gt;Every six hours the collector asks the dashboard for a small set of facts (today's production versus expected, the latest bill versus last year, the Problems list), hands them to Gemma with instructions to explain them like a helpful family member, and posts the result back to the top of the dashboard. It takes about 20 seconds. Here's a real one:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Overall, your solar panels produced a good amount of electricity this month.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The microinverters 202015011110 and 202101033131 are not reporting. You need to contact Enphase support immediately with the serial numbers to get these fixed under warranty.&lt;/li&gt;
&lt;li&gt;Your electric bill is $270.48, which is much higher than last year's $46.12. This is because your home uses 76 kWh per day, compared to 44 kWh per day last year.&lt;/li&gt;
&lt;li&gt;Solar panels covered 41% of your electricity use.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwhml9oavflawveqrvbz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmwhml9oavflawveqrvbz.png" alt="Dad's Briefing" width="799" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building the briefing turned up a bug, too. After sunset, the dashboard told us &lt;strong&gt;0 of 23 panels were working&lt;/strong&gt;, with 21 critical alerts. Microinverters run on the panels' own power, so after dark every one of them goes quiet, and the gateway's flags can't tell a dead unit from nightfall. If Gemma had read that, it would have told my dad his whole roof had died. Now a panel only counts as dead after a full day with no report.&lt;/p&gt;





&lt;h2&gt;
  
  
  Why Does Open Innovation Matter? 🤔
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The data stays home.&lt;/strong&gt; The briefing is built from our electric bills, our usage, and the details of our system. With a local model, none of that goes to an AI company. It never leaves the PC in our house.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; A note every six hours, forever, for $0. A paid API would turn a family tool into a monthly bill, which is a little ironic for an app about lowering the bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can swap the model with one line.&lt;/strong&gt; It's &lt;code&gt;OLLAMA_MODEL=gemma3:4b&lt;/code&gt; in a config file. If a better small model comes out, or Dad wants it to sound different, I change one setting. No vendor, no migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open data made the whole thing possible.&lt;/strong&gt; The solar gateway has a local API on our network, PVWatts is free public data, and the utility exports bills in an open format. Being able to combine them is what exposed the panel mix-up in the first place.&lt;/li&gt;
&lt;/ul&gt;





&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built this with Claude Code, and every session is tracked with &lt;strong&gt;Entire&lt;/strong&gt;, which links each AI session to the commits it produced.&lt;/p&gt;





&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Entire&lt;/strong&gt;: every AI session in this build is saved and linked to its commits. I can run &lt;code&gt;entire why&lt;/code&gt; on any line to see the prompt, session, and commit that produced it, and &lt;code&gt;entire search&lt;/code&gt; across the whole build process. This is actually very organic feeling, and awesome. Example:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbx0c99hgflpgsdlyqt4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbx0c99hgflpgsdlyqt4x.png" alt="Navigating with Entire" width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Gemma 3 4B, running locally, is what turns the dashboard into something my dad can actually read. (Dad's Briefing) 😂&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
