Not being good enough

Comparison kills

For the first 20 years of my life, I lived a life of comparison. I felt surpassed in pretty much every aspect of my life whether it was athletically, academically, or creatively. Comparison typically leads to pride or discouragement rather than inspiration. For me, comparison led straight down a trail of discouragement to the point where I just gave up trying things. I dropped out of school, joined a band, worked in a horse barn. It wasn’t until I became prideful that I started trying things again. I didn’t know any devs, which meant anything I coded became the “coolest thing in the world” to the people in my life. That sort of feedback fueled my pride which became the polar opposite form of comparison. I needed to flush that pride from my system before I became able to be inspired.

Don’t get me wrong, comparison can certainly be valuable if you want to get a sense for where you stand, but if you aren’t careful, it nearly always takes that next step into irrational and insecure judgment of yourself and others.

Hardcoding “success”

When you compare yourself to others, you can easily find yourself desiring to be an amalgamation of people you find “successful”. Maybe I want a little bit of Chris Coyier’s enthusiasm for CSS mashed with some of Sarah Drasner’s illustrative chops accompanied by a side of Gregor Adams fractal freakiness topped with a Rach Smith GSAP bonanza garnish. Being inspired by others is undoubtedly a good thing. However, building this “dream machine” cyborg of talent is inherently shortsighted because you are yourself, not other people. You are valuable and you have plenty to offer. Often times focusing on the works of others can get in the way of finding your own strengths. Be inspired, but don’t stunt your own growth.

This desire to be everything is also unrealistic because you’re essentially striving to be an all-star team of developers and you are a single person. It is hard enough to stay up to date with a single specialty, let alone a cornucopia of them.

Hardcoding success is also suffocating because you have limited your possibility for lateral growth and are focused on only one outcome. If you are the sort of person that knows exactly what they need to be in five years, you’re lucky. Chances are you are going to grow out of your current idea of “success” and find a new one that looks a lot more like you and makes a heck of a lot more sense later on.

Giving up sucks

After constructing this nebulous idea of “success” through comparison you will almost immediately find the task of achieving it to be impossible. You’ll take your first step in that direction and become overwhelmed and give up. It is natural for excellence to be this seemingly unattainable, but chances are you aren’t thinking about that. Chances are you are thinking about how much you suck. Don’t be burdened by lofty goals, let them sit in the background in a malleable state.

The primary reason I get overwhelmed and give up is a byproduct of competition.

Competition vs. Inspiration

Competition can have immediate rewards

When you are driven by competition, you will find bursts of rapid growth and acceleration. You will stay up working for 20 hours straight to get ahead. Of course this will naturally yield progress. The danger of competition is that it gives you a taste for success and then pairs that idea of success with being the best. Living in that territory is vicious, and will burn you out before you can say tadaa!

There is nothing wrong with desiring excellence, but that is a drastically different pursuit than getting ahead of other people. This problem is most easily seen in how you handle not being the best. I hate to break it to you, but not being the best will happen eventually if not immediately. If you are concerned with being the best, realizing you aren’t is quite scary. You start desperately grasping at things trying to get ahead, you fail harder, and you feel terrible. This is a great way to turn striving for excellence into crippling insecurity.

How you value yourself determines how you value others.

If you are super competitive, you will view others as competition. In addition to that being intimidating for others, you will find yourself actively hoping for the failure of others in order to maintain an elevated sense of self. If others view themselves as uncompetitive, they view your competitiveness as overwhelming and will get discouraged. Would you rather have a community of ten inspired devs or a community of two competitive devs and eight discouraged ones? Here’s a hint: you thrive in one and unravel in the other.

Communities are defined by their members.

The legacy of super competitive community is a group of very opinionated—and probably correct—people. It is a community that primarily grows when approached by people that hold the same opinions. That is a limited community. In a competitive community, the idea of discovery lies solely at the top end of the excellence spectrum. Only the people that are winning are discovering new things. Everyone else is just trying to keep up.

The legacy of an inspired community is diversity in opinion and the ease of entry through communal acceptance. Inspired communities have discovery at every level of knowledge. Beginners, experts and everyone in between are all discovering new things on a daily basis. CodePen is one of these places. Hurrah!

CodePen is an inspired community.

When I discovered CodePen I was coming off of a very defensive, insecure, competitive period of my life. I gradually learned how rewarding it is to reward and encourage other people. I felt like I wasn't afraid of failure.

I am fascinated by (ab)using CSS to do things it wasn’t made to do. When I end my days doing backend work, I find fulfillment experimenting in this way. Below is an introduction to some CSS techniques followed by fairly absurd examples of those techniques in the wild.

Pseudo-class Selector Logic


You can select sibling elements using the general sibling combinator (~). This combinator refers to "any sibling that comes after the preceding element". Here we can select a sibling div element when we hover over the anchor.

Scroll jacking with :hover

We can use the :hover state to do some pretty ridiculous things, like scroll jacking with CSS. Not recommended.


You can change the style of an element when it is "targeted" by the browser. "targeted" state is what happens when you click a link that contains #an-id in the href.

Modal using :target

We can use this principle to implement some basic functionality like modal windows.

Presentation using :target and :accesskey

We can even create a full on presentation using :target and my favorite attribute in the world, accesskey.


You can style siblings of input elements when the input is checked if it is either a type of radio or checkbox. Here you will see that we can use a label element's for attribute to map the label to the input. For :checkable elements, clicking the label will check the input. In other input types and textareas, clicking the label will :focus the element.

CSS Tabs

Using a radio group, we can create functional tabbed content using :checked.

:checked ~ :checked

You can chain pseudo-class selectors to achieve basic logic in CSS. Here, we will do two different mathematical operations using CSS.

CSS Calculator

Using multiple radio groups, we can perform basic mathematical calculations—enough to build out a simple calculator.

CSS Binary

Using :checked and :not(:checked) combinations, we can even do some fairly complex things like write in binary.

CSS Keyboard

We can even make a functional keyboard.


Here's a collection to all of my CSS-only pens.

You love to Code

Believe it or not, you love to code.

Once you sift through insecurity that is often driven by competition, you can discover what it is that you love about what you do. This can look like many different things. Maybe it is knowing specs and the current state of browsers, maybe it looks like SVG, maybe you love JS frameworks, perhaps you’re into data and using external APIs to do cool things, perhaps you will always hate code, but are very passionate about building things for people in need. The point is that whatever it is, it is there. Let it thrive.

It's almost always messy.

Yes, it's complicated. It is very easy to give into other people's opinions and your fears. We are all in the same boat on this (yay). We all suck at something and are typically fighting the pressure of pretending we’re smart to get along with others. Once you cease to be afraid of failure, you will find what it is that drives you and be able to pursue inspiration freely.

CodePen encourages this pursuit

CodePen’s community is driven by passion, encouragement, comradery, and inspiration. This is what drives me at work and simultaneously inspires me when I’m off the clock.

Whether it is on CodePen, Twitter, or in real life, meet people. Talk to them. Make friends. Be honest with folks and watch them be honest with you. All it takes is the slightest bit of humility in conversation before everyone breathes a collective sigh of relief and opens up about how hard things can be for them too. That is how it should be. The people that think you’re stupid for not knowing x are the people none of us enjoy talking to. You’re doing fine, kiddo.

Be confident to try new things, don’t be discouraged when you fail, and celebrate your success as well as the success of others.

Keep on keepin’ on.

3,429 11 66