
[{"content":"I\u0026rsquo;m Zac Trolley and I firmly believe the future is what you make it.\nI\u0026rsquo;m an electrical engineer living on Treaty 7 Land where the Elbow and Bow rivers meet in Alberta Canada.\nThis site has information on my projects, thoughts, and information on self hosting.\nLiving in a digital World # As a good chunk of our lives exist in the digital realm, I\u0026rsquo;m using this website to catalogue my activities and projects outside of the Big Tech platforms. The dichotomy of our age is that we rely on digital infrastructure that should be open and free, but operate in closed systems.\nThe future is here, it\u0026rsquo;s just not evenly distributed.\nWilliam Gibson I\u0026rsquo;m a fan of cyberpunk, science fiction, and self determination.\n","date":"27 June 2026","externalUrl":null,"permalink":"/","section":"Home","summary":"","title":"Home","type":"page"},{"content":"You really get to know a person when you know what they like. It gives you a sense of who they are and what they value. This is a list of some things that I like, but not necessarily my favourite things.\nFantasy Books # A Memory Of Light: The last book in the epic Wheel of Time series that spans 14 books consisting of over 4 million words. It\u0026rsquo;s a feat and a half to complete this series. When you do complete it, you get an entire book dedicated to The Last Battle. This book is if the Battle of Helm\u0026rsquo;s Deep was an entire novel. Dungeon Crawler Carl: This book is what video games feel like. As you get further into the series, the plot opens up into the soulless evils of capitalism, what family really is, and how far a person can be pushed. It\u0026rsquo;s an absolute wild ride. I highly recommend to consume the audio version. Legends and Lattes: Sometimes you don\u0026rsquo;t want to save the world. Sometimes you just want to kick back and read about an Orc who opens up a coffee shop. This is perfect for reading in a coffee shop or being wrapped in a blanket on a rainy day. Science Fiction Books # Leviathan Wakes: This book (and the whole series) is a kick ass space opera. It\u0026rsquo;s gritty, real, and takes you on a ride thought the solar system with a crew that you will absolutely fall in love with. Little Brother: Written in 2008 as science fiction, it feels very real today. I stayed up until 2am to finish this book when I picked it up. It\u0026rsquo;s dystopian young adult fiction, and makes a great intro into the surveillance capitalism and hacking backlash we find ourselves in today. Neuromancer: I love cyberpunk, and this book is where Cyberpunk was born. Gibson invented terms like Cyberspace and Matrix, and is the blue print for much of our media and (unfortunately) real life today. ","date":"27 June 2026","externalUrl":null,"permalink":"/like/","section":"Home","summary":"","title":"Things I like","type":"page"},{"content":"I\u0026rsquo;m a socialist, engineer, public speaker, and Luddite. I enjoy long lifting sessions at the gym and strategy video games. I speak English, bad French, and terrible Japanese. I can pick my nose with my tongue and I make a great breakfast scramble. (the secret is yams)\nProfessional Profile # I have an array of post secondary qualifications. I hold electrical engineering and professional ethics degrees from Lakehead Univeristy, a diploma in electronics engineering from SAIT, and a space studies certificate from the International Space University.\nI\u0026rsquo;ve worked in many different environments including fabrication shops, on movies sets, inside an active mine, commissioning mega-projects, and at the boardroom table. I\u0026rsquo;ve been employed by startups, small firms, and mega corporations. I\u0026rsquo;ve also co-founded my own company and participated in many entrepreneurial accelerators.\nWork Experience # Director (3 years) # Led diverse engineering and operations teams across aerospace and energy sectors, balancing strategic vision with hands on problem solving in fast paced startup environments.\nProject Manager (7 years) # Delivered multi-million dollar energy infrastructure projects on time and on budget, aligning complex stakeholder groups and technical teams through proactive change management and strict compliance.\nSpecialist (4 years) # Bridged technical engineering and production needs, applying deep expertise in mechanical systems and high precision processes to support large scale industrial and creative projects.\nTechnician (3 years) # Executed hands on field engineering and system integration, translating design intent into physical reality with a focus on accuracy, safety, and practical problem solving on site.\n","date":"24 June 2026","externalUrl":null,"permalink":"/about/","section":"Home","summary":"","title":"About Zac","type":"page"},{"content":"Remember back in Web 1.0 when people would just share links to places, and it wasn\u0026rsquo;t all inside a Facebook post?\nLet\u0026rsquo;s get back to doing that.\nNews # You should be disconnecting from the news as much as possible, because there is so much of it. But we also need to stay informed. (The modern dilemma) Here\u0026rsquo;s where I go to get my news.\nAftermath: Video game new and more by people who actually care.\n404 Media: Tech news by people who aren\u0026rsquo;t paid by big tech.\nThe National Observer: If you have to get into politics and business, get it here.\nThe Narwhal: News for leftists who want a bit of indie flair.\nThe Sprawl: The only place you should be looking at for long form Calgary journalism.\nPeople # A short list of people who I follow and put value into what they say.\nBrian Merchant: If you want to learn about who the Luddites were, and how it applies to modern life, Brian is the guy to keep up with.\nParis Marx: Paris dives into tech issues and Silicon Valley snake oil from a Canadian perspective.\nLis Howard: If you want to learn about computers, AI, and programming, there is no better person on Earth to get in touch with.\nHardware # Hardware is expensive and necessary. Here\u0026rsquo;s where I when I need new hardware\nFramework: From laptops to desktops, these guys have your covered. They build their computers with quality and upgrade-ability in mind. I highly recommend them.\nGamesir: Some of the best and budget friendly controllers I\u0026rsquo;ve ever had. They just work.\nFosi Audio: Fantastic small Class D amplifiers for your computer setup.\n","date":"24 June 2026","externalUrl":null,"permalink":"/links/","section":"Home","summary":"","title":"Links","type":"page"},{"content":"Cloud based budgeting apps provide a lot of convenience, it\u0026rsquo;s true. I used one for years. The draw back is that all your spending data is fed into the algorithm, giving the companies more control over you and your habits. That\u0026rsquo;s why I switched to Actual Budget.\nActual Budget is a powerful, self hosted budgeting application that gives you complete control over your financial data. It\u0026rsquo;s simple to setup and simple to maintain. Every few months export your bank accounts, credit cards, etc as CSV files, and upload them to Actual Budget. Once you have your rules setup (Every purchase at Costco gets tagged as groceries, etc.) you get a complete view of your spending and saving habits.\nWhy Actual Budget:\nYour Data, Your Control: No corporate servers, no data mining, no subscriptions Privacy First: Your financial information stays on your own server, away from advertisers and other nefarious actors Powerful Features: Envelope budgeting, goal tracking, multi-account support, smart tagging Open Source: Transparent, community-driven, and free to use Security Note: DO NOT make this available to external networks. The security risk isn\u0026rsquo;t worth it. Do your finances at home, on your own network.\nResources # Official Actual Budget Website Actual Documentation Actual GitHub Community Forum Installation Prep # Before installing Actual Budget, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 1GB RAM, 1GB Disk Space Time to Complete # Total Time: ~20 minutes 5 min: File system prep 5 min: Docker setup 5 min: Download Actual image 5 min: Initial setup and configuration Difficulty: Beginner-Friendly Note: This is an initial setup. Tagging your spending habits can take a while, and will happen after you upload your first CSV files. But you only have to tag a vendor once, then the program will automatically tag new transactions. Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and your financial data.\nCreate the Actual directory\nmkdir -p ~/docker/actual/ Create the folders where your data will live:\nmkdir -p ~/docker/actual/data This creates the following structure:\n/home/USER/docker/actual/data/ # Your financial data and backups Step 2: Docker Setup # Make sure you are in your Actual directory:\ncd ~/docker/actual To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: actual: image: ghcr.io/actualbudget/actual-server:latest container_name: actual ports: - \u0026#34;5006:5006\u0026#34; volumes: - ./data:/data restart: unless-stopped Save and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Actual # Now you can download and start Actual:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the container is running:\ndocker ps You should see actual running.\nInitial Setup and Configuration # Step 1: Access Actual # Open your browser and navigate to the IP of your server. I\u0026rsquo;m using 192.168.99.1 in this example. This is the IP address of your home server.\nhttp://192.168.99.1:5006 Step 2: Create Your Account # Create Account\nEnter a username for your account Enter a strong password Click Create Account Verify Email (Optional)\nIf email is enabled, check your inbox Otherwise, click Skip to continue Step 3: Create Your First Budget # Add Your Accounts\nClick Add Account Choose account type (Checking, Savings, Credit Card, etc.) Enter account name and starting balance. The starting balance can always be changed. Click Add Account Set Up Your Budget\nClick Create Budget Name your budget (e.g., \u0026ldquo;May 2026\u0026rdquo;) Click Create Add Categories\nClick Categories in the sidebar Add your budget categories (e.g., Housing, Food, Donations to radical political parties) Set monthly limits for each category Upload CSV Files\nDownload a CSV file from your banking or financial institution. Click on an account that you\u0026rsquo;ve setup Click Import and select your CSV file from your computer. Note: Depending how your institution organizes your data, you may have to play around with the columns. Usage # Web Interface # The Actual web interface (http://192.168.99.1:5006) provides:\nDashboard: Overview of your budget, spending, and goals Budget: Envelope-style budgeting with category limits Transactions: View and manage all your transactions Reports: Visualize your spending patterns Goals: Track your financial goals and progress Common Tasks # Add a Transaction:\nClick Transactions in the sidebar Click + Add Transaction Enter amount, payee, category, and date Click Save Adjust Your Budget:\nClick Budget in the sidebar Click on a category\u0026rsquo;s limit Adjust the amount Click Save View Reports:\nClick Reports in the sidebar Choose report type (Income vs Expenses, Cash Flow, etc.) View visualizations of your financial data Mobile App # Actual has official apps for iOS and Android. I DO NOT recommend using these. Keep your financial data inside your network and don\u0026rsquo;t go walking around with it. You can make the time at home to balance your books.\nInstall the App\niOS: App Store Android: Google Play Connect to Your Server\nOpen the app Tap Add Server Enter your server URL: http://192.168.99.1:5006 Log in with your credentials Sync Your Data\nYour data will automatically sync when you open the app Make sure you\u0026rsquo;re on the same network or have port forwarding configured Maintenance # Updates # Update Actual and Docker images:\ncd ~/docker/actual sudo docker-compose pull sudo docker-compose up -d Backups # Actual automatically creates backups. To manually backup:\ntar -czf actual-backup.tar.gz ~/docker/actual/data/ Store the backup in a safe location (external drive, cloud storage).\nView Logs # View Actual logs:\nsudo docker logs actual ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/actual/","section":"Building Your Own Server","summary":"","title":"Actual Budget - Self Hosted Personal Finance","type":"self-hosting"},{"content":"I believe the future is what we make it — not what corporations design for us.\nWhy Self Host? # Every day, companies like Google, Apple, Microsoft, and Meta are reshaping how we live, work, and connect. The data you feed into your profiles and connections become profit for them, at your expense. The second you upload content, they own it and are feeding it into their AI systems.\nKeep your information out of their data centres.\nThis doesn\u0026rsquo;t have to be your experience.\nThere are alternatives that you can run in your own home that don\u0026rsquo;t require high end hardware to operate.\nSelf hosting is a hobby, but it\u0026rsquo;s also an act of digital self determination. When you run your own servers, you take back control of your data, your privacy, and your digital autonomy. No subscriptions. No data mining. No corporate servers holding your information hostage.\nYou need to get yourself some hardware and install the software. Add a little elbow grease and self determination, and you will be ditching Big Tech and using your home server in no time!\nWhat this guide is about # I started getting into self hosting during COVID, and it changed my relationship with technology. Now I\u0026rsquo;m sharing what I\u0026rsquo;ve learned with you. I\u0026rsquo;ve been on this journey for years, and the most important thing I\u0026rsquo;ve learned is this: you don\u0026rsquo;t need to get it perfect. You just need to start.\nEvery expert was once a beginner. Every seasoned sysadmin was once confused by their first Linux terminal. The difference is they took that first step.\nStop Renting Your Life. Start Owning It.\nThis guide will walk you through setting up your own server that you can run at home under your control. A server is just a computer that is providing services. Anyone can have one. Learning how to run your own services allows you to can pick and choose what you and your family need, and leave out what you don\u0026rsquo;t.\nIt takes effort, but it\u0026rsquo;s worth it.\n","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/","section":"Building Your Own Server","summary":"","title":"Building Your Own Server","type":"self-hosting"},{"content":"Docker is a powerful containerization platform that allows you to package applications and their dependencies into isolated containers. By using Docker, you can run multiple services on the same machine without conflicts, making it ideal for self hosted infrastructure. The concept takes a bit to wrap your head around, and I recommend looking at a few Docker 101 pages online. Have different people explain it to you from different view points to help you grasp the concept.\nDocker Definitions # Docker: The software container platform. You download Docker, and point it towards what application you want it to download to your computer. Image: A “lightweight, stand-alone, executable package that includes everything needed to run a piece of software.” For you millennials out there, think of this as the CD for the software. Container: A running copy of the image. This is what the code actually runs in. Why Docker # Isolation: Each service runs in its own container, preventing conflicts with other software Portability: Containers work the same way on any system, making installation easy Efficiency: Lightweight alternative to virtual machines Open Source: Think of Docker a bit like an app store, but without the store part. It\u0026rsquo;s a way for people to share programs with each other and work on projects together. Installation Prep # Before installing Docker, ensure you have the following ready:\nOperating System: Linux MintYou can do it with windows, but I highly recommend switching to Linux for your server. 👉 How to Install Linux Mint User Permissions: Your user should be in the sudo group Hardware: Minimum 2GB RAM, 10GB Free Disk Space (This is to make sure you have space for the program images) Time to Complete # Total Time: ~15 minutes 5 min: Remove old Docker versions 5 min: Install Docker Engine 3 min: Install Docker Compose 2 min: Verify installation Difficulty: Beginner-Friendly Note: This guide covers Docker Engine and Docker Compose installation. Remove Old Docker Versions (Optional) # If you have older Docker versions installed, remove them first:\nsudo apt remove docker docker-engine docker.io containerd runc Install Docker Engine # Step 1: Update Package Index # sudo apt update Step 2: Install Required Dependencies # sudo apt install ca-certificates curl gnupg lsb-release Step 3: Add Docker\u0026rsquo;s Official GPG Key # sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg Step 4: Add Docker Repository # echo \u0026#34;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\u0026#34; | sudo tee /etc/apt/sources.list.d/docker.list \u0026gt; /dev/null Step 5: Update Package Index Again # sudo apt update Step 6: Install Docker Engine # sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Step 7: Verify Docker Installation # sudo docker --version You should see output similar to:\nDocker version 24.0.7, build 24.0.7-0ubuntu1~22.04.1 Configure Docker for Non-Root User (Optional but Recommended) # To run Docker commands without sudo, add your user to the docker group:\nsudo usermod -aG docker $USER Log out and log back in for the changes to take effect, or run:\nnewgrp docker Install Docker Compose # Docker Compose allows you to define and run multi-container Docker applications. Each program you want to run will have a Docker Compose file with all your variables and installation information. In each of my guides, there is a a Docker Compose template to get you started.\nStep 1: Download Docker Compose # sudo curl -L \u0026#34;https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)\u0026#34; -o /usr/local/bin/docker-compose Step 2: Apply Executable Permissions # sudo chmod +x /usr/local/bin/docker-compose Step 3: Verify Docker Compose Installation # docker-compose --version You should see output similar to:\nDocker Compose version v2.24.0 Usage # Basic Docker Commands # Command Description docker ps List running containers docker ps -a List all containers (including stopped) docker images List downloaded images docker stop container-name Stop a running container docker start container-name Start a stopped container docker rm container-name Remove a container docker rmi image-name Remove an image docker logs container-name View container logs Basic Docker Compose Commands # Command Description docker-compose up -d Start services in background (Don\u0026rsquo;t forget the D!') docker-compose down Stop and remove containers docker-compose ps List containers docker-compose logs View logs docker-compose pull Pull latest images Maintenance # Updates # Update Docker and Docker Compose:\nsudo apt update \u0026amp;\u0026amp; sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Cleanup # Remove unused images, containers, and volumes:\ndocker system prune -a Warning: This removes all unused containers and images. Use with caution.\nView System Information # docker info This displays detailed information about your Docker installation.\nResources # Official Docker Documentation Docker Compose Documentation Docker Hub - Public image repository LinuxServer.io - Pre-configured Docker images You\u0026rsquo;ve successfully installed Docker! You\u0026rsquo;re now ready to deploy containerized services like Jellyfin, Nextcloud, and more. Docker is the foundation of your self-hosted infrastructure.\nNote: All services in this guide assume your Linux Mint machine is at 192.168.99.1. This IP is used throughout the documentation for accessing web interfaces.\n","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/docker/","section":"Building Your Own Server","summary":"","title":"Docker Installation","type":"self-hosting"},{"content":"Home Assistant is a powerful, self-hosted home automation platform that gives you complete control over your smart home devices. This is an open source replacement for ecosystems like Google, Alexa, Ring, and Nest. These commercial services take data from inside your home and use it in there databases. If you want a smart home, you NEED to be in control of your home.\nInviting corporations into your home and allowing them to extract data on your private details, habits, and activities is a complete violation of the sanctuary of our homes. I know that it\u0026rsquo;s a very common thing to do. As the old saying goes:\nIf all your friends were to jump off a cliff invite corporate spyware into their home, would you jump too?\nWhy Home Assistant:\nYour Home, Your Control: Your devices, your rules. No corporation controls your home automation. Privacy First: Your smart home data stays on your own server, and not in a database. No one else can access your smart home data or build profiles about your habits. Local Processing: Automation rules run locally, no cloud dependency. Your automation continues working even without internet access and it can\u0026rsquo;t be turned off remotely by corporate interests. ' Open Source: Transparent, community-driven, and free to use Resources # Official Home Assistant Website Home Assistant Documentation Home Assistant GitHub Community Forum Installation Prep # Before installing Home Assistant, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 2GB RAM, 10GB Disk Space (more for camera feeds) Network: Accessible from your local network (for device discovery) Smart Devices: Zigbee, Z-Wave, or Wi-Fi devices (optional) Alternatively, you can buy a reconfigured mini-server that\u0026rsquo;s plug and play ready to go. This is a great option for beginners and advanced users to get something that \u0026ldquo;just works\u0026rdquo;\nTime to Complete # Total Time: ~30 minutes 10 min: File system prep 10 min: Docker setup 5 min: Download Home Assistant image 5 min: Initial setup and configuration If you buy the pre-configured hardware, you are pretty much ready to go out of the box.\nInstallation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and Home Assistant configuration.\nCreate the Home Assistant directory\nmkdir -p ~/docker/homeassistant/ Create the folders where your data will live:\nmkdir -p ~/docker/homeassistant/config This creates the following structure:\n/home/USER/docker/homeassistant/config/ # Home Assistant configuration Step 2: Docker Setup # Make sure you are in your Home Assistant directory:\ncd ~/docker/homeassistant To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: homeassistant: container_name: homeassistant image: ghcr.io/home-assistant/home-assistant:stable volumes: - ./config:/config - /etc/localtime:/etc/localtime:ro restart: unless-stopped network_mode: host environment: - TZ=America/Edmonton privileged: true Important: Replace America/Edmonton with your timezone.\nSave and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Home Assistant # Now you can download and start Home Assistant:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the containers are running:\ndocker ps You should see homeassistant running.\nInitial Setup and Configuration # Step 1: Access Home Assistant # Open your browser and navigate to the IP of your server. I\u0026rsquo;m using 192.168.99.1 in this example. This is the IP address of your custom server or the standalone server where Home Assistant is installed.\nhttp://192.168.99.1:8123 Step 2: Create Your Account # Create Account\nEnter a username for your account Enter a strong password Click Create Account Login\nUse your credentials to log in Step 3: Set Up Your Home # Name Your Home\nEnter your home name (e.g., \u0026ldquo;Castle Awesome\u0026rdquo;) Click Next Set Up Your Location\nEnter your city or coordinates Click Next Configure Units\nChoose your preferred units (metric obviously) Click Finish Step 4: Add Devices # Home Assistant automatically discovers many devices on your network:\nGo to Settings \u0026gt; Devices \u0026amp; Services Click the + Add Integration button Search for your device type (e.g., \u0026ldquo;Philips Hue\u0026rdquo;, \u0026ldquo;Nest\u0026rdquo;, \u0026ldquo;Sonos\u0026rdquo;) Follow the prompts to add your device Step 5: Create Automations (Optional) # Go to Settings \u0026gt; Automations \u0026amp; Scenes Click the + Create Automation button Configure your automation: Trigger: When a device state changes Condition: If certain conditions are met Action: What to do Usage # Web Interface # The Home Assistant web interface (http://192.168.99.1:8123) provides:\nDashboard: Overview of your devices and automation Devices: Manage all your connected devices Automations: Create and manage automation rules Scenes: Create device states for quick access Logs: View system events and errors Common Tasks # View Device Status:\nCheck your dashboard for real-time device status Click on a device to see detailed information Control a Device:\nClick on a device in the dashboard Use the controls to turn on/off, adjust settings Create an Automation:\nGo to Automations \u0026amp; Scenes Click Create Automation Define trigger, condition, and action Click Save View Logs:\nGo to Settings \u0026gt; System Click Logs View recent system events Mobile App # Home Assistant has official apps for iOS and Android. This requires exposing your home automation server to the internet, and I would only do this if you know what you are doing.\niOS: App Store Android: Google Play Maintenance # Updates # Update Home Assistant and Docker images:\ncd ~/docker/homeassistant sudo docker-compose pull sudo docker-compose up -d Backups # Home Assistant stores its configuration in the config directory. To backup:\ntar -czf homeassistant-backup.tar.gz ~/docker/homeassistant/config/ Store the backup in a safe location (external drive, your NAS).\nView Logs # View Home Assistant logs:\nsudo docker logs homeassistant Reset to Factory Defaults # Stop Home Assistant: sudo docker-compose down Remove the config directory: rm -rf ~/docker/homeassistant/config Start Home Assistant: sudo docker-compose up -d Regular Security Scans # Home Assistant includes a security scan:\nGo to Settings \u0026gt; System Click Health Review any warnings ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/homeassistant/","section":"Building Your Own Server","summary":"","title":"Home Assistant - Self-Hosted Home Automation","type":"self-hosting"},{"content":"Immich is a powerful, self-hosted photo and video backup solution that gives you complete control over your memories. When you upload your pictures to the defaul Google and Apple services, they search, review, and keep copies of all your pictures.\nI do mean All of them. \u0026#x1f440;\nAnd they use your pictures to train their AI models.\nWhy Immich:\nYour Photos, Your Control: No corporate surveillance, no data mining, no one looking at your family picutres. Your memories belong to you, not a corporation Automatic Backup: Photos backup automatically from your phone. No one else can access your photos without your permission Smart Organization: Face recognition, automatic albums, and smart search all done locally on your computer. Offline Access: Your photos are always available, even without internet Resources # Official Immich Website Immich Documentation Immich GitHub Installation Prep # Before installing Immich, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 2GB RAM, 50GB+ Disk Space (depends on photo/video volume) Network: Accessible from your local network (for phone backup) Setting up your services to be available externally is an advanced feature. It means anyone can see your Immich server. This is possible to do and lots of people do it, but you need to make sure you know what you are doing.\nTime to Complete # Total Time: ~30 minutes 5 min: File system prep 10 min: Docker setup 10 min: Download Immich image 5 min: Initial setup and configuration Difficulty: Intermediate. There are extra components to the docker compose. This is also a service that\u0026rsquo;s very handy to have exposed to the internet. Understanding Your Photo Storage # Before we begin, it\u0026rsquo;s important to understand how Immich stores your photos:\n/home/USER/docker/immich/ ├── config/ # Immich configuration files ├── library/ # Your actual photos and videos │ ├── uploaded/ # New photos uploaded from your phone │ ├── library/ # Existing photos imported into Immich │ └── thumbnails/ # Generated thumbnails for fast viewing └── machine-learning/ # AI models for face recognition Key Points:\nYour photos are stored in /home/USER/docker/immich/library/ This is a regular folder on your Linux Mint system You can access it directly via file manager Immich is just a interface to view and manage your photos If Immich crashes, your photos are still safe in the library folder Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and your photos.\nCreate the Immich directory\nmkdir -p ~/docker/immich/ Create the folders where your data will live:\nmkdir -p ~/docker/immich/{config,library/{uploaded,library,thumbnails},machine-learning} This creates the following structure:\n/home/USER/docker/immich/config /home/USER/docker/immich/library/uploaded /home/USER/docker/immich/library/library /home/USER/docker/immich/library/thumbnails /home/USER/docker/immich/machine-learning Step 2: Docker Setup # Make sure you are in your Immich directory:\ncd ~/docker/immich To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: immich-server: image: ghcr.io/immich-app/immich-server:release container_name: immich-server volumes: - ./library:/usr/src/app/upload - ./machine-learning:/usr/src/app/machine-learning environment: - DB_HOSTNAME=immich-db - DB_USERNAME=immich - DB_PASSWORD=immich - DB_DATABASE_NAME=immich - REDIS_HOSTNAME=immich-redis - IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003 ports: - \u0026#34;2283:2283\u0026#34; depends_on: - immich-db - immich-redis restart: unless-stopped immich-db: image: postgres:15 container_name: immich-db volumes: - ./postgres-data:/var/lib/postgresql/data environment: - POSTGRES_USER=immich - POSTGRES_PASSWORD=immich - POSTGRES_DB=immich restart: unless-stopped immich-redis: image: redis:7 container_name: immich-redis restart: unless-stopped immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:release container_name: immich-machine-learning volumes: - ./machine-learning:/usr/src/app/machine-learning restart: unless-stopped Save and exit the file by pressing Ctrl+X and saying Y to save.\nNow you can download the Docker images:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the containers are running:\ndocker ps You should see immich-server, immich-db, immich-redis, and immich-machine-learning all running.\nInitial Setup and Configuration # Step 1: Access Immich # Open your browser and navigate to the IP of your server. I\u0026rsquo;m using 192.168.99.1 in this example. This is the IP address of your home server.\nhttp://192.168.99.1:2283 Step 2: Create Admin Account # Create Admin Account Set a strong username and password for your admin account Click Next to proceed Step 3: Import Your Photos # You have two options for getting your photos into Immich:\nOption A: Upload from Computer\nClick Upload in the Immich web interface Select photos from your computer Wait for upload to complete Option B: Import from Existing Folder If you have photos on your Linux Mint system:\n# Copy existing photos to Immich library cp -r /path/to/your/photos ~/docker/immich/library/library/ Then refresh Immich to see the new photos.\nPhone Setup (Android/iOS) # Immich becomes truly useful when your phone automatically backs up your photos.\nAndroid Setup # Install Immich App\nDownload from Google Play or F-Droid Connect to Your Server\nOpen the Immich app Tap Add Server Enter your server URL: http://192.168.99.1:2283 Log in with your admin credentials Configure Auto-Backup\nGo to Settings \u0026gt; Auto Backup Toggle Auto Backup to ON Choose backup options: Upload Photos: Yes Upload Videos: Yes Upload to Server: Yes Delete After Upload: Optional (keep on phone after backup) Select which albums/folders to backup Start Backup\nTap Start Auto Backup Your photos will begin uploading automatically iOS Setup # Install Immich App\nDownload from the App Store Connect to Your Server\nOpen the Immich app Tap Add Server Enter your server URL: http://192.168.99.1:2283 Log in with your admin credentials Configure Auto-Backup\nGo to Settings \u0026gt; Auto Backup Toggle Auto Backup to ON Choose backup options Start Backup\nTap Start Auto Backup Usage # Web Interface # Browse: Navigate through your photos by date, album, or person Search: Find photos by location, object, or person Albums: Create albums to organize your memories Share: Share photos with family and friends (with or without expiration) Mobile App # Auto Backup: Your photos backup automatically when connected to Wi-Fi Offline Access: View recently accessed photos without internet Quick Upload: Manually upload photos when needed Backup # Your photos are stored in /home/USER/docker/immich/library/. You can:\nBackup the entire folder:\ntar -czf immich-backup.tar.gz ~/docker/immich/library/ Copy to external drive:\ncp -r ~/docker/immich/library /path/to/external/drive/ Use rsync for incremental backups:\nrsync -av ~/docker/immich/library/ /path/to/backup/ ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/immich/","section":"Building Your Own Server","summary":"","title":"Immich - Self-Hosted Photo Backup","type":"self-hosting"},{"content":"Linux Mint is built to be familiar for Windows users while offering the power and privacy of Linux. It’s stable, well supported, and perfect for converting old PCs into home lab servers. I’ve been using Linux Mint on my main computer for years, ever since gaming on Linux became viable. Mint doesn’t fight you when you want to run server software. No forced updates, no built-in spyware, no subscription services. It boots faster, uses less resources, and gives you complete control over what runs on your system.\nWhy Linux Mint:\nPrivacy First: No telemetry, no tracking, no data collection, and no ads. Data Sovereignty: Your computer, your data. No corporation owns your digital life. User-Friendly: Familiar Windows interface, perfect for beginners and experts alike. Free Software: 100% open-source, community-driven, and free to use. Use Linux for your home server. Once you are comfortable, I highly recomend you switch over to Linux for your daily computing. Microsoft is spying on you.\nResources # Official Linux Mint Website Linux Mint Documentation Linux Mint Community Forum Ubuntu Documentation (compatible with Linux Mint) Installation Prep # Before installing Linux Mint, ensure you have the following ready:\nDownload: Linux Mint ISO 👉 Recommended: Get the Cinnamon Edition, unless your computer is really old, then go Xfce USB Drive: 8GB or larger for the install image Hardware: Minimum 4GB RAM, 500GB Disk Space Time to Complete # Total Time: ~60 minutes 15 min: Download ISO 10 min: Create bootable USB 20 min: Installation process 15 min: Initial setup and configuration Difficulty: Beginner Note: This is a fresh installation. Back up your data before proceeding if you are using an old laptop. Everything will be erased during installation. Download the ISO # Step 1: Download Linux Mint # Visit the Linux Mint Download Page Choose your preferred edition: Cinnamon: Modern, feature-rich desktop (recommended) Xfce: Lightweight, fast, traditional interface Mate: GNOME style interface if you prefer the look and function of macOS Click the download button for your chosen edition Save the .iso file to your computer Step 2: Verify the Download (Optional but Recommended) # After downloading, verify the ISO integrity using the provided checksum:\nsha256sum linux-mint-XX.X-cinnamon-XXXX.iso Compare the output with the checksum on the Linux Mint download page.\nCreate a Bootable USB Drive # Step 1: Install Etcher (or use Rufus on Windows) # On Linux:\nDownload and install Balena Etcher:\n# Download the AppImage wget https://github.com/balena-io/etcher/releases/download/v1.19.27/balena-etcher-electron_1.19.27_amd64.AppImage # Make it executable chmod +x balena-etcher-electron_1.19.27_amd64.AppImage # Run it ./balena-etcher-electron_1.19.27_amd64.AppImage On Windows:\nDownload Rufus and use it to create the bootable USB.\nStep 2: Create the Bootable USB # Insert your USB drive (backup any data first!) Open Etcher Select the Linux Mint ISO file Select your USB drive Click Flash! and wait for completion Install Linux Mint # Step 1: Boot from USB # Insert the bootable USB into your computer Restart your computer Enter the boot menu (usually by pressing F12, F10, Esc, or Del during startup) Select the USB drive as the boot device Step 2: Install Linux Mint # You\u0026rsquo;ll see the Linux Mint boot menu Select \u0026ldquo;Install Linux Mint\u0026rdquo; to install Step 3: Installation Process # Once the installer opens:\nWelcome Screen # Choose your language and click Continue Installation Type # Erase disk and install Linux Mint (recommended for new installations) This will wipe your entire disk Something else (advanced users only) Manual partitioning required Time Zone # Select your time zone and click Continue Keyboard Layout # The installer should detect your keyboard layout If incorrect, click Continue to adjust manually User Information # Your Name: Your full name (e.g., Johnny Silverhand) Computer Name: The name of your computer (e.g., home-server) Username: Your login username (e.g., john) Password: Set a strong password Log in automatically: Check if you want automatic login (uncheck for better security) Require my password to log in: Recommended for security Click Continue Installation in Progress # Wait for the installation to complete (10-15 minutes) You\u0026rsquo;ll see a progress bar Installation Complete # Click Restart Now Remove the USB drive when prompted Press Enter to restart Initial Setup and Configuration # Step 1: First Boot # Linux Mint will boot from your hard drive If you set a password, log in with your credentials If you enabled automatic login, you\u0026rsquo;ll be logged in directly Step 2: System Update # Open Update Manager from the menu (or run sudo apt update \u0026amp;\u0026amp; sudo apt upgrade in terminal) Install all available updates Restart if required Step 3: Install Essential Software # Open the Software Manager and brows the available FREE software. Some favourites include:\nFirefox: Web browser (already included) VLC: Media player LibreOffice: Office suite GIMP: Image editor Inkscape: Vector graphics editor Steam: For gaming. (the games aren\u0026rsquo;t free, of course.) Step 4: Configure Privacy Settings # Open System Settings Go to Privacy Disable: Telemetry Usage Statistics Location Services Step 6: Configure Static IP (Recommended) # For running services like Pi-hole, Jellyfin, or Immich, your server should have a static IP address on your network.\nConfigure Static IP:\nOpen Network Settings Select your network connection Click the gear icon Go to IPv4 Change Automatic (DHCP) to Manual Enter your static IP: 192.168.99.1 Set Gateway to your router\u0026rsquo;s IP (e.g., 192.168.1.1 or check your router) Set DNS servers to 8.8.8.8 Click Save Note: This guide assumes your Linux Mint machine will be at 192.168.99.1. This IP is used throughout all service documentation in this guide.\nUsage # Using Linux is just like using any other operating system, but it feels a lot more like a tool that Windows. I encourage you to look up Linux Mint tutorial videos, then try installing some home services and begin your divorce from Big Tech.\n","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/mint/","section":"Building Your Own Server","summary":"","title":"Linux Mint Installation","type":"self-hosting"},{"content":"Nextcloud Hub is a modern digital workspace that integrates key productivity and collaboration tools in one unified, modular platform. Unlike commercial cloud services that require subscriptions, track your file access, and use your data to train AI models, Nextcloud keeps your files private and under your control. This replaces Google Drive and gives your home a full office suite of programs.\nThis is an advanced installation. If you are looking to leave Gmail for privacy reasons, but aren\u0026rsquo;t ready to tackle this project, I recommend you check out Proton.\nWhy Nextcloud:\nYour Files, Your Control: No corporate servers, no data mining, no subscriptions. Your files belong to you, not a corporation. Privacy First: Your documents, photos, and personal files stay on your own server. No one else can access your documents or build profiles about your habits Sync \u0026amp; Share: Access your files from any device and share with others securely. Your files won\u0026rsquo;t disappear if a service shuts down or changes terms Open Source: Transparent, community-driven, and free to use Resources # Official Nextcloud Website Nextcloud Documentation Nextcloud GitHub Community Forum Installation Prep # Before installing Nextcloud, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Storage: 50GB+ Disk Space (depends on file volume) A NAS is preferred. Network: Accessible from your local network (for web access) Domain (Optional): A domain name for HTTPS access (You need to know what you are doing before you try this.) Time to Complete # Total Time: ~60 minutes 10 min: File system prep 10 min: Docker setup 15 min: Download Nextcloud images 15 min: Initial setup and configuration 10 min: Migration from cloud providers Difficulty: Advanced Note: This is an advanced setup requiring familiarity with Docker and system administration. Understanding Nextcloud # Nextcloud is more than just file storage - it\u0026rsquo;s a complete collaboration platform:\nFiles: Sync and share documents, photos, and videos Calendar: Manage your events and share calendars Contacts: Sync your address book across devices Talk: Video conferencing and chat Tasks: Manage your to-do lists Notes: Take and sync notes Deck: Kanban-style project management Architecture:\n/home/USER/docker/nextcloud/ ├── app/ # Nextcloud application files ├── data/ # Your actual files (mounted volume) ├── config/ # Nextcloud configuration ├── mysql/ # Database files └── redis/ # Redis cache data Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and your data.\nCreate the Nextcloud directory\nmkdir -p ~/docker/nextcloud/ Create the folders where your data will live:\nmkdir -p ~/docker/nextcloud/{app,data,config,mysql,redis} This creates the following structure:\n/home/USER/docker/nextcloud/app/ # Nextcloud application /home/USER/docker/nextcloud/data/ # Your files (will be mounted) /home/USER/docker/nextcloud/config/ # Configuration /home/USER/docker/nextcloud/mysql/ # Database /home/USER/docker/nextcloud/redis/ # Cache Step 2: Docker Setup # Make sure you are in your Nextcloud directory:\ncd ~/docker/nextcloud To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: nextcloud-db: image: postgres:15 container_name: nextcloud-db restart: unless-stopped volumes: - ./mysql:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=your_strong_database_password - POSTGRES_USER=nextcloud - POSTGRES_DB=nextcloud networks: - nextcloud-network nextcloud-redis: image: redis:7 container_name: nextcloud-redis restart: unless-stopped volumes: - ./redis:/data networks: - nextcloud-network nextcloud-app: image: nextcloud:latest container_name: nextcloud-app restart: unless-stopped ports: - \u0026#34;8080:80\u0026#34; volumes: - ./app:/var/www/html - ./data:/var/www/html/data - ./config:/var/www/html/config environment: - POSTGRES_HOST=nextcloud-db - POSTGRES_PASSWORD=your_strong_database_password - POSTGRES_USER=nextcloud - POSTGRES_DB=nextcloud - REDIS_HOST=nextcloud-redis - NEXTCLOUD_ADMIN_USER=admin - NEXTCLOUD_ADMIN_PASSWORD=your_strong_admin_password - TRUSTED_PROXIES=192.168.99.1 - OVERWRITEPROTOCOL=http - OVERWRITEHOST=192.168.99.1:8080 depends_on: - nextcloud-db - nextcloud-redis networks: - nextcloud-network networks: nextcloud-network: driver: bridge Important: Replace your_strong_database_password and your_strong_admin_password with strong, unique passwords.\nSave and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Nextcloud # Now you can download and start Nextcloud:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the containers are running:\ndocker ps You should see nextcloud-app, nextcloud-db, and nextcloud-redis all running.\nStep 5: Complete Web Installation # Open your browser and navigate to: http://192.168.99.1:8080 Create Admin Account\nEnter admin username and password (from docker-compose) Click Finish Setup Database Configuration\nDatabase user: nextcloud Database password: your_strong_database_password Database name: nextcloud Database host: localhost Click Finish Setup Initial Setup and Configuration # This can be a large undertaking depending on your configuration. It can be anything from adding users to setting up external network access. For this guide, we are sticking with a local installation. There are many, many guides out there that can walk you through the more advanced setup.\nUsing Nextcloud Desktop Client # For ongoing sync:\nDownload Client\nNextcloud Desktop Client Connect to Server\nServer URL: http://192.168.99.1:8080 Username and password Select Folders to Sync\nChoose which folders to sync locally Usage # Web Interface # The Nextcloud web interface (http://192.168.99.1:8080) provides:\nFiles: Browse, upload, download, and share files Calendar: Manage events and share calendars Contacts: Manage your address book Talk: Video calls and chat Tasks: Manage to-do lists Notes: Take and sync notes Deck: Project management with Kanban boards Common Tasks # Upload Files:\nClick Files in the sidebar Click Upload or drag and drop files Files are now available on all connected devices Share Files:\nRight-click on a file or folder Click Share Choose sharing options: Link (with or without password) User/Group Set permissions (view, edit, delete) Create Folders:\nClick Files in the sidebar Click New folder Enter folder name Sync with Desktop:\nInstall Nextcloud desktop client Connect to your server Select folders to sync Files sync automatically Mobile App # Nextcloud has official apps for iOS and Android:\nInstall the App\niOS: App Store Android: Google Play Connect to Server\nServer URL: http://192.168.99.1:8080 Username and password Configure Sync\nEnable photo backup for automatic uploads Configure file sync preferences ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/nextcloud/","section":"Building Your Own Server","summary":"","title":"Nextcloud - Self-Hosted Personal Cloud","type":"self-hosting"},{"content":"Paperless-ngx is a community supported open source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper. I use this to store all my important paperwork like tax records, health information, and insurance documents. You can scan in your own files, or upload PDFs. I also use this to keep all my manuals so that I don\u0026rsquo;t have to keep looking for them all the time, and I can quickly reference how I put my coffee maker into self-clean mode.\nWhy Paperless-ngx:\nYour Documents, Your Control: No corporate servers, no data mining, no subscriptions. Your documents belong to you, not a corporation. Privacy First: Your sensitive documents stay on your own server. No one else can access your tax records, contracts, or personal documents. Powerful Search: Full-text search across all your documents to find what you need quickly. Open Source: Transparent, community-driven, and free to use. Resources # Official Paperless-ngx Website Paperless-ngx Documentation Paperless-ngx GitHub Community Forum Installation Prep # Before installing Paperless-ngx, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 2GB RAM, 20GB+ Disk Space (depends on document volume) Time to Complete # Total Time: ~30 minutes 10 min: File system prep 10 min: Docker setup 5 min: Download Paperless-ngx image 5 min: Initial setup and configuration Difficulty: Beginner Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and Paperless-ngx data.\nCreate the Paperless-ngx directory\nmkdir -p ~/docker/paperless-ngx/ Create the folders where your data will live:\nmkdir -p ~/docker/paperless-ngx/{data,media,export,import} This creates the following structure:\n/home/USER/docker/paperless-ngx/data/ # Paperless-ngx database /home/USER/docker/paperless-ngx/media/ # Your documents /home/USER/docker/paperless-ngx/export/ # Exported documents /home/USER/docker/paperless-ngx/import/ # Documents to import Step 2: Docker Setup # Make sure you are in your Paperless-ngx directory:\ncd ~/docker/paperless-ngx To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: paperless-ngx: image: ghcr.io/paperless-ngx/paperless-ngx:latest container_name: paperless-ngx restart: unless-stopped ports: - \u0026#34;8000:8000\u0026#34; volumes: - ./data:/usr/src/paperless/data - ./media:/usr/src/paperless/media - ./export:/usr/src/paperless/export - ./import:/usr/src/paperless/import environment: - PAPERLESS_REDIS=redis://paperless-redis:6379 - PAPERLESS_DBHOST=paperless-db - PAPERLESS_DBUSER=paperless - PAPERLESS_DBPASS=paperless - PAPERLESS_DBNAME=paperless - PAPERLESS_SECRET_KEY=your_secret_key_here - PAPERLESS_TIME_ZONE=America/Edmonton # Change to your timezone - PAPERLESS_URL=http://192.168.99.1:8000 depends_on: - paperless-db - paperless-redis paperless-db: image: postgres:15 container_name: paperless-db restart: unless-stopped volumes: - ./pgdata:/var/lib/postgresql/data environment: - POSTGRES_USER=paperless - POSTGRES_PASSWORD=paperless - POSTGRES_DB=paperless paperless-redis: image: redis:7 container_name: paperless-redis restart: unless-stopped Important: Replace your_secret_key_here with a strong, unique secret key.\nSave and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Paperless-ngx # Now you can download and start Paperless-ngx:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the containers are running:\ndocker ps You should see paperless-ngx, paperless-db, and paperless-redis all running.\nInitial Setup and Configuration # Step 1: Access Paperless-ngx # Open your browser and navigate to:\nhttp://192.168.99.1:8000 This is the IP address of your Linux Mint machine where Paperless-ngx is installed.\nStep 2: Create Your Account # Create Account\nEnter a username for your account Enter a strong password Click Create Account Login\nUse your credentials to log in Step 3: Configure Settings # Go to Settings \u0026gt; Documents Configure Document Storage: Document Storage Path: /usr/src/paperless/media/documents Archive Storage Path: /usr/src/paperless/media/archive Configure Document Types: Add custom document types as needed Step 4: Import Documents # You can import documents in several ways:\nOption A: Upload via Web Interface\nClick Documents in the sidebar Click Upload Select your documents Click Upload Option B: Copy to Import Folder\nCopy documents to the import folder: cp /path/to/your/documents ~/docker/paperless-ngx/import/ Paperless-ngx will automatically import them Usage # Web Interface # The Paperless-ngx web interface (http://192.168.99.1:8000) provides:\nDocuments: Browse, search, and manage your documents Tags: Organize documents with tags Correspondents: Categorize documents by sender Types: Classify documents by type Search: Full-text search across all documents Common Tasks # Upload a Document:\nClick Documents in the sidebar Click Upload Select your document Add tags, correspondent, and type (optional) Click Upload Search Documents:\nUse the search bar at the top Search by text, tags, correspondent, or type Use advanced search operators (e.g., tag:tax, correspondent:bank) View Document Details:\nClick on a document View metadata, tags, and correspondent Download or delete the document Organize Documents:\nSelect documents Click Actions \u0026gt; Edit Add tags, correspondent, or type Click Save ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/paperless-ngx/","section":"Building Your Own Server","summary":"","title":"Paperless-ngx - Self-Hosted Document Management","type":"self-hosting"},{"content":"Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole, blocking ads, trackers, and malicious websites before they reach your devices. By running Pi-hole on your own server, you protect all devices on your network without needing to install apps on each one.\nWhy Pi-hole:\nNetwork-Wide Protection: Blocks ads on all devices - phones, tablets, smart TVs, gaming consoles. Your network, your rules. No corporation tracks your browsing habits. Privacy First: No data is sent to third parties; everything stays on your network. Stop advertisers from building profiles about your online activity Fast Browsing: Blocks ads and trackers, making web pages load faster Parental Controls: Block inappropriate content for your family Resources # Official Pi-hole Website Pi-hole Documentation Pi-hole GitHub Installation Prep # Before installing Pi-hole, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Network: Your router must support changing the DNS server (most modern routers do) Hardware: Minimum 1GB RAM, 1GB Disk Space Time to Complete # Total Time: ~20 minutes 5 min: File system prep 5 min: Docker setup 5 min: Download Pi-hole image 5 min: Router configuration Difficulty: Beginner Note: Pi-hole will become your network\u0026rsquo;s DNS server. Ensure you can access your router\u0026rsquo;s admin panel. Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and Pi-hole configuration.\nCreate the Pi-hole directory\nmkdir -p ~/docker/pihole/ Create the folders where your data will live:\nmkdir -p ~/docker/pihole/{etc,libdnsmasq} This creates the following structure:\n/home/USER/docker/pihole/etc/ # Pi-hole configuration /home/USER/docker/pihole/libdnsmasq/ # DNSMasq configuration Step 2: Docker Setup # Make sure you are in your Pi-hole directory:\ncd ~/docker/pihole To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: pihole: container_name: pihole image: pihole/pihole:latest ports: - \u0026#34;53:53/tcp\u0026#34; - \u0026#34;53:53/udp\u0026#34; - \u0026#34;80:80/tcp\u0026#34; environment: - TZ=America/Edmonton - WEBPASSWORD=your_secure_password volumes: - ./etc:/etc/pihole - ./libdnsmasq:/etc/dnsmasq.d restart: unless-stopped Important: Replace your_secure_password with a strong password for the Pi-hole web interface.\nSave and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Pi-hole # Now you can download and start Pi-hole:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the container is running:\ndocker ps You should see pihole running.\nInitial Setup and Configuration # Step 1: Access Pi-hole Web Interface # Open your browser and navigate to:\nhttp://192.168.99.1/admin This is the IP address of your Linux Mint machine where Pi-hole is installed.\nLog in with the password you set in the docker-compose file.\nStep 2: Change Router DNS Settings # To make Pi-hole your network\u0026rsquo;s DNS server, you need to change your router\u0026rsquo;s DNS settings:\nAccess your router\u0026rsquo;s admin panel (usually http://192.168.1.1 or check your router\u0026rsquo;s documentation) Log in with your router credentials Find the DHCP/DNS Settings section Change Primary DNS to 192.168.99.1 (your Pi-hole server) Change Secondary DNS to a public DNS like 8.8.8.8 (Google) or 1.1.1.1 (Cloudflare) Save the settings Alternative: Instead of changing router settings, you can configure individual devices to use Pi-hole as their DNS server.\nStep 3: Test Pi-hole # Open a web browser on any device connected to your network Visit a site with ads (e.g., youtube.com) You should see fewer ads than before Check the Pi-hole dashboard at http://192.168.99.1/admin to see blocked queries Usage # Web Interface # The Pi-hole web interface (http://192.168.99.1/admin) provides:\nDashboard: Overview of blocked queries, top domains, recent activity Query Log: View all DNS queries in real-time Block Lists: Manage which domains are blocked Tools: Flush DNS cache, test DNS resolution Settings: Configure Pi-hole behavior Common Tasks # View Blocked Queries:\nCheck the dashboard for real-time statistics Use the Query Log to see detailed records Add/Remove Domains:\nGo to Block Lists to manage lists Use White List to allow previously blocked domains Use Black List to block additional domains Flush DNS Cache:\nGo to Tools \u0026gt; Flush DNS Cache Maintenance # Updates # Update Pi-hole and Docker images:\ncd ~/docker/pihole sudo docker-compose pull sudo docker-compose up -d Block List Management # Regularly update your block lists:\nGo to Settings \u0026gt; Blocklists Click Update Gravity to refresh all lists Troubleshooting # Pi-hole Not Blocking Ads # Check that your devices are using Pi-hole as DNS Flush DNS cache on your devices Check the Query Log to see if queries are being made to Pi-hole Web Interface Not Accessible # Verify Pi-hole container is running: docker ps Check if port 80 is already in use: sudo netstat -tulpn | grep :80 Restart Pi-hole: sudo docker-compose restart DNS Resolution Issues # Check your router\u0026rsquo;s DNS settings Verify Pi-hole is running: sudo docker ps Test DNS resolution: nslookup google.com 192.168.99.1 ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/pihole/","section":"Building Your Own Server","summary":"","title":"Pi-hole - Network-Wide Ad Blocker","type":"self-hosting"},{"content":"Vaultwarden (formerly Bitwarden_RS) is a self-hosted password manager that gives you complete control over your sensitive credentials. Unlike cloud-based password managers that require subscriptions and store your data on corporate servers, Vaultwarden keeps your passwords private and under your control.\nWhy Vaultwarden:\nYour Secrets, Your Control: Your passwords belong to you, not a corporation. Privacy First: Your passwords, credit cards, and secure notes stay on your own server. You won\u0026rsquo;t be caught up in massive password breaches Cross-Platform: Sync across all your devices with official apps Open Source: Transparent, community-driven, and free to use Resources # Official Vaultwarden Website Vaultwarden Documentation Vaultwarden GitHub Community Forum Installation Prep # Before installing Vaultwarden, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 1GB RAM, 1GB Disk Space Network: Accessible from your local network (for web access) Domain (Optional): A domain name for HTTPS access (For advanced users) Time to Complete # Total Time: ~20 minutes 5 min: File system prep 5 min: Docker setup 5 min: Download Vaultwarden image 5 min: Initial setup and configuration Difficulty: Beginner Note: This is an initial setup. Future updates will take only a few minutes. Installation # Step 1: File System Prep # We need to create the directories to keep the docker-compose file and Vaultwarden data.\nCreate the Vaultwarden directory\nmkdir -p ~/docker/vaultwarden/ Create the folders where your data will live:\nmkdir -p ~/docker/vaultwarden/data This creates the following structure:\n/home/USER/docker/vaultwarden/data/ # Vaultwarden database and attachments Step 2: Docker Setup # Make sure you are in your Vaultwarden directory:\ncd ~/docker/vaultwarden To double check you are in the right place, type pwd to see your current directory.\nCreate the docker-compose.yaml file:\nsudo touch docker-compose.yaml Use the nano program to edit the file:\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file:\nversion: \u0026#34;3.8\u0026#34; services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: unless-stopped ports: - \u0026#34;8081:80\u0026#34; volumes: - ./data:/data environment: - ADMIN_TOKEN=your_admin_token_here - DOMAIN=http://192.168.99.1:8081 - WEBSOCKET_ENABLED=true - WEBSOCKET_ADDRESS=0.0.0.0 - WEBSOCKET_PORT=3012 Important: Replace your_admin_token_here with a strong, unique token for admin access.\nSave and exit the file by pressing Ctrl+X and saying Y to save.\nStep 4: Start Vaultwarden # Now you can download and start Vaultwarden:\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, verify the containers are running:\ndocker ps You should see vaultwarden running.\nInitial Setup and Configuration # Step 1: Access Vaultwarden # Open your browser and navigate to:\nhttp://192.168.99.1:8081 Step 2: Create Your Account # Create Account\nEnter an email address (can be any email, it\u0026rsquo;s not actually used) Enter a strong master password Click Create Account Verify Email (Optional)\nIf email is enabled, check your inbox Otherwise, click Skip to continue Step 3: Admin Panel Setup # Access Admin Panel\nNavigate to http://192.168.99.1:8081/admin Enter the ADMIN_TOKEN you set in docker-compose Configure Settings\nEnable email if desired Configure organization settings Set up SMTP for notifications (optional) Usage # This will only work while you are in your home network. If you want to use this on a laptop that will be using public WIFI networks, you will need to expose your home server to the internet. You should know what you are doing before you try that.\nWeb Interface # The Vaultwarden web interface (http://192.168.99.1:8081) provides:\nPasswords: Store and manage login credentials Cards: Store credit card information Identities: Store personal information Notes: Store secure notes Folders: Organize your items Common Tasks # Add a Password:\nClick Add Item in the sidebar Select Login Enter website URL, username, and password Click Save Generate a Password:\nClick the password field Click the Generate button Choose password length and complexity Click Copy to copy to clipboard Share a Password:\nClick the Share button on an item Choose sharing options Set expiration date (optional) Send invitation Mobile App # Vaultwarden works with the official Bitwarden apps:\nInstall the App\niOS: App Store Android: Google Play Connect to Your Server\nOpen the app Tap Add Account Enter your server URL: http://192.168.99.1:8081 Log in with your credentials Sync Your Data\nYour data will automatically sync when you open the app Make sure you\u0026rsquo;re on the same network or have port forwarding configured ","date":"6 May 2026","externalUrl":null,"permalink":"/self-hosting/vaultwarden/","section":"Building Your Own Server","summary":"","title":"Vaultwarden - Self-Hosted Password Manager","type":"self-hosting"},{"content":"Jellyfin is a volunteer-built media open source solution that puts you in control of your media. Stream to any device from your own server, with no strings attached. You and your family can access your personal media collection, from movies and TV shows to music and photos on any device, all while keeping your data local and private\nWhy Jellyfin:\nAdd Free Your media, your rules: No ads or commercials. Media Ownership: If you have the DVD and the digital copy on your server, they can\u0026rsquo;t remove it from your library. You own it. Privacy Focused: Jellyfin has no tracking, phone-home, or central servers collecting your data. Note: Jellyfin is server software and does not come with any media. You will have to get the media yourself.\nResources # Official Jellyfin Documentation Jellyfin Quick Start Guide Advanced Manual Installation Installation Prep # Before installing Jellyfin, ensure you have the following ready:\nOperating System: Linux Mint 👉 How to Install Linux Mint Container Runtime: Docker \u0026amp; Docker Compose 👉 Installing Docker on Linux Hardware: Minimum 2GB RAM, 10GB Disk Space (4K/HDR transcoding requires more resources) Media can take up a lot of disk space. I recommend storing your media files on a NAS. Dependencies: FFmpeg (for media transcoding) 👉 FFmpeg Installation Guide Viewing Client: You will need a client to access your server 👉 Official Clients Time to Complete # Total Time: ~45 minutes 5 min: File system prep 15 min: Docker setup 5 min: Download Jellyfin image 20 min: Initial setup and configuration Difficulty: Intermediate. Installation # Here is the guide to install the Jellyfin docker image. Once complete you will be able to access Jellyfin and all your media from any device on your network.\nStep 1: File System Prep # We need to create the directories to keep the docker-compose file and your media.\nCreate the Jellyfin directory\nmkdir -p ~/docker/jellyfin/ Create the folders where your data will live. You can create them in the /home/USER/docker/jellyfin directory, or point the docker-compose file to a NAS shared directory where your media lives. For this guide, we will make new directories.\nmkdir -p ~/docker/jellyfin/{config,media/{movies,shows,music,photos}} This creates the following directories. Once Jellyfin is installed, we will map these directories to libraries inside the program. That way, Jellyfin knows what media to put where.\nhome/USER/docker/jellyfin/config home/USER/docker/jellyfin/media home/USER/docker/jellyfin/media/movies home/USER/docker/jellyfin/media/shows home/USER/docker/jellyfin/media/music home/USER/docker/jellyfin/media/photos You can make your own library categories as well. For example:\nhome/USER/docker/jellyfin/media/kidshows home/USER/docker/jellyfin/media/anime Step 2: Docker Setup # Make sure you are in your Jellyfin directory. Replace USER with your user name.\ncd /home/USER/docker/jellyfin To double check you are in the right place, you can type pwd to see your current directory\nCreate the docker-compose.yaml file.\nsudo touch docker-compose.yaml Use the nano program to edit the file.\nsudo nano docker-compose.yaml Step 3: docker-compose file # Copy the following text into the docker-compose file. Make sure to update the volume maps to match your folder structure.\nservices: jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=1000 - PGID=1000 - TZ=America/Edmonton # your timezone volumes: - /home/USER/docker/jellyfin/config:/config - /home/USER/docker/jellyfin/media/movies:/media/movies - /home/USER/docker/jellyfin/media/shows:/media/shows - /home/USER/docker/jellyfin/media/music:/media/music ports: - \u0026#34;8096:8096\u0026#34; devices: - /dev/dri:/dev/dri # For hardware acceleration restart: unless-stopped networks: - media-net healthcheck: test: [\u0026#34;CMD\u0026#34;, \u0026#34;curl\u0026#34;, \u0026#34;-f\u0026#34;, \u0026#34;http://localhost:8096\u0026#34;] interval: 30s timeout: 10s retries: 3 networks: media-net: driver: bridge Save and exit the file by pressing control-x and saying Y to save.\nNow you can download the docker image to your system. Tell the docker program to read the docker-compose file in the jellyfin directory and pull the image to your machine and start the container\nsudo docker-compose pull sudo docker-compose up -d Once the pull is complete, you can verify that the container is there and running my typing\ndocker ps That\u0026rsquo;s it! Jellyfin is now on your computer and it\u0026rsquo;s time to set it up!\nInitial setup and configuration # Once the container is running, open your browser and type in:\nhttp://192.168.99.1:8096 This is the IP address of your server where Jellyfin is installed.\nCreate Admin Account Set a strong username and password for your admin account. Click Next to proceed. Add Media Libraries Click Add Library and select the type (e.g., Movies, TV Shows, Music). Point the library to your media folders inside the container (e.g., /media/movies). Choose the appropriate metadata provider (e.g., TheMovieDB for movies, TVmaze for TV shows). Click OK to save. Configure Metadata Providers Go to Dashboard \u0026gt; Metadata \u0026gt; Metadata Downloaders. Enable and configure providers like TheMovieDB, TVmaze, or Fanart.tv for high-quality metadata and artwork. Save your settings. Enable Hardware Acceleration (If Available) Go to Dashboard \u0026gt; Playback. Under Hardware Acceleration, select your GPU (e.g., Intel Quick Sync, NVIDIA NVENC, or AMD AMF). Save the settings. Adjust Playback Settings Go to Dashboard \u0026gt; Playback. Set your preferred quality and transcoding options. Enable Hardware Acceleration for smoother streaming. Set Up User Profiles (Optional) Go to Dashboard \u0026gt; Users. Add users and assign permissions. Set up parental controls if needed. Streaming # Use the web interface or Jellyfin apps for Android, iOS, smart TVs, and more.\n","date":"28 April 2026","externalUrl":null,"permalink":"/self-hosting/jellyfin/","section":"Building Your Own Server","summary":"","title":"Jellyfin","type":"self-hosting"},{"content":"","date":"20 November 2025","externalUrl":null,"permalink":"/categories/blog/","section":"Categories","summary":"","title":"Blog","type":"categories"},{"content":"","date":"20 November 2025","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"The First Industrial Revolution was a time period of massive change for the entire world. It started in the late 1700s in England, but quickly spread to every corner of civilization as human appetite grew. During that time there was a group of, what we would now refer to as blue-collar trade workers—specifically textile workers. These workers saw the writing on the wall for their profession, and began smashing the factory machines that were replacing skilled labor. They called themselves Luddites, and their name lives on to this day.\nIf you look up the definition of Luddite, you will get some variation of \u0026ldquo;an uneducated person who is opposed to technology.\u0026rdquo; This definition comes from a murder trial, where the Crown was swaying public opinion against them.\nThe Luddites embraced technology and were extremely educated. What they opposed was oppression, and factories cannot exist without it\nIf you want to learn more about the Luddites, check out this 99% invisible podcast.\nFactory Life # In the early 1800s, factories were popping up all over England. These monolithic buildings, powered by coal, housed automatic machines that could create cloth and garments faster and cheaper than manual machines. But the factories still needed people to operate the machines, and this was dangerous work. Not surprisingly, people who had been working from their homes, for themselves, for generations were not too keen on factory work that paid them less and usurped their freedom. To solve this problem, factory owners would strike deals with orphanages and buy children to work in their factories. The exact impact of this isn\u0026rsquo;t known, since the factories did not keep track of how many children died in their factories—they simply bought more.\nThe factories were able to produce massive quantities of cloth. Although it was at a lower quality than the craftsmen could make, cloth was in extremely high demand. The factories could outsell based on volume, and the demand for quality cloth diminished.\nFight The Machine # As their work dried up, craftsmen started to take factory work. But there were not as many positions available, and the pay was less. Entire communities found themselves out of work, and starvation was widespread. The people wrote letters to Parliament, tried to form unions, and asked to be able to purchase the same machines the factory owners were buying so they could start their own co-op. All their diplomatic channels failed. The factory owners swayed politicians and the Crown into believing these workers were anti-progress and too dim to understand what capitalism and free markets were all about.\nIn Nottingham, a group of craftsmen got together and decided to do something about their situation. The march of progress was literally killing them as the ruling class gained ever more power.\nThey did the only thing they could - They went to war against the machine.\nIt\u0026rsquo;s Hammer Time # The Luddites worked in small cells, coordinating with each other through code and secret meetings. They would gather in the fields at night to train, discuss, and plan what was to be done. They would choose a factory, break in at the dead of night, and carrying with them heavy hammers, they smashed every automatic machine they could find.\nThey left manual machines alone. They only targeted that which was destroying them.\nFor months, the attacks intensified and spread. Cities all over the north of England were no-go zones for factory owners looking to start a business. These powerful men told Parliament that this was an uprising, that these dirty peasants were getting ideas of grandeur from the French Revolution, and that if the government didn\u0026rsquo;t do something drastic, the English monarchy was at risk of being overthrown.\nIn response, Prime Minister Spencer Perceval mobilized the military and occupied cities all over England. But the attacks continued. Factory machines were being smashed, and no one would come forward with information.\nThe Luddites had the full support of the people.\nDeath To Those Who Stand In the Way # The factory owners pushed the government to do more. They passed a law where anyone who broke a machine could be killed on sight. So the factories became fortresses, and when the Luddites came in the night to fight against the machines that were starving them to death, they were gunned down by mercenaries.\nThis was the turning point in the Luddite struggle.\nThey had very little recourse, and any opposition to economic progress, no matter the human cost, was met with capital punishment. The Crown captured and hung Luddites by the dozen, and ran constant propaganda against them that still holds today.\nLessons For Today # The factory wasn\u0026rsquo;t inevitable.\nIt was forced on the people at gunpoint. In an alternative reality, these power looms would have been purchased by the craftsmen themselves. They would have been able to increase production while maintaining their freedoms and their lives. The wealth and prosperity could have been shared.\nWe can see the parallels today. Amazon is buying out smaller online retailers. Walmart is pricing out small brick-and-mortar stores. AI could be run at home on consumer hardware, but it\u0026rsquo;s being concentrated in AI data centers.\nThe Luddites were right to fight back and we need them more than ever. As Brian Merchant writes in Blood in the Machine, the Luddites were not technophobes, but skilled workers who saw technology being used to enrich the few at the expense of the many.\nTheir resistance was not against progress, but against exploitation.\nA fight that we still carry on to this day.\n","date":"20 November 2025","externalUrl":null,"permalink":"/blog/2025-11-20-the-luddites-were-right/","section":"Thoughts All Over The Place","summary":"","title":"The Luddites Were Right","type":"blog"},{"content":"Let\u0026rsquo;s bring the blog back. Not a Substack, Facebook wall, or news letter, but the good old fashion blog. Cut out all the noise and marketing, and just read what people have to say. Because we all have things that we want to say, and sometimes we say them out loud for people to hear.\nI\u0026rsquo;ve collected a handful of my thoughts over the years and posted them here.\n","date":"20 November 2025","externalUrl":null,"permalink":"/blog/","section":"Thoughts All Over The Place","summary":"","title":"Thoughts All Over The Place","type":"blog"},{"content":"Fellow Engineers,\nI am writing to you to remind you of your oath: to hold paramount the health, safety, and welfare of the public. Your signature and stamp carry with them a responsibility - not to the government, not to your employer, but to the people whose lives depend on the integrity of your work.\nDanielle Smith has given the Minister of Advanced Education a mandate to lower the quality of our standards and invite political meddling in our technical work. To accept this is a violation of our oath and a betrayal of public trust.\nThe Professional Governance Act is how they will do it it.\nThey Have Earned Our Distrust # The Act claims to serve the \u0026ldquo;public interest\u0026rdquo;. But let\u0026rsquo;s be clear about what that phrase means to this government. When Premier Danielle Smith says she turns to CEOs for guidance on Alberta\u0026rsquo;s energy future, she is endorsing a model where technical judgment is secondary to corporate profits.\nLook at their track record:\nThey abruptly halted renewable energy development with a half-baked directive that led to the cancellation of billions of dollars of development. Not because of technical concerns, but for political reasons. The UCP pressured AESO to go against their technical judgment and support the pause. This resulted in lost jobs and less grid capacity.\nThey spread misinformation about COVID-19, undermining public health expertise, and silenced medical experts. Now Alberta is the measles capital of North America. This disease was nearly eradicated in Canada and has returned under their watch.\nMost significantly, they invoked the notwithstanding clause to strip Charter rights from teachers doing their jobs. When a law stands in their way, they remove it. They claim to support professionals while tearing them down. They are lying.\nThis is the government that now wants control over our professional standards.\nThe Professional Governance Act gives them that control. Section 202 allows the Minister to order APEGA to rewrite our Code of Conduct or Practice Standards, based on the Minister\u0026rsquo;s definition of \u0026ldquo;the public\u0026rsquo;s best interest\u0026rdquo;. If we refuse, Section 197 allows them to remove our elected Council, install an administrator, and write the rules themselves.\nEngineers all over the province will be second guessing their work, asking themselves if their recommendations will spark the ire of a government official.\nSo who will stop this?\nIt is our Duty to Protect the Public # APEGA\u0026rsquo;s mission is to \u0026ldquo;safeguards the public welfare of Albertans by proactively regulating the practices of engineering and geoscience\u0026rdquo;. In the past they\u0026rsquo;ve avoided political issues because advocating for engineers as workers falls outside of their mandate. But this is different.\nOpposing the Professional Governance Act is protecting the public.\nA government with a documented pattern of overriding expert judgment now wants power to rewrite our safety standards. This is a direct threat to public welfare - exactly what APEGA exists to prevent.\nBut APEGA needs to know their members support this position. They need to hear that we understand: This fight is not political, it is professional.\nIn his book On Tyranny, Timothy Snyder writes:\nWhen political leaders set a negative example, professional commitments to just practice become important. It is hard to subvert a rule-of-law state without lawyers, or to hold show trials without judges. Authoritarians need obedient civil servants, and concentration camp directors seek businessmen interested in cheap labor.\nOur Code of Conduct and ethics are explicit: our duty to protect the public is paramount, even when it conflicts with our employer or client. Just as a soldier must reject an unlawful order, or a worker must reject a dangerous working environment, we must reject this legislation.\nAPEGA can act on this, but only if we demand it. They need to hear that we understand: This fight is not political, it is professional.\nIn his book On Tyranny, Timothy Snyder writes:\nWhen political leaders set a negative example, professional commitments to just practice become important. It is hard to subvert a rule-of-law state without lawyers, or to hold show trials without judges. Authoritarians need obedient civil servants, and concentration camp directors seek businessmen interested in cheap labor.\nOur Code of Conduct and ethics are explicit: our duty to protect the public is paramount, even when it conflicts with our employer or client. Just as a soldier must reject an unlawful order, or a worker must reject a dangerous working environment, we must reject this legislation.\nAPEGA can act on this, but only if we demand it.\nThis is within their mandate.\nAnd it is ours.\nTheir Intent Is Clear # This requires urgent action: the government has already announced their first moves. In their fall session announcement, they stated \u0026ldquo;there will be legislation proposed to protect regulated professionals from undue discipline that violates their rights and freedoms for matters outside their work.\u0026rdquo;\nTranslation: lower the bar for professional discipline so engineers who spread misinformation are freed from technical peer review.\nThe Minister\u0026rsquo;s mandate letter explicitly states the goal to \u0026ldquo;\u0026hellip; continue the acceleration of expediated and streamlined credentialling for workers from national and international jurisdictions with similar standards\u0026rdquo;.\nTranslation: lower the standards for the PEng designation by fast-tracking foreign credentials without ensuring competency in Canadian codes, climate conditions, or ethical obligations.\nThese changes degrade our profession and harm the public. Lower discipline standards mean engineers face less accountability. Weakened credentials means less competent practitioners. Both violate our current Code of Conduct - they are detrimental to the health and safety of the public.\nAnd it\u0026rsquo;s just the start.\nEngineering is self-regulated for a reason. We are the ones who approve designs, take risks, and sign our name to them. This is how we make our living and feed our families. We are being asked to accept a government veto on the rules that govern our work, while holding all the liability.\nThis isn\u0026rsquo;t theoretical. Alberta has built something rare: a safety culture that actually works.\nRegulations are Written in Blood # During the 2016 Fort McMurray wildfires, the city evacuated calmly while the inferno raged all around, at arms length in some places. This was only possible because of the high percentage of the population who have received oil field safety training. Thousands of Albertans go to work every day and come home safe because of safety oriented engineering.\nThat foundation is now at risk and it\u0026rsquo;s happening with shocking speed.\nThe bill was fast tracked through the legislature, moving from first reading to Royal Assent in just two months. APEGA has publicly endorsed the Act, the day after the first reading. Privately, there are many who are gravely concerned about the language in the Act.\nA senior engineer familiar with APEGA\u0026rsquo;s internal discussion explained to me the bind we are in:\n\u0026ldquo;The Act is wholly within the government\u0026rsquo;s power to enact, which it has. Once enacted as it has been, APEGA must enact bylaws that comply with the Act and its bylaws. Non-compliance would mean the government would remove APEGA\u0026rsquo;s power to regulate engineers in the province.\u0026rdquo;\nBut that engineer is wrong about one thing: we do not have to accept this silently.\nSo let\u0026rsquo;s be clear about what we are choosing.\nIt Is Our Duty To Refuse This Act # If we stay silent while associations realign their by-laws to comply, here is what we accept:\nProfessional ethics become suggestions, subject to political override The public loses the independent professional judgment that protects them Alberta becomes a jurisdiction where professional certification is politically controlled When apologists push back saying this is an overreaction, we need to press that this government cannot be trusted. They have demonstrated that they will go as far as stripping Charter rights to get what they want. Letting them skip due diligence to fast-track projects is not in the best interest of the public, no matter what lies they spin.\nThe engineering Code of Ethics states that our duty to protect the public is paramount. It requires us to refuse work that creates undue risk to the public when there are clear alternatives.\nNot only is fighting this bill within our rights to practice, it is our lawful duty.\n","date":"31 October 2025","externalUrl":null,"permalink":"/blog/2025-10-31-open-letter-to-apega-members/","section":"Thoughts All Over The Place","summary":"","title":"An Open Letter to APEGA members","type":"blog"},{"content":"Our ability to act independently, govern our selves, and make decisions based on technical information is being removed by the UCP Government. They are consolidating 22 professional associations under one law with Bill 40. This will provide them the authority to override decisions made by professional associations. If a professional decides to fight against a decision that the UCP is making, the UCP will have the lawful ability to remove them from the association.\nIn short, the UCP will have the authority to decide who can become an engineer, accountant, or supply chain manager. They will use this power to remove any objection of their plans from white collar professionals. This is a consolidation of power consistent with Tyranny, and it\u0026rsquo;s Lesson 5 in the book On Tyranny\nWhen political leaders set a negative example, professional commitments to just practice become important. It is hard to subvert a rule-of-law state without lawyers, or to hold show trials without judges. Authoritarians need obedient civil servants, and concentration camp directors seek businessmen interested in cheap labor.\nI am a vocal critic of many governmental decisions, so this bill affects me personally. It will give the government the legal power to remove my status as an engineer.\nThe passing of Bill 40 would fundamentally alter the relationship between the engineering profession and the public it serves. Under current law, APEGA maintains the authority to regulate its members based on technical merit and ethical standards. But Bill 40 grants the Minister the power to remove the governing body of a professional regulatory organization \u0026ldquo;in whole or in part\u0026rdquo; . This undermines the profession\u0026rsquo;s ability to enforce its own code of conduct, including the duty to \u0026ldquo;hold paramount the health, safety, and welfare of the public\u0026rdquo;.\nBill 40 is a betrayal of our commitment to the Iron Ring. If we don\u0026rsquo;t stop this bill, we lose our ability to freely practice our profession.\nHere\u0026rsquo;s what Bill 40 says # I urge you to read the sections of the bill for yourself. Take the time to really understand what\u0026rsquo;s at stake.\nAs a reminder, here is the APEGA Code of Ethics.\nProfessional engineers and geoscientists shall recognize that professional ethics is founded upon integrity, competence, dignity, and devotion to service. This concept shall guide their conduct at all times.\nProfessional engineers and geoscientists shall, in their areas of practice, hold paramount the health, safety and welfare of the public and have regard for the environment. Professional engineers and geoscientists shall undertake only work that they are competent to perform by virtue of their training and experience. Professional engineers and geoscientists shall conduct themselves with integrity, honesty, fairness, and objectivity in their professional activities. Professional engineers and geoscientists shall comply with applicable statutes, regulations, and bylaws in their professional practices. Professional engineers and geoscientists shall uphold and enhance the honour, dignity, and reputation of their professions and, thus, the ability of the professions to serve the public interest. Section 201 # If the Minister considers it necessary or advisable to do so, the Minister may, by order, (a) require a professional regulatory organization\u0026rsquo;s governing body to amend a bylaw, a code of ethics and conduct or practice standards and guidelines within a specified time, or (b) disallow, in whole or in part, a bylaw, a code of ethics and conduct or practice standards and guidelines to conform with this Act or the regulations.\nSection 201 allows a politically motivated actor within the UCP government to force the amendment of a specific standard or even our Code of Ethics. It would be up to the Minister in charge how to modify our Code of Ethics to suit their own agenda, and their own definition of \u0026ldquo;public interest\u0026rdquo;.\nIn Section 1(tt) \u0026ldquo;public member\u0026rdquo; is defined as \u0026ldquo;an individual appointed by the Minister\u0026rdquo;.\nIn Section 2(e) the act says \u0026ldquo;The purpose of this Act is to protect the public interest by ensuring that each professional regulatory organization administers its affairs and regulates its registrants in a manner that protects the public interest\u0026rdquo;.\nAnd it\u0026rsquo;s the Minster that will decide what \u0026ldquo;public interest\u0026rdquo; means.\nContrast our current Code of Conduct that says\nProfessional engineers and geoscientists shall, in their areas of practice, hold paramount the health, safety and welfare of the public and have regard for the environment. When Bill 40 becomes law, the UCP government will form a public panel of hand picked members. This panel will conclude that, for example, Alberta needs to open a new coal mine because it\u0026rsquo;s in the \u0026ldquo;best economic interest of the public\u0026rdquo;.\nAnd it gets worse.\nIf any engineer puts their hand up with an objection to any future project, there is Section 197.\nSection 197(2)(f) # On the recommendation of the Minister, the Lieutenant Governor in Council may, by order, with respect to a professional regulatory organization, make any other direction required to facilitate the exercise of the powers, duties or functions of the professional regulatory organization, including removing the authority of the governing body, any committee, tribunal or other body, or any official of the professional regulatory organization under this Act, in whole or in part, for any period deemed necessary by the Lieutenant Governor in Council.\u0026quot; Bill 40, 290\nSection 197(2)(f) allows the Ministers to remove the Council from their positions and take over the association if it\u0026rsquo;s in the \u0026ldquo;best interest of the public\u0026rdquo;\nUnder Bill 40, the engineering profession is no longer able to refuse work that the government dictates.\nBill 40 kills the independent nature of our work # The reason professional associations exist is to maintain a specialized body of knowledge and make decisions based on that knowledge within their scope of work.\nBill 40 dismantles the foundation of professional independence. It does not merely challenge APEGA\u0026rsquo;s authority, as many claim, it grants the Minister the power to \u0026ldquo;make any other direction required to facilitate the exercise of the powers, duties or functions\u0026rdquo; of a regulatory body, including the removal of its governing body . This means that the individuals responsible for upholding technical standards and ethical conduct can be replaced not for misconduct, but for disagreement with government policy.\nThe same principle applies to pilots, doctors, lawyers, and engineers: each profession exists to protect the public through expertise, not political alignment. We are seeing an effort to re-align work and professional conduct to fit the UCPs ideology.\nLook what\u0026rsquo;s happening in the US # The erosion of professional independence is not theoretical. It is already underway in other jurisdictions around the world. In the United States, the appointment of political loyalists to key regulatory agencies has led to the dismissal of technical experts and the rollback of safety standards.\nFor example, the removal of climate scientists from federal advisory panels and the weakening of environmental impact assessments under the previous administration demonstrate how political control over technical bodies undermines public safety. Alberta is not immune to this trend.\nBill 40 institutionalizes a similar mechanism, granting the Minister the power to override professional judgment under the guise of \u0026ldquo;public interest.\u0026rdquo; If we do not act now, we risk becoming a jurisdiction where safety and ethics are secondary to political expediency.\nEnvironmental consideration are out the window.\nSafety standards and working conditions are up for debate.\nRegulations Are Written in Blood # Every safety standard in engineering is born from failure, often from loss of life. The 1989 Exxon Valdez oil spill led to new marine safety regulations. The 2005 Texas City refinery explosion prompted sweeping changes in process safety management. The 2010 Deepwater Horizon disaster reshaped offshore drilling oversight.\nI was onsite during the 2022 conveyor collapse at the Elkford mine. The supports had been inspected infrequently in the last 50 years. The system was overloaded. It was pure like that no one was killed.\nThe engineering teams create new procedures to ensure this wouldn\u0026rsquo;t happen again.\nThese rules are not created in boardrooms. They are forged in tragedy. Bill 40 allows the Minister to override technical standards not because they are unsafe, but because they conflict with political timelines or agendas. If we allow politics to dictate safety, the next failure will not be a near-miss.\nEvery regulation, every safety standard, every ethical guideline in engineering is a response to a failure. A death. A disaster.\nThis is why we wear our ring, to remind us of this fact.\n","date":"23 October 2025","externalUrl":null,"permalink":"/blog/2025-10-23-apega-and-bill-40/","section":"Thoughts All Over The Place","summary":"","title":"APEGA and Bill 40","type":"blog"},{"content":"The hardcore science fiction junkies recognize today, Aug 29th, as Judgment Day. This is the day in the Terminator franchise where the Skynet AI becomes self-aware and launches a nuclear attack to remove humans from the Earth.\nIn 1984 when the movie came out, this was science fiction, but today we see AI infrastructure being built at an alarming pace.\nBuilding AI for AI sake # The Carney Government is going all in with AI, creating an AI minister and announcing billions of dollars of investment. On the surface this looks like a forward thinking move, since AI is everywhere. The problem is that AI is everywhere because of hype, not substance, and I have a growing fear that our planned investment in AI is digging a hole. The billion dollar price tag for new data centres is not just a reckless use of taxpayer money; it\u0026rsquo;s a fundamental misunderstanding of what problem they are trying to solve.\nI am bullish on AI. # I don\u0026rsquo;t think it\u0026rsquo;s a world-ending technology like Terminator would have us believe, but it\u0026rsquo;s not a solution to all our problems either. According to a paper published by MIT, 67% of AI success comes from solving specific problems, not from leveraging massive infrastructure projects. They found that a staggering 95% of AI deployments in large organizations fail. Not because the models are bad, but because they are so general they can\u0026rsquo;t adapt to specific issues. The companies that are succeeding in AI are choosing a single business pain point, and building tools to resolve it.\nThe cutting edge is no longer large models like Chat GPT-5, rather small precision solutions. A new paper released by NVIDIA in June is casting serious doubt on the \u0026ldquo;bigger is better\u0026rdquo; business case that has led to massive investment into AI in the first place. The researchers outline how Small Language Models (SML) outperform Large Language Models (LLM) when they have a specific task and work together. This means that a small business can deploy 10 or 20 resource light SMLs specific to their business needs on consumer hardware.\nNo big data centres needed. # Projects like O\u0026rsquo;Leary\u0026rsquo;s Wonder Valley here in Alberta are planning to build city block-sized data centres with a \u0026ldquo;build it and they will come\u0026rdquo; mentality. The absurdity of this situation is staggering. A gaming PC can run the AI required to solve small business tasks, yet we\u0026rsquo;re being told that we require billions of dollars worth of servers to achieve the same goal. It\u0026rsquo;s a solution in search of a problem.\nThe next generation of entrepreneurs isn\u0026rsquo;t waiting for Canadian data centres to be built; they\u0026rsquo;re already building solutions in their basements, using open source and off-the-shelf tools to launch successful startups. The MIT paper points out that these startups can achieve $20M in revenue without the need for data centres, yet our government remains committed to a plan that will divert funds to Big Tech vanity projects.\nComing Bubble # When pressed about the lacklustre launch of Chat GPT-5, Sam Altman himself says he is starting to worry about the over-hype on AI investment. A reporter asked if \u0026ldquo;investors as a whole are overexcited about AI\u0026rdquo; he answered \u0026ldquo;yes\u0026rdquo;. He then went on to warn reporters about a possible AI bubble, saying \u0026ldquo;If you look at most of the bubbles in history, like the tech bubble, there was a real thing. Tech was really important. The internet was a really big deal. People got overexcited.\u0026rdquo; If he thinks AI is overvalued, we should take a long hard look at risks of investing into AI mega projects.\nI think Alberta should pursue AI as a strategy to bolster the economy. But they should do so strategically and focus on pain points where it can actually help businesses act more nibble. We need to automate the business basics so we can unleash creativity to solve our big problems.\nAnd data centres are a distraction, not the solution.\n","date":"29 August 2025","externalUrl":null,"permalink":"/blog/2025-08-29-data-centres-are-a-dead-end/","section":"Thoughts All Over The Place","summary":"","title":"AI data centres are a dead end","type":"blog"},{"content":"","date":"29 August 2025","externalUrl":null,"permalink":"/categories/oped/","section":"Categories","summary":"","title":"Oped","type":"categories"},{"content":"As a professional engineer with 20 years of experience, I\u0026rsquo;ve always believed in the power of expertise and competence. I take my professional oaths seriously, and respect others who do the same.\nWhen I need advice on health, I consult doctors. On education, teachers. Yet, when Premier Danielle Smith was asked who advises her on Alberta\u0026rsquo;s energy future, she answered, \u0026ldquo;I take advice from CEOs. Who else would I take advice from?\u0026rdquo;\nI remind the engineers who are reading this that we are legally bound to prioritize public safety in our work. So it should raise extreme suspicion when the UCP makes an effort to avoid adding engineers to advisory panels.\nThis is more than a political choice, it\u0026rsquo;s a betrayal of public trust. Engineers are trained to solve complex systems. We ensure each part of the whole meets safety codes, and that our designs meet the clients\u0026rsquo; specifications.\nI believe our oaths extend beyond individual parts and apply to the entire system. For decades, I focused on safety in the details. It was my job to ensure every part I was asked to design was designed to the spec and as safe as possible.\nAs I enter my senior engineering years, I see the bigger picture. Our profession\u0026rsquo;s ethical duty must also apply to strategic decisions.\nTake the Grassy Mountain coal mine. Smith touts its economic benefits while dismissing environmental and safety concerns. She tells the public that we must develop our resources to ensure prosperity while refusing to listen to alternatives. There is a glaring technical question that her circle of advisers will never consider: Should we build an open-pit coal mine when green steel alternatives are emerging globally?\nThe answer lies in engineering expertise, not CEO incentives.\nI\u0026rsquo;ve spent my career executing decisions made by others. As a junior engineer, I diligently followed design and industry specifications. As a project manager, I optimized flawed plans cooked up in closed-door boardroom meetings. I understand this is how the world works.\nWe work in imperfect situations, with limited resources and tight deadlines. Sometimes you just need to get the job done.\nBut our profession\u0026rsquo;s integrity is compromised when engineers are excluded from strategic choices. CEOs, legally obligated to maximize shareholder value, cannot prioritize public welfare. Yet, over time, we\u0026rsquo;ve let them become the default \u0026ldquo;experts\u0026rdquo; in energy policy. This a failure of our professional accountability.\nEngineers must ask: Are we being consulted on whether projects should proceed, or just asked to approve predetermined plans?\nThe Grassy Mountain debate is a litmus test. By sidelining engineers in the decision-making process, Alberta risks becoming a relic in a world demanding sustainable solutions. The engineering profession\u0026rsquo;s credibility is at stake.\nIf we accept relegation to task executors while CEOs drive strategy, we undermine the very foundation of engineering. We undermine our code of conduct that clearly states, \u0026ldquo;Professional engineers and geoscientists shall, in their areas of practice, hold paramount the health, safety and welfare of the public, and have regard for the environment.\u0026rdquo;\nThe public deserves infrastructure decisions guided by technical expertise, not profit motives. Grassy Mountain isn\u0026rsquo;t the end — it\u0026rsquo;s a beginning.\nBy critically examining our role as engineers and refusing to stay silent, engineers can restore our professional integrity. It\u0026rsquo;s our name on the paper after all. We are the ones who approve the design and take on the risk. We deserve a say in what is built.\nI won\u0026rsquo;t stay silent. Will you?\nThis opinion piece was originally posted in the Calgary Herald.\n","date":"19 July 2025","externalUrl":null,"permalink":"/blog/2025-07-19-grassy-mountain/","section":"Thoughts All Over The Place","summary":"","title":"Grassy Mountain Coal Mine","type":"blog"},{"content":"For decades, scientists and environmentalists have warned that extreme weather spurred by climate change will devastate our civilization. For just as long, the fossil fuel industry and their allies have claimed these fears are overblown and that catastrophic climate change is fear-mongering. This weekend, Hurricane Helene shattered those dismissals, showing us the awesome power and how we are woefully unequipped for the future.\nAs I write this, the full extent of Helene\u0026rsquo;s devastation is still unfolding. Hundreds are dead, thousands are stranded, and millions are without power across Florida, Georgia, North Carolina, and Tennessee. In some locations, like Chimney Rock, the destruction is total – there\u0026rsquo;s simply nothing left of the town.\nBut the real damage – the blow to our expansive global supply chains – has yet to be fully realized. And it\u0026rsquo;s this devastation that should terrify us all.\nThe Chip Crisis We Can\u0026rsquo;t Ignore # The Spruce Pine Mining District in North Carolina, one of the largest suppliers of high-purity quartz needed for manufacturing computer chips, is currently underwater. The global consequences of this submersion are incalculable.\nWe\u0026rsquo;ve already had a taste of what this disruption could look like. During the COVID-19 pandemic, the semiconductor industry was hit hard due to the specialized knowledge and difficult processes required to manufacture computer chips. You can\u0026rsquo;t simply retool a factory to build different chips – that takes years.\nThe result? Chips became unavailable. They simply didn\u0026rsquo;t exist. Car lots filled with vehicles sat useless without their onboard computers. Dealers had zero inventory, and used car prices skyrocketed, putting extreme financial pressure on those who rely on the used market for their primary mode of transportation.\nThe AI Dream on Shaky Ground # Now, imagine this scenario playing out on a much larger scale. Chip manufacturing, spurred on by the rise of AI, has become the central pillar of our economy. AI\u0026rsquo;s explosive growth has set the trajectory of our global focus, with grandiose claims that it will solve all our problems – including climate change.\nNVIDIA, an AI chip manufacturer, has seen its stock price increase over 25 times in the last five years. But what happens when they can\u0026rsquo;t access the raw materials to build their chips? What about Apple and their new iPhone models? Or Nintendo and their plans to release the Switch 2 this Christmas season? Will we see another pause in car manufacturing as chips simply cease to exist?\nThe Terrifying Domino Effect # The truly chilling effects lie in our basic infrastructure. Ninety percent of our global money supply isn\u0026rsquo;t physical currency, but computer records. What happens when a bank needs to update their servers and computers, but there is no supply?\nThis isn\u0026rsquo;t a \u0026ldquo;what if\u0026rdquo; scenario. This is unfolding in real time, right now. Hurricane Helene\u0026rsquo;s devastation will reach far beyond the Eastern United States, exposing the fragility of our interconnected world.\nA Call to Immediate Action # The civilization-level devastation from climate change is here today, and it will only worsen. In a tragic replay of Hurricane Katrina, Helene\u0026rsquo;s impact was magnified by the failure of critical infrastructure – levees and dams that simply weren\u0026rsquo;t up to the task. Our current systems are not sufficient to safeguard our way of life.\nThese impacts on our global supply chains will become more frequent and more severe. We must act now. We cannot wait. Without immediate and decisive action, we will soon wake up lacking the critical tools and materials we need to mitigate the effects of extreme weather.\nThe quality and resilience of our current infrastructure isn\u0026rsquo;t sufficient to safeguard our civilization. We must invest heavily in climate-resilient infrastructure, diversify our supply chains, and accelerate the transition to sustainable energy sources. The cost of inaction is far greater than the price of preparation.\nHurricane Helene is not just another storm. It\u0026rsquo;s a stark warning of the fragile nature of our modern world and the urgent need to address climate change. The time for debate is over. The time for action is now. Our very way of life depends on it.\n","date":"30 September 2024","externalUrl":null,"permalink":"/blog/2024-09-30-hurricane-helene/","section":"Thoughts All Over The Place","summary":"","title":"The Hidden Devastation of Hurricane Helene","type":"blog"},{"content":" Albertans In Space # When you think about Alberta, space is not the first thing that pops into your head. The tall shadow of oil and gas combined with cowboy culture has kept our achievements to the space sector out of public view. This is the problem Meghan set out to fix with our podcast. Space is the next frontier and we believe Alberta can be a huge part of this next chapter. Our hope for this Podcast is to encourage education and facilitate discussion on what the imminent growth of the Space sector means for the endless possibilities for Alberta\u0026rsquo;s energy strategies \u0026amp; evolution.\nHow to get in touch # Instagram TikTok Where to Watch # YouTube Apple Podcast Spotify ","date":"6 May 2024","externalUrl":null,"permalink":"/fieldnotes/ais/","section":"Field Notes Of My Life","summary":"","title":"Albertans In Space","type":"fieldnotes"},{"content":"Through our lives, we go on adventures, complete projects, and create memories. All of these things combine together to make us who we are.\nI\u0026rsquo;ve catalogues some of my favourites adventres, and those projects that have had the most impact on me.\n","date":"6 May 2024","externalUrl":null,"permalink":"/fieldnotes/","section":"Field Notes Of My Life","summary":"","title":"Field Notes Of My Life","type":"fieldnotes"},{"content":" This week Canada committed to an international effort to go back to the Moon, this time to stay. The new president of the Canadian Space Agency, Lisa Campbell, signed the Artemis Accords at this year\u0026rsquo;s virtual IAC conference. This news barely made a ripple in the current news cycle but it will go down in history as a turning point for Canada. We, along with seven other countries, have committed to building an outpost on the Moon that will be used to access the rest of the solar system. It’s akin to building the first railroad station – a station that will eventually be connected to a billion km line.\nCanada is a resource country.\nWe are a land of rock, timber, water, metal and oil. Our history was written by using these resources to build a comfortable life despite cold winters and vast distances. This culture has also served us well in space exploration. Canada was the third nation in space after the USSR and the US. Our flag is proudly on display on the Canadarm on the Space Station. This space legacy combined with our resource experience is exactly why Canada is the obvious choice to lead the space resource industry.\nThe Western Canadian economy is focused on extracting and processing resources. We have built a talent pool and supply chain to harvest resources from some of the harshest conditions on Earth. The Albertan population makes up approximately 10% of Canada, while our GDP contributes ~20% to the Federal total.\nResources bring prosperity and growth.\nThere are tremendous resources available in space. These resources can be harvested with zero environmental impact to Earth and in nearly infinite quantities. To reach these resources, the international community is focused on building infrastructure on the Moon to act as a gateway to the rest of the solar system.\nThe signing of the Artemis Accords is the pistol shot that starts the new Moon race. This time, the stakes are much higher than Cold War pride. This time the prize isn’t just a flag on the Moon, it means control of the economic future of the Moon and space exploration. The Artemis Accords lay the foundation for robotic and human exploration on the Moon as well as the extraction and use of resources to fuel space activities.\nThe Canadian Space Agency is looking for input from industries across the country as to how to best implement the principles of the Artemis Accords. Robotics and AI are a given, as that is our existing expertise in space, but we have an opportunity to build entirely new expertise. We have an opportunity to invest in a resource sector that has unlimited growth potential. Western Canada has an opportunity to bring their expertise to the table and rise to the occasion. By joining the Artemis Accords, we open the door for Canada to become a major player in space resources.\nNASA’s Artemis plan aims to excavate ice from the Moon\u0026rsquo;s south pole to supply both drinking water and to split the molecules apart to make rocket fuel. Water is also needed for life support, radiation shielding, and industrial processes.\nThis is a platinum opportunity for Alberta to jumpstart its economy.\nWe have extensive knowledge in the extraction, processing, and storage of liquids. We also have the best engineers, technicians, and trades in the world when it comes to modular construction and process equipment. The engineering, manufacturing, and finance business are the best in the world at what they do. I firmly believe that if the resource talent in the West partners with the space experience in the East, Canada will become the world leader in space resources, starting with water.\nI am committing myself to ensure that Canada is a leader in space resources. If you are interested in this opportunity, send me a message, and let\u0026rsquo;s get to work!\n","date":"16 October 2020","externalUrl":null,"permalink":"/blog/2020-10-16-moon-together/","section":"Thoughts All Over The Place","summary":"","title":"Let's go to the Moon, together","type":"blog"},{"content":"The economic benefits of oil and gas in Alberta are well known. The volatility of the boom and bust cycle is also a familiar song and dance in this province. When you take into consideration the environmental impact of the resource, the fossil fuel industry is a double-edged sword. It’s also commonly understood that moving to a renewable future, with less environmental impact, is better for everyone in the long run.\nTo me, the solution is pretty straight forward: the sooner we move to a renewable long-term energy mix, the better off we will be.\nThe path forward that I’ve heard from the Alberta business community is that we need a strong fossil fuel industry to support a renewable industry – that we can have oil and gas companies working side by side with renewable energy companies, growing the Canadian energy industry together. Profits from a strong economy can be used to finance our diversification.\nDuring the April 24th press conference, Jason Kenny threw that narrative out the window. He wants Alberta to be a petrol state, full stop.\nWhen Tom Ross from 660 news asked the Premier about working with the US on the Green New Deal, he got quite upset. He made it absolutely clear that he is only interested in fossil fuel jobs.\n“Our focus is on getting people back to work in Alberta, not pie in the sky ideological schemes.”\nFor the UCP, the only good job is an oil job.\nThe Premier went on to say “That kind of question in the middle of an economic crisis from a Calgary based media outlet, frankly, throws me for a loop”.\nWhat message does that send to the thousands of Albertans who are working in renewable energy?\nWhat about Iron and Earth, the non-profit that is training oil field workers with additional skills so they can work in both fields? What about the students at SAIT, NAIT, the University of Calgary, and the University of Alberta who are in alternative energy courses?\nWhat about the people who are currently working in renewable energy at companies like BluEarth, Eavor, and SkyFire? Do their jobs not count? Are the projects that they operate and profit from “pie in the sky”?\nWhat about the former Prime Minister Stephen Harper and his new role at Terrestrial Energy? Does the work he’s doing to develop nuclear power in Canada qualify as “pie in the sky”?\nThe main goal of the Green New Deal is “meeting 100 percent of the power demand in the United States through clean, renewable, and zero-emission energy sources”\nThat’s a completely reasonable goal in my opinion. There is no reason why Canada and Alberta shouldn’t work with the US to help them develop their plan. Unless your goal is to create oil jobs instead of jobs.\nThere are shovel-ready projects that will put Albertans to work in areas other than oil and gas. Not to mention the potential in this province in areas like software, technology, manufacturing, and engineering services. There are viable solutions being left cold because the UCP is so focused on fossil fuels, they can’t see anything else.\n","date":"20 May 2020","externalUrl":null,"permalink":"/blog/2020-05-20-pie-in-the-sky/","section":"Thoughts All Over The Place","summary":"","title":"Green Technology Is -Pie In The Sky- According To Premier Kenny","type":"blog"},{"content":"During the winter of 2018, I spent two weeks at the Mars Desert Research Station (MDRS) in Utah as a citizen astronaut. The MDRS is an analog mission site, meaning it\u0026rsquo;s used to run experiments as if we were actually on Mars. It\u0026rsquo;s a facility for teams of scientists to dry run experiments and procedures, adding to the body of knowledge before we actually send people to Mars.\nThese simulated missions try and mimic real conditions as much as possible. We were not able to leave without a \u0026ldquo;spacesuit\u0026rdquo; on, we ate freeze-dried food, followed strict protocols, and enforced a communication delay between \u0026ldquo;Mars\u0026rdquo; and Earth. As the crew engineer for the MDRS188 team, I was responsible for the operation of the facility and to support the experiments being conducted.\nBut my biggest challenge was dealing with isolation. As the whole world is now finding out, isolation is a skill.\nI learned a lot about myself during those two weeks. Here are some tips that I learned while dealing with isolation.\nSchedule your downtime # In small confined spaces it\u0026rsquo;s easy for work to blend in with relaxation. While it may seem that working late hours is more productive, this leads to burnout very quickly. When you are working in the same place that you relax in, it\u0026rsquo;s extremely important to schedule your downtime.\nWhile in simulation, we had set time where we would drop what we were doing and commit to downtime. We scheduled movie nights, played games, did yoga; anything but work. This allowed our minds to take a break and relax. Just like a muscle, you need to allow rest time for your brain else it will get overworked.\nScheduling downtime every day meant that we were able to start every day fresh and relaxed.\nKnow your personal status # As the COVID-19 situation unfolds, it\u0026rsquo;s important to understand how those changes are affecting you. Each person, city, and country will be affected differently. We are programmed to deal with adversity, but all too often our coping mechanism is to power through issues.\nWhile that can work in the short term, it\u0026rsquo;s a disastrous longterm solution.\nDuring the mission, we had morning briefings to go over our daily and weekly objectives. These meetings followed a normal work agenda, but we also spoke about personal issues. We talked about how we were feeling, how yesterday went, and how we wanted to adjust our work to maximize our output.\nEach person needed to understand their own status before they could properly share it with the team.\nReflecting on your own status allows you to adjust your actions. What worked yesterday may not work today. The schedule you had in the office may not work at home. You need to experiment to find what works for you. Try 10 pushups before a meeting to replace your 10 am walk, or maybe you need to schedule a 5 pm call with your team to gossip about issues at the office.\nBaking sourdough bread may have been fun week 1, but it\u0026rsquo;s lost its lustre on week 4. We are all in a stressful situation, and it\u0026rsquo;s necessary to make adjustments along the way.\nDoing honest checkups with yourself allows you to adjust your behaviour to fit your needs.\nNever Stop Communicating # When we spent long periods of time alone, it can become a habit to keep to ourselves. Dynamic situations are when we need to communicate the most. You need to take extra efforts to reach out to people and maintain communication links with them.\nThe MDRS is a remote facility without anyone else for miles around. There is also an imposed communication delay to mimic the distance from the Earth to Mars. It truly felt like we were all alone. Right from day one, we made sure to keep communication between the team open, honest, and frequent. It was vitally important for the success of the mission and our own mental health.\nYou should put extra effort into communicating with your family, friends, and coworkers more than ever in periods of stress.\nHave fun! # Fun is extremely important to your mental health. It times of prolonged stress it\u0026rsquo;s more important to actively look for fun in order to calm your central nervous system.\nFor long-duration space missions, the human element is the biggest variable. All the machines and hardware can be analyzed down to the millimetre, but the humans are always changing. A big research component of analog missions is testing team dynamics and maximizing performance. Having fun is a big part of being human, and leads to better performance. On our mission having fun was an explicit component that we researched.\nRemember, isolation is a marathon, not a sprint. You have to adjust the way you tackle new challenges so that you can maintain your work output. This requires you to be honest with yourself and seek guidance from others. It\u0026rsquo;s a skill like any other, and it takes practice.\n","date":"20 April 2020","externalUrl":null,"permalink":"/blog/2020-04-20-dealing-with-isolation/","section":"Thoughts All Over The Place","summary":"","title":"Dealing with Isolation","type":"blog"},{"content":"To me, part of being a professional means sharing your knowledge with society. My experiences are move valuable if they are communicated and discussed with others. I have found that sharing my passion for engineering and space exploration is most rewarding when speaking to children. Kids have amazing elastic minds that have yet to develop preexisting theories that lead to stagnation in innovation and design. Every time I step into a classroom to do a presentation the kids come up with something I’ve never thought of before.\nOur teachers in Canada do an excellent job but they cannot be experts at everything. They absolutely welcome specialists and enthusiast into their classroom to talk to the students about the subjects they are learning. This is an excellent way for professionals to give back to their community, for kids to learn, and for adults to get a little out of their comfort zone.\nTo truly know if you’ve mastered your craft, try explaining it to a know-it-all 12-year-old.\nI encourage all my colleagues and engineering professionals at every level to get in touch with your local school board or science group. Volunteering your time is immensely rewarding for you and has the potential to change the course of a life, and community.\nIf you are in Alberta, check out the Alberta Science Network. They are always looking for speakers.\n","date":"17 April 2017","externalUrl":null,"permalink":"/blog/2017-04-17-engieers-in-the-classroom/","section":"Thoughts All Over The Place","summary":"","title":"Dealing with Isolation","type":"blog"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"The really good thing about getting started today is that it’s never been easier or cheaper to run self hosting applicationd. Since these services will only have a handful of users (you and your family) the hardware requirements are low. Computer prices are skyrocketing, so the best thing to use is something you aleady own, like an old laptop. If you want to buy hardware, you don\u0026rsquo;t need enterprise grade equpimnet to run a home server.\nBusiness Think Clients # You’ve seen these PCs at the doctors office, behind cash registers, and in offices. You may have ever used one before. They are a favourite of home lab enthusiasts because they are cheap, powerful enough, and small. I have several Lenovo ThinkCentre M710q running different services in my own home lab. They can run a dozen services, and can be tucked away easily. I got mine from my municipal auction centre, and you can find used ones all over the Internet for $100-$150.\nRaspberry Pi # Originally designed to help kids learn about computers in 2012, the Raspberry Pi is now a capable computing platform on it’s own. The Raspberry Pi 5 is a very capable machine. With 16GB of ram and a quad core processor at 2.4GHz, it can be used as a desktop computer capable of surfing the web, watching movies, and checking email.\nIf you do go the Raspberry Pi route, install the Raspberry Pi OS instead of Linux Mint\n","externalUrl":null,"permalink":"/self-hosting/hardware/","section":"Building Your Own Server","summary":"","title":"Self Hosting Hardware","type":"self-hosting"},{"content":"You need to learn Linux.\nStop putting it off, just do it.\nMicrosoft Windows is a hot garbage fire. They are spying on you with AI, putting ads into your OS, and are making changes with shareholders in mind, not users. It\u0026rsquo;s been an abusve relationship for years. Just move on already.\nI tinkered with Linux for years, but never committed. That changed when Valve begain making gaming on Linux possible. Now my computer does what I tell it to do (for better or for worse).\nThe Basics # Dip your toes into Linux my setting it up for your home server. Just follow the guides and see how far you get. You can always delete everything, put your old laptop back into the closet and forget all about it if it goes sideways on you.\nBut I bet it goes pretty well.\nLinux Mint Installation - Linux Mint is user-friendly, privacy-focused, and perfect for beginners and experts alike. Set up your system in about an hour with this step-by-step guide. Docker Installation - This is the magic that makes a home server easy to setup. Docker allows you to package applications into isolated containers, allowing you to run multiple services on the same machine without conflicts. Complete in about 15 minutes. Data Management # Goal: Replace cloud productivity suites with self hosted, privacy first software that puts you in control. Your data is out of the hands of oligarchs who want to control us. Remeber, \u0026ldquo;the cloud\u0026rdquo; is just someone else\u0026rsquo;s computer, and when you data is on other people\u0026rsquo;s computer, they ARE LOOKING AT IT.\nNextcloud - Self hosted file sync and share. Replace Google Drive, Dropbox, and OneDrive with your own cloud storage. Vaultwarden - Self hosted password manager. Keep all your passwords secure and accessible across devices. Paperless-ngx - Self hosted document management. Scan, organize, and search your physical documents. Media \u0026amp; Entertainment # Goal: Stream your personal collection to any device without ads, tracking, or licensing restrictions. With this stack you can stream your own movies and TV, backup your camera photos to your own server, and share your music collection with everyone in your home.\nJellyfin - Media library management and transcoding, allowing you to stream local media to any TV, computer, or phone on your network. No ads, no tracking, no subscriptions. Immich - A picture software that replaces Google Photos and keeps your camera roll private. Your memories, your control. Navidrome - Stream your entire music collection from anywhere. Your music library, your rules. Manage Your Digital Life # Goal: Take control of your digital life with self-hosted tools that put you in charge.\nActual Budget - Self-hosted personal finance. Take control of your budgeting with powerful envelope-style budgeting. No subscriptions, no data mining — just your financial data, under your control. Home Assistant - Self-hosted home automation. Control your smart home devices locally. No cloud dependency means your automation continues working even without internet access. ","externalUrl":null,"permalink":"/self-hosting/software/","section":"Building Your Own Server","summary":"","title":"Self Hosting Software","type":"self-hosting"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}]