Git Product home page Git Product logo

blogtest's People

Contributors

codyde avatar

Watchers

 avatar

blogtest's Issues

same ol stuff


title: 'Here we go'
author: codyde
slug: welcome
date: '2022-03-01'

this is a test

i wonder what will happen

im typing a lot
does this work?

This is another test

published: true
description: here we go
category: note
slug: github-cms
tags: Stuff

Heres a test, i wonder how it'll work. Im going to paste a picture too
squarecody

KIND and LB with MetalLB on MacOS


title: "KIND and Load Balancing with MetalLB on Mac"
date: 2020-12-04
slug: kind-and-metallb-on-mac
tags: kind,kubernetes,docker,hackery
description: KIND and Load Balancing on MacOS
cover_image: https://user-images.githubusercontent.com/17350652/160060723-86e0e113-5661-4d1b-96f5-67c71cc07ac9.png

image

Updated 12/4/2020

A couple of the finer points of this configuration have changed since it was originally written. For example aspects of the homebrew installation of tuntap have changed. I updated the post and did a sanity run through - updating a few of the steps for better clarity. Since I did this, I've also bumped the date of this post to be current as well.

Introduction

Minikube and Docker for Desktop generally provide an "OK" experience for testing Kubernetes based things locally - but I really like the ability work against multiple nodes for some cases (i.e. I was doing some experimentation with daemonsets recently). Enter KIND! KinD (or Kubernetes-in-Docker) is one of the Kubernetes SIG projects (Special Interest Groups), and represents a tool for deploying Kubernetes clusters inside of Docker. Super useful for doing Kubernetes things locally!

A ways back, I had discovered MetalLB as a method for getting an easy load balancer on-premises for Kubernetes. In the public cloud world - getting services into a cluster and subsequent load balancer connectivity is pretty easy. It gets a bit more nebulous (or, expensive...) on-premises.

The problem I found however is with how MacOS handles Docker. Since MacOS leverages [Hyperkit](http://collabnix.com/how-docker-for-mac-works-under-the-hood/ for virtualization, the interfaces for Dockers bridge network aren't actually routable interfaces - you're actually connecting to a socket instead. Immediately upon starting to research, I found that the Great and Powerful Duffie Cooley had done a blog on just this topic, but from the Linux point of view. In the Linux world, the docker0 bridge network is directly connected - allowing you to interact from a network perspective seamlessly.

Fortunately, I wasn't the only one looking at how to do this, and someone else far smarter solved it!

The Solution

Ultimately what was needed was a way to hit the docker0 bridge network. Hyperkit supports this functionality through a specific set of additional arguments used during the creation of the machine. This isn't possible out of the box since it's actually Docker that's creating the machine, and the commands are hard-coded in that way. While digging - I discovered a GitHub project that was working on this specific use case for Docker - docker-tuntap-osx.

This shim install allows a bridge network to be created between the host and guest machine. Subsequently, a gateway address is created that can then be used to route against to hit cluster services inside the docker networks.

There are caveats however...

  • It's hacky and unsupported, and you should use kubectl proxy or port forward if at all possible
  • Every time your machine restarts you'll need to reapply the shim and restart docker
  • I experienced having to remove the static route and re-add after periods of non-use. The route would be there but it suddenly wouldn't work.

Let's dive in!

Getting Started

All and all, this is a pretty quick thing to pull off. In order to knock this out, we're going to do the following

  • Clone down the repo I covered above - AlmirKadric-Published/docker-tuntap-osx
  • As mentioned in the instructions within that GitHub, use brew to install tuntap (brew tap homebrew/cask followed by brew cask install tuntap). You may need a restart after this - but I didn't on my system
  • Exit out of Docker for Mac
  • Once these 2 things are complete, we can execute the shell script, ./sbin/docker_tap_install.sh. It's important to NOT execute this command with sudo. If you execute it with sudo, the interface will be created under the root user, and the functionality will not work.
  • Once the tap is installed, we will bring the interface up
  • We can assign a static route against the gateway on that interface to provide routing into the our KIND environment, and ultimately MetalLB.
  • Finally - we'll install/configure MetalLB into our Kubernetes cluster

As usual, you should always be wary about executing arbitrary scripts. I'd highly recommend reviewing the script to ensure you're comfortable with what it's doing.

Execute the ./sbin/docker_tap_install.sh script

./sbin/docker_tap_install.sh
Installation complete
Restarting Docker
Process restarting, ready to go

Once Docker finishes restarting, you can grep your interfaces looking for tap to see that the tap interface has been created.

ifconfig | grep "tap"
tap1: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

With this in place, we can run the script that will bring our TAP interface "up" in order to set our connectivity to the docker network up. Note that there are a few things in this file that you might want or need to change. The script currently uses the default Docker network, but in some cases this might change. I've provided the output of my docker_tap_up.sh script below for comparison:

❯ cat sbin/docker_tap_up.sh
  #!/bin/bash

  set -o nounset
  set -o errexit

  # Local and host tap interfaces
  localTapInterface=tap1
  hostTapInterface=eth1

  # Local and host gateway addresses
  localGateway='10.0.75.1/30'
  hostGateway='10.0.75.2'
  hostNetmask='255.255.255.252'

  # Startup local and host tuntap interfaces
  sudo ifconfig $localTapInterface $localGateway up
  docker run --rm --privileged --net=host --pid=host alpine ifconfig $hostTapInterface $hostGateway netmask $hostNetmask up

You may want to (based on your environment...) update the localGateway and/or hostGateway settings, but they should work as default.

When satisfied, execute ./sbin/docker_tap_up.sh and when it completes run an ifconfig. If we scroll to the last interface, it should be tap1, and you should see the network assigned

tap1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 12:68:9b:00:c2:22
    inet 10.0.75.1 netmask 0xfffffffc broadcast 10.0.75.3
    media: autoselect
    status: active
    open (pid 11096)

With that portion configured, we're going to break from our networking journey for a brief moment to get our KinD cluster up and running.

Deploying our Cluster with KIND

Eric Shanks dropped a blog post a ways back around A Kind Way to Learn Kubernetes. It's a great read on the in's and out's of getting KIND up and running and. Knowing that that's there to read - I'm going to be pretty brief in how to get our cluster up and running.

cat << EOF > config.yaml
kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
EOF
kind create cluster --config config.yaml

If all goes well, you should see results similar to below...

❯ kind create cluster --config config.yaml
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.18.2) 🖼
 ✓ Preparing nodes 📦 📦 📦 📦
 ✓ Writing configuration 📜
 ✓ Starting control-plane 🕹️
 ✓ Installing CNI 🔌
 ✓ Installing StorageClass 💾
 ✓ Joining worker nodes 🚜
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

