Creating Labarum (Part 1): Design and initialization

I wanted to create a new theme for Micro.blog, and I thought I would document all the steps that I went through. The creation of the theme was an iterative process for me and this tutorial works in that way. I’m also not a web designer and I’ve focused mostly on the technical aspect of this theme. This theme and tutorial were put together over the span of a couple months and things changed both in some of the technical aspect and how I thought of the theme.

Design Goals

The first thing I wanted to make sure of was that my theme would be accessible. I want people who use a screen reader to be able to navigate the site without a problem and meet the latest standards as defined by WCAG.

Secondly, I wanted the site design to be semantically correct. I understand that many designers used dev tags for a lot of their design and architecture, but I wanted people who come to my website to be able to read the source and learn from it.

Third, I want to be able to make the design that has been siting in the back of my mind for a while. I’ve been enjoying minimal designs for years. I think this is mostly in part from my years experiencing dial-up and having to sit there and wait for the site to render because whoever paid for it needed me to see their huge logo and hero images.

This is what I’ve been picturing for the main page.

The first sketch of what I wanted the site to look like.

This is what I’d like to have for individual pages.

Sketch of the individual page

Understanding Micro.blog

To make it clear, I do not want to know what the secret sauce that Manton applies to make the whole site work. I know I would continually want to dabble. Manton has really done some magic to make Micro.blog work as both a blogging platform and social network. I feel that it offers an exciting mix of features without me having to spend a lot of time doing a lot of the technical configuration that I both equally hated and enjoyed.

But old habits tend to die hard and I found myself wanting to customize my own site and Micro.blog allows you to do that. When I look at new projects, I tend to visualize how the different components come together. For me - as it is near Christmas at the time of this writing - I think of Micro.blog as a Christmas tree.

Mental model of Micro.blog components

I do want to have an understanding of how themes are put together so that I can customize it. The beauty of working with this system is that every thing that I’ll be doing to customize will be backed by the Blank theme. I also only want to focus on how the site is generated. Every thing else, I leave to Manton Magic.

Setting up my local environment

The first thing that I did was make sure that I had Hugo installed on my machine using Homebrew. I did this to get an understanding of Hugo which is a big part of Micro.Blog. At the beginning of this project, you had to make changes to the Git repository that your theme was hosted on and then add it as a new theme in Micro.blog to see it refresh. I thought that if I do most of the initial development on my system, I could save time with doing smaller iterations on my home system.

Terminal window running hugo command

It’s a slightly older version than what Micro.blog (v91) is using, but I didn’t want to spend too much time in getting the versions to match up after spending some time reading what the key differences were.

From there I used the standard Hugo command to create a new environment.

hugo new site labarum-hugo

I create a project in GitHub called Labarum and cloned it in the themes directory of the new Hugo site. The was mostly to the .gitignore and README without making my own, but I see that it didn’t include the .DS_Store so I’ll add that as my first local commit1.

I then created smaller repository to host a little html and css experiments called tryout so that could iterate on the design with a static site.

Basic Structure

For the first iteration, I took a lot of the structure from my previous projects2 and just made the basics of what I wanted to be the following.

<html>

<head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width initial-scale=1">

    <title>Boxes</title>
	<link rel="stylesheet" href="./css/normalize.css" />
	<link rel="stylesheet" href="./css/style.css">
    <link rel="stylesheet" href="./css/custom.css">
</head>


<body>

<nav>
	<menu>
		<li><a href="#">Home</a></li>
		<li><a href="#">About</a></li>
		<li><a href="#">Contact</a></li>
		<li><a href="#">Toggle</a></li>
	</menu>
</nav>

<main>
<article>
	<header>
		<h1><a href="#">First Article Title</a></h1>
	</header>
	<section>
		<p>This is the main body of the article.</p>
	</section>
	<footer>
		<p>This is the article footer</p>
	</footer>
</article>
</main>
<footer>
	<p>Footer for the site</p>
</footer>
</body>

</html>

