Skip to content

Commit da8e033

Browse files
authored
Merge pull request #3 from danielbodnar/feat/data-files
Feat/data files
2 parents d13ac1a + f144680 commit da8e033

13 files changed

+499
-75
lines changed

.eleventy.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
// START 11TY imports
2-
import eleventyNavigationPlugin from "@11ty/eleventy-navigation";
3-
import { InputPathToUrlTransformPlugin } from "@11ty/eleventy";
4-
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
5-
import { EleventyHtmlBasePlugin } from "@11ty/eleventy";
6-
import pluginRss from "@11ty/eleventy-plugin-rss";
2+
import { EleventyHtmlBasePlugin, InputPathToUrlTransformPlugin } from "@11ty/eleventy";
3+
import { eleventyImageTransformPlugin } from "@11ty/eleventy-img";
4+
import eleventyNavigationPlugin from "@11ty/eleventy-navigation";
5+
import pluginRss from "@11ty/eleventy-plugin-rss";
76
// END 11TY imports
87

98
// START LibDoc imports
10-
import libdocConfig from "./_data/libdocConfig.js";
11-
import libdocFunctions from "./_data/libdocFunctions.js";
9+
import libdocConfig from "./_data/libdocConfig.js";
10+
import libdocFunctions from "./_data/libdocFunctions.js";
1211
// END LibDoc imports
1312

