π Software engineer focusing on cloud-native systems, developer experience, creative automation, and AI-assisted tooling. I build high-quality, scalable platforms with strong emphasis on automation, security, and clarity.
β‘ Automate the mundane β’ π Fast feedback loops
π Self-documenting code β’ π§© Composable architectures
π Secure by default β’ π Scalable by design
π§ͺ Test-driven quality β’ π§ Continuous improvement
π Developer tooling & CLIs β’ β Cloud-native platforms
π€ AI-augmented workflows β’ π CI/CD & automation systems
View the full interactive dashboard at:
π https://szmyty.github.io/profile/
The dashboard automatically updates daily with the latest metrics from all workflows.
π View detailed monitoring documentation
This repository uses a single, orchestrated workflow (build-profile.yml) that consolidates all profile updates into one cohesive pipeline. This architecture provides several key benefits:
- π― Atomic Updates - All cards and data updated in a single commit
- π‘οΈ Error Resilience - Continues on partial failures with automatic fallbacks
- π§ Simplified Maintenance - One workflow to maintain instead of 8+ separate workflows
- π Better Orchestration - Sequential phases with proper dependencies
- π Easier Debugging - All logs consolidated in one workflow run
The unified workflow executes in 10 sequential phases:
- Setup - Environment, dependencies, and caching
- Fetch All Data - Developer stats, Weather, Location, SoundCloud, Oura health
- Validate Data - JSON schema validation and sanity checks
- Generate SVG Cards - All card types with fallback handling
- Optimize SVGs - SVGO compression with advanced configuration
- Update README - Inject all cards into appropriate sections
- Build Dashboard - React dashboard compilation and deployment
- Lint (Report-Only) - MegaLinter diagnostics without blocking
- Commit & Push - Atomic commit of all changes with detailed message
- Build Summary - Comprehensive status report of all operations
The workflow never fails due to partial errors:
- Failed data fetches fall back to cached data
- Failed card generation produces fallback SVG cards
- Failed validations log warnings but continue
- Each step uses
continue-on-error: truewhere appropriate
π View workflow source
This repository implements several performance optimizations to improve speed and reduce GitHub Actions usage:
- π Parallel API Fetching - Fetch Oura, Weather, and SoundCloud data simultaneously (3x faster)
- π Incremental SVG Generation - Skip regeneration when data hasn't changed (50-80% time savings)
- π¦ Smart Python Dependency Caching - Multi-layer pip caching with composite actions (60-75% faster Python setup)
- π¨ Enhanced SVG Optimization - Advanced compression with path simplification (30-50% smaller files)
- πΎ Multi-Level Caching - Cache API responses, client IDs, and geocoding results
Results: 60-75% faster workflows, 60-70% lower GitHub Actions usage
Documentation: See WORKFLOW_CACHING.md for caching strategy and CACHING_BENCHMARKS.md for performance metrics.
This repository includes comprehensive monitoring features:
- π Workflow Metrics - Track run times, success/failure rates, and API call counts
- π― Status Dashboard - Visual display of system health and recent updates
- π¨ Automated Alerts - Automatic issue creation for repeated failures (3+ consecutive)
- β Data Quality Checks - Detection of missing fields, NaN values, and out-of-range metrics
Encountering workflow failures? The troubleshooting guide covers common issues and solutions:
- π¦ Rate Limiting - GitHub API, Nominatim, and external API rate limits
- π Invalid JSON - Validation errors and malformed responses
- π API Failures - SoundCloud, Open-Meteo, Mapbox, and Oura issues
- π Missing Keys - Handling missing fields and data validation
- β‘ Concurrency - Git conflicts and workflow collision prevention
- β±οΈ Timeouts - HTTP request and workflow timeout handling
- β Schema Validation - Setting up and troubleshooting data validation
See TROUBLESHOOTING.md for detailed solutions.
All workflow logs are stored in the logs/ directory with automatic rotation to prevent excessive file growth. The unified workflow generates logs for each operation:
logs/location/- Location data fetching and card generationlogs/weather/- Weather data fetching and card generationlogs/oura/- Oura health data fetching and dashboard generationlogs/developer/- Developer statistics and dashboard generationlogs/soundcloud/- SoundCloud data fetching and card generationlogs/megalinter/- MegaLinter diagnostic reports and summarieslogs/build-profile/- Unified workflow execution logs (if created)
- Persistent Logging: All logs are committed on every workflow run, even if the workflow fails
- Automatic Rotation: Logs automatically rotate when they exceed 5MB
- Timestamped Entries: Each log entry includes UTC timestamps and severity levels (INFO, WARN, ERROR)
- Command Tracking: All API calls, script executions, and their exit codes are logged
- Troubleshooting: Use logs to debug workflow failures and track historical execution
π Using GitHub Codespaces (Recommended)
- Click "Code" β "Create codespace on main"
- Wait for the environment to set up automatically
- Start developing!
π» Local Development
# Install dependencies with Poetry (recommended)
pip install poetry
poetry install
# Or use pip with requirements.txt (alternative)
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Install pre-commit hooks
poetry run pre-commit install # if using Poetry
# or
pre-commit install # if using pip
# Generate cards with mock data (no API keys needed)
./scripts/dev-mode.sh allπ Running GitHub Actions Locally
Test workflows locally with act (available in devcontainer):
# List all workflows
act -l
# Run specific job
act -j test-python
# Run workflow with secrets
act -j build-profile --secret-file .secretsSee Local Development Guide for details.
π Code Conventions
Script Naming: All Python scripts use dash-case naming (e.g., generate-card.py, update-readme.py).
Script Permissions: Python scripts that are directly executed by workflows are marked as executable. Library modules in scripts/lib/ are not executable.
Dependencies: Install required Python packages with Poetry (recommended) or pip:
# Using Poetry (pinned dependencies in poetry.lock for reproducibility)
pip install poetry
poetry install
# Or using pip (alternative)
pip install -r requirements.txt # Core dependencies
pip install -r requirements-dev.txt # Development toolsAll dependencies are pinned to exact versions in pyproject.toml and poetry.lock to ensure reproducible builds and prevent breakage from upstream changes.
Theme Configuration: All visual styling (colors, fonts, spacing, dimensions) is centralized in config/theme.json.
Pre-commit Hooks: Run pre-commit run --all-files before committing to validate:
- JSON schemas
- SVG formatting
- Python linting (black, flake8, isort)
- Shell script validation (shellcheck)
- File permissions
π§ͺ Development Mode
Test card generation locally without API keys using mock data:
# Generate all cards
./scripts/dev-mode.sh all
# Generate specific cards
./scripts/dev-mode.sh soundcloud
./scripts/dev-mode.sh weather
./scripts/dev-mode.sh developer
./scripts/dev-mode.sh ouraOutput is saved to dev-output/ directory. See data/mock/README.md for details on mock data.
π Documentation
- Local Development: Run GitHub Actions locally with
actfor faster iteration - Monitoring Guide: Monitoring, observability, and alerting features
- Optimization Guide: Performance optimizations and caching strategies
- Workflows: Complete guide to GitHub Actions workflows and their dependencies
- Mock Data: Information about development mode and mock data
π§ͺ Testing
Run the test suite:
python -m pytest tests/ -vThanks goes to these wonderful people (emoji key):
Alan Szmyt π» π¨ π€ π§ π π |
GitHub Copilot π» π€ π§ π€ |
|||||
|
|
||||||
This project follows the all-contributors specification. Contributions of any kind welcome!