Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
21727ca
Fix existing blog post front matter: replace demo placeholders
mithro Mar 20, 2026
fe110fa
Import Run 1 campaign updates from Crowd Supply as blog posts
mithro Mar 20, 2026
eadf0b6
Import post-campaign and Run 2 updates as blog posts
mithro Mar 20, 2026
60956e3
Add images for LibreLane, getting help, publicity, and final reminder…
mithro Mar 20, 2026
d75e263
Add images for OpenFASoC, MOSbius, and KianV RISC-V SoC posts
mithro Mar 20, 2026
d614f77
Add images for chip-on-board strategy post
mithro Mar 20, 2026
d17d51b
Add images for Tholin/Avalon Semiconductors feature post
mithro Mar 20, 2026
a2414bb
Add images for Tiny Tapeout feature post
mithro Mar 20, 2026
a829f64
Add Crowd Supply campaign hero image for news post thumbnails
mithro Mar 20, 2026
6822613
Add post_image hero thumbnails to all blog posts
mithro Mar 20, 2026
90c570f
Add Hirosh Dabui as guest author for KianV RISC-V SoC article
mithro Mar 20, 2026
b2e441b
Add Hirosh Dabui avatar image for guest author profile
mithro Mar 20, 2026
3c63d4d
Add Andrew Wingate as guest author for COB packaging post
mithro Mar 20, 2026
8367170
Fix hero images to match Crowd Supply source updates
mithro Mar 21, 2026
b26d227
Add curated excerpt text for all blog posts
mithro Mar 21, 2026
5386120
Fix news grid cards: equal image heights and consistent card sizing
mithro Mar 21, 2026
cb3d93a
Prevent author byline from wrapping mid-phrase on news cards
mithro Mar 21, 2026
751a62d
Fix broken titles and duplicate image alt text across posts
mithro Mar 21, 2026
8eb13cd
Add image gallery support using theme's lightGallery
mithro Mar 21, 2026
c45f6d2
Fix inline images for preview deployment compatibility
mithro Mar 21, 2026
c9d32b5
Remove dead link to deleted AS2650-2 GitHub repository
mithro Mar 22, 2026
f70f0a8
Fix nested double quotes in COB post image alt attributes
mithro Mar 23, 2026
e8bbce2
Fix signoff rendering as bullet point
krisjdev May 29, 2026
fa01879
Fix dates to match CrowdSupply posts
krisjdev May 29, 2026
1747fa1
Reword introduction to fit website better
krisjdev May 29, 2026
08d6bfc
Add Hackaday 2026 announcement post
krisjdev May 29, 2026
6ee7908
Fix date for Run 2 announcement
krisjdev May 29, 2026
55eb429
Import Run 2 announcement content from CrowdSupply
krisjdev May 29, 2026
ed4f93a
Fix date for Run 1 wafers arriving post
krisjdev May 29, 2026
d6700f2
Add `image` partial
krisjdev May 29, 2026
0b72f0b
Add image prep target
krisjdev May 29, 2026
640ce99
Import Run 1 wafer arrival post
krisjdev May 29, 2026
d4c2907
Unpublish Run 2 early bird warning
krisjdev May 29, 2026
057a04b
Adjust post dates to match CrowdSupply
krisjdev May 29, 2026
86638ba
Fix `prepimg` failing on EXIF removal
krisjdev May 29, 2026
9940fb8
Add `youtube` partial
krisjdev May 29, 2026
f30ca65
Import die sorting update
krisjdev May 29, 2026
85393e4
Add placeholder box for youtube partial
krisjdev May 29, 2026
5bc0d0e
Add a caption argument for youtube partial
krisjdev May 29, 2026
ab66f4c
Import COB progress update
krisjdev May 29, 2026
9e1f4c9
Ensure images are centered in post body
krisjdev May 29, 2026
cf09df7
Import KianV showcase post
krisjdev May 29, 2026
80c3f59
Update serve target to use `--future` flag for preview
krisjdev May 30, 2026
416be89
Add thumbnail for COB progress update
krisjdev May 30, 2026
101553b
Add thumbnail for KianV showcase
krisjdev May 30, 2026
3706fa2
Add thumbnail for die sorting update
krisjdev May 30, 2026
cdc2dab
Add thumbnail for Hackaday announcement
krisjdev May 30, 2026
dd9b349
Add thumbnail for Run 1 wafer arrival update
krisjdev May 30, 2026
a979a88
Update `image` partial to use lightbox
krisjdev May 30, 2026
9c9cd09
Update previous posts to use new `image` and `youtube` partials for p…
krisjdev May 30, 2026
ab454de
Fix rogue newline in youtube embed url
krisjdev May 30, 2026
7fe2f93
Merge branch 'main' into update-website-campaign-content
mithro Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ PATH := ${PATH}:/home/tim/.local/share/gem/ruby/3.2.0/bin
.DEFAULT_GOAL := help

