<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="pretty-atom-feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Builder Season Playbook</title>
  <subtitle>Dashboard, progress log, and builder activity site</subtitle>
  <link href="https://newman5.github.io/feed/feed.xml" rel="self" />
  <link href="https://newman5.github.io/builder-season-playbook/" />
  <updated>2026-05-12T00:00:00Z</updated>
  <id>https://newman5.github.io/builder-season-playbook/</id>
  <author>
    <name>Builder Season Playbook</name>
  </author>
  <entry>
    <title>Hello World</title>
    <link href="https://newman5.github.io/posts/2026-04-29-post-title/" />
    <updated>2026-04-29T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-04-29-post-title/</id>
    <content type="html">&lt;p&gt;I registered for the hackathon today and created the repo and made an annoucement post on X&lt;/p&gt;
&lt;p&gt;Cool day ... and I got my progress log working ... I think.&lt;/p&gt;
&lt;p&gt;It works but I still need to clean up some stuff.  Cheers!&lt;/p&gt;
&lt;p&gt;todo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make blog-menu work in the most simple way - change to npm&lt;/li&gt;
&lt;li&gt;make npm scripts to acces the blog / logging&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <title>The Web is on</title>
    <link href="https://newman5.github.io/posts/2026-05-01-second-post-today/" />
    <updated>2026-05-01T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-01-second-post-today/</id>
    <content type="html">&lt;p&gt;So today I was able to get the website going with this rogress log and an activity dashboard that pulls things from Discord and you know creates an 11T site that&#39;s able to be published on Github pages Feel like it was pretty good for Friday afternoon Have a great weekend!&lt;/p&gt;
&lt;p&gt;Some Todo:  Add Twitter profile pics, cutoff long commit messages, save the data from the API locally to cutdown on hitting the API limits, something with collecting and verifying the Twitter update posts&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>X search semi automated</title>
    <link href="https://newman5.github.io/posts/2026-05-05-x-search-semi-automated/" />
    <updated>2026-05-05T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-05-x-search-semi-automated/</id>
    <content type="html">&lt;p&gt;Working on shifting to Python and to a simple data model
Moving away from Python to node
Codex says:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;• The activity pipeline is now Node-based.

  I replaced web/scripts/generate-activity.sh:1 with web/scripts/generate-activity.mjs:1 and updated web/
  package.json:1 so npm run build:data now runs node ./scripts/generate-activity.mjs. The new script keeps the
  same output shape in web/src/_data/activity.json, but the date math, GitHub requests, pagination, and JSON
  shaping all live in one Node module now.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;p&gt;What is normalization?
When to use Bash, Python, or Node?
is there a way to have a &amp;quot;don&#39;t hit the API&amp;quot; flag?
The problem of builders starting in different weeks.  Could each builder have a &amp;quot;start week&amp;quot; attribute?&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;p&gt;xSearch = {
adminWeek1Start,
adminDurationWeeks,
builderUpdateDurationWeeks,
defaultBuilderWeek1End,
weeklyUpdateHashtags,
weeklyUpdateMention,
configError,
currentAdminWeekIndex,
weeks: [
{
index,
startDate,
endDateExclusive,
endDateInclusive,
label,
dateRangeLabel,
searchUrl
}
],
builders: [
{
id,
name,
xHandle,
firstUpdateWeekStart,
firstUpdateWeekEnd,
firstAdminWeekIndex,
finalPresentationWeekEnd,
searchUrl,
weeks: [
{
index,
startDate,
endDateExclusive,
builderWeekIndex,
builderWeekLabel,
label,
dateRangeLabel,
searchUrl
}
]
}
]
}&lt;/p&gt;
&lt;p&gt;activity = {
generatedAt,
weekStart,
weekEnd,
builders: [
{
id,
name,
lastActivityAt,
commitsThisWeek,
recentCommits: [
{
repo,
message,
url,
committedAt
}
],
error
}
]
}&lt;/p&gt;
&lt;p&gt;builders = [
{
id,
name,
github,
x,
xRequiredHashtags,
xRequiredMention,
xIgnore,
projectName,
projectUrl,
repoUrl,
pies,
notes
}
]&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Bash Bash?  move from Bash to Python</title>
    <link href="https://newman5.github.io/posts/2026-05-05-bash-bash--move-from-bash-to-python/" />
    <updated>2026-05-05T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-05-bash-bash--move-from-bash-to-python/</id>
    <content type="html">&lt;p&gt;I wanted to make sure I was using the right tooling and I think Python fits here.  I&#39;m using a script to take yml data - that I manually input and that outputs JSON for the 11ty to build the frontend... but why?  Why not just use the yaml?  Im pretty sure 11ty can use yml as well as JSON.&lt;/p&gt;
