diff --git a/dist/about/index.html b/dist/about/index.html
new file mode 100644
index 0000000..1e8265a
--- /dev/null
+++ b/dist/about/index.html
@@ -0,0 +1,5 @@
+
About — dd0c.net
About
After a childhood spent tinkering on subjects such as Java programming and Linux, Brian's professional experience started with VoIP testing at 3Com in suburban Chicago. He then spent two years studying Computer Engineering at Purdue University before leaving to pursue freelance consulting in Los Angeles.
Following several years of freelancing, he developed his expertise in enterprise infrastructure and cloud computing by working for a variety of startups and large corporations. Later he completed a Bachelor's in I.T. while working at Citrix. Brian is currently working on Citrix's Cloud Engineering and Systems Architecture team in Santa Barbara, California.
\ No newline at end of file
diff --git a/dist/favicon.ico b/dist/favicon.ico
new file mode 100644
index 0000000..3016f98
Binary files /dev/null and b/dist/favicon.ico differ
diff --git a/dist/images/grid.png b/dist/images/grid.png
new file mode 100644
index 0000000..129d4a2
Binary files /dev/null and b/dist/images/grid.png differ
diff --git a/dist/images/smalllogo.png b/dist/images/smalllogo.png
new file mode 100644
index 0000000..bfd1796
Binary files /dev/null and b/dist/images/smalllogo.png differ
diff --git a/dist/index.html b/dist/index.html
index e795b82..6a7887d 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -1,4 +1,6 @@
- dd0c Tools
dd0c Tools
dd0c Tools — Personal productivity tools for Google Workspace.
\ No newline at end of file
+ dd0c.net — dd0c.net
dd0c.net
Infrastructure, cloud, and systems engineering by Brian Galura.
\ No newline at end of file
diff --git a/dist/posts/cloudstack-devops/index.html b/dist/posts/cloudstack-devops/index.html
new file mode 100644
index 0000000..5daeef7
--- /dev/null
+++ b/dist/posts/cloudstack-devops/index.html
@@ -0,0 +1,8 @@
+ CloudStack Collab 2013: Lessons Learned at Citrix OSD — dd0c.net← All posts
CloudStack Collab 2013: Lessons Learned at Citrix OSD
\ No newline at end of file
diff --git a/dist/posts/foreman-hooks-aws-vpc/index.html b/dist/posts/foreman-hooks-aws-vpc/index.html
new file mode 100644
index 0000000..c9319d3
--- /dev/null
+++ b/dist/posts/foreman-hooks-aws-vpc/index.html
@@ -0,0 +1,25 @@
+ AWS VPC Buildout With Foreman Hooks for RDNS Creation — dd0c.net← All posts
AWS VPC Buildout With Foreman Hooks for RDNS Creation
Foreman is a tool I have used for a long time as an external node classifier for Puppet and its smart-proxy for integration with DNS. However when Foreman recently added support for building EC2 instances inside a VPC, I thought it was a great opportunity to use the same tool for a new buildout.
+
Shortly after starting I discovered that reverse DNS is unfortunately broken for EC2 VPC builds. Foreman does not map a relationship between VPC subnets and any DNS smart-proxy. Unswayed I took to #foreman and was guided to a potential solution.
+
Enter foreman_hooks. This plugin for foreman allows you to subscribe to create/update/destroy events and invoke any executable. Lucky for me this was a great workaround for the functionality lacking in the recent 1.3 release. Initially I wrote a script utilizing the smart-proxy API to create PTR records but it complained that the IP address was already assigned. Fair enough. Without further investigation I wrote instead a short shell script which does the same thing using nsupdate with tsigs and viola! Integrated forward and reverse DNS for EC2 VPC deployments. A few more lines of code added support for the destroy hook and now the feature is complete.
+
I named this script rdns.sh and placed it in /usr/share/foreman/config/hooks.d and created symlinks to it in both:
Of course, after implementing this I saw many uses for foreman_hooks including:
+
+
resizing an EC2 root volume at build time
+
attaching additional volumes
+
EIP associations and DNS
+
different hooks for different domains
+
adding and removing hosts to an external monitoring system
+
+
I will post updates on these implementations at another time.
\ No newline at end of file
diff --git a/dist/privacy/index.html b/dist/privacy/index.html
index a629e65..55ad712 100644
--- a/dist/privacy/index.html
+++ b/dist/privacy/index.html
@@ -1,4 +1,5 @@
- Privacy Policy — dd0c.net
Privacy Policy
Effective Date: March 22, 2026
This application ("App") is a personal-use tool operated by Brian Galura ("Operator"). It is not offered as a commercial service.
Data Collection
The App accesses Google Workspace data (Gmail, Calendar, Drive, Sheets, Photos) solely on behalf of the authenticated account holder. No data is collected from third parties.
Data Use
Data retrieved from Google APIs is used exclusively to provide the functionality requested by the account holder, such as reading emails, managing calendar events, organizing files, and managing photos. Data is processed in transit and is not sold, shared, or disclosed to any third party.
Data Storage
OAuth tokens are stored securely on the Operator's private infrastructure. Cached data (e.g., downloaded attachments) is stored temporarily and deleted after processing.
Data Retention
The App does not retain personal data beyond what is necessary to fulfill the immediate request. OAuth refresh tokens are retained until revoked by the user.
\ No newline at end of file
+ Privacy Policy — dd0c.net
Privacy Policy
Effective Date: March 22, 2026
This application ("App") is a personal-use tool operated by Brian Galura ("Operator"). It is not offered as a commercial service.
Data Collection
The App accesses Google Workspace data (Gmail, Calendar, Drive, Sheets, Photos) solely on behalf of the authenticated account holder. No data is collected from third parties.
Data Use
Data retrieved from Google APIs is used exclusively to provide the functionality requested by the account holder, such as reading emails, managing calendar events, organizing files, and managing photos. Data is processed in transit and is not sold, shared, or disclosed to any third party.
Data Storage
OAuth tokens are stored securely on the Operator's private infrastructure. Cached data (e.g., downloaded attachments) is stored temporarily and deleted after processing.
Data Retention
The App does not retain personal data beyond what is necessary to fulfill the immediate request. OAuth refresh tokens are retained until revoked by the user.
\ No newline at end of file
diff --git a/dist/services/index.html b/dist/services/index.html
new file mode 100644
index 0000000..06373eb
--- /dev/null
+++ b/dist/services/index.html
@@ -0,0 +1,6 @@
+ Services — dd0c.net
\ No newline at end of file
diff --git a/dist/terms/index.html b/dist/terms/index.html
index 29ec4e2..cb18a5c 100644
--- a/dist/terms/index.html
+++ b/dist/terms/index.html
@@ -1,4 +1,5 @@
- Terms of Service — dd0c.net
Terms of Service
Effective Date: March 22, 2026
Acceptance
By using this application ("App"), you agree to these terms. The App is a personal-use tool and is not offered as a commercial service.
Description
The App provides automated access to Google Workspace services (Gmail, Calendar, Drive, Sheets, Photos) for the authenticated account holder's personal use.
Eligibility
Use of this App is limited to the account holder and authorized users explicitly granted access by the Operator.
Acceptable Use
The App is intended for lawful, personal use only. You agree not to use the App to violate any applicable laws or third-party rights.
Disclaimer
The App is provided "as is" without warranties of any kind. The Operator is not liable for any damages arising from the use of the App.
Modifications
These terms may be updated at any time. Continued use constitutes acceptance of the updated terms.
\ No newline at end of file
+ Terms of Service — dd0c.net
Terms of Service
Effective Date: March 22, 2026
Acceptance
By using this application ("App"), you agree to these terms. The App is a personal-use tool and is not offered as a commercial service.
Description
The App provides automated access to Google Workspace services (Gmail, Calendar, Drive, Sheets, Photos) for the authenticated account holder's personal use.
Eligibility
Use of this App is limited to the account holder and authorized users explicitly granted access by the Operator.
Acceptable Use
The App is intended for lawful, personal use only. You agree not to use the App to violate any applicable laws or third-party rights.
Disclaimer
The App is provided "as is" without warranties of any kind. The Operator is not liable for any damages arising from the use of the App.
Modifications
These terms may be updated at any time. Continued use constitutes acceptance of the updated terms.