Design tokens help designers and developers stay on the same page when it comes to things like space and color. Some tokens may change in value for certain contexts, like reducing font sizes for smaller screens or changing colors for different themes. These alternate values are usually called "modes" and usually exist on a single axis. This is why tools like Figma often show variables in a table.…
As you’ve probably guessed by the title, we’re going to talk about imposter syndrome, a psychological phenomena where one thinks themselves an imposter. That they don’t really fit in, and -for some- the profound fear that someone is going to find out. This is a feeling I’d imagine almost everyone working in creative fields has felt, and yes, programming is an act of creativity. I’ve had this one…
Sometimes you want to use one object as a default state, and override it with new props. This is the case in my app, ColorScale . I have an object with all of the default values for each attribute defined in the object's type. This concept may be easier shown, so let's define a type and an object that defines the default values. export type config = { keyColor : string , dark : { count : number ,…
A bit late to the party aren’t I? You may be wondering why make a post like this in 2024, when WordPress is moving steadily away from the Customizer and PHP templates in favor of the Full Site Editor and Block Themes. When my team and I were exploring the new block based WordPress experience and evaluating if it would be a good move to make the next version of the University’s theme a block theme,…
My setup is a bit unique because I manage most of my setting through my dotfiles system. That shouldn't matter too much though, as today we're just looking at a few aliases for Git. Show verbose output about tags, branches or remotes § These three aliases are incredibly useful for reference when you can't remember the exact name of a branch, remote, or tag. tags = tag -l branches = branch…
A while back, I was working on a personal project (that I ended up scrapping) and wanted to filter items by tag. I'm not going to go over how to dynamically render this HTML, you can do that with a number of options. The project I was working on wasn't using React, so this will be plain vanilla javascript. Alright let's get into it. The markup § I always start with the HTML and think its a…
When creating my sitemap , I wanted to find a way to add the Page's description under each heading but I didn't want to retype it or have to manually keep it updated. My solution was to pull the description from the page's metadata, but to do that, I would need to have a way of querying the 11ty collections for a single page. Huge credit to Peter deHaan on GitHub who solved this problem, and who's…
In my last post, I needed to show some njk syntax as a code example, but 11ty kept trying to evaluate the njk instead of displaying it. So, let's look at how I got around this with shortcodes. This is going to be a short one because the answer is fairly straightforward. I will mention that I did try to replace the percent signs with % but that just printed the html entity code literally.…
When I was developing the template I use for each of my logs , I wanted to provide quick previous and next links since the collection items are serial in nature. To being with, I did this with metadata on each individual log. This worked well to get the concept, but it was really inconvenient for long term use. Later, I looked into 11ty pagination and found this solution. Setting up the collection…
I've often had to generate a color scale based on a brand color, needing a tool that will allow the user to control the number of dark and light steps. There are a number of tools already for generating color scales, but this one focuses on the key color and also brings color graphing and easing functions to the table. There's much more information about this project over on GitHub , and you can…
In my previous post, I looked at ways to customize the ZSH prompt . Now let's take it a bit further and show some version control information on the right side of the prompt as well. First let's set up support for the version control system. To do this, we need to autoload the version control system with autoload -Uz vcs_info . Then we'll need to wrap that in a function and add that function to…
Minerva is the third iteration of the University of Alabama's web framework and is used to build the institutional Wordpress theme among other enterprise applications. I began working on a design system for the university back in 2021, as their senior designer. This design system would eventually become the bones of the Minerva framework. When I rejoined the team in 2022 as the assistant director,…
I like stationary and making stuff with paper. I also love being organized, and wasing as much time as possible to become organized. This pair of traits led me to creating these task cards. I should also say these are heavily inspired by Analog . The Today card has a short list of actionable items, designed to help you focus on just a handful of key priorities. It has a little area for notes under…
While I was learning about terminal customization, I found that many websites tend to leap straight to projects like "oh-my-zsh" where you can choose from many pre-configured themes. Don't get me wrong, these projects are impressive and show how wildly flexible ZSH can be, but I wanted to learn something along the way. Since I learn best by doing, I wanted to explore and build my configuration by…
Dotfiles are something few people care about, but they hold all of the configuration settings for key systems. Heavily modified setups need to be backed up and this also allows us to quickly get back up and running with a new computer. My dotfiles holds my git configuration and some extensive modifications to zsh, many of which I talk about in my blog . It may not seem like much, but this is a…
This was something I made for myself and then made it open source in case anyone wanted to use it or learn from it. Basically, I'm underwhelmed by the default new tab page setup in any browser so I made my own. It uses the bookmarks API and some JSON configuration to display collections of bookmarks with FontAwesome icons. It also has a reference section, which is hard coded at the moment to…
Before we get started, please be aware I'm going to be using Visual Studio Code with the Comment Anchors extension. I really love the ability to place easy to skim, important callouts in my code. Helpful tip: You can comment out a selected line in VS Code by either selecting the code you want to comment out or placing your cursor on a specific line and pressing command + / Comment Guidelines…
After getting my home office fully set up I found that I had a very niche and first world problem: When I share my screen or even a window from my ultrawide monitor during a zoom meeting, the image is too small for people on normal sized screens to see. I decided to make a button that would resize my last used window to the fullscreen size of my macbook pro. This way I could easily setup a window…
When building my website, I didn’t expect the biggest challenge to be having a separate collection for posts and projects, each collection with their own independent list of tags. At its face value, it doesn't seem that big of a problem, but the way 11ty handles content by default creates a lot of opportunities for cross-collection pollution. For example, 11ty doesn't have a clear way to create a…
I want to start with a disclaimer that I’m not a leather worker, so I can’t guarantee that this is all technically correct or good advice, but my custom discbound notebook has been a project of mine for a few years. I’ve tried all kinds of covers, both homemade and store-purchased, but none of them ever felt special or personal. Making a leather cover had been in the back of my mind for quite a…
My website has always been a testing ground of new ideas, a place for me to experiment and learn new things, so it’s only natural I do a major redesign every other year or so. However this design marks a shift in how I talk about myself and my work. My previous website design, and all of those that came before it, had a more specific goal. I needed to market myself and put my best foot forward to…
I love stationary. I always have. In college, when I had to get a job and all I could find was retail, I was genuinely happy to work in the print department of Office Max. I was able to talk about different paper types, finishes, and features with clients and (much to their exhaustion) co-workers. I might go as far as to say that stationary is one of the things that got me into graphic design.…
CSS authoring has become my favorite part of being a designer and developer but like anyone who has built more than three websites, I got tried of starting fresh every time. Frameworks, boilerplates, and other systems became part of my toolkit but I hated using the metric ton of extra CSS that I never used and didn't write and overriding a lot of styles because they were too opinionated. I decided…
Website analytics are great tools to monitor your website's traffic, see what people are interested in on your site, and inform how you develop your site going forward. They can help you understand more about your audience. Unfortunately, analytics have a bad rep, and I pin most of this on Google. Being the largest and defacto standard analytics platform, Google makes sure to collect as much…
There are a handful of ways we can use what we learned about modular scales when creating the typographical system of our website, from simple single scale systems to fully fluid typography. This article will take a look at each style and implementation, but all of these systems aim to address the question of how to handle text on both small and large screens. Single Scale § The simplest…
Vertical rhythm is a concept in typography that aims to keep vertical spaces between elements consistent with each other. This creates repeatable patterns that readers subconsciously understand and use to read faster and more accurately. As a disclaimer, this is going to be an opinionated and complicated article. Terminology § Baseline The invisible shared line on which capital letters sit.…
In any form of design, one uses a series of measures to plan and layout the product. Measurements create precision, consistency, and promote trustworthiness. In print, common measurements are inches, centimeters, points, and picas. In the world of digital and web design we use pixels and more relative measurements such as percentages. I bring this up in a series about typography because typography…
Attika is an exploration of typographical design through technological advancements introduced in OpenType Variable Fonts. The typeface is a bold and versatile humanistic sans-serif typeface suitable for headlines and display text. It is roughly inspired by it’s namesake, a region of Greece home of Athens, a haven of philosophy and democracy in the ancient world. --> Attika was part of the 2020…
This silkscreen print was designed for the Cahaba River Society as a fundraising opportunity. The Cahaba River is a large waterway running through the heart of Alabama and is home to a wide range of wildlife. It fosters one of the most diverse ecosystems in the state. The print is designed to be easily mass-produced using a single color design and draws inspiration from the ripples of the river…
In my third year as UAB IT's web developer, I had the great opportunity to make sweeping changes to the design and structure of the IT website. As we began a deeper dive into the website's architecture than we ever had, we found years of technical debt, patchwork solutions, and poor organization. Reorganization § The primary problem with the website's user experience was the lack of…
Back in October, Marvin Danig made a fantastic blog post on the state of responsive web design and the future of CSS frameworks. I wanted to continue some of his points and see how a responsive first grid system might look. The current grid § Before we get into the deep end of building a grid, I wanted to review some of the systems we have today and the pain points associated with them.…
While researching best practices of CSS organization this past year for a huge UI project at work, I ran across several ideas and strategies to solve this problem. My goal here is to digest these ideas and formulate a more comprehensive approach to organizing CSS. For the purposes of this article, I'll be talking more specifically about Sass and similar workflows. Putting the C in CSS § Many…
Inspired by humanistic sans-serif and slab serif typefaces, Rebar is a unique and modern hybrid serif / sans-serif font. Rebar is more than a typeface, it explores the anatomy of typography and looks at type as form and texture. Upper and lowercase letters and numbers Type as texture Special characters The typeface includes uppercase and lowercase letters A-Z, numbers, punctuation, and special…
One of the really cool plugins I found for VS Code is this tool called Comment Anchors. It’s a way of adding more visible, meaningful comments to your code. I’m a really big fan of writing documentation in the code itself, so its nice to have a way to highlight the most important notes. Notes to self § Several of my special comments fall under the category of “Notes to Self” and aren’t really…