First commit of most of the pages laid out for the next phase.

main
Zed A. Shaw 1 week ago
parent b9f811f1b5
commit f0dd939acd
  1. 28
      .gitignore
  2. 32
      go.mod
  3. 53
      go.sum
  4. 14
      hello.go
  5. 241
      public/blockstart.css
  6. 143
      public/color.css
  7. 57
      public/game/1/turings-tarpit/index.html
  8. 59
      public/game/index.html
  9. 1637
      public/global.css
  10. 88
      public/index.html
  11. 51
      public/live/index.html
  12. 70
      public/stream/1/index.html
  13. 67
      public/stream/index.html
  14. 28
      scratchpad/json_decode.go
  15. 27
      scratchpad/template.html
  16. 6
      scratchpad/user.json

28
.gitignore vendored

@ -0,0 +1,28 @@
# ---> Vim
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
*~
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
backup
*.exe
*.dll
*.world
coverage
coverage/*
.venv

@ -0,0 +1,32 @@
module zedshaw-games/fibertest
go 1.24.2
require github.com/gofiber/fiber/v2 v2.52.8
require (
github.com/a-h/parse v0.0.0-20250122154542-74294addb73e // indirect
github.com/a-h/templ v0.3.865 // indirect
github.com/andybalholm/brotli v1.1.1 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cli/browser v1.3.0 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/compress v1.17.11 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/natefinch/atomic v1.0.1 // indirect
github.com/rivo/uniseg v0.2.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasthttp v1.58.0 // indirect
github.com/valyala/tcplisten v1.0.0 // indirect
golang.org/x/mod v0.24.0 // indirect
golang.org/x/net v0.39.0 // indirect
golang.org/x/sync v0.13.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/tools v0.32.0 // indirect
)
tool github.com/a-h/templ/cmd/templ

@ -0,0 +1,53 @@
github.com/a-h/parse v0.0.0-20250122154542-74294addb73e h1:HjVbSQHy+dnlS6C3XajZ69NYAb5jbGNfHanvm1+iYlo=
github.com/a-h/parse v0.0.0-20250122154542-74294addb73e/go.mod h1:3mnrkvGpurZ4ZrTDbYU84xhwXW2TjTKShSwjRi2ihfQ=
github.com/a-h/templ v0.3.865 h1:nYn5EWm9EiXaDgWcMQaKiKvrydqgxDUtT1+4zU2C43A=
github.com/a-h/templ v0.3.865/go.mod h1:oLBbZVQ6//Q6zpvSMPTuBK0F3qOtBdFBcGRspcT+VNQ=
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cli/browser v1.3.0 h1:LejqCrpWr+1pRqmEPDGnTZOjsMe7sehifLynZJuqJpo=
github.com/cli/browser v1.3.0/go.mod h1:HH8s+fOAxjhQoBUAsKuPCbqUuxZDhQ2/aD+SzsEfBTk=
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/gofiber/fiber/v2 v2.52.8 h1:xl4jJQ0BV5EJTA2aWiKw/VddRpHrKeZLF0QPUxqn0x4=
github.com/gofiber/fiber/v2 v2.52.8/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A=
github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.58.0 h1:GGB2dWxSbEprU9j0iMJHgdKYJVDyjrOwF9RE59PbRuE=
github.com/valyala/fasthttp v1.58.0/go.mod h1:SYXvHHaFp7QZHGKSHmoMipInhrI5StHrhDTYVEjK/Kw=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=

@ -0,0 +1,14 @@
package main
import (
"log"
"github.com/gofiber/fiber/v2"
)
func main() {
app := fiber.New()
app.Static("/", "./public")
log.Fatal(app.Listen(":5001"))
}

@ -0,0 +1,241 @@
:root {
--color-border: hsl(0, 0%, 0%);
--border-radius: 5px;
--text: 0;
--value: 9;
--value-scale: 12%;
--pad: 10px;
--bottom-margin: 2rem;
--w: initial;
--h: initial;
--value0: hsl(0, 0%, calc(0 * var(--value-scale)));
--value1: hsl(0, 0%, calc(1 * var(--value-scale)));
--value2: hsl(0, 0%, calc(2 * var(--value-scale)));
--value3: hsl(0, 0%, calc(3 * var(--value-scale)));
--value4: hsl(0, 0%, calc(4 * var(--value-scale)));
--value5: hsl(0, 0%, calc(5 * var(--value-scale)));
--value6: hsl(0, 0%, calc(6 * var(--value-scale)));
--value7: hsl(0, 0%, calc(7 * var(--value-scale)));
--value8: hsl(0, 0%, calc(8 * var(--value-scale)));
--value9: hsl(0, 0%, calc(9 * var(--value-scale)));
}
body {
padding: 0px;
margin: 0px;
}
blockstart {
background-color: #fff;
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
display: flex;
flex-direction: column;
justify-content: flex-start;
padding: 0px;
margin: 0px;
width: 100%;
min-width: 100%;
max-width: 100%;
height: fit-content;
min-height: fit-content;
padding: 1rem;
}
blockstart > * + * {
margin-bottom: var(--bottom-margin);
}
blockstart > *:last-child {
margin-bottom: 0px;
}
blockstart a {
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
}
blockstart block {
--spacing: space-evenly;
display: flex;
background-color: hsl(0, 0%, calc(var(--value) * var(--value-scale)));
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
justify-content: var(--spacing);
flex-direction: column;
padding: var(--pad);
width: var(--w);
min-width: var(--w);
max-width: var(--w);
height: var(--h);
min-height: var(--h);
max-height: var(--h);
}
blockstart block > * {
--spacing: flex-start;
--pad: 10px;
--w: initial;
--h: initial;
background-color: hsl(0, 0%, calc(var(--value) * var(--value-scale)));
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
display: flex;
justify-content: var(--spacing);
align-self: stretch;
flex-direction: column;
margin: 2px;
padding: var(--pad);
width: var(--w);
min-width: var(--w);
max-width: var(--w);
height: var(--h);
min-height: var(--h);
max-height: var(--h);
}
blockstart stack {
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
display: grid;
grid-template-rows: 1fr;
grid-template-columns: 1fr;
grid-template-areas: "cover";
}
blockstart stack > * {
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
width: 100%;
height: 100%;
position: relative;
grid-area: cover;
}
blockstart stack > .top {
z-index: 10;
}
blockstart .wide {
width: 100%;
}
blockstart .no-flex {
display: block;
flex: unset;
flex-direction: unset;
align-self: unset;
}
blockstart .center {
justify-content: center;
align-items: center;
align-self: center;
}
blockstart .center-text {
text-align: center;
justify-content: center;
align-items: center;
}
blockstart .center-self {
align-self: center;
}
blockstart .vertical {
flex-direction: column;
}
blockstart .horizontal {
flex-direction: row;
}
blockstart grid {
--cols: auto;
--rows: auto;
--gap: 0.5rem;
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
display: grid;
grid-gap: var(--gap);
grid-template-columns: repeat(var(--cols), 1fr);
grid-template-rows: repeat(var(--rows), 1fr);
}
blockstart hr {
--height: 1rem;
min-height: var(--height);
visibility: hidden;
}
blockstart hr.huge {
--height: 3rem;
}
blockstart shape {
--value: 2;
--text: 9;
--pad: 1rem;
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
background-color: hsl(0, 0%, calc(var(--value) * var(--value-scale)));
display: flex;
width: var(--w);
min-width: var(--w);
max-width: var(--w);
height: var(--h);
min-height: var(--h);
max-height: var(--h);
text-align: center;
justify-content: center;
align-items: center;
align-self: center;
padding: pad;
}
blockstart .debug {
border: 1px solid red;
}
blockstart .debug > * {
border: 1px solid blue;
}
blockstart .border {
border: 2px solid var(--color-border);
border-radius: var(--border-radius);
}
blockstart .compact {
justify-content: flex-start;
}
blockstart .compact > * {
flex: unset;
}
.solid {
--value: 4;
--text: 9;
}
.fill {
flex: 1 1 auto;
}
button {
--value: 7;
--text: 0;
background-color: hsl(0, 0%, calc(var(--value) * var(--value-scale)));
color: hsl(0, 0%, calc(var(--text) * var(--value-scale)));
border: 2px solid var(--color-border);
border-radius: var(--border-radius);
}
button:hover {
filter: brightness(90%);
}
[style*="--aspect-ratio"] {
aspect-ratio: var(--aspect-ratio);
}

@ -0,0 +1,143 @@
@font-face {
font-family: computer;
src: url(/fonts/computer.woff);
}
/* Grays
--value9: hsl(0, 0%, 100%);
--value8: hsl(210, 17%, 98%);
--value8a: hsl(210, 17%, 98%, 0);
--value7: hsl(210, 16%, 93%);
--value6: hsl(210, 14%, 89%);
--value5: hsl(210, 14%, 83%);
--value4: hsl(210, 11%, 71%);
--value3: hsl(208, 7%, 46%);
--value2: hsl(210, 9%, 31%);
--value1: hsl(210, 10%, 23%);
--value0: hsl(210, 11%, 15%);
Greens
--value9: #f7fcf5;
--value8: #e5f5e0;
--value8a: hsl(210, 17%, 98%, 0);
--value7: #83cad4;
--value6: #73c17a;
--value5: #006d2c;
--value4: hsl(210, 11%, 71%);
--value3: hsl(208, 7%, 46%);
--value2: hsl(210, 9%, 31%);
--value1: #06160c;
--value0: #010402;
*/
:root {
--value9: #f7fcf5;
--value8: #e5f5e0;
--value8a: hsl(210, 17%, 98%, 0);
--value7: #daf0d5;
--value6: #73c17a;
--value5: #238b45;
--value4: #006d2c;
--value3: #105329;
--value2: #0e321b;
--value1: #06160c;
--value0: #010402;
--gray9: hsl(0, 0%, 100%);
--gray8: hsl(210, 17%, 98%);
--gray8a: hsl(210, 17%, 98%, 0);
--gray7: hsl(210, 16%, 93%);
--gray6: hsl(210, 14%, 89%);
--gray5: hsl(210, 14%, 83%);
--gray4: hsl(210, 11%, 71%);
--gray3: hsl(208, 7%, 46%);
--gray2: hsl(210, 9%, 31%);
--gray1: hsl(210, 10%, 23%);
--gray0: hsl(210, 11%, 15%);
--orange: hsl(19, 97%, 41%);
--yellow: hsl(44, 100%, 52%);
--red: hsl(334, 100%, 50%);
--purple: hsl(265, 83%, 57%);
--blue: hsl(217, 100%, 61%);
--green: hsl(98, 32%, 45%);
--black: hsl(240, 100%, 0%);
--invert-orange: var(--value9);
--invert-yellow: var(--value0);
--invert-red: var(--value9);
--invert-purple: var(--value9);
--invert-blue: var(--value9);
--invert-green: var(--value9);
--color-accent: var(--value7);
--color-bg-inverted: var(--gray6);
--color-bg-secondary: var(--gray2);
--color-bg-code-text: var(--value2);
--color-bg-tertiary: var(--value3);
--color-bg: var(--value0);
--color-border: var(--gray3);
--color-error: var(--red);
--color-good: var(--green);
--color-icon-image: var(--value8);
--color-inactive: var(--value4);
--color-info: var(--yellow);
--color-input-bg: var(--value7);
--color-input-border: var(--value7);
--color-input-button: var(--value6);
--color-overlay-background: var(--value2);
--color-overlay-shadow: var(--value6);
--color-overlay-text: var(--value7);
--color-play-icon: var(--value4);
--color-pulse-1: hsla(0, 0%, 80%, 1);
--color-pulse-2: hsla(0, 0%, 80%, 0.7);
--color-pulse-3: hsla(0, 0%, 80%, 0.1);
--color-pulse-4: hsla(0, 0%, 80%, 0);
--color-secondary-accent: var(--value7);
--color-secondary: var(--value7);
--color-shadow-secondary: var(--value6);
--color-shadow: var(--value2);
--color-text-inverted: var(--value0);
--color-text-secondary: var(--value8);
--color-text: var(--value9);
--color-warning: var(--orange);
--color: var(--value9);
--gray-bg: var(--gray1);
--color-scrollbar-thumb: hsla(0, 0%, 40%, 0.8);
--color-scrollbar-track-piece: hsla(0, 0%, 20%, 0.8);
--color-bg-transparent: var(--value8a);
--color-bg-code: var(--gray1);
--color-border-tabs: var(--value6);
--color-shadow-dark: var(--value2);
--font-family: "Andale Mono", "Monaco", monospace, monospace;
--font-title: "Palatino", serif;
--font-computer: "computer", monospace;
--font-size: 1.05em;
--font-text-size: 1.4em; /* for paragraphs mostly */
--font-label-size: 1rem;
--font-heading-size: 1.2em;
--font-heading-weight: 300;
--font-header-nav: 1.3em;
--font-button-size: 1.4em;
--hover-brightness: 0.9;
--justify-important: center;
--justify-blockquote: left;
--justify-normal: left;
--line-height: 1.5;
--width-sidebar: 320px;
--width-card: 385px;
--width-card-medium: 460px;
--width-card-wide: 800px;
--width-content: 1080px;
--width-badge: 20px;
--font-size-badge: 13px;
--fixed-header-height: 73px;
--fixed-footer-height: 400px;
--color-scrollbar-thumb: hsla(0, 0%, 60%, 0.8);
--color-scrollbar-track-piece: hsla(0, 0%, 100%, 0.9);
--color-bg-header: var(--value0);
--color-text-header: var(--value9);
}

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<shape style="--w: 100%; --h: 300px">Gameplay Demo Video</shape>
<block style="--value: 7">
<h1>Turing's Tarpit</h1>
<block class="horizontal">
<shape style="--w: 200px; --h: 200px;">Some Image</shape>
<p>Polaroid retro pork belly yes plz bitters, viral chicharrones typewriter chartreuse vice Brooklyn. Adaptogen pour-over vibecession viral. Tote bag tonx DIY microdosing. Pickled selvage bespoke small batch, blue bottle twee tacos jean shorts before they sold out chicharrones solarpunk. Hoodie taiyaki poutine jianbing chambray.</p>
</block>
</block>
<block>
<p>Polaroid retro pork belly yes plz bitters, viral chicharrones typewriter chartreuse vice Brooklyn. Adaptogen pour-over vibecession viral. Tote bag tonx DIY microdosing. Pickled selvage bespoke small batch, blue bottle twee tacos jean shorts before they sold out chicharrones solarpunk. Hoodie taiyaki poutine jianbing chambray.</p>
</block>
<block style="--value: 7;">
<h2>Current Status</h2>
<p>Polaroid retro pork belly yes plz bitters, viral chicharrones typewriter chartreuse vice Brooklyn. Adaptogen pour-over vibecession viral. Tote bag tonx DIY microdosing. Pickled selvage bespoke small batch, blue bottle twee tacos jean shorts before they sold out chicharrones solarpunk. Hoodie taiyaki poutine jianbing chambray.</p>
</block>
<block>
<h2>Planned Work</h2>
<p>Polaroid retro pork belly yes plz bitters, viral chicharrones typewriter chartreuse vice Brooklyn. Adaptogen pour-over vibecession viral. Tote bag tonx DIY microdosing. Pickled selvage bespoke small batch, blue bottle twee tacos jean shorts before they sold out chicharrones solarpunk. Hoodie taiyaki poutine jianbing chambray.</p>
</block>
<block style="--value: 2; --text: 9">
<h2>Read The Code</h2>
<p>Polaroid retro pork belly yes plz bitters, viral chicharrones typewriter chartreuse vice Brooklyn. Adaptogen pour-over vibecession viral. Tote bag tonx DIY microdosing. Pickled selvage bespoke small batch, blue bottle twee tacos jean shorts before they sold out chicharrones solarpunk. Hoodie taiyaki poutine jianbing chambray.</p>
<button><a href="https://git.learnjsthehardway.com/learn-code-the-hard-way/turings-tarpit">View the Git</a></button>
</block>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<block style="--w: 100%; --value: 7">
<h1>Zed's Trash Ass Games</h1>
<p>More fun than a barrel full of monkeys with syphilus.
</p>
</block>
<hr/>
<grid style="--cols: 2">
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game A</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game A</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game A</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game A</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game A</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
<shape style="--h: 200px"><a href="/game/1/turings-tarpit/">Game B</a></shape>
</grid>
<block style="--value: 7">
<grid style="--cols: 2">
<shape>Left Image</shape>
<div>
<h2>Checkout my Git</h2>
<p>I put al of my code online for people to read and study. If you're curious about the code behind my games or anything else I make then take a look at my git. It's like a buffet of half-finished genius.</p>
<a href="https://git.learnjsthehardway.com"><button style="--value: 2; --text: 9">View my Git</button></a>
</div>
</grid>
</block>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<h1>Zed's Game Dev Website</h1>
<shape style="--w: 100%; --h: 300px">
<button><a href="/stream/">View Past Streams</a></button>
<button><a href="/live/">Watch Today's Livestream</a></button>
</shape>
<block data-testid="clickblock">
<p>Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby.
</p>
</block>
<block style="--value: 7; --border: 1px;" class="horizontal">
<grid style="--cols: 2">
<shape>Left Image</shape>
<div>
<h3>I stream on Twitch.</h3>
<p>I stream every day at 10AM/10PM EST time. 60% of the time it's a chill laid back stream with only programming and a bit of talking about programming. 30% of the time it's art for games I'm making. 10% of the time it's games I'm playing.</p>
<a href="https://twitch.tv/zedashaw"><button style="--value: 2; --text: 9">Watch me on Twitch</button></a>
</div>
</grid>
</block>
<block>
<p>Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby.
</p>
</block>
<block style="--value: 7">
<grid style="--cols: 2">
<div>
<h2>Zed's Trash Ass Games</h2>
<p>Are you a fan of retro styled half-assed but fun games? Me too, so here's my games I've made with that theme. Think "it's the late 80s and nobody knows how to make a game" when you play these and you'll enjoy every minute of it.</p>
<a href="/game/"><button style="--value: 2; --text: 9">Play my Games</button></a>
</div>
<shape>Right Image</shape>
</grid>
</block>
<block>
<p>Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby.
</p>
</block>
<block style="--value: 7">
<grid style="--cols: 2">
<shape>Left Image</shape>
<div>
<h2>Checkout my Git</h2>
<p>I put al of my code online for people to read and study. If you're curious about the code behind my games or anything else I make then take a look at my git. It's like a buffet of half-finished genius.</p>
<a href="https://git.learnjsthehardway.com"><button style="--value: 2; --text: 9">View my Git</button></a>
</div>
</grid>
</block>
<block>
<p>Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby.
</p>
</block>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<shape style="--w: 100%; --h: 350px">
Stream Viewer
</shape>
<block>
<h2>Links Found in Chat</h2>
<dl>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
</dl>
</block>
<form action="/api/link" method="POST">
<card>
<top>Submit a Link</top>
<middle>
<input type="text" placeholder="Link Url">
</middle>
</card>
<buttons>
<button type="submit">Send It</button>
</buttons>
</form>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<block style="--value: 7">
<h1>Stream #34: C++ Game Dev|Retro Raycaster|No Brainrot Stream</h1>
<div>
<p>Summary Qui animated corpse, cricket bat max brucks terribilem incessu zomby. The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem virus. Zonbi tattered for solum oculi eorum defunctis go lum cerebro. Nescio brains an Undead zombies. Sicut malus putrid voodoo horror.</p>
</div>
</block>
<block>
<p>Qui animated corpse, cricket bat max brucks terribilem incessu zomby. The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem virus. Zonbi tattered for solum oculi eorum defunctis go lum cerebro. Nescio brains an Undead zombies. Sicut malus putrid voodoo horror.</p>
</block>
<block>
<h2>Links Posted</h2>
<dl>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
<dt><a href="#">https://somelink.com</a></dt>
<dd>A funky website</dd>
</dl>
</block>
<block style="--value: 7; --border: 1px;" class="horizontal">
<grid style="--cols: 2">
<shape>Left Image</shape>
<div>
<h3>I stream on Twitch.</h3>
<p>I stream every day at 10AM/10PM EST time. 60% of the time it's a chill laid back stream with only programming and a bit of talking about programming. 30% of the time it's art for games I'm making. 10% of the time it's games I'm playing.</p>
<a href="https://twitch.tv/zedashaw"><button style="--value: 2; --text: 9">Watch me on Twitch</button></a>
</div>
</grid>
</block>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<block style="--value: 7">
<h1>Past Streams</h1>
<p>This is where you can checkout information we dropped in a past stream. Did I post a link and you need to remember it? Did someone in chat mention something? Here's where you find it.</p>
</block>
<block>
<stream class="horizontal">
<shape style="--w: 100px; --h: 100px">Stream Thumbnail</shape>
<info>
<date>Streamed on 10/10/2025</date>
<p> Stream description here.</p>
<a style="text-align: right" href="/stream/1/">View This Stream</a>
</info>
</stream>
<stream class="horizontal">
<shape style="--w: 100px; --h: 100px">Stream Thumbnail</shape>
<info>
<p>Stream description here.</p>
<a style="text-align: right" href="/stream/1/">View This Stream</a>
</info>
</stream>
<stream class="horizontal">
<shape style="--w: 100px; --h: 100px">Stream Thumbnail</shape>
<info>
<p><b>Streamed on 10/10/2025</b> Stream description here.</p>
<a style="text-align: right" href="/stream/1/">View This Stream</a>
</info>
</stream>
<stream class="horizontal">
<shape style="--w: 100px; --h: 100px">Stream Thumbnail</shape>
<info>
<p>Stream description here.</p>
<a style="text-align: right" href="/stream/1/">View This Stream</a>
</info>
</stream>
<stream class="horizontal">
<shape style="--w: 100px; --h: 100px">Stream Thumbnail</shape>
<info>
<p>Stream description here.</p>
<a style="text-align: right" href="/stream/1/">View This Stream</a>
</info>
</stream>
</block>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,28 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"log"
"os"
)
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
PhoneNumber string `json:"phoneNumber"`
}
func main() {
b, err := os.ReadFile("user.json")
if err != nil {
log.Fatalf("Failed to read file: %v\n", err);
}
var u User
json.NewDecoder(bytes.NewBuffer(b)).Decode(&u)
fmt.Printf("%#v", u)
}

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="/global.css">
<link rel="stylesheet" href="/color.css">
<link rel="stylesheet" href="/blockstart.css">
<title>ZedShaw's Game Thing</title>
</head>
<body>
<header>
<a href="/">🏡</a> <span>Zed's Game Dev Website Yay</span>
</header>
<blockstart>
<h1>Page Title</h1>
</blockstart>
<footer>
<h1>Footer</h1>
</footer>
</body>
</html>

@ -0,0 +1,6 @@
{
"id": "0000001",
"name": "user",
"email": "user.email.com",
"phoneNumber": "+0001"
}
Loading…
Cancel
Save