w5isp.com/templates/index.html
Graham McIntire 2097dbc018
Modernize why-signals-bend with project findings, polish scenes
Rewrite the NLOS post to reflect what microwaveprop has learned:
M-refractivity and dM/dh as the actual duct discriminant, the four
duct taxonomy with radiation ducts as the North Texas mechanism,
binary duct detection as a coin flip, low pressure beating high,
shallow boundary layer winning, PWAT sweet spot, seasonal pattern
(spring worst, summer best), troposcatter as the floor, and real
numbers for the 65 km QTH-to-W5HN/B path.

New interactive scenes: N vs M side-by-side refractivity profile,
pressure/HPBL/binary-duct bar chart, band-vs-dawn enhancement,
PWAT sweet spot with draggable cursor, monthly ducting probability,
and a 10 GHz link-budget decomposition showing how the 36 dB
diffraction gap gets closed.

Polish pass across all scenes: softer palette, rounded stroke
caps/joins, prettier slider styling in scene.css and nlos.css,
signal-pulse animations on NF cascade / single-stage / LNA
placement, trail persistence on the ray-trace scene, animated
glints along trapped rays in the duct scene, and animated TCP
sequence diagrams.

Add local-serve preview mode so future-dated posts show up on
zola serve but stay hidden on the deployed build.
2026-04-22 14:10:58 -05:00

78 lines
2.5 KiB
HTML

{% extends "base.html" %}
{% block title %}{{ config.title }}{% endblock title %}
{% block content %}
<section>
{% if section.title %}
<h1>{{ section.title }}</h1>
{% endif %}
<div>
{{ section.content | safe }}
</div>
</section>
{% set projects_section = get_section(path="projects/_index.md") %}
{% if projects_section.pages | length > 0 %}
<h2>Projects</h2>
<ul>
{% for page in projects_section.pages %}
<li>
<a href="{{ page.extra.url }}">{{ page.title }}</a> — {{ page.description }}
</li>
{% endfor %}
</ul>
{% endif %}
{# Filter out future-dated posts so they appear automatically on their publish date
(combined with a daily scheduled build in .forgejo/workflows/deploy.yml).
Local `zola serve` swaps the base_url to 127.0.0.1; when that's the case
we skip the filter and show every post so scheduled drafts are previewable. #}
{% set is_local = "127.0.0.1" in config.base_url or "localhost" in config.base_url %}
{% set current_ts = now(timestamp=true) %}
{% set_global published_pages = [] %}
{% set blog_section = get_section(path="blog/_index.md") %}
{% for page in blog_section.pages %}
{% if is_local %}
{% set_global published_pages = published_pages | concat(with=page) %}
{% else %}
{% set page_ts = page.date | date(format="%s") | int %}
{% if page_ts <= current_ts %}
{% set_global published_pages = published_pages | concat(with=page) %}
{% endif %}
{% endif %}
{% endfor %}
{% if published_pages | length > 0 %}
<h2>Blog</h2>
{% set latest = published_pages | first %}
<article>
<h2><a href="{{ latest.permalink }}">{{ latest.title }}</a></h2>
{% if latest.date %}
<p><time datetime="{{ latest.date | date(format="%Y-%m-%d") }}">{{ latest.date | date(format="%Y-%m-%d") }}</time></p>
{% endif %}
{% if latest.summary %}
{{ latest.summary | safe }}
{% else %}
<p>{{ latest.content | striptags | truncate(length=400) }}</p>
{% endif %}
<p><a href="{{ latest.permalink }}">Read more &rarr;</a></p>
</article>
{% if published_pages | length > 1 %}
<h2>Recent Posts</h2>
<ul>
{% for page in published_pages | slice(start=1, end=6) %}
<li>
{% if page.date %}
<time datetime="{{ page.date | date(format="%Y-%m-%d") }}">{{ page.date | date(format="%Y-%m-%d") }}</time>
{% endif %}
<a href="{{ page.permalink }}">{{ page.title }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
<p><a href="{{ get_url(path='@/blog/_index.md') }}">All posts &rarr;</a></p>
{% endif %}
{% endblock content %}