Please note that I added a note to normalize.css. I thought it was interesting that a lot of the themes that I see in the Hugo theme library link to a version of normalize, but it didn’t seem like it was the latest. I don’t know if they are just optimizing for classes that aren’t in most sites, but I thought I would take the version from the GitHub repository and make it part of my theme. I feel that you never know what the end user of this theme is going to use it for and this will cover most cases and they can change the rest.

Initial Designs and Iterations

I also took some of the colors from the Pure project I was working on to help me figure out how I wanted some of the colors to look.

This is the first iteration of light mode.

This actually took me a lot more time than I thought.

Then I thought I’d put some time into the dark theme.

Labarum first draft dark mode

During the first iteration, I also decided to drop the heading for the page as I felt that if someone came to my page they would be more interested in the articles than what the title was.

For the second iteration on the design, I added places more information about the categories, tags, and the dates something was published and modified. I played around with using a details and summary tag, but it was getting a little too much outside of my abilities and I wanted to move on to other portions of the design.

This should give the user quick access to pertinent information.

If you noticed, I haven’t put any work towards the navigation yet. I thought that I would see what the site looks like when some test content before I decide on it.

But first it’s important to start moving this into a template.

For Hugo, you need to have layouts/_default/baseof.html. We’ll take the entire example that we were working on and put it in the same format that Hugo is expecting.

Folder structure of theme in bbedit

In the baseof.html, we’ll add the following block.

{{ block "main" .}}{{ end }}

Then we create a layouts\index.html file for later version of Hugo with the following content:

{{ define "main" }}
<p>This is the index page</p>
{{ end }}

Then when we run hugo server -D on the command line, the page will render and you might see something like the following.

~/Code/labarum-hugo
❯ hugo server -D
Start building sites …
hugo v0.94.2+extended darwin/amd64 BuildDate=unknown
WARN 2022/06/16 21:11:52 found no layout file for "HTML" for kind "taxonomy": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2022/06/16 21:11:52 found no layout file for "HTML" for kind "taxonomy": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.

The site should look like the following at this point.

Index page with an article on it

Pretty plain. And -again- this is mostly the static content that I created.

Let’s get rid of the warnings first, that way, we can focus on anything that pops up as we build the rest of the template.

Creating taxonomy/list pages

Let’s go to the Hugo’s documentation on template lookup order and search for taxonomy, and it lists different options. I think we’ll make layouts/_defaults/list.html which matches what we see with the base template that blank template that micro.blog provides.

We’ll just stub it for now.

{{ define "main" }}
<p>This is the basic list.html file</p>
{{ end }} 

Now we have a “clean” build of our site that shows pretty much nothing other than the box example that we created.

We can start the Hugo server and go to /posts/ to see the new posts page.

Labarum list html with no css

Notice that it doesn’t have the css linked properly. This is because our css used ./css and we have to remove the dot so that Hugo serves in properly. There are other ways of referencing this that we’ll look into later in this series.

We can now get really started!

Let’s make our first post by using the “Add Some Content” step from the Hugo Quick start.

After creating the content, we run the hugo -D command if the server isn’t running to get the output. At this point, we see another warning about pages.

❯ hugo -D
Start building sites …
hugo v0.94.2+extended darwin/amd64 BuildDate=unknown
WARN 2022/07/05 18:19:20 found no layout file for "HTML" for kind "page":
You should create a template file which matches Hugo Layouts Lookup Rules for this combination.

We go back to the template look up and find the information on making a page. We’ll just make a simple stub for now.

{{ define "main" }}
<article>
<header>
<h2>Article Title</h2>
</header>

<section>
{{ .content }}
</section>

</article>

{{ end }}

Now when we run, we don’t see any warning!

But.

It doesn’t do anything dynamic at this point and all we see is a page with just one line of text.

We’ll have to do that in the second part. Please give me some feed back before I push out the next part two days from now.


  1. This is part of my global ignores but I wanted to make sure that it’s there for people cloning the project in the future of if I forget. ↩︎

  2. I was luckily enough to work on the Pure theme. ↩︎