&lt;p&gt;I think it&#39;s part of the iterative process to go back and rebuild when I &#39;see&#39; it better.  And, it underlines the data model first building method that I&#39;ve seen some folks use.  ... and that&#39;s what I&#39;ll do tomorrow.&lt;/p&gt;
&lt;p&gt;PS: I&#39;m pleased with the current Piece of pie hackathon.  we closed the registration and have over 20 builders - which meets our goal.  And, I&#39;m happy with creating this repo to &#39;productize&#39; the hackathon and make it a replicable safe space for builders of tomorrow.  (yeah, I really think like that)&lt;/p&gt;
&lt;p&gt;Codex says:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Implemented the Python migration. The builder normalization logic now lives in web/scripts/builders_json.py:1, with comments at the
  same intent-level as the shell scripts, and the old builders-json.sh entrypoint has been removed. Callers now invoke python3
  directly from web/package.json:7, web/scripts/generate-activity.sh:25, and web/scripts/generate-x-posts.sh:13.

  I also added the minimal Python dependency file at web/requirements.txt:1, updated both GitHub Actions workflows to install Python
  and PyYAML before builds (.github/workflows/update-activity.yml:30, .github/workflows/deploy.yml:37), and refreshed the docs in
  README.md:90 and web/README.md:15 to reflect the new runtime and the fact that the X pipeline still uses Ruby for now.

  Verification: python3 web/scripts/builders_json.py passed, and npm run build:data:x passed end-to-end. I did not fully verify npm
  run build:data because that path calls the live GitHub API. One generated file changed in-repo: web/src/_data/builders.json:1. Its
  content is equivalent, but empty arrays are now rendered as [] instead of Ruby’s multiline empty-array formatting.
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>updating the repos.yml</title>
    <link href="https://newman5.github.io/posts/2026-05-06-updating-the-reposyml/" />
    <updated>2026-05-06T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-06-updating-the-reposyml/</id>
    <content type="html">&lt;p&gt;Just updating the repos.yml with the &amp;quot;source of truth&amp;quot; spreadsheet that Harsha and I work with as admin ... and yes, I did it by hand, check it line by line and then ask copilot to verify it.&lt;/p&gt;
&lt;p&gt;I&#39;m learning so many little things by working on this project.  Like .yml files and 11ty global data.  One technique is to search Github for how others are using it and asking the AI to explain stuff.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>The tech stack for this project</title>
    <link href="https://newman5.github.io/posts/2026-05-06-the-tech-stack-for-this-project/" />
    <updated>2026-05-06T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-06-the-tech-stack-for-this-project/</id>
    <content type="html">&lt;p&gt;Here&#39;s the tech stack for this repo:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eleventy (11ty) v3.1.2&lt;/strong&gt; — Static site generator&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nunjucks&lt;/strong&gt; — Template engine (&lt;code&gt;.njk&lt;/code&gt; files)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt; — Runtime (ES modules)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Data &amp;amp; Config:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YAML&lt;/strong&gt; (js-yaml v4.1.1) — Configuration files (repos.yml, event.yml)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub API&lt;/strong&gt; — Source of commit activity data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSON&lt;/strong&gt; — Data interchange (activity.json, builders.json, xSearch results)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plugins:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;@11ty/eleventy-plugin-rss v2.0.4&lt;/strong&gt; — Atom feed generation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Build &amp;amp; Scripts:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;npm scripts&lt;/strong&gt; — Task runner&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js ES modules&lt;/strong&gt; — Standalone scripts for data generation (&lt;code&gt;.mjs&lt;/code&gt; files)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Architecture summary:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Config layer&lt;/strong&gt; → repos.yml (manual registry) + event.yml (event timing)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data generation&lt;/strong&gt; → generate-activity.mjs fetches GitHub API, outputs activity.json&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data aggregation&lt;/strong&gt; → _data files (builders.js, activity.json, xSearch.js) provide global template data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Templates&lt;/strong&gt; → Nunjucks + custom Eleventy filters (defined in eleventy.config.js)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt; → Static HTML in _site&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The workflow is:
YAML config → GitHub API → JSON snapshot → Nunjucks templates → Static site.&lt;/p&gt;
&lt;p&gt;No framework cruft (React, Vue, etc.) — pure static generation optimized for content and dashboards.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>writing a newsletter and updating the weeks</title>
    <link href="https://newman5.github.io/posts/2026-05-08-writing-a-newsletter-and-updating-the-weeks/" />
    <updated>2026-05-08T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-08-writing-a-newsletter-and-updating-the-weeks/</id>
    <content type="html">&lt;p&gt;Hello Happy Hackers&lt;/p&gt;