KinD will automatically add it's kubeconfig information to your existing contexts and you should be off to the races. You can validate this, as well as the network your nodes are running on (this will be important in a bit...) by running a kubectl get nodes -o wide, which should give you an output similar to below:

❯ kubectl get nodes -o wide
NAME                 STATUS   ROLES    AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION    CONTAINER-RUNTIME
kind-control-plane   Ready    master   2m1s   v1.18.2   172.18.0.2    <none>        Ubuntu 19.10   5.4.39-linuxkit   containerd://1.3.3-14-g449e9269
kind-worker          Ready    <none>   83s    v1.18.2   172.18.0.3    <none>        Ubuntu 19.10   5.4.39-linuxkit   containerd://1.3.3-14-g449e9269
kind-worker2         Ready    <none>   82s    v1.18.2   172.18.0.5    <none>        Ubuntu 19.10   5.4.39-linuxkit   containerd://1.3.3-14-g449e9269
kind-worker3         Ready    <none>   82s    v1.18.2   172.18.0.4    <none>        Ubuntu 19.10   5.4.39-linuxkit   containerd://1.3.3-14-g449e9269

As you can see, our nodes deployed onto a 172.18.x.x network. To use the gateway on the tap interface we created earlier, we'll add a static route into this network. This will allow us to (soon) route to our MetalLB load balancers. You'll want to validate the network KinD deployed the nodes onto in your environment. This can be done by using the docker network ls and docker network inspect commands to check your network. Kind creates a Docker network aptly called "kind", so the command you would run is docker network inspect kind, and look for the "Subnet" entry. In my environment, at the time of writing, it's 172.18.0.0/16 for example.

Using this information, we can create our static route with the command below,

sudo route -v add -net 172.18.0.1 -netmask 255.255.0.0 10.0.75.2

With this configured, we should be ready to setup our cluster and MetalLB!

Configuring MetalLB

MetalLB has a great set of documentation for getting started.

