Alexander Suvorov
Academic Research Portfolio
Showcasing published paradigms in security architecture, information theory, and computational complexity.
Alexander Suvorov — Academic research portfolio showcasing published paradigms in security architecture, information theory, and computational complexity.
This isn't a static site — it's an automated research dashboard that fetches live publication statistics from Zenodo daily.
How It Works:
GitHub Actions (cron) → Python Script → Zenodo API → JSON Data → Static Site
↓ ↓ ↓ ↓ ↓
Runs daily Fetches stats 4 publications Stores Updates all
at midnight for 4 DOIs with metrics locally HTML pages
Features:
- Live Research Metrics — Daily Zenodo API calls via GitHub Actions
- Automatic Fallback — Config.js stores hardcoded values, site works even if Zenodo API is down
- Zero Client-Side API — All data fetched at build time, no CORS issues
- DOI Integration — Every publication has permanent DOI links
- Zero Cost — Hosted on GitHub Pages
| Paradigm | DOI | Metrics Displayed |
|---|---|---|
| Pointer-Based Security | 10.5281/zenodo.17204738 | Unique/Total Views & Downloads |
| Local Data Regeneration | 10.5281/zenodo.17264327 | Unique/Total Views & Downloads |
| Deterministic Game Engine | 10.5281/zenodo.17383447 | Unique/Total Views & Downloads |
| PCH Paradigm | 10.5281/zenodo.17614888 | Unique/Total Views & Downloads |
Aggregate Metrics: Total unique downloads (500+), total downloads (1000+), unique views (500+), total views (1000+), 4 publications, 3 paradigms
/
├── .github/workflows/
│ └── update-zenodo.yml # Daily cron job (runs at midnight UTC)
│
├── scripts/
│ └── fetch_zenodo.py # Python script that hits Zenodo API for all 4 DOIs
│
├── data/
│ └── zenodo.json # AUTO-GENERATED: Fresh statistics every day
│
├── js/
│ ├── config.js # CONFIG: Hardcoded fallback values + Zenodo record IDs
│ ├── stats-manager.js # LOGIC: Reads zenodo.json, merges with config, updates DOM
│ ├── main.js # INIT: Bootstraps the PortfolioApp
│ └── particle-background.js # VISUAL: Animated tech word canvas background
│
├── research/ # Individual research detail pages (8 total)
│ ├── pointer-based-security.html
│ ├── local-data-regeneration.html
│ ├── deterministic-game-engine.html
│ └── position-candidate-hypothesis.html
│
├── index.html # Home page with 4 main navigation cards
├── about.html # Research profile, impact metrics, contact
├── research.html # MAIN: Detailed cards for all 4 paradigms with stats
├── expertise.html # Three core research areas with nested expertise items
├── sitemap.xml # AUTO-MAINTAINED: Includes all 8 research pages
└── css/
└── style.css # Dark academic theme with CSS variables
Frontend — Presentation Layer:
- HTML5 — Semantic academic markup, Schema.org Person markup
- CSS3 — Dark academic theme with CSS variables
- Bootstrap 5 — Responsive grid for research cards
- Vanilla JavaScript (ES6+) — 6 focused classes, no frameworks
Backend — Automation Layer:
- GitHub Actions — Scheduled automation (cron job daily at 00:00 UTC)
- Python 3.8+ — Data fetching
- Requests Library — HTTP client for Zenodo API
- Zenodo API — Returns stats (unique_views, unique_downloads, views, downloads)
- JSON Storage — Local cache at
/data/zenodo.json
1. Pointer-Based Security Paradigm
- DOI:
10.5281/zenodo.17204738 - Published: September 26, 2025
- Concept: Architectural transition from data protection to no vulnerable data
- Transformations: Data Transmission → Synchronous Discovery, Secret Storage → Deterministic Regeneration
2. Local Data Regeneration Paradigm
- DOI:
10.5281/zenodo.17264327 - Published: October 4, 2025
- Concept: Ontological shift from data transmission to synchronous state discovery
- Postulates: Data as System State, Synchronous Local Regeneration (
D = F(S, P))
3. Deterministic Game Engine (Tech Report)
- DOI:
10.5281/zenodo.17383447 - Published: October 18, 2025
- Concept: Practical implementation validating both paradigms
- Results: 2.8M elements/sec, O(1) constant-time state access, Linear O(n) entity simulation
4. Position-Candidate-Hypothesis (PCH) Paradigm
- DOI:
10.5281/zenodo.17614888 - Published: November 15, 2025
- Concept: Structural-statistical approach to NP-complete problems
- Components: Positions (n), Candidates (n), Hypotheses (n)
Core Logic (stats-manager.js):
1. constructor() calls loadFromFile() 2. loadFromFile() fetches /data/zenodo.json 3. If fetch succeeds → uses file data 4. If fetch fails → uses CONFIG.COUNTERS.RESEARCH_STATS (from config.js) 5. updateAllStats() merges file data with config (per-paradigm) 6. updateParadigmStats() updates each research card's view/download numbers 7. updateHeaderStats() updates header stats (total unique downloads/views) 8. updateMetricsStats() updates about page metrics
Data Format (zenodo.json):
{
"pointerParadigm": {
"unique_views": 359,
"unique_downloads": 308,
"total_views": 573,
"total_downloads": 597
}
}
Setup:
# 1. Clone the repository git clone https://github.com/smartlegionlab/alexander-suvorov.git cd alexander-suvorov # 2. Create virtual environment python -m venv venv # 3. Install requirements pip install -r scripts/requirements.txt # 4. Manually fetch latest Zenodo stats python scripts/fetch_zenodo_stats.py # 5. Start local server python -m http.server 8000
By using this software, you agree to the full disclaimer terms.
Software provided "AS IS" without warranty. You assume all risks.
Full legal disclaimer: See DISCLAIMER.md
License: BSD 3-Clause License