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?
When I set out to create this blog, I had three non-negotiable requirements:
- Syntax highlighting that actually looks good in dark mode
- Markdown-first workflow — no CMS, no database, just files
- 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:
And here is an example of an embedded audio player:
System Diagrams
You can also use Mermaid to draw architecture diagrams directly in Markdown:
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.