We'll simply execute the following command to deploy out the necessary manifests for MetalLB

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/namespace.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.3/manifests/metallb.yaml

This should ultimately create a number of resources within your cluster, you can run a get pods against the metallb-system namespace (kubectl get pods -n metallb-system) to see the resulting created created pods.

With these resources created, we'll now need to setup the actual configuration by deploying a configmap. In MetalLB, we can either deploy our Load Balancing configuration in Layer 2 mode or using BGP. Since we're doing this all locally, it doesn't really make sense for us to peer into BGP. We'll rock us some L2.

Earlier when we defined out our static route, you'll notice I used the 172.18.0.0 network as the destination for our traffic. We're going to tell MetalLB that it can also deploy load balancers onto this network. We'll use some higher IP Addresses to hopefully avoid any sort of collisions.

Create and apply the following configmap:

cat << EOF > metallb-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 172.18.0.150-172.18.0.200
EOF
kubectl create -f metallb-config.yaml

And our cluster should be ready!

Deploying an Application

I've got a really silly application I threw together when I was at VMware still that has grown a bit since I joined HashiCorp. It's mostly setup to test Service Mesh functionality now, but it also deploys a resource on the frontend that uses a load balancer. We can use this to give things a test.

git clone https://github.com/codyde/hashi-demo-app
kubectl apply -f hashi-demo-app/kubernetes-demoapp.yaml

After a few moments, you should be able to run a kubectl get svc -n custom-application which will list all exposed services in the cluster. If all things went well, you should see the a deployed load balancer!

❯ kubectl get svc -n custom-application
NAME       TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)        AGE
frontend   LoadBalancer   10.110.171.147   172.18.0.151   80:30041/TCP   45s

Observe our frontend service behind a load balancer. Finally, if we hit it in a browser, we should have our page return!

image

Wrapping Up

Using KinD + MetalLB gives you a quick way to get clusters up and running and be able to deploy functional load balancing into your cluster. I use this functionality pretty much every day. Take it for a spin and let me know what you think!

Anatomy of terminal blog


title: 'Anatomy of My MacOS Terminal'
date: '2020-03-30'
blogdate: '2020-03-30'
slug: anatomy-of-my-macos-terminal
cover_image: https://user-images.githubusercontent.com/17350652/159954473-9847b830-0d94-4e7d-bb48-285b73a84e31.png
description: Outline of some of the most used tools in my MacOS terminal

The MacOS Terminal - My Home Away From Home

image

I spend a disgusting amount of time in the terminal these days. Whether it's working in Kubernetes, or Consul, or Nomad, or Terraform, or quickly editing files, tweaking blogs, Git, all the things. You might be thinking "I do almost all of that directly in VS Code, I don't even touch the terminal", in which case, I'm super happy for you, genuinely! I tend to fluidly move in and out of the 2 based on what I'm trying to complete at a given time. The integrated terminal in VS Code is great; but sometimes the real deal is just what I need.

A few weeks back I went through and spent a few hours customizing my shell experience with a few addons that would help me along. Some have stuck around, others ended up not being super useful. It's worth noting that this entire journey was started by Jon perusading me to take a look at ZSH/Oh my ZSH. Between it and iTerm 2, terminal experience has remarkably grown.

Every so often I'll get into a Twitter thread with folks around customized terminal experiences, and everyone seems to love the conversation/debate. I figured it was a good time to throw this down in a post and share with the world! Lets jump in and take a look at a few of the things that I use on a daily basis.

iTerm 2

image

iTerm 2 is a highly customizable and feature loaded terminal for MacOS. There's a ton of things that it does well, but the biggest ones for me are the ability to customize the frame experience (tsparency, new windows), the font/coloring experience, the build in password manager, and most importantly the hotkeys that are available. I can't see myself ever moving off of iTerm as long as I'm on MacOS.

Oh My ZSH

image

The single biggest reason I use Oh My ZSH is how extensible it is - and the ability to bring in different plugins and themes. The plugins add additional capabilities directly to my prompt experience. These plugins are added by installing them in some cases; but many of the plugins are built natively into the ZSH experience. Adding new plugins is generally as easy as adding the names to the plugin stanza in the ~/.zshrc file. An example of this is below.

plugins=(git zsh-autosuggestions zsh-syntax-highlighting autojump fzf)