# Phony targets
.PHONY: help build serve clean install update verify dev production test
.PHONY: help build serve clean install update verify dev production test prepimg

# Help target - shows available commands
help:
Expand All @@ -37,7 +37,7 @@ serve:
@echo "Starting Jekyll server..."
@echo "Site will be available at http://localhost:4000"
@echo "Press Ctrl+C to stop"
@$(JEKYLL) serve --watch --incremental
@$(JEKYLL) serve --watch --incremental --future

# Alias for serve - development mode
dev: serve
Expand Down Expand Up @@ -107,4 +107,9 @@ test: build
@echo "✅ All tests passed"

# Quick build and serve (builds first, then serves)
quick: build serve
quick: build serve

# Prepare image for website by stripping EXIF data and compressing it
prepimg:
-exif --remove $(img) -o $(img)
convert -quality 90% $(img) $(img)
10 changes: 10 additions & 0 deletions _authors/andrew-wingate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
layout: author_page
title: "Andrew Wingate"
sub_title: "Guest Author"
# avatar: "assets/images/people/andrew-wingate.jpg"
social_accounts:
- icon: "jam jam-world"
url: "https://www.crowdsupply.com/evezor-inc"
---
**Andrew Wingate** is the founder of [Evezor Inc](https://www.crowdsupply.com/evezor-inc) and an active contributor to the [wafer.space](https://wafer.space) community. He has been instrumental in developing the chip-on-board (COB) packaging strategy that makes working with custom silicon accessible without specialised equipment.
10 changes: 10 additions & 0 deletions _authors/hirosh-dabui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
layout: author_page
title: "Hirosh Dabui"
sub_title: "Guest Author"
avatar: "assets/images/people/hirosh-dabui.jpg"
social_accounts:
- icon: "jam jam-github"
url: "https://github.com/splinedrive"
---
**Hirosh Dabui** is the creator of [KianV](https://github.com/splinedrive/kianRiscV), a custom RISC-V SoC capable of running Linux on open-source silicon. His work on the GF180MCU Run 1 demonstrates what is possible with fully open ASIC design flows, from RTL to packaged chips.
11 changes: 11 additions & 0 deletions _includes/image.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<div class="post-gallery light-gallery-wrapper mb-30">
{% if include.description %}
<p class="text-center text-muted mb-10"><small>{{ include.description }}</small></p>
{% endif %}
<figure class="overlay overlay1 rounded">
<a href="{{ include.file | relative_url }}" class="lightbox">
<span class="bg"></span>
<img src="{{ include.file | relative_url }}" alt="{{ include.description }}"/>
</a>
</figure>
</div>
55 changes: 55 additions & 0 deletions _includes/post-gallery.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{% comment %}
Post image gallery with lightbox support.
Usage in a post:
{% include post-gallery.html gallery="gallery_name" %}
where gallery_name matches a key in the post's front matter `galleries:` hash.

Front matter example:
galleries:
librelane_steps:
caption: "LibreLane workflow steps"
images:
- img: "/assets/images/news/example/step1.svg"
alt: "Step 1"
- img: "/assets/images/news/example/step2.svg"
alt: "Step 2"
{% endcomment %}

{% assign gallery_data = page.galleries[include.gallery] %}
{% if gallery_data and gallery_data.images.size > 0 %}
<div class="post-gallery light-gallery-wrapper mb-30">
{% if gallery_data.caption %}
<p class="text-center text-muted mb-10"><small>{{ gallery_data.caption }}</small></p>
{% endif %}
<div class="tiles tiles-s">
<div class="items row">
{% assign image_count = gallery_data.images | size %}
{% for item in gallery_data.images %}
{% if image_count <= 2 %}
<div class="item col-md-6">
Comment on lines +28 to +29

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Handle one-image galleries separately.

Line 28 groups 1 and 2 images together, so a single-image gallery renders at half width on md+ screens.

📐 Suggested fix
-        {% if image_count <= 2 %}
-          <div class="item col-md-6">
+        {% if image_count == 1 %}
+          <div class="item col-12">
+        {% elsif image_count == 2 %}
+          <div class="item col-md-6">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{% if image_count <= 2 %}
<div class="item col-md-6">
{% if image_count == 1 %}
<div class="item col-12">
{% elsif image_count == 2 %}
<div class="item col-md-6">
🧰 Tools
🪛 HTMLHint (1.9.2)

[error] 28-28: Special characters must be escaped : [ < ].

(spec-char-escape)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@_includes/post-gallery.html` around lines 28 - 29, The template currently
groups 1 and 2 images under the same branch, causing a single-image gallery to
render at half-width; update the conditional around the "item col-md-6" logic in
_includes/post-gallery.html to handle image_count == 1 separately (render "item
col-md-12" or full-width for a single image) and keep the existing "item
col-md-6" branch for image_count == 2; adjust the if/elif structure so branches
reference the image_count variable explicitly to choose between single-image
full-width, two-image half-width, and the existing layout for larger galleries.

{% elsif image_count <= 4 %}
<div class="item col-md-{{ 12 | divided_by: image_count }}">
{% else %}
{% if forloop.index <= 2 %}
<div class="item col-md-6">
{% else %}
<div class="item col-md-4">
{% endif %}
{% endif %}
<figure class="overlay overlay1 rounded">
<a href="{{ item.img | relative_url }}" class="lightbox">
<span class="bg"></span>
<img src="{{ item.img | relative_url }}" alt="{{ item.alt | default: 'Gallery image' }}">
Comment on lines +40 to +42

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Escape imported alt text before inserting it into the attribute.

These values come from front matter imports. If an alt string contains quotes or <, the generated <img> tag becomes invalid.

🛡️ Suggested fix
-                <img src="{{ item.img | relative_url }}" alt="{{ item.alt | default: 'Gallery image' }}">
+                <img src="{{ item.img | relative_url }}" alt="{{ item.alt | default: 'Gallery image' | escape }}">
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<a href="{{ item.img | relative_url }}" class="lightbox">
<span class="bg"></span>
<img src="{{ item.img | relative_url }}" alt="{{ item.alt | default: 'Gallery image' }}">
<a href="{{ item.img | relative_url }}" class="lightbox">
<span class="bg"></span>
<img src="{{ item.img | relative_url }}" alt="{{ item.alt | default: 'Gallery image' | escape }}">
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@_includes/post-gallery.html` around lines 40 - 42, The alt attribute uses
unescaped front-matter content (item.alt) which can break HTML if it contains
quotes or tags; update the template to HTML-escape or entity-encode item.alt
before inserting it into the <img> alt attribute (e.g., use the templating
engine's escape/filter helper or an escape function) and ensure the fallback
'Gallery image' remains safe; locate the snippet using item.img and item.alt in
the post-gallery template and apply the escape filter to item.alt so any quotes,
<, >, & are encoded.

</a>
{% if item.caption %}
<figcaption>
<h5 class="from-top mb-0">{{ item.caption }}</h5>
</figcaption>
{% endif %}
</figure>
</div>
{% endfor %}
</div>
</div>
</div>
{% endif %}
43 changes: 43 additions & 0 deletions _includes/youtube.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{% comment %} See https://developers.google.com/youtube/player_parameters for youtube embed parameters {% endcomment %}

{% assign autoplay = include.autoplay | default: false | to_integer %}
{% assign mute = include.mute | default: true | to_integer %}
{% assign playsinline = include.playsinline | default: true | to_integer %}
{% assign fs = include.fullscreen | default: true | to_integer %}
{% assign disablekb = include.disablekb | default: true | to_integer %}
{% assign controls = include.controls | default: false | to_integer %}
{% assign loop = include.loop | default: true | to_integer %}


{% comment %} Looping single videos still needs a playlist parameter in the URL - see the docs {% endcomment %}
{% capture playback_options %}
&autoplay={{autoplay}}&mute={{mute}}&playsinline={{playsinline}}&fs={{fs}}&disablekb={{disablekb}}&controls={{controls}}&loop={{loop}}&playlist={{include.id}}
{% endcapture %}

{% if include.id != "TODO" %}
<div>
{% if include.caption %}
<p class="text-center text-muted mb-10">
<small>{{ include.caption }}</small>
</p>
{% endif %}
<iframe style="width:100%; aspect-ratio: 16/9;"
src="https://www.youtube.com/embed/{{ include.id }}?start=&end={{playback_options | strip }}"
title="YouTube video player" frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>
</iframe>
</div>
{% else %}
<div>
{% if include.caption %}
<p class="text-center text-muted mb-10">
<small>{{ include.caption }}</small>
</p>
{% endif %}
<div style="width:100%; aspect-ratio: 16/9; display: flex; flex-direction: column; justify-content: center; align-items: center; border: dashed red;">
{% include image.html file="/assets/images/logo.webp" %}
<p><b>Placeholder video box</b></p>
</div>
</div>
{% endif %}
12 changes: 5 additions & 7 deletions _posts/2025-04-19-website.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,14 @@
layout: posts/post-boxed
title: "New wafer.space website"
date: 2025-04-19 04:00:00 +0000
categories: [places]
tags: [travel]
excerpt: "The new wafer.space website has launched, bringing budget silicon manufacturing information and resources together in one place."
categories: [news]
tags: [wafer-space, website]
author: "Tim 'mithro' Ansell"
# post_image: "/assets/images/art/tb1.webp"
post_image: "/assets/images/news/gf180mcu-gelpack-dice.jpg"
badge_color: "bg-purple"
slider_post: true
slider_post: false
trending: false
#meta_title: "The Best Moments in Venice"
#meta_description: |
# Snowlake Jekyll Theme is a perfectly crafted fast loading and SEO-friendly static site generator theme
sidebar: true
permalink: "/news/website"
---
Expand Down
46 changes: 46 additions & 0 deletions _posts/2025-10-02-gf180mcu-run1-live.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: posts/post-boxed
title: "GF180MCU Run 1 is Live!"
date: 2025-10-02 12:00:00 +0000
excerpt: "The wafer.space GF180MCU Run 1 campaign is live on Crowd Supply! $7k gets you 1,000 dies from GlobalFoundries' GF180MCU process."
categories: [news]
tags: [gf180mcu, run1, crowd-supply]
author: "Tim 'mithro' Ansell"
post_image: "/assets/images/news/gf180mcu-gelpack-dice.jpg"
badge_color: "bg-purple"
slider_post: false
trending: false
sidebar: true
permalink: "/news/gf180mcu-run1-live"
external_url: "https://www.crowdsupply.com/wafer-space/gf180mcu-run-1/updates/we-re-live"
---

Hey folks,

The [wafer.space GF180MCU Run 1 campaign](https://www.crowdsupply.com/wafer-space/gf180mcu-run-1) just went live on Crowd Supply!

For those who haven't been following along: [wafer.space](https://wafer.space) brings the [OSH Park](https://oshpark.com) model to silicon. $7k gets you 1,000 dies. That's $7 per chip from GlobalFoundries' [GF180MCU](https://gf180mcu-pdk.readthedocs.io/) process. Real production quantities, not just a handful of prototypes.

Efabless shutting down earlier this year left the open silicon community without a clear path to fabrication. I started wafer.space to rebuild that infrastructure with transparent pricing, predictable timelines, and no gatekeeping - and it's even more affordable now!

## [The timeline](https://www.crowdsupply.com/wafer-space/gf180mcu-run-1#schedule)

- **November 28**: Last day to buy a slot
- **December 3**: GDS submission deadline
- **March 15, 2026**: Target ship date for dies to customers

## What you're getting

20mm² on [GF180MCU](https://gf180mcu-pdk.readthedocs.io/), replicated 1,000 times. This is the same mature 180nm mixed-signal process used for tons of production chips and the two [Google open MPW runs](https://developers.google.com/silicon). Five metal layers, MIM caps, poly resistors - all the basics you need for mixed-signal designs, MCUs, sensor interfaces, whatever.

## Get involved

Jump on our [Discord](https://discord.gg/43y2t53jpE) or [Matrix](https://matrix.to/#/#gf180mcu:fossi-chat.org) if you need help with pad rings, DRC issues, or just want to see what others are building.

Subscribe for future updates including reference designs, highlights of projects being built on GF180MCU, interviews with community members, and technical deep-dives into how things work behind the scenes.

This is about enabling open, community-driven silicon manufacturing to grow and expand. Let's make it happen.

-Tim 'mithro' Ansell

P.S. I was on [The Teardown Sessions](https://www.crowdsupply.com/crowd-supply/the-teardown-sessions) earlier today discussing wafer.space and open silicon - you can watch the recording at [http://youtu.be/tEOmnN8IAjs](http://youtu.be/tEOmnN8IAjs).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use HTTPS for the YouTube link.
The http://youtu.be/... URL should be upgraded to HTTPS in published content.

Proposed fix
-P.S. I was on [The Teardown Sessions](https://www.crowdsupply.com/crowd-supply/the-teardown-sessions) earlier today discussing wafer.space and open silicon - you can watch the recording at [http://youtu.be/tEOmnN8IAjs](http://youtu.be/tEOmnN8IAjs).
+P.S. I was on [The Teardown Sessions](https://www.crowdsupply.com/crowd-supply/the-teardown-sessions) earlier today discussing wafer.space and open silicon - you can watch the recording at [https://youtu.be/tEOmnN8IAjs](https://youtu.be/tEOmnN8IAjs).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
P.S. I was on [The Teardown Sessions](https://www.crowdsupply.com/crowd-supply/the-teardown-sessions) earlier today discussing wafer.space and open silicon - you can watch the recording at [http://youtu.be/tEOmnN8IAjs](http://youtu.be/tEOmnN8IAjs).
P.S. I was on [The Teardown Sessions](https://www.crowdsupply.com/crowd-supply/the-teardown-sessions) earlier today discussing wafer.space and open silicon - you can watch the recording at [https://youtu.be/tEOmnN8IAjs](https://youtu.be/tEOmnN8IAjs).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@_posts/2025-10-02-gf180mcu-run1-live.md` at line 46, Replace the insecure
YouTube short link by updating the URL string "http://youtu.be/tEOmnN8IAjs" to
use HTTPS (i.e. "https://youtu.be/tEOmnN8IAjs") in the markdown line that
references the Teardown Sessions recording so the published post uses a secure
link.

Loading
Loading