khdev.ch Open in urlscan Pro
2606:4700:3037::ac43:af48  Public Scan

Submitted URL: http://khdev.ch/
Effective URL: https://khdev.ch/
Submission: On February 11 via api from US — Scanned from CH

Form analysis 2 forms found in the DOM

<form class="gh-form" data-members-form="">
  <input class="gh-form-input" type="email" placeholder="jamie@example.com" required="" data-members-email="">
  <button class="gh-button" type="submit">
    <span><span>Subscribe</span> <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 256 256">
        <path d="M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z"></path>
      </svg></span>
    <svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24">
      <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
        <g class="nc-loop-dots-4-24-icon-o">
          <circle cx="4" cy="12" r="3"></circle>
          <circle cx="12" cy="12" r="3"></circle>
          <circle cx="20" cy="12" r="3"></circle>
        </g>
        <style data-cap="butt">
          .nc-loop-dots-4-24-icon-o {
            --animation-duration: 0.8s
          }

          .nc-loop-dots-4-24-icon-o * {
            opacity: .4;
            transform: scale(.75);
            animation: nc-loop-dots-4-anim var(--animation-duration) infinite
          }

          .nc-loop-dots-4-24-icon-o :nth-child(1) {
            transform-origin: 4px 12px;
            animation-delay: -.3s;
            animation-delay: calc(var(--animation-duration)/-2.666)
          }

          .nc-loop-dots-4-24-icon-o :nth-child(2) {
            transform-origin: 12px 12px;
            animation-delay: -.15s;
            animation-delay: calc(var(--animation-duration)/-5.333)
          }

          .nc-loop-dots-4-24-icon-o :nth-child(3) {
            transform-origin: 20px 12px
          }

          @keyframes nc-loop-dots-4-anim {

            0%,
            100% {
              opacity: .4;
              transform: scale(.75)
            }

            50% {
              opacity: 1;
              transform: scale(1)
            }
          }
        </style>
      </g>
    </svg> <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
      <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"></path>
      <style>
        .checkmark {
          width: 40px;
          height: 40px;
          display: block;
          stroke-width: 2.5;
          stroke: currentColor;
          stroke-miterlimit: 10;
        }

        .checkmark__check {
          transform-origin: 50% 50%;
          stroke-dasharray: 48;
          stroke-dashoffset: 48;
          animation: stroke .3s cubic-bezier(0.650, 0.000, 0.450, 1.000) forwards;
        }

        @keyframes stroke {
          100% {
            stroke-dashoffset: 0;
          }
        }
      </style>
    </svg> </button>
</form>

<form class="gh-form" data-members-form="">
  <input class="gh-form-input" type="email" placeholder="jamie@example.com" required="" data-members-email="">
  <button class="gh-button" type="submit">
    <span><span>Subscribe</span> <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 256 256">
        <path d="M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z"></path>
      </svg></span>
    <svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24">
      <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
        <g class="nc-loop-dots-4-24-icon-o">
          <circle cx="4" cy="12" r="3"></circle>
          <circle cx="12" cy="12" r="3"></circle>
          <circle cx="20" cy="12" r="3"></circle>
        </g>
        <style data-cap="butt">
          .nc-loop-dots-4-24-icon-o {
            --animation-duration: 0.8s
          }

          .nc-loop-dots-4-24-icon-o * {
            opacity: .4;
            transform: scale(.75);
            animation: nc-loop-dots-4-anim var(--animation-duration) infinite
          }

          .nc-loop-dots-4-24-icon-o :nth-child(1) {
            transform-origin: 4px 12px;
            animation-delay: -.3s;
            animation-delay: calc(var(--animation-duration)/-2.666)
          }

          .nc-loop-dots-4-24-icon-o :nth-child(2) {
            transform-origin: 12px 12px;
            animation-delay: -.15s;
            animation-delay: calc(var(--animation-duration)/-5.333)
          }

          .nc-loop-dots-4-24-icon-o :nth-child(3) {
            transform-origin: 20px 12px
          }

          @keyframes nc-loop-dots-4-anim {

            0%,
            100% {
              opacity: .4;
              transform: scale(.75)
            }

            50% {
              opacity: 1;
              transform: scale(1)
            }
          }
        </style>
      </g>
    </svg> <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
      <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"></path>
      <style>
        .checkmark {
          width: 40px;
          height: 40px;
          display: block;
          stroke-width: 2.5;
          stroke: currentColor;
          stroke-miterlimit: 10;
        }

        .checkmark__check {
          transform-origin: 50% 50%;
          stroke-dasharray: 48;
          stroke-dashoffset: 48;
          animation: stroke .3s cubic-bezier(0.650, 0.000, 0.450, 1.000) forwards;
        }

        @keyframes stroke {
          100% {
            stroke-dashoffset: 0;
          }
        }
      </style>
    </svg> </button>