Why do all my yearly subscriptions renew in December?

iTunes Match Logo

It’s another year and Apple is asking for me to pay $24.99 to keep my iTunes Match subscription. This is supposed to allow me to store all of my music backups1.

This year is harder because I’ve had a full year of the Apple One subscription which gives me music and more. The reason that I’m sticking with it for one more year is that I’ve seen what’s been happening with other streaming platforms like HBO and Netflix and I want to make sure I have something until I come up with a better solution of storing my music.


  1. Music that I purchased from places other than the Apple Music Store. From those days when people would buy music instead of streaming it. ↩︎

My thoughts about twitter

I still have my account active. I haven’t gone in and deleted all my tweets and contacts at this time. In fact, to write this, I logged in to see that I have been a user since December 20081.

I’ve enjoyed the service for years, and it was nice to login and see what was happening with all the people that I was following and check out different hashtags related to topics that I was interested in. For example, I’d log in during a WWDC keynote to see hot takes from all my favorite Mac personalities.

I also participated in various contests throughout the years. Companies would ask you to tweet with a certain hashtag and I could potentially win some kind of prize. I never won.

I think the reason that I’ve stuck with Twitter has been that it’s really allowed me to craft my experience of what social media means to me. Furthermore, I was using 3rd party software almost from the beginning, and it would allow me to view and search a timeline of tweets. I could see what I wanted from Twitter, versus having Twitter give me things that it wants me to see.

When I got onto Facebook, I distinctly remember people asking me to friend them just to friend them. Most times, I didn’t know these people -if they were even real people- and Facebook had a way that you could use an alias (for example: meg@tron83) and a profile picture of something completely random. All I had to go on was that this “person” was friends with X amount of people in my established friend group. Unfortunately, I’ve had a couple of instances where I would ask someone in person what they were up to and they were insulted that I hadn’t been reading their Facebook updates.

With twitter, I’ve never had anyone attempt to shame me for not seeing what they posted. The messages that are sent out are usually to the World Wide Web, and I’m just part of it. I get to follow different sources of news and entertainment from people that I view as credible.

Where are we now?

Twitter has moved a lot further from the days when you would go to the site and see the fail whale.

The infamous fail whale would show up when twitter was having problems.

It’s really has the mind share of America, as it is the first place people look when they look for a particular hashtag2.

I feel that the short format that twitter uses promotes content that is easier to spread and take in without having the backing of research or oversight.

We’re now looking at Twitter without any checks into what damage it can do. There have already been studies published about how social media can affect you, and it’s a known fact that companies hire psychologists and behavioral experts to determine the best way to engage their users.

Even before Elon bought the company, there have been plenty of times when I thought about how my content -no matter how much it is- is improving the platform.

This got me thinking about the community that I live in. At one point, it was considered affluent, and we have one of the highest rated elementary schools in the region in walking distance. There are houses that could easily have an asking price of millions or more. But we also have issues with homelessness and even some robberies.

People are moving out.

The neighborhood isn’t as clean as it used to be, and although I don’t feel unsafe, I make sure that there isn’t anything that looks valuable in the car.

But I still live here. Partly because I can’t afford to move anywhere else, and partially because of the different perks that living here has provided.

In many ways, it’s just like twitter.

If I leave, then what is left? What about the other people who choose to stay?

What’s next?

Ultimately, I’m most likely going to stay on the service until it shuts down. Although I’m on Micro.blog a lot of the people who have made me love twitter are on other services, and I’m going to see what happens before committing to any additional social media platforms in the future. I’ve also on discord and a couple of discourse forums and that’s current my limit.


  1. Shouldn’t I get a check mark just for that? ↩︎

  2. This information coming from my brain and in no way researched anywhere else. ↩︎

A quick review of Willow (Episode 1 & 2)

Warwick Davis reprising role as Willow

Short review

It’s alright, but I hope that it gets better over time.