As you can see from the snippet above, I'm using the following plugins

  • Git - Let's see current reporting of the Git repository I'm working with. Commit's, untracked changes, branch I'm in, etc...
  • ZSH-autosuggestions - This suggests auto completion based on previously run commands. Super useful for random commands I might have forgotten. Did I mention I get a ton more command history using this setup?
  • ZSH-syntax-highlighting - Pretty self explanatory, this gives me syntax highlighting at a command prompt level
  • Autojump - This one is a new favorite. Autojump learns the common directories you use, and lets you "jump" to them from any directory. It makes navigating throughout my directory structure wicked quick.
  • fzf - This is a terminal based fuzzyfinder, admittedly, I don't use this one as much. It's there for quickly finding files whose name matches a specific string. Typically I know where the file is and can just autojump there - but for the times where I don't know, it has it's uses.

Powerlevel10k - A ZSH Theme

image

Powerlevel10k (p10k) is a theme that builds on one of my favorite ZSH themes, Powerlevel9k (imagine that...). It extends many terminal styling features, creates a really fast terminal, and has a ton of easy to configure customization options (really really dope configuration wizard by simply running p10k configure). My terminal currently displays the OS I'm running on (useful for servers that I've installed the toolchain on), the current VCS (Git) status for the directory I'm in, as well as starts my "prompt" on the next line. On the far right side, it's context aware - so if I'm running a kubectl get pods it understands what cluster I've currently got my kubeconfig exported to, and tells me. Same goes for public cloud operations.

Achieving the above configuration in P10k looks daunting at first, but it really isn't so bad. After you install P10k (instructions at the header link above), you run p10k configure to set the style of your prompt. Once complete, you can edit your ~/.p10k.zsh file and you're off to the races.

To set the same segments (the different parts of the prompt experience) as me, you can edit this section to match up...

typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
    # =========================[ Line #1 ]=========================
    os_icon                 # os identifier
    dir                     # current directory
    vcs                     # git status
    # =========================[ Line #2 ]=========================
    newline                 # \n
    prompt_char             # prompt symbol
  )

The right segment is for less important information, and is substantially long as it handles context notifications for a ton of different platforms (everything form public clouds, to virtualenvs, to node envs, to Kubernetes, etc...).

The big takeaway for Powerlevel10k is that it just me a TON of useful information around the context of the environments I'm working in. I get the most value out of the public cloud/kubernetes context notification, the git notification, and the "start on new line" setting.

Terminal Tools

This next section is dedicated to some basic tools that I often use from the command prompt.

Httpie - A way better curl replacement

image

Updated after post! I can't believe I forgot this tool! It's one of my MOST favorite tools now! I do a lot of random API things often, and having a way to quickly work against them from the CLI is super nice. Curl works but has its... quirks? I really like HTTPie. Example of nice things, it natively "speaks" JSON in thesense that I can just include key/values directly in the command line. A sample below is me working with the Consul api to add a new namespace into Consul.
image

It's got a TON of really useful capabilities along with header manipulation (great for when I'm messing with L7 capabilities in Consul), as well as the ability to bring in/down files. This one is a mandatory tool!

BAT (a replacement for CAT)

image

Short and simple on this one, BAT is just a cleaner, syntax sensitive replacement for the cat command. It's got some other cool features like being git aware, and able to output spaces/tabs, etc... I've set cat as an alias for bat in my ~/.zshrc file so that it loads up every time my terminal window loads.

ColorLS

image

Again - simple and to the point, ColorLS is a drop in replacement for the ls command. I've got it customized to include ASCII images for known files types. It's also got some really useful additional features - It can output the tree for the current directory I'm in by appending --tree to the end of the command. It can give me a report on the file count (recognized/unrecognized) by using the --report flag. It's got a lot better sorting options as well. Aside from all that, it's a hell of a lot better to look at than the vanilla ls command. I've got an alias set to override the ls command with colorls instead.

PrettyPing

image

Prettyping is a drop in replacement for the ping command that aims to make things a bit more readable and compact. This one's just a quality of life improvement - nothing major. Aliased ping to prettyping. Winning.

Wrapping Up

There's a ton more tools I use from a command prompt - but these are the ones that are focused around how I make my terminal experience better for me. There's a ton of tools out there, and we haven't even jumped into VIM yet and started exploring. I'd love to hear more about the tools you're all using in your terminal and how they make you more productive too!