</form>

Text Content

KHDev
 * Home
 * Author

Sign in

Data Analytics


GOOGLE DATA ANALYTICS CERTIFICATE

Get started in the high-growth field of data analytics with a professional
certificate from Google. Learn job-ready skills that are in demand, like how to
analyze and process data to gain key business insights.

By Kevin Häusler Jul 6, 2022

Homeassistant


AUTOMATED HOT PEPPER IRRIGATION

Watering 52 plants by hand is a lot of work. So why not automate it?

By Kevin Häusler May 24, 2022

Powershell


COPYING A FILE TO ALL SUBFOLDERS AND RENAMING IT

A friend asked me about this issue. He needed to copy a onenote file to all
subfolders and rename the file accordingly. This is how I did it.

By Kevin Häusler May 24, 2022

Projects


PLANNING A RECIPE WEBSITE

I have a lot of ideas for a recipe website but no idea how to implement it yet.

By Kevin Häusler Apr 6, 2022


FEATURED


AUTOMATED HOT PEPPER IRRIGATION

Watering 52 plants by hand is a lot of work. So why not automate it?

By Kevin Häusler May 24, 2022


KHGHOST THEME V1.0.0

After a busy weekend I finally finished the initial version of my new Ghost
theme "KHGhost" that is being used on this website!

By Kevin Häusler Mar 28, 2022


MIFLORA IN HOMEASSISTANT VIA ESP32 AND ESPHOME

A quick guide how to connect miflora to homeassistant "without" Bluetooth.

By Kevin Häusler Feb 26, 2022


BACKUPS WITH BORG

I finally set up some backups with borg. Here is a small overview how I did it
and what settings I have used.

By Kevin Häusler Feb 14, 2022


KHDEV

A blog about homelab stuff, 3d printing and AI/ML!

Subscribe


LATEST


502 ERROR WITH PLESK BEHIND NGINX PROXY MANAGER

Are you getting 502 Bad Gateway Errors with Plesk behind Nginx Proxy Manager?
Here is the solution!

By Kevin Häusler Apr 2, 2022


KHGHOST THEME V1.0.0

After a busy weekend I finally finished the initial version of my new Ghost
theme "KHGhost" that is being used on this website!

By Kevin Häusler Mar 28, 2022


MIFLORA IN HOMEASSISTANT VIA ESP32 AND ESPHOME

A quick guide how to connect miflora to homeassistant "without" Bluetooth.

By Kevin Häusler Feb 26, 2022


FFXIV PROFIT CALCULATOR SHEET

On my road to become rich in FFXIV I created a Scrip calculator in Python and I
liked it so much that I wanted to create a general profit calculator for various
things.

By Kevin Häusler Feb 18, 2022


FFXIV PYTHON PURPLE SCRIP CALCULATOR

I was trying out some things with python and the universalis marketboard api. It
works but it isnt very user friendly.

By Kevin Häusler Feb 18, 2022


PYTHON DOWNLOAD MANAGER

One thing that helped me when I was learning python was to create small but
useful scripts to confirm what I have learned. This is a script that sorts files
into different folders based on their filetype.

By Kevin Häusler Feb 18, 2022


UPGRADING AND CALIBRATING THE SIDEWINDER X2

While the stock configuration of the Sidewinder X2 were pretty solid there are
some relatively cheap upgrades that I could implement.

By Kevin Häusler Feb 15, 2022


MY NEW ARTILLERY SIDEWINDER X2

It has been over a week since I have received my 3D printer and I learned a lot
about the intricacies of 3D printing. I had successes but mostly failures but
those helped me understand exactly what went wrong and how to fix it.

By Kevin Häusler Feb 15, 2022


BACKUPS WITH BORG

I finally set up some backups with borg. Here is a small overview how I did it
and what settings I have used.

By Kevin Häusler Feb 14, 2022


PROJECT: MKA-CHILI.CH

I am currently growing a wide varieties of hot peppers. To document the project
and journey from seed to sauce I have created another ghost based blog on
https://mka-chili.ch .

By Kevin Häusler Feb 10, 2022


PROJECT: KEVINHAEUSLER.COM

This is my personal blog that I tend to neglect due to me just taking pictures
but never uploading them.

By Kevin Häusler Feb 10, 2022


PROJECT: DEV.KHDEV.CH

My first try at creating a "CMS/Blog" from almost scratch. It uses Nuxt with the
Nuxt Content module to render markdown files into posts. I really liked
designing the layout with Tailwindcss.

By Kevin Häusler Feb 10, 2022
See all
KHDev

Powered by Ghost


KHDEV

A blog about homelab stuff, 3d printing and AI/ML!

Subscribe