Files
bztmon-site/src/data/skills.ts
T

117 lines
3.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Grouped capability matrix - NO percentage bars / ratings / logo walls.
// Driven entirely by this file; the Skills section renders whatever is here.
export type SkillGroup = {
title: string;
// Short framing line for the group.
blurb: string;
/** Proof-point lines rendered between the blurb and the chips - fills the
* tall tiles (hero / full) so the tile reads as substance, not whitespace. */
points?: string[];
items: string[];
/** Bento tile size - "hero" = 2×2 flagship · "wide" = 2×1 · "full" = whole row · default 1×1. */
span?: "hero" | "wide" | "full";
/** Accent flavour - "magenta" marks security-flavoured tiles. */
flavor?: "magenta";
/** Eyebrow label rendered on the hero tile. */
flag?: string;
};
export const skills: SkillGroup[] = [
{
title: "Edge AI & GPU",
span: "hero",
flag: "FLAGSHIP",
blurb: "Serving vision and language models on real hardware at the edge.",
points: [
"Fail-closed computer vision on single-node OpenShift - probes that catch a silently dead model, not just a dead pod.",
"One GPU, two workloads - a single card time-sliced between LLM serving and video transcode instead of reserving separate hardware.",
"Vendor video-analytics stacks re-platformed as first-class Kubernetes workloads, not appliances.",
"Local models behind an OpenAI-compatible gateway - swap the backend, keep every client.",
],
items: [
"NVIDIA GPU Operator",
"GPU passthrough (ESXi, as code)",
"GPU readiness probing & watchdogs",
"Pod lifecycle management",
"YOLO / computer-vision inference",
"Local LLM serving (llama.cpp)",
"Edge Kubernetes",
],
},
{
title: "Platform & Virtualization",
span: "wide",
blurb: "Kubernetes platforms designed to be reasoned about and recovered.",
items: [
"Kubernetes",
"OpenShift",
"Talos Linux",
"vSphere / VMware ESXi",
"Proxmox",
"containerd",
"Argo CD / GitOps",
"Helm & Kustomize",
],
},
{
title: "Automation & IaC",
blurb: "Single-touch deployments - removing the manual step, not documenting it.",
items: [
"Ansible / AWX",
"PowerShell (PowerCLI)",
"Python",
"Bash / Shell",
"Terraform",
"Image pre-pull & air-gapped registries (ACR / NVCR)",
"Secrets management",
],
},
{
title: "Networking & Security",
flavor: "magenta",
blurb: "Default-deny, segmentation, and a small attack surface.",
items: [
"SD-WAN",
"802.1Q VLAN segmentation",
"ACLs / IPSec / RADIUS",
"Aruba ClearPass",
"Palo Alto / FortiGate",
"Firewall policy governance",
"RBAC · 2FA / SSO",
],
},
{
title: "Cloud & Identity",
blurb: "Hybrid estates across the major clouds, with identity done properly.",
items: [
"Azure",
"Entra ID",
"Intune",
"AWS",
"GCP",
"Microsoft 365",
"Azure Blob / S3",
],
},
{
title: "Observability & Ops",
span: "full",
blurb: "Knowing the system is healthy - and the GPUs with it.",
points: [
"Fleet metrics by remote-write - every cluster ships to one Prometheus, GPUs included (DCGM / Intel Xe).",
"Alerts that reach a phone and mean it - tuned until silence means healthy, not unmonitored.",
"A backup is a rumour until a restore drill proves it - drills are scheduled, not aspirational.",
],
items: [
"Prometheus",
"Grafana",
"DCGM Exporter",
"PRTG / LibreNMS",
"AWX job reporting",
"Veeam backup",
"ITIL processes",
],
},
];