Test


title: 'hi'

A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Lets talk about Imposter Syndrome


title: 'Let's Talk about Imposter Syndrome'
date: 2018-06-18
slug: lets-talk-about-imposter-syndrome
cover_image: https://user-images.githubusercontent.com/17350652/183017525-ee02c374-a4ae-4604-947e-d05970f487f7.png
description: If you’ve come here because you frequently find yourself feeling like a failure, know that you are NOT alone.

Imposter Syndrome

Before Anything Else - My Ask

I’m about to lay out some extremely deep, personal stuff. My ask is that if this resonates with you, consider putting your thoughts down about it as well. Sharing my post is great, and is always appreciated - but the more voices we can get “out” talking about this stuff the better. We can change the culture that’s been created - but we can only do it with many voices.

By Far The Hardest Post I’ve Ever Written

If you’ve come here because you frequently find yourself feeling like a failure, know that you are NOT alone. I’ve spoken with dozens of people about these feelings. Most of the time because I was feeling them and trying to find my way out of being lost, confused, and afraid. No one is immune to this feeling. I’ve spoken with Architects, Product Managers, Technical Marketers, Engineers, Field Engineers and Account Executives. I’ve even heard it from VPs. I’ve heard it from VCDX’s. No one is immune.

Out of all of the “things” that define the average professional individual the concept of Imposter Syndrome is something 100% of people I’ve spoken with have been able to relate to. Wikipedia defines imposter syndrome as “A psychological pattern in which people doubt their accomplishments and have a persistent often internalized fear of being exposed as a fraud”. The definition continues to say “Proof of success is dismissed as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.”. The first time I read the actual definition I swore that it was written about me. Carbon copy. I’ve shared it back with dozens of people who have echoed the same feelings.

Your thoughts when someone says something good

It’s been incredibly hard to write this post, because in a lot of ways it’s forcing me to come face to face with it. It’s not my “secret fear” anymore, it’s something I’m putting out on a permanent record. I’ve come to realize that by not saying anything about this struggle I’ve had literally for years - I was contributing to it being hard for others to share. I want to be clear; I have no “extreme” thoughts as a result of this feeling. It doesn’t take me to dark places. That being said, I have known people that it does. The culture that we are a part of at times has left people in a place where they don’t feel like it’s OK to ask for support. I’m a huge believer in the power of our community (especially the one that we refer to as vCommunity) - and a community should be something that people feel comfortable leaning on during rough times. So here we are!

Self-Doubt is Scary

I’ve had some great success over the years, objectively. I recently landed my dream job. I’ve got 2 amazing Daughters. I’ve got a wife who loves me and stands by me. All of these things set me up to be the absolute best version of myself that I can be. What if I told you that many days, I feel like it’s all on the brink of falling apart, and I’ll lose it all?

Regarding my career, now is the time I should feel on the top of my game. I just went through an incredibly competitive interview process, and came out on top. I put a lot of work into preparing for the interviews. I had a lot of people speak up for me, which I’m incredibly grateful for. I’m going to be missed in my current role by leaving. Instead of feeling overjoyed, why am I so focused on being afraid of letting people down? What if it wasn’t me that pulled this job off, what if it was just the fact that people spoke up for me? What if I’m not as good as I put forward in the interviews? What if I need more time and I don’t catch on fast enough? In my gut - I feel positive about all of those things, but if I really did…why is there this nagging voice in the back of my head? This shadow thats cast over my excitement. Why do I toss and turn some nights until 3am because I can’t escape the feeling?

Other peoples feelings

Many people have mentioned to me “Dude, how do you do all the insert nerdy stuff here stuff that you do? Do you ever sleep?”. The truth is, I get fixated on problems - and they define my confidence. I get so overwhelmed with fear of not being able to solve the problem that I force myself to stay up until I can make some measurable progress. If I don’t make that progress, I’ve failed. What if I can’t solve it? What if I have to ask internal resources to help me solve it? What if it’s an easy “Read the manual” thing and I missed it? Worse, what if I’m just not smart enough to understand what I’m reading? What if all of that validates these irrational fears that I’m having about being an imposter. What if I don’t belong in this career?

