</>

AndySciro

— Notes on Javascript & the web —

Recreating Windows 98 Mystify in JavaScript with PixiJS

03 Oct, 2026 Javascript , Animation

Remember the Windows 98 Mystify screensaver? I used to stair at when I was young, the colorful outlines bouncing around a black screen, stretching into different shapes and leaving trails behind them. Such a simple thing, but surprisingly fun to watch.

I wanted to see if I could recreate that feeling in JavaScript using PixiJS. Here’s my version:

See the Pen Windows 98 Screensaver by Andy Sciro (@spssciro) on CodePen.

I built this before I was using AI to help write code, so figuring it out was more challenging. Working through it myself was very fun though, and seeing the effect finally come together was especially satisfying.

The idea behind the animation is pretty small: give five points their own directions, move them each frame, and reverse their horizontal or vertical direction when they cross an edge. Connect the points with lines and close the shape.

The trails are the interesting part. Each point keeps a short history of its positions. On every tick, the drawing is cleared and the shapes are redrawn from that history, so you see earlier outlines following the newest one. The colors gradually shift using sine waves.

There are controls in the Pen for speed, the number of outlines, and line thickness. Try changing them and see how different the same little animation can feel.

This reminds me of why I enjoy small JavaScript experiments. You start with something familiar, figure out the pieces that make it work, and suddenly you’ve got a little bit of nostalgia running in the browser.

As always, feel free to open the source on CodePen and fork it! If you like this kind of thing, I also made a bouncing DVD logo in Pixi.js.

ZoomIt brings Zoom's drawing tool to your whole screen

17 Sep, 2026 Tools

I’ve always loved Zoom’s drawing/annotate feature when screen sharing. Being able to circle something, underline a line of code, or draw an arrow while explaining it out loud just makes communication so much clearer than pointing with a cursor.

The thing is, I only get that feature inside an actual Zoom call. I kept wishing I could pull up the same kind of drawing tool anywhere on my screen, not just during a screen share. This comes up a lot when I’m doing LeetCode problems and want to circle a variable, cross out a branch, or draw arrows tracing through an algorithm while I think.

Turns out Microsoft already solved this years ago with ZoomIt, part of the Sysinternals suite. It lets you zoom into any part of your screen and draw directly on top of it with keyboard shortcuts, no screen share required.

A few things I like about it:

  • Works completely with keyboard shortcuts, so it doesn’t get in the way of whatever you’re doing.
  • Super lightweight, just a single small executable.
  • Zoom and draw anywhere on the desktop, not tied to any specific app.

Definitely adding this to my toolbox for talking through LeetCode solutions and just generally annotating things on screen.

Playhtml, a really cool library for making websites come alive collaboratively

15 Aug, 2026 Tools , Javascript

Found this cool library called Playhtml. It lets you drop a few attributes into your HTML to make elements draggable, spinnable, growable, and more, with the state synced live across everyone viewing the page.

One of my favorite demos is the fridge magnets page, it’s a shared magnet poetry board anyone visiting can rearrange in real time.

Trying out hooking up Blender MCP to Claude

02 Aug, 2026 Tools , Ai

Lately I wanted to try Blender’s MCP connector with Claude. If you haven’t heard of MCP (Model Context Protocol), it’s essentially a standard way to let an AI assistant like Claude talk to and control other applications, in this case, Blender.

The idea is pretty wild when you think about it: instead of manually clicking around Blender’s UI to model, position, and texture objects, you can just describe what you want in plain English and let Claude drive the actual application through the MCP server.

Here’s a quick video on it:

I’m curious to dig in more and see how far this can go for actual 3D work versus just being a neat demo.

Requirements:

Steps to set it up:

  1. Install Blender.
  2. Install the Blender MCP server.
  3. Install Claude.
  4. Connect the Blender MCP server to Claude so it shows up as an available tool.
  5. Open a scene in Blender and start prompting Claude to create, move, or texture objects.

The prompt I used was: “In blender can you make a strawberry donut with rounded sprinkles. Zoom out so its in view - no other object should be present”

It works alright here and there, but the real value for me is using plain language to tweak settings easily in Blender. Blender’s UI is massive, so doing things like “mirror these vertices across the x axis,” “xray this,” or setting up reference images has been the most useful part.

One gotcha: after turning on the MCP server, I really had to ensure Claude was NOT running. I exited the process via Task Manager. Blender and Claude both said everything was connected and running fine, but until I fully restarted/exited Claude it kept timing out. A full restart is what actually got it working.

Awesome free website for visualizing code! PythonTutor.com

26 Jul, 2026 Tools

Recently I was having trouble understanding some code. Specifically it was a leetcode solution that even though I read the solution a few times and watched a video it wasn’t sticking.