1413
export default function(eleventyConfig) {
@@ -34,6 +33,7 @@ export default function(eleventyConfig) {
3433
// START COLLECTIONS
3534
eleventyConfig.addCollection("myTags", libdocFunctions.collections.myTags);
3635
eleventyConfig.addCollection("postsByDateDescending", libdocFunctions.collections.postsByDateDescending);
36+
eleventyConfig.addCollection("pages", libdocFunctions.collections.pages);
3737
// END COLLECTIONS
3838

3939
// START SHORTCODES

_data/bookmarks.js

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
// Only store bookmark links - the page handles organization and presentation
2+
const kubernetes = [
3+
{ title: "Kubernetes Documentation", url: "https://kubernetes.io/docs/" },
4+
{ title: "Kubernetes the Hard Way", url: "https://github.com/kelseyhightower/kubernetes-the-hard-way" },
5+
{ title: "CNCF Landscape", url: "https://landscape.cncf.io/" },
6+
{ title: "Awesome Kubernetes", url: "https://github.com/ramitsurana/awesome-kubernetes" },
7+
{ title: "k9s", url: "https://k9scli.io/" },
8+
{ title: "Lens", url: "https://k8slens.dev/" },
9+
];
10+
11+
const aws = [
12+
{ title: "AWS Documentation", url: "https://docs.aws.amazon.com/" },
13+
{ title: "AWS Well-Architected", url: "https://aws.amazon.com/architecture/well-architected/" },
14+
{ title: "CDK Patterns", url: "https://cdkpatterns.com/" },
15+
{ title: "AWS Samples", url: "https://github.com/aws-samples" },
16+
{ title: "Last Week in AWS", url: "https://www.lastweekinaws.com/" },
17+
];
18+
19+
const terraform = [
20+
{ title: "Terraform Registry", url: "https://registry.terraform.io/" },
21+
{ title: "Terraform Best Practices", url: "https://www.terraform-best-practices.com/" },
22+
{ title: "Terragrunt", url: "https://terragrunt.gruntwork.io/" },
23+
{ title: "Atlantis", url: "https://www.runatlantis.io/" },
24+
];
25+
26+
const gitops = [
27+
{ title: "Argo CD", url: "https://argo-cd.readthedocs.io/" },
28+
{ title: "Flux", url: "https://fluxcd.io/" },
29+
{ title: "GitOps Principles", url: "https://opengitops.dev/" },
30+
];
31+
32+
const monitoring = [
33+
{ title: "Prometheus Documentation", url: "https://prometheus.io/docs/" },
34+
{ title: "Grafana Documentation", url: "https://grafana.com/docs/" },
35+
{ title: "VictoriaMetrics", url: "https://victoriametrics.com/" },
36+
{ title: "Netdata", url: "https://www.netdata.cloud/" },
37+
];
38+
39+
const logging = [
40+
{ title: "Loki Documentation", url: "https://grafana.com/docs/loki/" },
41+
{ title: "Elastic Stack", url: "https://www.elastic.co/guide/" },
42+
{ title: "FluentBit", url: "https://docs.fluentbit.io/" },
43+
];
44+
45+
const security = [
46+
{ title: "Trivy", url: "https://aquasecurity.github.io/trivy/" },
47+
{ title: "WireGuard", url: "https://www.wireguard.com/" },
48+
{ title: "Teleport", url: "https://goteleport.com/docs/" },
49+
{ title: "HashiCorp Vault", url: "https://www.vaultproject.io/docs" },
50+
];
51+
52+
const golang = [
53+
{ title: "Go Documentation", url: "https://go.dev/doc/" },
54+
{ title: "Effective Go", url: "https://go.dev/doc/effective_go" },
55+
{ title: "Go by Example", url: "https://gobyexample.com/" },
56+
{ title: "Awesome Go", url: "https://awesome-go.com/" },
57+
];
58+
59+
const typescript = [
60+
{ title: "TypeScript Handbook", url: "https://www.typescriptlang.org/docs/handbook/" },
61+
{ title: "Node.js Documentation", url: "https://nodejs.org/docs/" },
62+
{ title: "Bun Documentation", url: "https://bun.sh/docs" },
63+
];
64+
65+
const rust = [
66+
{ title: "The Rust Book", url: "https://doc.rust-lang.org/book/" },
67+
{ title: "Rust by Example", url: "https://doc.rust-lang.org/rust-by-example/" },
68+
{ title: "Awesome Rust", url: "https://github.com/rust-unofficial/awesome-rust" },
69+
];
70+
71+
const linux = [
72+
{ title: "Arch Wiki", url: "https://wiki.archlinux.org/" },
73+
{ title: "Linux Performance", url: "https://www.brendangregg.com/linuxperf.html" },
74+
{ title: "Systemd Documentation", url: "https://systemd.io/" },
75+
{ title: "ZFS Documentation", url: "https://openzfs.github.io/openzfs-docs/" },
76+
];
77+
78+
const postgresql = [
79+
{ title: "PostgreSQL Documentation", url: "https://www.postgresql.org/docs/" },
80+
{ title: "PostgreSQL Wiki", url: "https://wiki.postgresql.org/" },
81+
{ title: "pgTune", url: "https://pgtune.leopard.in.ua/" },
82+
];
83+
84+
const sreBooks = [
85+
{ title: "Site Reliability Engineering", url: "https://sre.google/sre-book/table-of-contents/" },
86+
{ title: "The Site Reliability Workbook", url: "https://sre.google/workbook/table-of-contents/" },
87+
{ title: "Building Secure & Reliable Systems", url: "https://sre.google/books/building-secure-reliable-systems/" },
88+
{ title: "Software Engineering at Google", url: "https://abseil.io/resources/swe-book" },
89+
];
90+
91+
const terminalTools = [
92+
{ title: "Neovim", url: "https://neovim.io/" },
93+
{ title: "tmux", url: "https://github.com/tmux/tmux" },
94+
{ title: "ripgrep", url: "https://github.com/BurntSushi/ripgrep" },
95+
{ title: "fd", url: "https://github.com/sharkdp/fd" },
96+
{ title: "bat", url: "https://github.com/sharkdp/bat" },
97+
{ title: "eza", url: "https://github.com/eza-community/eza" },
98+
];
99+
100+
export default {
101+
kubernetes,
102+
aws,
103+
terraform,
104+
gitops,
105+
monitoring,
106+
logging,
107+
security,
108+
golang,
109+
typescript,
110+
rust,
111+
linux,
112+
postgresql,
113+
sreBooks,
114+
terminalTools,
115+
};

_data/experience.js

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
// Current positions
2+
const fidelity = {
3+
id: "fidelity",
4+
company: "Fidelity Investments",
5+
title: "Principal Software, DevOps, and Cloud Engineer",
6+
period: "2023 - 2025",
7+
location: "Remote",
8+
type: "Full-time",
9+
technologies: [
10+
"AWS",
11+
"AWS CDK",
12+
"CloudFormation",
13+
"Kubernetes",
14+
"EKS",
15+
"Helm",
16+
"Jenkins",
17+
"Docker",
18+
"IAM",
19+
"Terraform",
20+
"Python",
21+
"Node.js",
22+
"Discourse",
23+
"Alpine Linux",
24+
],
25+
};
26+
27+
const bitbuilder = {
28+
id: "bitbuilder",
29+
company: "BitBuilder Cloud, LLC",
30+
title: "Founder, Cloud Architect, CIO",
31+
period: "2021 - Present",
32+
location: "Remote",
33+
type: "Self-employed",
34+
hardware: {
35+
primary: "HPE DL385 Gen10 with dual AMD Epyc 7601, 512GB RAM, 30TB NVMe",
36+
development: "HPE DL380 Gen8",
37+
totalResources: "2TB+ RAM, 320 cores, 64TB NVMe storage",
38+
},
39+
technologies: ["Kubernetes", "Docker", "Linux", "Bare Metal", "ZFS", "NVMe", "Grafana", "Prometheus", "VictoriaMetrics", "NetData", "Jaeger"],
40+
};
41+
42+
const rsvp = {
43+
id: "rsvp",
44+
company: "RSVP & ACT, Inc",
45+
title: "SRE, SysAdmin, and Platforms Engineer",
46+
period: "April 2019 - 2021",
47+
location: "Remote",
48+
type: "Full-time",
49+
technologies: ["Kubernetes", "PostgreSQL", "MySQL", "SQLite", "GitLab", "Docker", "Proxmox", "ZFS", "InfiniBand", "Ansible", "Terraform", "Wireguard"],
50+
};
51+
52+
const perspectives = {
53+
id: "perspectives",
54+
company: "Perspectives.org",
55+
title: "IT Director",
56+
period: "January 2018 - April 2019",
57+
location: "Remote",
58+
type: "Full-time",
59+
volunteerPeriod: "2012-2014",
60+
technologies: ["Go", "Docker", "Rancher", "AWS", "iPXE", ".NET", "LMS"],
61+
};
62+
63+
const att = {
64+
id: "att",
65+
company: "AT&T Corp.",
66+
title: "Professional Application Developer",
67+
period: "March 2014 - June 2017",
68+
location: "Dallas, TX",
69+
type: "Full-time",
70+
technologies: ["Node.js", "Angular.js", "MongoDB", "Docker", "Rails", "MySQL", "JavaScript"],
71+
};
72+
73+
// Prior experience (< 8 years ago)
74+
const priorExperience = [
75+
{
76+
id: "tacc",
77+
company: "TACC Support",
78+
fullName: "Technicians Against Computer Cruelty",
79+
period: "2007-2013",
80+
description: "Computer repair / IT consulting / MSP company with up to 5 employees",
81+
},
82+
{
83+
id: "ticketdashboard",
84+
company: "TicketDashboard",
85+
period: "2013-2014",
86+
description: "Multi-tenant SaaS ticket management solution",
87+
technologies: ["MongoDB", "Node.js", "Python", "Angular", "Bootstrap"],
88+
},
89+
{
90+
id: "diab",
91+
company: "DIAB, INC",
92+
description: "Virtualized ~30 bare-metal servers on ESXi",
93+
},
94+
{
95+
id: "ipeople",
96+
company: "iPeople.com",
97+
description: "Technical support for hospital database systems (Meditech)",
98+
},
99+
];
100+
101+
const currentPositions = [fidelity, bitbuilder];
102+
const pastPositions = [rsvp, perspectives, att];
103+
const allPositions = [...currentPositions, ...pastPositions];
104+
105+
export default {
106+
fidelity,
107+
bitbuilder,
108+
rsvp,
109+
perspectives,
110+
att,
111+
priorExperience,
112+
currentPositions,
113+
pastPositions,
114+
allPositions,
115+
};

_data/libdocFunctions.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,15 @@ export default {
209209
//return a.inputPath.localeCompare(b.inputPath); // sort by path - ascending
210210
//return b.inputPath.localeCompare(a.inputPath); // sort by path - descending
211211
});
212+
},
213+
pages: function(collectionsApi) {
214+
return collectionsApi.getAll()
215+
.filter((item) => item.data.eleventyNavigation !== undefined)
216+
.sort((a, b) => {
217+
const orderA = a.data.eleventyNavigation.order || 0;
218+
const orderB = b.data.eleventyNavigation.order || 0;
219+
return orderA - orderB;
220+
});
212221
}
213222
},
214223
shortcodes: {

0 commit comments

Comments
 (0)