I don’t say all of this to invite a pity party. People will inevitably respond supportively to this post; because I believe most people are good - but I didn’t write this entirely for me. Yes, this is absolutely therapeutic. I’m saying this for the person who’s up at 2am, and can’t sleep because their mind is running circles because of these feelings they don’t yet understand. The person who wakes up in the morning hoping someone will ask the right series of questions to get them to talk about all of this, because it is ripping them apart from the inside and they need a shoulder. I’m talking to the person who’s taking a break right now, and going for a walk because they can’t figure out a problem and their anxiety is through the roof from it. I’m talking to the person who makes a dozen jokes a day, because if they can make people laugh - no one will know how scared they are.

For that person, listen up - The way you are feeling about yourself is NOT always reality. Our brains do crazy things when we’re feeling fear, or feeling anxiety. Sometimes we can be our own worst enemies, and we are ALWAYS our own worst critics. Sometimes problems are just tough to solve. Sometimes life is unforgiving. Things that come easy to others, aren’t always going to be easy to you. Guess what? Thats OK.

We will talk about this a bit more below - but failures are going to happen. Life happens. Sometimes you won’t know the answer. Sometimes you’ll get the answer wrong. Sometimes you’ll fail the test. Sometimes life will remind you how much more you have to grow. Sometimes you didn’t sleep enough. Sometimes you had different expectations and didn’t prepare enough. It’s what you do in rounds 2 through 5 that that matters. I failed my VCP Cloud Management test the first time I took it. In fact, I’ve failed MANY certification tests the first time I take them. It happens. It took me a long time to learn that my lack of ability to take a test well doesn’t mean im a failure - it just means I failed a test. I’m just not a great test taker - nothing more than that. The problem isn’t being a failure, the problem isn’t being afraid. The problem is letting those concepts define you in your heart. We can’t let “Imposter Syndrome” become part of our identities.

So How Do We Make This Better

This is where things get complicated. As it stands today, it’s going to be tough. I don’t have any of the answers. I just have perspective. Just some thoughts that I’ve had when I’m feeling low. Maybe they won’t work for you. Maybe you need something more. That’s OK! For those of you that fit into this category, maybe you’ll find the courage to write about it and share with others.

The biggest way this gets better is by us as individuals getting to a place where we are comfortable asking for support. I don’t think it’s realistic to pop on Twitter, dump our feelings out into the world, and expect it to be solved for us. These are complex internal emotions, usually built up over years worth of experiences. That being said, we should be working to create an environment where the people that we surround ourselves with are trusted enough to support us when times get tough or when we just need a bit of encouragement to get over the hill. Sometimes the best thing you can have is a mentor, or a friend, who’s willing to just listen and help step you through climbing out of the hole. I don’t mean this to say that you should NEVER deal with problems on your own, or that you always need other people to help you through it (more on that 2 paragraphs from now…). I just mean that you should never feel like you have to do it alone. If you do, you should evaluate the people in your circle and consider introducing some new people into your life. So many of us want this to change - find some of us. We’re out there.

This brings me to my second, and maybe more important point. We need to be better individual humans with how we respond to others going through complex emotions like this. We’ve cultivated an awesome community here. I’ve seen incredible things come from it. This is not a community failure. This isn’t a failure at all. We need to start inviting conversations about these feelings, listen to the individual struggles, and respond to them. We need to create opportunities in individual conversations with our friends and colleagues for them to open up and be completely honest. As mentors, we need to be better about cultivating these conversations, and drawing them out. We should be asking questions like “Tell me about some stuff that was hard this week”, or “Are you feeling successful at what you’re doing? Tell me about it.” The truth is - we won’t always get an honest response. All we can do is be an open ear, and open the door. If 1 out of 50 times someone walks through it - we’re making a difference.

Finally, and most truthful (which automatically makes it the hardest to hear…) - We need to learn to accept that failures happen every single day, that we absolutely will fail again, and that failure is completely OK. Our brains create this relationship that failing at something is going to lead to the worst outcome possible. More so, that those failures will come to define our level of success. It’s not true.

You are going to fail. You are probably going to fail HARD sometimes. We need to start reprogramming the way we approach failure. We need to manage failure, as opposed to letting failure manage us. Failure doesn’t mean you are a fraud. It doesn’t mean you don’t deserve to be here. It doesn’t mean you faked your way to your achievements and now you’re exposed. Not being able to solve a problem, most of the time, just means you can’t figure out a problem. It just means you have a gap to fill. Nothing more. Making a mistake is a mistake. Sometimes you should’ve read the manual closer. Sometimes you need to work on some fundamentals before jumping into the deep end of the pool. The point is, it’s what you do with that failure that defines you - not the fact that you failed at all. We need to drive a culture that encourages people to learn from failure, and grow from it. I can honestly say that I haven’t grown nearly as much from my successes as I have grown from the times I failed.

