Every great framework starts with an opinion. Rails taught us that convention over configuration isn’t just about code — it’s a philosophy. This blog is built with that same ethos: opinionated defaults, minimal friction, maximum joy.

Why Build From Scratch?

A clean mechanical keyboard

When I set out to create this blog, I had three non-negotiable requirements:

  1. Syntax highlighting that actually looks good in dark mode
  2. Markdown-first workflow — no CMS, no database, just files
  3. A design that feels like it belongs in the Rails ecosystem

“Progress is made by lazy men looking for easier ways to do things.”
— Robert A. Heinlein

The Stack

This site is powered by Jekyll, the original static site generator that still holds up beautifully. Here’s the configuration that drives it:

# _config.yml
title: "Terminal.log"
markdown: kramdown
highlighter: rouge
kramdown:
  input: GFM
  syntax_highlighter: rouge

Code That Speaks

Let me show you some of the code patterns I love. Starting with Ruby — because of course:

class Article < ApplicationRecord
  belongs_to :author, default: -> { Current.user }
  has_many :comments

  scope :recent, -> { order(created_at: :desc).limit(25) }
  scope :published, -> { where(status: :published) }

  def reading_time
    (content.split.size / 200.0).ceil
  end

  def to_terminal_card
    {
      title: title,
      date: created_at.strftime("%b %d, %Y"),
      read: "#{reading_time} min",
      tags: tags.pluck(:name)
    }
  end
end

And here’s the JavaScript that powers the command palette on this very site:

document.addEventListener('keydown', (e) => {
  if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
    e.preventDefault();
    toggleCommandPalette();
  }
});

function toggleCommandPalette() {
  const palette = document.getElementById('cmd-palette');
  palette.classList.toggle('open');

  if (palette.classList.contains('open')) {
    document.getElementById('cmd-input').focus();
  }
}

Some HTML for good measure:

<nav class="nav-pill">
  <a href="/" class="nav-item active">
    <svg><!-- icon --></svg>
    <span>Home</span>
  </a>
  <button class="nav-cmd">
    <span>Search</span>
    <kbd>⌘K</kbd>
  </button>
</nav>

The Design System

The color palette draws from the Ruby on Rails brand:

Token Value Purpose
--ruby-red #D30001 Primary accent
--coal #0D0D0D Background
--ember #FF6B35 Tags & highlights
--gold #FFD700 Special emphasis

Typography Choices

After researching readability studies, I chose:

  • Inter for body text — tall x-height, open shapes, exceptional legibility
  • Source Serif 4 for headings — editorial warmth meets screen optimization
  • JetBrains Mono for code — purpose-built for developers

Rich Media Previews

Here is an example of an embedded YouTube video perfectly matching the site layout:

Rick Astley - Never Gonna Give You Up

And here is an example of an embedded audio player:

SoundCloud Demo

System Diagrams

You can also use Mermaid to draw architecture diagrams directly in Markdown:

ServerBrowserUserServerBrowserUserOpens BlogRequests PageReturns HTMLDisplays Beautiful Site

What’s Next

I’ll be writing about:

  • Elixir and OTP — building fault-tolerant systems
  • API design — the art of good interfaces
  • Developer tools — the small things that make big differences

This is just the beginning. Every blog post is a git commit to the repository of ideas.