Sign in

…did someone say animated CSS button?

Add Panini Bot to your Discord server today!

“Replacing the word “pandemic” with incorrect variations is 90% of how I’ve been coping with this panasonic” — Vax Een, @_jovanrb on Twitter
“Replacing the word “pandemic” with incorrect variations is 90% of how I’ve been coping with this panasonic” — Vax Een, @_jovanrb on Twitter

As soon as I saw Emi’s tweet about the open-source Pandera package, I knew it had to be a Discord bot. So, here’s how I built a bot that will insert a new word starting with ‘p’ for every instance of ‘pandemic’ in a Discord message.

I’d already used replit and UptimeRobot to make a Python Discord bot that sends my friends pictures of dogs, so I fired up a Node.js repl and named it Panini. You can view the live code here.

Making a Discord bot with Replit, UptimeRobot, Node.js, Express, and Eris

For UptimeRobot to keep my bot alive, the first thing I need in my Node.js repl is…

Or How I Stopped Self-Rejecting and Embraced Self-Promotion

Moira of Schitt’s Creek saying “One must champion oneself and say ‘I am ready for this’”
Moira of Schitt’s Creek saying “One must champion oneself and say ‘I am ready for this’”

More than anything else, this article is here to tell you that you should absolutely toot your own horn. Much like how everyone should discuss their salary but doesn’t want to, promoting yourself to employers is an often uncomfortable necessity of getting a job and getting compensated fairly.

Luckily, confidence is something you can practice. I’m not talking about “fake it ’til you make it.” You’ll need to find ways to inspire confidence in yourself independent of the job search. I recommend creating a daily practice of it, just like you would meditation.

As always, please remember, a rejection usually…

Picture of a dock and boat at sunset
Picture of a dock and boat at sunset

I committed to studying web development in March 2020. By the end of August 2020, I quit my job. I graduated from a coding bootcamp in the beginning of January 2021. In March 2021, I accepted my first developer role.

My previous role was in high volume engineering recruiting. A typical day for me would include reading job descriptions, scheduling interviews, and customer service for candidates, clients, and current contractors. Sometimes that even meant hiring and firing. …

When I rebuilt my portfolio site, I knew I wanted to have some fun with the design, and a dark and light mode fit the bill. I enjoyed a lot of the discoveries I made during this project, but my favorite has to be the color changing SVGs. This tutorial assumes familiarity with React, and I am using v17.0.1 and functional components.

First, I created a base layout. Next, I put together my dark and light color schemes. It took a little trial and error, but after testing all my combinations for sufficient contrast and experimenting with placement, I found…

or how I learned programmers owe it all to fiber

a knit octopus sweater in blue and white
a knit octopus sweater in blue and white
Knit by Abbey Perini, pattern is Embrace Octopus Sweater by Maia E. Sirnes

As part of my bootcamp, I was asked to present for 10 minutes on any topic. I’ve been crocheting since 2013 and knitting since 2018, and I had noticed some similarities between the way I approached a project in either fiber arts or programming. What I did not expect to find was a rich history of fiber arts and programming influencing each other.

The Beginning

Fiber arts, like knitting, are crafts using yarn, string, thread, etc. This encompasses thousands of years of history, starting in 6500 BCE with Viking Nålbinding. …

We’ll use a shifting background gradient, a simple transform: translate animation, and a button styled like text.

I’ve been reading up on design principles for web projects. For my last big project, Gachasphere, I wanted to implement hierarchical buttons. So I made 3 button styles to apply across the site: primary, secondary, and tertiary.

I wanted the primary button to be used for calls to action and “dangerous” actions like delete. Ideally, it would be one of the first things a user’s eye would be drawn to.

My goal for the secondary button was to make it easier to find…

It’s been 323 days since I first started this coding journey. Today I finished the #100DaysOfCode challenge — a public commitment to code an hour on personal projects every day for 100 days.

One of Kallaway’s rules is that you can miss a day, but not two days. With the exception of 4 day breaks over Thanksgiving and Christmas, I achieved that… while completing DigitalCrafts’ Immersive Full Stack Web Development Bootcamp. Would I recommend everyone do #100DaysOfCode on top of a bootcamp? No. …

Object Oriented Programming (OOP) languages, like JavaScript and Python, organize software design around data, formatted in objects, rather than function or logic.

First, I’ll cover the basics: objects, classes, instance, and methods. Then, I’ll briefly explain the four main pillars of OOP design: Encapsulation, Abstraction, Inheritance, and Polymorphism.


An object is data formatted to represent a real world object that has a state and behavior.

Picard’s state would be “wants to set a course” and his behaviors would be telling an ensign the desired course and to “Make it so.”


Different programming languages go about this different ways, but essentially…

You’ve got your React components. You figured out how to use Redux to feed them data. You make a component that creates/updates/deletes an item in your API, and put it in a page displaying the items from your API. How do you get the whole page to reload to show the updated data every time a user makes a change? Redux state and the useEffect() Dependency Array.

It is possible to use only React to pass the data from our counter to the parent element to get almost the same counter effect in my example below, but using Redux state…

I’m a believer in finding joy in the little things, and during my last project, that little thing was this button. I have been reading a lot about web design, and wanted my primary buttons to stand out in a big way. I had seen an image of a square button with an offset border while researching a design for an even earlier project, but never got the time to implement it. So for weeks, I’ve been trying to find the time to build this baby, and it was worth the wait.

Abbey Perini

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store