We need to teach ourselves to put a level of realism around what we do, and our current station in life. Many of us work and live in high pressure environments. VMware is an incredibly high speed company. I’m surrounded by the best and brightest every day. Many of them have been here for 5x and 10x the amount of time I have been. There are times it makes me incredibly insecure. I remember a time where I worked hard to put an application I built in a docker container, and someone I admire submitted a PR on it, completely optimizing it. I was so embarrassed. I didn’t want that individual to think “Wow, I can’t believe Cody even put this on the internet.” I wanted him to think I was smart too!

I had to remind myself that me not having an equivalent level of skill to him/others doesn’t mean that I’ve failed. It means I’m young - not in age, but in experience in a specific area. It’s been so hard to talk myself through this concept. It’s easy to put this down in a blog - but it’s harder to put into practice. We need to address our emotions, our anxieties, our fears as individual instances of a problem - and not an all encompassing existence. We need to solve them individually - and force ourselves to look at them one by one instead of trying to fix our entire being in one shot. We’ll never succeed at fixing all of us at one time - but we can absolutely solve one problem at a time. We can push back that darkness one victory, or failure, at a time.

I took the Docker situation above, and looked in to learning how to achieve the same results. What gaps did I have? What techniques did I not understand? I broke down the dockerfile - studied the sections that confused me - and became proficient in them. I’ve used the concepts I learned from that dozens of times now. One failure has been the reason for a dozen successes, at a minimum.

Closing Thoughts

Challenge yourself to embrace failure. Challenge yourself to take that failure and turn it into something positive. It’s easy to let things like Imposter Syndrome become part of your identity. There are a few of you that I talk with about this topic often enough that I sometimes feel like it’s part of mine. Fight against that current. Let your response to failure be what defines who you are. Be the person that is known for rallying after defeat. That’s the person I want on my team. The person who tries to build something - fails - and comes back to try again with a dozen new skills because they refused to let that failure define them.

This post is different from anything I’ve posted before. Usually I’m talking about something cool that I want to share, or solving a problem. A lot of times there’s Python involved. Or vRA. Sadly; there’s no “Support as a Blueprint” on the Solutions Exchange. We can’t use PIP to install a module that helps us figure out self-doubt.

Growing is hard. Success is challenging at times. It shouldn’t have to be - but the reality is, that it is. Find ways to let yourself celebrate your successes. Reward yourself. Be proud of yourself FIRST.. Surround yourself with a community that builds you up. The vCommunity is a great example of this - Post your successes. Watch the community celebrate with you - we see it happen all the time! These feelings CAN get better. They won’t ever go away completely - but they can be managed.

Finally - Be a beacon for others. Help other people through struggles like this. The fastest way for that voice of doubt in my head to quiet down, or that shadow to be lifted, is when I can mentor someone through their own problems. It makes me feel less alone in this world. Whether its a technical issue, it could be a personal issue, it could be career advice. It doesn’t matter. Helping people is the fastest way to remind yourself that you are NOT failing. You’re making the people around you better.

If you can be a person who rallies AFTER a defeat, and furthermore will help carry those around you when they are feeling “tired”, then you are the kind of person I want to be around. I would take that person on my team 10 times out of 10, over the most technically skilled person. As I said earlier, there is a lot of sad stuff out in the world today. Be part of the light that extinguishes the darkness from yourself, and the people around you.

Thanks for taking the time to read this long post. I hope it helps you! Take care!

Test Blog


title: "Testing the new post for the page"
date: 2022-01-08
slug: testing-this-blog
tags: test,blog,going
description: Lets see how well this works

Updated 12/4/2020
A couple of the finer points of this configuration have changed since it was originally written. For example aspects of the homebrew installation of tuntap have changed. I updated the post and did a sanity run through - updating a few of the steps for better clarity. Since I did this, I've also bumped the date of this post to be current as well.

Another test with frontmatter

category: 'pants'
title: 'hello'
author: 'codyde'
date: '2022-01-01'

Hey there, this is a test to see what happens.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.