a personal site
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Restyle (#22)

* add responsive and accessable elements

* move assets under asset folder

* updated robots.txt and global.css

* add updated index.html content

* remove random link

* add styles for project.html, use global paths in index.html

* update content and styles

authored by

Daniel Daum and committed by
GitHub
404f994f 6feccff6

+696 -90
+577 -65
global.css
··· 1 - /* 2 - Josh's Custom CSS Reset 3 - https://www.joshwcomeau.com/css/custom-css-reset/ 4 - */ 1 + /*============================*/ 2 + /* josh comeau css reset */ 3 + /* https://www.joshwcomeau.com/css/custom-css-reset/*/ 4 + /*============================*/ 5 5 6 6 *, 7 7 *::before, ··· 67 67 isolation: isolate; 68 68 } 69 69 70 - /* Geist Mono Font Declarations */ 71 - /* Variable fonts (modern browsers) */ 70 + /*============================*/ 71 + /* geist mono font declaration */ 72 + /* variable font - modern browsers*/ 73 + /*============================*/ 74 + 72 75 @font-face { 73 76 font-family: "Geist Mono"; 74 - src: url("./src/fonts/geistmono/GeistMono[wght].woff2") 77 + src: url("./src/assets/fonts/geistmono/GeistMono[wght].woff2") 75 78 format("woff2-variations"); 76 79 font-weight: 100 900; 77 80 font-style: normal; ··· 83 86 84 87 @font-face { 85 88 font-family: "Geist Mono"; 86 - src: url("./src/fonts/geistmono/GeistMono-Italic[wght].woff2") 89 + src: url("./src/assets/fonts/geistmono/GeistMono-Italic[wght].woff2") 87 90 format("woff2-variations"); 88 91 font-weight: 100 900; 89 92 font-style: italic; ··· 93 96 "calt" 1; 94 97 } 95 98 96 - /* Static font fallbacks (better browser support) */ 99 + /* Static font fallbacks */ 97 100 @font-face { 98 101 font-family: "Geist Mono"; 99 - src: url("./src/fonts/geistmono/GeistMono-Regular.woff2") format("woff2"); 102 + src: url("./src/assets/fonts/geistmono/GeistMono-Regular.woff2") format("woff2"); 100 103 font-weight: 400; 101 104 font-style: normal; 102 105 font-display: swap; ··· 107 110 108 111 @font-face { 109 112 font-family: "Geist Mono"; 110 - src: url("./src/fonts/geistmono/GeistMono-Bold.woff2") format("woff2"); 113 + src: url("./src/assets/fonts/geistmono/GeistMono-Bold.woff2") format("woff2"); 111 114 font-weight: 700; 112 115 font-style: normal; 113 116 font-display: swap; ··· 118 121 119 122 @font-face { 120 123 font-family: "Geist Mono"; 121 - src: url("./src/fonts/geistmono/GeistMono-Italic.woff2") format("woff2"); 124 + src: url("./src/assets/fonts/geistmono/GeistMono-Italic.woff2") format("woff2"); 122 125 font-weight: 400; 123 126 font-style: italic; 124 127 font-display: swap; ··· 129 132 130 133 @font-face { 131 134 font-family: "Geist Mono"; 132 - src: url("./src/fonts/geistmono/GeistMono-BoldItalic.woff2") format("woff2"); 135 + src: url("./src/assets/fonts/geistmono/GeistMono-BoldItalic.woff2") format("woff2"); 133 136 font-weight: 700; 134 137 font-style: italic; 135 138 font-display: swap; ··· 138 141 "calt" 1; 139 142 } 140 143 141 - /* Authored CSS by me*/ 142 - 143 - /* generic layout and styles */ 144 + /*============================*/ 145 + /* global element styles */ 146 + /* authored css by me*/ 147 + /*============================*/ 144 148 html { 145 149 height: 100%; 146 150 147 - --background-dark: #111820; 148 - --text-headings: #f5f7fa; 149 - --text-body: #e6e6e6; 150 - --text-secondary: #b0b3b8; 151 - --borders: #2a3036; 152 - --accent-muted: #3a4650; 153 - --accent: #e6528a; 151 + --background-dark: #0e140f; 152 + --borders: #273028; 153 + --text-headings: #f3f4e2; 154 + --text-body: #e0e2ce; 155 + --text-secondary: #a8ad98; 156 + --accent: #cddc39; 157 + --accent-muted: #354037; 158 + 159 + /*test out yellow accent?*/ 160 + /*--accent: #ffb703;*/ 154 161 } 155 162 156 163 body { 157 - /*min-height: 100vh;*/ 158 - max-width: 65ch; /* Optimal reading width (~65 characters) */ 159 - margin: 0 auto; /* Center the content */ 160 - padding: 2rem 1rem; /* Comfortable spacing */ 164 + max-width: 65ch; 165 + margin: 0 auto; 166 + padding: min(3rem, 8vw) min(2rem, 4vw); 161 167 font-family: 162 168 "Geist Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", 163 169 Consolas, "Courier New", monospace; 170 + color: var(--text-body); 164 171 background-color: var(--background-dark); 165 - margin-top: 3rem; 172 + line-height: 1.6; 166 173 } 167 174 168 175 header { 169 176 padding: 0.5rem; 170 - color: var(--text-headings); 171 177 font-size: 0.9rem; 178 + margin-bottom: .8rem; 172 179 } 173 180 174 - article { 175 - display: flex; 176 - flex-direction: column; 181 + main { 177 182 padding: 0.5rem; 178 - color: var(--text-body); 179 183 font-size: 0.9rem; 180 184 } 181 185 182 - article p { 183 - margin-bottom: 1rem; 186 + footer { 187 + padding: 0.5rem; 188 + font-size: 0.9rem; 184 189 } 185 190 186 - section { 191 + nav { 187 192 display: flex; 188 - flex-direction: column; 189 - padding: 0.5rem; 190 - color: white; 191 - font-size: 0.9rem; 193 + flex-direction: row; 194 + } 195 + 196 + nav a { 197 + margin-right: 1rem; 192 198 } 193 199 194 - section p { 195 - color: var(--text-secondary); 200 + nav p { 201 + margin: 0rem .5rem 0rem 0rem; 202 + } 203 + 204 + h1 { 205 + font-size: 1.6rem; 206 + color: var(--accent); 207 + margin: 0 0 0.3rem 0; 208 + font-weight: 700; 209 + line-height: 1.2; 196 210 } 197 211 198 212 h2 { 199 - font-size: 0.9rem; 200 - margin-bottom: 0.5rem; 213 + font-size: 1.25rem; 201 214 color: var(--text-headings); 215 + margin: 2.5rem 0 0.75rem 0; 216 + font-weight: 600; 217 + padding-top: 1.5rem; 218 + border-top: 1px solid var(--borders); 202 219 } 203 220 204 - ul li { 205 - margin-bottom: 0.5rem; 221 + h3 { 222 + font-size: 1.05rem; 223 + color: var(--accent); 224 + margin: 1.3rem 0 0.75rem 0; 225 + font-weight: 600; 206 226 } 207 227 208 - footer { 209 - display: flex; 210 - flex-direction: column; 211 - padding: 0.5rem; 212 - color: var(--text-secondary); 213 - font-size: 0.9rem; 228 + p { 229 + margin: 0 0 1.2rem 0; 230 + color: var(--text-body); 214 231 } 215 232 216 233 a { 217 234 color: var(--accent); 235 + text-decoration: none; 236 + border-bottom: 1px solid var(--accent); 237 + transition: background-color 0.15s ease, color 0.15s ease; 218 238 } 219 239 220 240 a:hover { 221 - cursor: pointer; 222 241 color: #fff; 223 242 background-color: var(--accent); 224 - text-decoration: none; 243 + border-bottom-color: var(--accent); 244 + } 245 + 246 + blockquote { 247 + margin: 1.75rem 0; 248 + padding-left: 1.2rem; 249 + border-left: 3px solid var(--accent); 250 + color: var(--text-secondary); 251 + font-style: italic; 252 + } 253 + 254 + img { 255 + width: 100%; 256 + height: auto; 257 + border: 1px solid var(--borders); 258 + border-radius: 2px; 259 + } 260 + 261 + figcaption { 262 + font-size: 0.8rem; 263 + color: var(--text-secondary); 264 + margin-top: 0.6rem; 265 + } 266 + 267 + code { 268 + font-family: 269 + "Geist Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", 270 + Consolas, "Courier New", monospace; 271 + font-size: 0.88rem; 272 + color: var(--text-headings); 273 + background: var(--accent-muted); 274 + padding: 0.2rem 0.4rem; 275 + border-radius: 4px; 276 + border: 1px solid var(--borders); 277 + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); 278 + } 279 + 280 + pre { 281 + margin: 2rem 0; 282 + padding: 1.25rem; 283 + background: var(--accent-muted); 284 + border: 1px solid var(--borders); 285 + border-radius: 6px; 286 + overflow-x: auto; 287 + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); 288 + position: relative; 225 289 } 226 290 227 - ul { 291 + pre::before { 292 + content: ''; 293 + position: absolute; 294 + top: 0; 295 + left: 0; 296 + right: 0; 297 + height: 3px; 298 + border-radius: 6px 6px 0 0; 299 + } 300 + 301 + pre code { 302 + background: none; 303 + padding: 0; 304 + display: block; 305 + color: var(--text-body); 306 + font-size: 0.85rem; 307 + border: none; 308 + box-shadow: none; 309 + line-height: 1.5; 310 + } 311 + 312 + figure { 313 + margin: 2.5rem 0; 314 + } 315 + 316 + ul, ol { 317 + margin: 0 0 1.2rem 1.5rem; 228 318 padding: 0; 229 319 } 230 320 231 321 li { 232 - display: flex; 233 - flex-direction: row; 234 - justify-content: space-between; 322 + margin: 0.5rem 0; 323 + display: list-item; 235 324 } 236 325 237 - /* targeted styles */ 238 - .linebreak { 326 + hr { 327 + border: 0; 328 + height: 1px; 329 + background: var(--borders); 330 + margin-bottom: 0.7rem; 239 331 width: 13rem; 240 - border-top: 1px solid var(--borders); 241 - margin-bottom: 0.5rem; 242 332 } 243 333 244 - .lastupdated { 334 + 335 + /*============================*/ 336 + /* targeted class styles */ 337 + /* authored css by me*/ 338 + /*============================*/ 339 + 340 + .title { 341 + margin: 0 0 0.3rem 0; 342 + font-weight: 700; 343 + line-height: 1.6; 344 + color: var(--text-body); 345 + font-size: 2rem; 346 + } 347 + 348 + .meta { 245 349 font-size: 0.8rem; 350 + color: var(--text-secondary); 351 + margin-top: .5rem; 352 + margin-bottom: 2.5rem; 353 + } 354 + 355 + .nav-back { 356 + font-size: 0.85rem; 357 + color: var(--text-secondary); 358 + margin-bottom: 1.5rem; 359 + display: block; 360 + } 361 + 362 + .nav-back a { 363 + color: var(--text-secondary); 364 + border-bottom: 1px solid var(--accent-muted); 365 + } 366 + 367 + .nav-back a:hover { 246 368 color: var(--accent-muted); 369 + background: none; 247 370 } 248 371 249 - /* Ensure content doesn't touch screen edges on small devices */ 372 + /*============================*/ 373 + /* responsive things */ 374 + /* authored with help from ai*/ 375 + /*============================*/ 376 + 377 + /* Mobile responsiveness */ 378 + @media (max-width: 480px) { 379 + body { 380 + padding: min(2rem, 6vw) min(1.5rem, 4vw); 381 + } 382 + 383 + h1 { 384 + font-size: 1.4rem; 385 + } 386 + 387 + h2 { 388 + font-size: 1.15rem; 389 + margin-top: 2rem; 390 + padding-top: 1rem; 391 + } 392 + 393 + h3 { 394 + font-size: 1rem; 395 + margin-top: 1.5rem; 396 + } 397 + 398 + nav { 399 + flex-wrap: wrap; 400 + gap: 0.5rem; 401 + } 402 + 403 + nav a { 404 + margin-right: 0.5rem; 405 + } 406 + 407 + pre { 408 + padding: 1rem; 409 + margin: 1.5rem -0.5rem; 410 + border-radius: 4px; 411 + } 412 + 413 + pre code { 414 + font-size: 0.8rem; 415 + } 416 + 417 + hr { 418 + width: 100%; 419 + max-width: 13rem; 420 + } 421 + } 422 + 250 423 @media (max-width: 768px) { 251 424 body { 252 - padding: 1.5rem 1rem; 425 + padding: min(2.5rem, 7vw) min(1.75rem, 4vw); 253 426 } 427 + 428 + h1 { 429 + font-size: 1.5rem; 430 + } 431 + } 432 + 433 + /* Focus visible for keyboard navigation */ 434 + a:focus-visible, 435 + button:focus-visible { 436 + outline: 2px solid var(--accent); 437 + outline-offset: 2px; 438 + border-radius: 2px; 439 + } 440 + 441 + /* Remove default focus for mouse users */ 442 + a:focus:not(:focus-visible), 443 + button:focus:not(:focus-visible) { 444 + outline: none; 445 + } 446 + 447 + /* High contrast mode support */ 448 + @media (prefers-contrast: high) { 449 + html { 450 + --text-body: #ffffff; 451 + --text-secondary: #cccccc; 452 + --text-headings: #ffffff; 453 + --accent: #ffff00; 454 + --borders: #ffffff; 455 + --accent-muted: #444444; 456 + } 457 + 458 + a { 459 + text-decoration: underline; 460 + } 461 + 462 + code { 463 + border: 2px solid var(--borders); 464 + } 465 + } 466 + 467 + /* Reduced motion preferences */ 468 + @media (prefers-reduced-motion: reduce) { 469 + *, 470 + *::before, 471 + *::after { 472 + animation-duration: 0.01ms !important; 473 + animation-iteration-count: 1 !important; 474 + transition-duration: 0.01ms !important; 475 + scroll-behavior: auto !important; 476 + } 477 + } 478 + 479 + @media (prefers-color-scheme: light) { 480 + /* site is dark-only .. for now.. */ 481 + } 482 + 483 + /* Print styles */ 484 + @media print { 485 + body { 486 + background: white; 487 + color: black; 488 + max-width: none; 489 + padding: 1rem; 490 + font-size: 11pt; 491 + line-height: 1.4; 492 + } 493 + 494 + header, 495 + main, 496 + footer { 497 + padding: 0.25rem 0; 498 + } 499 + 500 + h1 { 501 + font-size: 1.4rem; 502 + color: black; 503 + page-break-after: avoid; 504 + } 505 + 506 + h2, h3 { 507 + color: black; 508 + page-break-after: avoid; 509 + border: none; 510 + } 511 + 512 + p, li { 513 + orphans: 3; 514 + widows: 3; 515 + } 516 + 517 + a { 518 + color: black; 519 + text-decoration: underline; 520 + background: none; 521 + border: none; 522 + } 523 + 524 + a[href^="mailto:"]:after { 525 + content: " (" attr(href) ")"; 526 + font-size: 0.75em; 527 + } 528 + 529 + a[href^="http"]:after { 530 + content: " (" attr(href) ")"; 531 + font-size: 0.75em; 532 + } 533 + 534 + nav { 535 + display: none; 536 + } 537 + 538 + pre, code { 539 + background: #f5f5f5; 540 + border: 1px solid #ccc; 541 + } 542 + 543 + blockquote { 544 + border-left-color: black; 545 + } 546 + 547 + img { 548 + border: 1px solid black; 549 + page-break-inside: avoid; 550 + } 551 + 552 + hr { 553 + background: black; 554 + border-top: 1px solid black; 555 + } 556 + 557 + .meta { 558 + color: #666; 559 + } 560 + 561 + .nav-back { 562 + display: none; 563 + } 564 + } 565 + 566 + 567 + /*============================*/ 568 + /* project page styles */ 569 + /* ai assisted stlying: hover, gradient, transition, glow)*/ 570 + /*============================*/ 571 + .project-card { 572 + all:unset; 573 + 574 + display: flex; 575 + flex-direction: row; 576 + 577 + margin-bottom: 1rem; 578 + border-radius: 16px; 579 + padding: 1.25rem; 580 + 581 + border: 1px solid var(--borders); 582 + 583 + 584 + background: var(--background-dark); 585 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); 586 + text-decoration: none; 587 + color: inherit; 588 + 589 + /* for overlay + smoothness */ 590 + position: relative; 591 + overflow: hidden; 592 + transform: translateZ(0); 593 + transform-origin: center; 594 + 595 + /* transitions */ 596 + transition: 597 + transform 220ms ease, 598 + box-shadow 220ms ease; 599 + will-change: transform; 600 + } 601 + 602 + .project-card h1 { 603 + padding: 0rem; 604 + margin: 0rem; 605 + } 606 + 607 + .project-card p { 608 + padding:0rem; 609 + margin: 0rem; 610 + } 611 + 612 + .project-card:hover { 613 + background-color:var(--background-dark); 614 + border-bottom: 1px solid var(--borders); 615 + text-decoration: none; 616 + 617 + } 618 + 619 + .project-card-left { 620 + display: flex; 621 + flex-direction: column; 622 + justify-content: space-between; 623 + margin-right: 1rem; 624 + } 625 + .project-card-right { 626 + padding: 0rem; 627 + margin: 0rem; 628 + } 629 + 630 + /* gradient overlay (so text doesn’t get re-painted weirdly) */ 631 + .project-card::before { 632 + content: ""; 633 + position: absolute; 634 + inset: 0; 635 + border-radius: inherit; 636 + 637 + /* subtle green-tinted radial glow */ 638 + background: radial-gradient( 639 + ellipse at top left, 640 + rgba(205, 220, 57, 0.08), 641 + rgba(53, 64, 55, 0.04), 642 + transparent 70% 643 + ); 644 + 645 + opacity: 0; 646 + transition: opacity 220ms ease; 647 + pointer-events: none; 648 + } 649 + 650 + .project-card:hover { 651 + transform: scale(1.05); 652 + box-shadow: 0 20px 50px rgba(14, 20, 15, 0.6), 653 + 0 0 0 1px rgba(205, 220, 57, 0.15); 654 + 655 + } 656 + 657 + .project-card:hover::before { 658 + opacity: 1; 659 + } 660 + 661 + /* keep actual content above overlay */ 662 + .project-card > * { 663 + position: relative; 664 + z-index: 1; 665 + } 666 + 667 + /* optional: small image polish */ 668 + .project-card-img { 669 + width: 30rem; 670 + height: auto; 671 + display: block; 672 + border-radius: 12px; 673 + border: 1px solid #3a4a3d; 674 + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5), 675 + 0 2px 8px rgba(0, 0, 0, 0.3), 676 + 0 0 0 1px rgba(205, 220, 57, 0.1); 677 + transition: transform 220ms ease, box-shadow 220ms ease; 678 + } 679 + 680 + .project-type { 681 + font-size: 0.7rem; 682 + letter-spacing: 0.1em; 683 + color: var(--text-secondary); 684 + } 685 + 686 + .project-card:hover .project-type { 687 + color: var(--accent); 688 + } 689 + 690 + .project-card:hover .project-card-img { 691 + transform: scale(1.02); 692 + box-shadow: 0 12px 32px rgba(0, 0, 0, 0.6), 693 + 0 4px 12px rgba(0, 0, 0, 0.4), 694 + 0 0 0 1px rgba(205, 220, 57, 0.25); 695 + } 696 + 697 + /* accessibility: keyboard focus should get the same treatment */ 698 + .project-card:focus-visible { 699 + outline: 2px solid currentColor; 700 + outline-offset: 4px; 701 + transform: scale(1.05); 702 + } 703 + 704 + @media (prefers-reduced-motion: reduce) { 705 + .project-card, 706 + .project-card::before, 707 + .project-card-img { 708 + transition: none; 709 + } 710 + } 711 + 712 + 713 + 714 + 715 + 716 + /*============================*/ 717 + /* blog home page styles */ 718 + /*============================*/ 719 + 720 + .blog-home { 721 + max-width: 65ch; 722 + margin: 0 auto; 723 + padding: 0.5rem; 724 + } 725 + 726 + .blog-home h1 { 727 + font-size: 1.2rem; 728 + color: var(--text-headings); 729 + margin: 0 0 2rem 0; 730 + font-weight: 700; 731 + } 732 + 733 + .blog-home .post-list { 734 + list-style: none; 735 + margin: 0; 736 + padding: 0; 737 + } 738 + 739 + .blog-home .post-item { 740 + display: flex; 741 + justify-content: space-between; 742 + align-items: baseline; 743 + padding: 0.75rem 0; 744 + border-bottom: 1px solid var(--borders); 745 + gap: 1rem; 746 + } 747 + 748 + .blog-home .post-item:hover { 749 + background: var(--accent-muted); 750 + } 751 + 752 + .blog-home .post-title { 753 + flex: 1; 754 + color: var(--text-body); 755 + text-decoration: none; 756 + } 757 + 758 + .blog-home .post-title:hover { 759 + color: var(--accent); 760 + } 761 + 762 + .blog-home .post-date { 763 + color: var(--text-secondary); 764 + font-size: 0.85rem; 765 + white-space: nowrap; 254 766 }
+41 -24
index.html
··· 3 3 <head> 4 4 <meta charset="UTF-8" /> 5 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 - <link rel="stylesheet" href="./global.css" /> 6 + <meta 7 + name="description" 8 + content="daniel daum's website homepage - oakland based software engineer" 9 + /> 10 + <meta 11 + http-equiv="Content-Security-Policy" 12 + content="default-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self';" 13 + /> 14 + <meta name="referrer" content="strict-origin-when-cross-origin" /> 15 + <link rel="stylesheet" href="/global.css" /> 7 16 <link 8 17 rel="apple-touch-icon" 9 18 sizes="180x180" 10 - href="/src/favicon/apple-touch-icon.png" 19 + href="/src/assets/favicon/apple-touch-icon.png" 11 20 /> 12 21 <link 13 22 rel="icon" 14 23 type="image/png" 15 24 sizes="32x32" 16 - href="/src/favicon/favicon-32x32.png" 25 + href="/src/assets/favicon/favicon-32x32.png" 17 26 /> 18 27 <link 19 28 rel="icon" 20 29 type="image/png" 21 30 sizes="16x16" 22 - href="/src/favicon/favicon-16x16.png" 31 + href="/src/assets/favicon/favicon-16x16.png" 23 32 /> 24 - <link rel="manifest" href="/src/favicon/site.webmanifest" /> 33 + <link rel="manifest" href="/src/assets/favicon/site.webmanifest" /> 25 34 <title>daniel daum</title> 26 35 </head> 27 36 28 37 <body> 29 - <main> 30 38 <header> 31 - <h1>daniel daum</h1> 39 + <h1 class="title">daniel daum</h1> 40 + <nav> 41 + <!--<a href="/index.html" aria-label="return home">home</a> 42 + <a href="/src/now/now.html" aria-label="link to my now page">now</a> 43 + <a href="/src/blog/blog.html" aria-label="link to my blog">blog</a> 44 + <a href="/src/garden.html" aria-label="link to my digital garden">garden</a> 45 + <a href="/src/projects/projects.html" aria-label="link to my projects">projects</a>--> 46 + </nav> 32 47 </header> 33 48 34 - <article> 35 - <p>software engineer based in oakland</p> 36 - 49 + <main> 50 + <p> 51 + welcome! i'm daniel, a software engineer living in oakland, ca 52 + </p> 37 53 <p> 38 - most recently my work has centered on backend development, data orchestration, and the architecture of data‑warehousing and analytics platforms. i am drawn to projects that value privacy, security, and simplicity, but also leave space for creativity and fun :) 54 + i built this site to share my thoughts, practice my writing, and publish things i find interesting. most recently, i've worked on building backend services and data infrastructure 39 55 </p> 40 - 41 56 <p> 42 - outside of work i enjoy reading, music, running, anything outdoors, cooking, good cocktails, great food, video games, writing, and building software 57 + outside of work i enjoy reading, music, running, lifting, cooking, video games, writing, hiking, and building software 43 58 </p> 44 59 <p> 45 - i am currently pursuing an undergraduate degree in computer 46 - science 60 + i am pursuing an undergradute degree in computer science and currently learning rust and game development 47 61 </p> 48 - </article> 49 - 50 - <footer> 51 - <div class="linebreak"></div> 52 62 <p> 53 - [↗]: <a href="mailto:daniel@danieldaum.net">Email</a>, 54 - <a href="https://github.com/daniel-daum">GitHub</a> 63 + feel free to shoot me an email about anything! 55 64 </p> 56 - <p class="lastupdated"> 57 - Last updated: Oct 8, 2025, 11:24 AM [PST] 65 + </main> 66 + 67 + <footer> 68 + <hr> 69 + <nav> 70 + <p>[↗]:</p> 71 + <a href="mailto:daniel@danieldaum.net" aria-label="link to send me an email">email</a> 72 + <a href="https://github.com/daniel-daum" aria-label="link to my github" target="_blank" rel="noopener noreferrer">github</a> 73 + </nav> 74 + <p class="meta" aria-label="Page last updated on january 19, 2026"> 75 + last updated: jan 19, 2026 @ 21:45 [PST] 58 76 </p> 59 77 </footer> 60 - </main> 61 78 </body> 62 79 </html>
+55
robots.txt
··· 1 + # Default 1 2 User-agent: * 2 3 Disallow: / 4 + Crawl-delay: 10 5 + 6 + # Allow search engines 7 + User-agent: Googlebot 8 + Allow: / 9 + 10 + User-agent: Bingbot 11 + Allow: / 12 + 13 + # Block AI bots 14 + User-agent: CCBot 15 + Disallow: / 16 + 17 + User-agent: GPTBot 18 + Disallow: / 19 + 20 + User-agent: ChatGPT-User 21 + Disallow: / 22 + 23 + User-agent: Google-Extended 24 + Disallow: / 25 + 26 + User-agent: Googlebot-Extended 27 + Disallow: / 28 + 29 + User-agent: Claude-Web 30 + Disallow: / 31 + 32 + User-agent: anthropic-ai 33 + Disallow: / 34 + 35 + User-agent: OAI-SPIDER 36 + Disallow: / 37 + 38 + User-agent: cohere-ai 39 + Disallow: / 40 + 41 + User-agent: PerplexityBot 42 + Disallow: / 43 + 44 + User-agent: YouBot 45 + Disallow: / 46 + 47 + User-agent: Applebot-Extended 48 + Disallow: / 49 + 50 + User-agent: Bytespider 51 + Disallow: / 52 + 53 + User-agent: FacebookBot 54 + Disallow: / 55 + 56 + User-agent: facebookexternalhit 57 + Disallow: /
+23
src/assets/favicon/site.webmanifest
··· 1 + { 2 + "name": "Daniel Daum", 3 + "short_name": "Daniel Daum", 4 + "description": "Software engineer based in Oakland", 5 + "icons": [ 6 + { 7 + "src": "/src/favicon/android-chrome-192x192.png", 8 + "sizes": "192x192", 9 + "type": "image/png" 10 + }, 11 + { 12 + "src": "/src/favicon/android-chrome-512x512.png", 13 + "sizes": "512x512", 14 + "type": "image/png" 15 + } 16 + ], 17 + "theme_color": "#111820", 18 + "background_color": "#111820", 19 + "display": "standalone", 20 + "start_url": "/", 21 + "scope": "/", 22 + "orientation": "portrait-primary" 23 + }
src/favicon/android-chrome-192x192.png src/assets/favicon/android-chrome-192x192.png
src/favicon/android-chrome-512x512.png src/assets/favicon/android-chrome-512x512.png
src/favicon/apple-touch-icon.png src/assets/favicon/apple-touch-icon.png
src/favicon/favicon-16x16.png src/assets/favicon/favicon-16x16.png
src/favicon/favicon-32x32.png src/assets/favicon/favicon-32x32.png
src/favicon/favicon.ico src/assets/favicon/favicon.ico
-1
src/favicon/site.webmanifest
··· 1 - {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
src/fonts/geistmono/GeistMono-Bold.woff2 src/assets/fonts/geistmono/GeistMono-Bold.woff2
src/fonts/geistmono/GeistMono-BoldItalic.woff2 src/assets/fonts/geistmono/GeistMono-BoldItalic.woff2
src/fonts/geistmono/GeistMono-Italic.woff2 src/assets/fonts/geistmono/GeistMono-Italic.woff2
src/fonts/geistmono/GeistMono-Italic[wght].woff2 src/assets/fonts/geistmono/GeistMono-Italic[wght].woff2
src/fonts/geistmono/GeistMono-Regular.woff2 src/assets/fonts/geistmono/GeistMono-Regular.woff2
src/fonts/geistmono/GeistMono[wght].woff2 src/assets/fonts/geistmono/GeistMono[wght].woff2