Personal profile and academic blog for Scott Weeden, Master of Computer Science student at Texas Tech University. This Jekyll-based static site showcases research, projects, and technical writing in computer science and machine learning.
This site features:
- About - Personal introduction and academic journey
- Resume/CV - Academic and professional experience
- Research & Projects - Showcase of publications and technical projects
- Blog - Technical articles on CS, ML, and algorithm analysis
Design Philosophy: Academic Minimalism with Technical Precision - inspired by Linear, Notion, and Stripe.
- Jekyll 4.x - Static site generator
- Liquid - Templating language
- Kramdown - Markdown processor with math support
- Sass/SCSS - CSS preprocessing
- Ruby - Build environment
KaTeX is used for rendering complex mathematical formulas in research articles and blog posts.
Why KaTeX over MathJax:
- Performance: ~2x faster rendering, smaller bundle size (~115KB vs ~600KB)
- Synchronous rendering: No page reflows or layout shifts
- Better Core Web Vitals: Improved LCP and CLS scores
- Server-side compatible: Can be pre-rendered during Jekyll build
Usage in blog posts:
Inline math: $E = mc^2$
Display math:
$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$Configuration: Auto-render plugin configured in _layouts/default.html
References:
Prism.js provides beautiful, lightweight syntax highlighting for code blocks.
Why Prism.js over Highlight.js:
- Smaller footprint: Core is ~2KB (vs ~10KB), modular language loading
- Better performance: 15KB/ms parsing speed vs 9KB/ms
- Customization: Extensive theming and plugin ecosystem
- Line highlighting: Built-in support for line numbers and highlights
Supported Languages (loaded in default layout):
- Python, JavaScript, Java, C++, Bash
- Add more in
_layouts/default.htmlas needed
Usage:
```python
def hello_world():
print("Hello, World!")
```Custom Theme: Using prism-tomorrow.css for clean, minimalist code display
References:
Vanilla JavaScript with minimal Alpine.js-inspired patterns for responsive menu.
Why No Heavy Framework:
- Performance: < 1KB of custom JS vs 50KB+ frameworks
- Progressive Enhancement: Works without JavaScript
- Accessibility: Semantic HTML + ARIA attributes
- Maintainability: Simple, readable code
Features:
- Mobile hamburger menu with smooth transitions
- Keyboard navigation support
- Focus management for accessibility
- No external dependencies
Implementation: See assets/js/main.js
- html-proofer - HTML validation and link checking
- pa11y-ci - Accessibility testing (WCAG AA compliance)
- markdownlint - Markdown linting
- Lighthouse CI - Performance and SEO auditing
- GitHub Actions - Automated deployment and testing
- Jekyll Build Action - Optimized Jekyll builds
- Pages Deploy - Automated GitHub Pages deployment
# Check Ruby version (2.7+ required)
ruby --version
# Install Bundler
gem install bundler
# Install Jekyll
gem install jekyll# Clone repository
git clone https://github.com/yourusername/profile.git
cd profile
# Install dependencies
bundle install
# Serve locally with live reload
bundle exec jekyll serve --livereload
# Visit http://localhost:4000# Set production environment
JEKYLL_ENV=production bundle exec jekyll build
# Output in _site/ directoryThis repository uses git hooks to ensure code quality and build integrity. Hooks are stored in .githooks/ and automatically used via git config core.hooksPath .githooks.
Available Hooks:
-
pre-push- Requires successful Jekyll build before allowing push- Runs
bundle exec jekyll build(orjekyll buildif bundle unavailable) - Prevents pushing code that would break the site build
- Can be bypassed with
git push --no-verifyif needed (not recommended)
- Runs
-
post-checkout/post-merge- Regenerates Agent A lecture inventory after repository updates
Testing the Build Hook:
# The hook will automatically run on git push
git push
# If build fails, fix errors and try again
# To skip the hook (not recommended):
git push --no-verifyprofile/
├── _config.yml # Jekyll configuration
├── Gemfile # Ruby dependencies
├── CLAUDE.md # AI assistant instructions
│
├── _layouts/ # Page templates
│ ├── default.html # Base layout with KaTeX + Prism.js
│ ├── page.html # Standard pages
│ ├── post.html # Blog posts
│ └── project.html # Project showcases
│
├── _includes/ # Reusable components
│ ├── header.html # Site header with navigation
│ ├── footer.html # Site footer
│ ├── nav.html # Navigation menu
│ └── meta.html # SEO meta tags
│
├── _sass/ # Sass partials
│ ├── _variables.scss # Design tokens (colors, spacing, typography)
│ ├── _typography.scss # Typography styles
│ ├── _layout.scss # Layout and structure
│ └── _components.scss # Reusable components
│
├── assets/
│ ├── css/
│ │ └── main.scss # Main stylesheet (imports all partials)
│ ├── js/
│ │ └── main.js # Vanilla JS for navigation & enhancements
│ └── images/ # Images and media
│
├── _posts/ # Blog posts (YYYY-MM-DD-title.md)
├── _projects/ # Project collection
├── _drafts/ # Draft posts (not published)
│
├── templates/ # Templates and utilities
│ ├── latex/ # LaTeX templates
│ │ ├── academic-paper.tex # IEEE-style research paper
│ │ ├── academic-resume.tex # CV template
│ │ └── blog-post-supplement.tex # Technical supplement
│ │
│ └── ci-cd/ # GitHub Actions workflows
│ ├── jekyll-deploy.yml # Auto-deploy to GitHub Pages
│ ├── quality-checks.yml # HTML validation, link checking
│ └── lighthouse-performance.yml # Performance testing
│
├── about.md # About page
├── resume.md # Resume/CV page
├── research.md # Research & Projects page
├── blog/ # Blog index
└── index.html # Homepage
Professional templates for academic writing and research documentation.
IEEE-style conference paper template for research publications.
Features:
- IEEE conference format
- Abstract, keywords, sections
- Figure and table support
- Bibliography with BibTeX
- Mathematical equation support
Usage:
cd templates/latex
pdflatex academic-paper.tex
bibtex academic-paper
pdflatex academic-paper.tex
pdflatex academic-paper.texModernCV template for professional academic CVs.
Features:
- Clean, professional design
- Education, research, publications sections
- Project and skills showcase
- Customizable colors and styles
Usage:
cd templates/latex
pdflatex academic-resume.texExtended technical documentation for blog posts.
Features:
- Mathematical proofs and derivations
- Algorithm pseudocode
- Code listings with syntax highlighting
- Theorem environments
Usage: Companion to blog posts for readers wanting deep mathematical details.
GitHub Actions workflows for automated testing and deployment.
Automatic deployment to GitHub Pages on push to main.
Setup:
- Copy to
.github/workflows/jekyll-deploy.yml - Enable GitHub Pages in repository settings
- Push to main branch - automatic deployment
Automated testing on pull requests.
Tests:
- HTML validation (html-proofer)
- Markdown linting (markdownlint)
- Accessibility checks (pa11y-ci)
- Broken link detection
Setup:
# Copy workflow
cp templates/ci-cd/quality-checks.yml .github/workflows/
# Install local testing tools
gem install html-proofer
npm install -g pa11y-ci markdownlint-cliPerformance and SEO auditing with Google Lighthouse.
Targets:
- Performance Score: 90+
- Accessibility Score: 90+
- Best Practices: 90+
- SEO Score: 90+
- FCP < 1.5s, LCP < 2.5s
Setup:
- Copy workflow to
.github/workflows/ - Lighthouse config in
.lighthouserc.json(already configured) - Results posted as PR comments
# Create new post file
touch _posts/2026-01-10-your-post-title.md
# Add frontmatter and content
cat > _posts/2026-01-10-your-post-title.md << 'EOF'
---
layout: post
title: "Your Post Title"
date: 2026-01-10
categories: [machine-learning, research]
tags: [python, algorithms]
excerpt: "Brief description for previews"
reading_time: 8
---
Your post content here with $\LaTeX$ math and ```code``` blocks.
EOF
# Preview locally
bundle exec jekyll serve --drafts
# Commit and push
git add _posts/2026-01-10-your-post-title.md
git commit -m "Add blog post: Your Post Title"
git push# Create project file
touch _projects/project-name.md
# Add project frontmatter
cat > _projects/project-name.md << 'EOF'
---
layout: project
title: "Project Name"
subtitle: "Brief tagline"
date: 2026-01-10
status: "Completed"
tech_stack: [Python, TensorFlow, Docker]
links:
demo: https://demo.example.com
github: https://github.com/username/project
paper: https://doi.org/xxxx
outcomes:
- "Achieved 92% accuracy on benchmark dataset"
- "Published in IEEE Conference 2026"
---
Project description and details here.
EOF# Serve locally
bundle exec jekyll serve
# Build production site
JEKYLL_ENV=production bundle exec jekyll build
# Validate HTML
bundle exec htmlproofer ./_site --disable-external
# Check accessibility
pa11y http://localhost:4000
# Lint Markdown
markdownlint _posts _projects *.md# Serve production build
cd _site && python3 -m http.server 8000
# Run Lighthouse
npm install -g @lhci/cli
lhci autorun --config=.lighthouserc.jsonThe site uses a comprehensive design system defined in _sass/_variables.scss:
- Primary: Academic Blue (#2563eb)
- Text: Slate scale (#0f172a to #94a3b8)
- Backgrounds: White to light gray (#ffffff to #f1f5f9)
- Sans: Inter, SF Pro Display, system fonts
- Mono: JetBrains Mono, Fira Code, SF Mono
- Scale: 1.250 (Major Third) - 16px base
- Base: 8px grid system
- Scale: 4px to 96px (xs to 4xl)
See CLAUDE.md for complete design specifications.
The site auto-deploys to GitHub Pages via GitHub Actions.
Setup:
- Push to
mainbranch - GitHub Actions builds and deploys automatically
- Site available at
https://username.github.io/
# Add CNAME file
echo "yourdomain.com" > CNAME
# Configure DNS A records:
# 185.199.108.153
# 185.199.109.153
# 185.199.110.153
# 185.199.111.153
git add CNAME
git commit -m "Add custom domain"
git push- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile Safari (iOS 13+)
- Chrome Mobile (Android 8+)
This is a personal portfolio site. If you find issues or have suggestions:
- Open an issue describing the problem
- For code contributions, fork and submit a pull request
- Ensure all tests pass (
bundle exec htmlproofer ./_site)
Content is © 2026 Scott Weeden. All rights reserved.
Code is MIT licensed - feel free to use the Jekyll setup and design system for your own projects.
- Email: [email protected]
- GitHub: @yourusername
- LinkedIn: yourprofile
Built with precision and care. Every pixel matters.