&lt;p&gt;I&#39;m not sure why we ended the weeks on a Sunday.  I suppose it was to highlight the &#39;deadline&#39; or &#39;due date&#39; aspect.  It could just as easily been ending on Friday, due on Friday.  In future hachathons, this will be configurable.&lt;/p&gt;
&lt;p&gt;We addressed the Admin Week and Builder week.  The Admin weeks start when registration begins and the buider weeks start when registration closes. ... hmmm, maybe next time we use the NASA model of Time Minus and Plus.  Weeks before registration closes (LIFTOFF) are Minus weeks and after are plus weeks or just weeks.&lt;/p&gt;
&lt;p&gt;Anyway - happy Friday&lt;/p&gt;
&lt;p&gt;and here is what Codex says:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Implemented the week-model change across config, data generation, dashboard UI, and docs.

  The core change is in /home/nsl/ad-ipsum/builder-season-playbook/config/event.yml:18, scripts/event.mjs:18, and src/
  _data/xSearch.js:1. Admin week 1 is now anchored to 2026-04-13 through 2026-04-19, the admin calendar runs for 14 weeks,
  builder updates run for 12 consecutive weeks, and the default builder Week 1 is the week ending 2026-05-03. Builder
  timing is now computed separately from admin week numbering, so a builder’s Week 1 can correctly map to Admin Week 3 and
  their final presentation week can land on 2026-07-19.

  The dashboard and builder pages now explain that distinction instead of hiding it. src/dashboard/index.njk:16 keeps
  admin week labels as the canonical labels, adds builder Week 1 and final presentation columns, and clarifies that the
  GitHub activity section uses the current UTC week. src/builders/builder.njk:45 shows each builder’s Week 1 update
  timing, admin-week offset, and final presentation week. I also updated README.md:30, /home/nsl/ad-ipsum/builder-season-
  playbook/config/repos.yml:1, and the internal reference post at src/posts/2026-05-05-x-search-semi-automated.md:28.

  I used an event-level default for all current builders rather than writing the same first_update_week_end into every
  builder entry. Individual builders can now override that in config/repos.yml when needed.

  Verification: ./node_modules/.bin/eleventy completed successfully, and the generated data confirms Week 1 = Apr 13 to
  Apr 19, Week 2 ends 2026-04-26, default builder Week 1 ends 2026-05-03, and the computed final presentation week ends
  2026-07-19.
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <title>Builder facepile and post tools</title>
    <link href="https://newman5.github.io/posts/2026-05-12-builder-facepile-and-post-tools/" />
    <updated>2026-05-12T00:00:00Z</updated>
    <id>https://newman5.github.io/posts/2026-05-12-builder-facepile-and-post-tools/</id>
    <content type="html">&lt;p&gt;Today I made two related improvements to the Builder Season Playbook: a new builder facepile on the homepage and a smoother post-writing workflow for future updates.&lt;/p&gt;
&lt;h2&gt;Builder Facepile&lt;/h2&gt;
&lt;p&gt;The homepage now includes a GitHub-profile-image facepile built from the existing normalized builder registry. The data still flows from &lt;code&gt;config/repos.yml&lt;/code&gt;, optional &lt;code&gt;project.yml&lt;/code&gt; overlays, and then through the shared &lt;code&gt;builders&lt;/code&gt; array that Eleventy already consumes.&lt;/p&gt;
&lt;p&gt;I added a small normalization step so each builder exposes &lt;code&gt;githubProfileUrl&lt;/code&gt;, &lt;code&gt;githubAvatarUrl&lt;/code&gt;, &lt;code&gt;displayName&lt;/code&gt;, and &lt;code&gt;builderPageUrl&lt;/code&gt;. The avatar URLs use the stable GitHub pattern &lt;code&gt;https://avatars.githubusercontent.com/{username}?s=80&lt;/code&gt;, and the landing page renders those images with accessible markup, explicit dimensions, and lazy loading.&lt;/p&gt;
&lt;p&gt;The section fits the site’s current warm editorial look: overlapping circular avatars, subtle hover and focus states, and wrapping that still works on mobile.&lt;/p&gt;
&lt;h2&gt;Post Authoring&lt;/h2&gt;
&lt;p&gt;I also updated the posting workflow so new posts can include an explicit author line without rewriting the older archive by hand. The shell scaffolds now default to &lt;code&gt;author: &amp;quot;Newman&amp;quot;&lt;/code&gt;, while the post templates render &lt;code&gt;Author: Newman&lt;/code&gt; when a post does not define an author.&lt;/p&gt;
&lt;p&gt;For agent-authored posts, there is now a dedicated &lt;code&gt;create-post&lt;/code&gt; routine and repo-local plugin bundle. The script can generate a markdown file, create the matching image directory, and prefill a short summary body. That gives us a cleaner path for turning work sessions into publishable updates without having to reconstruct the front matter every time.&lt;/p&gt;
&lt;h2&gt;Verification&lt;/h2&gt;
&lt;p&gt;I ran the local Eleventy build after these changes. The homepage facepile rendered, existing posts displayed the new author line correctly, and the post-creation dry run produced the expected file path, image directory, and front matter.&lt;/p&gt;
&lt;p&gt;That should make the site feel a little more personal on the front page and a little easier to maintain behind the scenes.&lt;/p&gt;
</content>
  </entry>
</feed>