I came across this Python Tutor and pasted in a leetcode solution and pressed play. It scans the code and generates a visual debugged view of it! It’s also free and didn’t even require a signup. What I was most impressed with was the way it handled objects and recursion.

DFS visualization in Python Tutor

Give it a try at pythontutor.com and it’s not just for JavaScript, it also supports Python, C, C++, and Java.

The Fun, easy way to learn CSS Grid… CSS Grid Garden

08 Apr, 2022 Cool tips , Css , Tools

CSS Grid is a CSS layout module that enables two-dimensional layout. CSS Grid is CSS’s newest layout module and has been designed to create flexible and responsive layouts. While it can be difficult to learn CSS Grid due to its new syntax and layout ideas, the rewards are worth it. With CSS Grid, you can create grid-based layouts with CSS, which means that your layouts will be more flexible and responsive. In addition, CSS Grid is well supported by modern browsers, so you can be sure that your layouts will look great on all devices. So if you’re looking for a new way to create CSS layouts, CSS Grid is definitely worth considering.

It takes time to learn CSS Grid but don’t give up, there’s a fun way now

CSS Grid is a powerful layout tool for web developers, but it can be tricky to learn. For junior developers, the process can be even more daunting. That’s where CSS Grid Garden comes in! This fun and interactive game makes it easy to understand CSS Grid, and makes the learning process enjoyable. With CSS Grid Garden, players learn by completing progressively more challenging levels. As they advance, they build up their skills and confidence, until they are ready to take on real-world projects. CSS Grid Garden is the perfect way for junior developers to learn CSS Grid – it’s easy, it’s fun, and it gets results!

CSS Grid Garden editor screenshot

At the time of writing this there are 28 levels that teach you CSS grid from basic to advanced concepts. The levels are colorful and fun as well.

It’s completely free and offers an easy to use built in css editor that updates in real time.

How many levels can you complete? Try the game by visiting https://cssgridgarden.com/

Easy and safe way to get around "connection is not private" in Google Chrome when developing locally

11 Mar, 2022 Tools

I just learned about this setting after finally getting frustrated of clicking “Proceed.” Geez I wish I knew about this simple setting long ago… so much time wasted! I do lots of local development and we’ve had team members include ssl certs in repositories, or type in the following command “thisisunsafe”, etc. Who knew the solution was so simple 👍

Now we can simply get around that by copying and pasting the following command into your browser

chrome://flags/#allow-insecure-localhost

You will then be taken to Chrome’s development flags page as shown in the screenshot below. Simply enable it and restart Chrome

Chrome flags allow-insecure-localhost setting

Now you’re all set to kick up a local dev server and never have to click proceed ever again.

What I use on my mac for screen recordings in slack for (pc + windows) Giphy Capture

23 Feb, 2022 Cool tips

If you’re looking for a great screen recording software that is free and easy to use on a mac, giphy.com’s screen recorder is a great option. It’s completely free to use, and it has a ton of great features.

Just head to giphy.com and download giphy capture. Then, select the area of your screen that you want to record. You can also choose to record your entire screen or just a portion of it. The giphy.com recorder also lets you choose whether or not to include audio in your recording. If you choose to include audio, you can either record your own voice with a microphone or use the system audio. This is great if you want to record a video tutorial or walkthrough.

Awesome video: 3 useful css sizing values most people don't know about

13 Jan, 2022 Cool tips , Css , Tools

Came across this fantastic video by this fantastic YouTuber. Just wanted to share it as I felt it really did a great job demonstrating the value in knowing these width properties.

For even more information check out their respective mdn entries:

Or Watch it on youtube here: 3 useful CSS values that most people don’t know about

Ten-second tip: How I remember the difference between unshift() and shift()

07 Oct, 2021 Cool tips , Javascript

I help run a bi-weekly algorithm coding guild at work where we solve many programming problems together. It’s a very fun and rewarding experience and I get exposed to many different programming languages. Sometimes, when I “shift gears” between languages, I mix up the prototype methods in javascript.

The one I recently flubbed was shift() and unshift(), which seems silly but when you’re moving fast its an honest mistake to make!

Let’s review their MDN entries

Array.prototype.shift()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift#description

Array.prototype.unshift()

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift#description

How I always remember the difference:

If we literally break up the words into letters (similar to split() lol) you might notice something:

["u","n","s","h","i","f","t"]
// vs
["s","h","i","f","t"]

The way I see it, unshift is “updating” our array above, “shift” with two additional characters in the front (“u” and “n”). In my mind I also remember this by matching up the “u” of update and “u” of unshift. Shift on the other hand complements this as its missing the “u.” In fact this is even how unshift() works! It prepends characters to the front of the array.

Hope this little trick helps you! Remember we update (think “u”) with unshift… with two characters in the front of the word shift > unshift.