Longer review

Let me say this first, before I get into it more. I loved the Original Willow movie when I was kid. It came out in 1988 and must have been 8 when I saw it on VHS. I even remember reading the first two books in of a series that came out in 1995.

I don’t want this just to be good.

I want it to be great.

That said, it’s been… a while since I’ve seen was that age. And although I still love the movie and force my family to watch it recently, I have an understanding that this is Disney rebooting a franchise. I am not going to capture that same feeling as when I first saw it.

I’m fine with that, and I’m not screaming to the internet that they ruined my childhood or anything silly like that.

I am grateful that they think it’s worth going back to it.

And to be honest, the original had some problems as well.

But where does that leave us with this show?

Well…

I like it… but it’s got some real flaws that I know that are really going to turn some people off.

First of all, the 54 minute pilot has a big job of introducing our 5 principle characters and getting the audience up to speed.

Most of the main characters in the show on an epic forest set.

At this point in the story, I don’t honestly care too much for a few of them as they haven’t shown enough of why I should care for them apart from they are our protagonists. I feel a couple of them are just saying the lines of sometimes rushed dialog to help us move the plot along and act as exposition. I’m going to hold out hope that they were directed to behave in the way, and that we’ll get a chance to see what they can do with the characters later. Similar to how Chris Hemsworth was able to take Thor from being a stick in the mud to one of my favorite characters in the MCU.

I believe that thing that will keep me watching will be Warwick Davis (Willow), Tony Revolori (Prince Graydon), and Amar Chadha-Patel (Boorman). After the second episode (which is better than the first), I found myself missing them when they weren’t on-screen. Although, Warwick does have some cringeworthy moments, I really get a feeling that he wants this to work and that really shines through. He is the same Willow from the movie, and that what I love.

Should

I’m someone who says a lot of things about self improvement. And I have to say that I’m a much better person now than where I was 10 and 20 years ago.

This doesn’t mean that I’ve hit all my goals but it does feel good to know that I have made progress.

Unfortunately, it feels like a lot of the things that were promised as the American dream are just outside of reach. That I’ve squandered a lot of the opportunity that was in front of me. I hurt myself with the word “should”. I “should” have a house. That house “should” be big and go with my luxury car. I “should” have an astounding career. I “should” be in great shape. “Should”, “should”, “should”.

The expectations hurt.

I’m reminded that I shouldn’t “should” on myself.

It “could” be worse.

I am grateful for the things that I do have in my life both material and not.

The ability to simply take this time to write this and see my thoughts is comforting in that I know that when the future me sees this…

Well, I don’t know.

But I do know that I will be kind and understanding that the present me was doing the best that I could.

A quick review of Wakanda Forever

Super short review:

I liked it.

Longer short review:

I really, really wish that I had more sleep before and after watching the movie. This movie does a lot of things that we don’t really see in a “super hero movie”. You get a feeling that the people making it were really trying to convey what it means to really lose someone. That in itself can be the entirety of a movie.

But.

This movie has a lot more that it wants to do and it’s ultimately the part that some might have a problem with.

It’s 3 hours and my family had just finished a day at amusement park after spending 6 hours on the road1. They fell asleep but I’d go back and watch it all over again.


  1. They were sleeping on the drive there. ↩︎

PlayStation VR2 launches in February

Today, I’m very pleased to announce that PlayStation VR2 is officially launching on February 22, 2023. PlayStation VR2 Sense controller charging station, designed specifically for the PS VR2 Sense controller, will also launch the same day.

I was talking to my wife about this and we came to the conclusion that it’s probably a good time for them to release it. This way they can ask for another $500 dollars after all the people have started paying off the PlayStations that they purchased in Decemeber.

Mandaris On Monday

A short one on Monday.

Mandaris On Monday

A short podcast episode with no agenda.

A Mini Podcasts

I’m just going to release this without any fanfare

Topics:

  • planning for the afternoon
  • giving a speech
  • Andor
  • She-Hulk