<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by João Campinhos on Medium]]></title>
        <description><![CDATA[Stories by João Campinhos on Medium]]></description>
        <link>https://medium.com/@joaocampinhos?source=rss-2832765b9a74------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*ZuIT4eusbTmpK6QjJQjDkw.jpeg</url>
            <title>Stories by João Campinhos on Medium</title>
            <link>https://medium.com/@joaocampinhos?source=rss-2832765b9a74------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 25 May 2026 22:04:04 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@joaocampinhos/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Lets Build: 1, 2 step]]></title>
            <link>https://medium.com/feedzaitech/nerver-gonna-give-you-up-b7581998dcdd?source=rss-2832765b9a74------2</link>
            <guid isPermaLink="false">https://medium.com/p/b7581998dcdd</guid>
            <category><![CDATA[flexbox]]></category>
            <category><![CDATA[components]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[tech]]></category>
            <dc:creator><![CDATA[João Campinhos]]></dc:creator>
            <pubDate>Wed, 11 Apr 2018 10:26:11 GMT</pubDate>
            <atom:updated>2018-04-11T10:26:11.969Z</atom:updated>
            <content:encoded><![CDATA[<p>For today I wanted to show you one thing that I was doing and ended up thinking it was pretty smart. This way you will learn not only how to build this, but also some nifty tricks that you can use to impress your peers. This component is a known design pattern called a <strong>wizard</strong>. Usually a series of steps that the user needs to complete in order to accomplish a goal. Or as you’re probably familiar with, those annoying things where you go “Next, next, next” faster than the speed of light.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MvMASN3reaSwyhMB4TD3Vw.png" /></figure><p>This is what we’re building today. It seems simple, doesn’t it? Heck yeah, I love it simple. We will also focus only on the barebones and ignore animations and all the flashy stuff. But first, <a href="https://www.youtube.com/watch?v=iBHNgV6_znU">here is the soundtrack for the rest of this post</a>.</p><h4>Get some structure</h4><p>Since starting a house by the ceiling often leads to a bad outcome, let’s just sketch a basic HTML structure for this thing. Now I’m feeling this wizards has a bunch of steps, so that’s probably a good starting point. A <strong>step</strong> has two things: a number (or a ✔) and some text. I’ll add some basic styling but nothing fancy. We’ll go over the fancy bits later. This is what I came up with.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fembed%2Fpreview%2FEojQbg%3Fheight%3D600%26slug-hash%3DEojQbg%26default-tabs%3Dhtml%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;url=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fpen%2FEojQbg%3Feditors%3D1100&amp;image=https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fm.cdpn.io%2Fscreenshot-coming-soon-small.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/77f824ad5f03546f072e5ef3cf329d3d/href">https://medium.com/media/77f824ad5f03546f072e5ef3cf329d3d/href</a></iframe><p>This seems pretty dumb, but getting the foundation right is the first step to a solid work.</p><h4>Make me pretty</h4><p>This is when we grab the CSS hammer and start playing with it until we’re happy with the result. As far as the wizard is concerned, it means rounding the round thingy, and centering the text thingy, as well as all the components.</p><blockquote>What? centering and CSS on the same paragraph, what is this madness?</blockquote><p>Why yes, let me show you a little thing called…. <strong>FLEXBOX!</strong> So if you don’t know <strong>FLEXBOX!</strong>, you should <strong>not</strong> <a href="https://www.w3.org/TR/css-flexbox-1/">read the spec</a>, but instead absorve all the knowledge from this <a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/">Complete Guide to Flexbox</a>. Now let’s get serious, read the spec if you have time, at least diagonally to grasp why things are the way they are.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fembed%2Fpreview%2FVyexXJ%3Fheight%3D600%26slug-hash%3DVyexXJ%26default-tabs%3Dcss%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;url=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fpen%2FVyexXJ&amp;image=https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fi.cdpn.io%2F1249788.VyexXJ.small.e0c462e2-4890-4ff7-b201-fd91230acd20.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/0c4e6b394405989a1547b39144463fa8/href">https://medium.com/media/0c4e6b394405989a1547b39144463fa8/href</a></iframe><p>The first thing you need to know about flexbox is it centers stuff. And is pretty good at that. Just slap these three magic lines:</p><pre>.some.div.boy {<br>  display:flex;<br>  align-items:center;<br>  justify-content:center;<br>}</pre><p>and BA-BAM, you have yourself an element centered both vertically and horizontally. We are totally overusing flexbox here but I don’t really care. It’s easy, looks cool and CSS is already pretty hard as is.</p><h4>Absolute that boy</h4><p>Now this is where we roll our sleeves because we have an issue to solve. Our approach has some things that were not well thought. What will define the width of the step is the size of the text. That means we have two problems to tackle:</p><ul><li>The steps are not evenly spaced if the text has different widths.</li><li>The center of the step is not on the center of the round thingy, which means that is not trivial to center other content like the step separator that designers love.</li><li>That separator will also look tacky because it cannot overflow the text.</li></ul><p>Ideally we would float the object so it’s position would be relative to the parent. We can do that with a beautiful position: absolute. That will remove the text from the document flow, while keeping it close enough to the round thingy. Of course we have to add enough space to the container since the text height is not taken into consideration for the total height of .steps . We could be smart with variables so everything would be “automatic” but you know what? I’m feeling lazy.</p><p>This is also why we didn’t use semantics with &lt;ol&gt; &lt;li&gt;…&lt;/li&gt; &lt;/ol&gt; . We would have the same problems with the separator and would have to render the numbers in the li:after . Regardless, <a href="https://codepen.io/joaocampinhos/pen/GyZZGE">here</a> is a final solution that uses a more semantic approach.</p><iframe src="https://cdn.embedly.com/widgets/media.html?url=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fpen%2FmpJXjj&amp;src=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fembed%2Fpreview%2FmpJXjj%3Fheight%3D600%26slug-hash%3DmpJXjj%26default-tabs%3Dcss%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;type=text%2Fhtml&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/26da87214d8dbf5739dec865ed831bd9/href">https://medium.com/media/26da87214d8dbf5739dec865ed831bd9/href</a></iframe><h4>Drawing the rest of the owl</h4><p>And guess what? It’s 90% done. How easy was this? very. The smart part was a position absolute mixed with flexbox. more like flex<strong>boss</strong> am I right?</p><p>Anyway, the most satisfying part comes now. You did the thing. The CSS is simple enough with (apparently) no hacks. We just beautify the thing so the designer doesn’t kill us and 🛳 it! We’ll add some classes for the different states but that just for completeness.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fembed%2Fpreview%2FQayrZM%3Fheight%3D600%26slug-hash%3DQayrZM%26default-tabs%3Dcss%2Cresult%26host%3Dhttps%3A%2F%2Fcodepen.io%26embed-version%3D2&amp;url=https%3A%2F%2Fcodepen.io%2Fjoaocampinhos%2Fpen%2FQayrZM&amp;image=https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fi.cdpn.io%2F1249788.QayrZM.small.ea0c2bcd-fd67-45fb-990a-dd8f61d80c2b.png&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=codepen" width="800" height="600" frameborder="0" scrolling="no"><a href="https://medium.com/media/a7d7b1add14c7d273b0680f0d62979ea/href">https://medium.com/media/a7d7b1add14c7d273b0680f0d62979ea/href</a></iframe><p>And this is it. Just the basics. No JavaScript. No animations. Just a solid foundation with some nice decisions. Hope you enjoyed reading this post as much as I enjoyed writing it. Until next time, if they don’t cancel the series after one episode.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*1lyRQzi4qb9-oh_BgW7p8A.gif" /></figure><p><em>João Campinhos is a </em><strong><em>Senior Internet Connoisseur Extraordinaire </em></strong><em>disguised as a Frontend Developer. Emoji expert since the day he was born, João soon developed a love for all things web, including internet memes. If you find him in the wild, his default behaviour revolves around screaming at his screen because CSS refuses to cooperate, React is rendering everything 100 times, or the tests are failing. In reality, he just doesn’t know how to quit vim.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b7581998dcdd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/nerver-gonna-give-you-up-b7581998dcdd">Lets Build: 1, 2 step</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CSS perf: Colors]]></title>
            <link>https://medium.com/sad-developer/css-perf-colors-af4e8d18455a?source=rss-2832765b9a74------2</link>
            <guid isPermaLink="false">https://medium.com/p/af4e8d18455a</guid>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[colors]]></category>
            <category><![CDATA[design]]></category>
            <dc:creator><![CDATA[João Campinhos]]></dc:creator>
            <pubDate>Tue, 10 Jan 2017 19:43:59 GMT</pubDate>
            <atom:updated>2017-01-10T19:44:53.123Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>tl;dr</strong></h3><blockquote>If you are paranoid about performance, use hex when declaring your colors and short hex whenever possible. If you need transparency use RGBA and stay the hell away from HSL(A).</blockquote><p>Let’s face it, performance <strong>is</strong> important.<br>And although we now have incredible internet speeds in developed countries, we can’t neglect the rest of the world.</p><p>And what’s better than a blazing fast website? Nothing I say. We already minify and gzip our assets, and distribute them over a CDN, but there is a lot more we can do.</p><p>Let’s start this series with a simple and cheesy one: colors. I say cheesy because we can argue that the way we specify our colors won’t hurt our loading times. I’m inclined to agree, but I can think of some use cases that require extreme optimization, and for those use cases this might be useful.</p><h3>The problem</h3><p>There are a lot of ways to specify colors in CSS. for example this color</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/90/1*X55hL3rP2ucry1evM1_sOA.png" /></figure><p>can be specified like this:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/349b6bb2b3b413f44172a3a2fc6f7915/href">https://medium.com/media/349b6bb2b3b413f44172a3a2fc6f7915/href</a></iframe><p>The question is: Which one should we use? If we approach this from a size perspective, #639 is the smallest and therefor the best! But is it always like that? let’s analyze this further.</p><h3>Tests</h3><p>To test this, I used <a href="http://jsperf">jsperf</a> to automate the process.<br>I used the following browsers:</p><ul><li>Safari 9.0.3</li><li>Chrome 47.0.2526</li><li>Chrome Mobile 49.0.2592</li></ul><p>And I created three revisions to test three different things.</p><h4>Rev 1</h4><ul><li>named color</li><li>short hex</li><li>long hex</li><li>RGB</li><li>HSL</li></ul><h4>Rev 2</h4><ul><li>RGBA</li><li>HSLA</li></ul><h4>Rev 3</h4><ul><li>lower case hex</li><li>upper case hex</li></ul><p>You can check the tests and results <a href="http://jsperf.com/colors">here</a>.You can even run the tests yourself to compare with my results.</p><h3>Results</h3><p><em>Note that those are my results with my machine and my browsers. Your mileage may vary.</em></p><h4>Rev 1</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/946/1*qeo9rWBVxcFSpWsVt3REAw.png" /><figcaption>Revision 1 results</figcaption></figure><p>This is the base of our tests. And we can see that the short hex is always the best option followed by long hex. The difference between Named color and RGB is marginal on Desktop Chrome, but it’s noticeable on Safari and Chrome Mobile. HSL is a disappointment.</p><h4>Rev 2</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/946/1*Dp8jDX6UwQGRFz1V-mDM5w.png" /><figcaption>Revision 2 results</figcaption></figure><p>HSL was worse on the first test and when we add alpha to the game, HSLA loses again, hard. Use RGBA <strong>always</strong>.</p><h4>Rev 3</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/946/1*7M0uLYWQ5BFwcI0ePyh7oQ.png" /><figcaption>Revision 3 results</figcaption></figure><p>As I suspected, lower case vs upper case hexadecimal notation is just a matter of preference that don’t alter performance at all.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=af4e8d18455a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/sad-developer/css-perf-colors-af4e8d18455a">CSS perf: Colors</a> was originally published in <a href="https://medium.com/sad-developer">Sad developer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[These aren’t the tools you’re looking for]]></title>
            <link>https://medium.com/sad-developer/these-arent-the-tools-you-re-looking-for-e25a04082ff1?source=rss-2832765b9a74------2</link>
            <guid isPermaLink="false">https://medium.com/p/e25a04082ff1</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[João Campinhos]]></dc:creator>
            <pubDate>Wed, 18 May 2016 14:37:00 GMT</pubDate>
            <atom:updated>2016-05-18T14:38:43.840Z</atom:updated>
            <cc:license>https://creativecommons.org/licenses/by-nc-nd/4.0/</cc:license>
            <content:encoded><![CDATA[<p><em>I wrote this post on October 16 2015</em></p><p>Coders love their tools don’t they? As they should. Whether it’s a bloated IDE or a minimal text editor, a huge opinionated framework or a simplistic library, tools are a critical part of a programmer’s job. I love them too, but sometimes it’s easy to be overwhelmed by the huge amount of tools around us. And if you do any kind of front-end development, it gets even worse. Any developer that is not living under a rock can sense the insanity in the air.</p><h3></h3><p></p><p>The first question pops up immediately</p><h4>Why?</h4><p>There are a bazillion tools out there because everyone has a different workflow. Allow me to explain this one further. Let’s take a look at package managers. <a href="http://bower.io/">Bower</a> wins the popularity contest here, but you end up with a lot of unnecessary files. So you use a task runner like <a href="http://gruntjs.com/">Grunt</a> or <a href="http://gulpjs.com/">Gulp</a> to copy, concatenate and minify everything. Or you might want to do something completely different with other tools like <a href="https://webpack.github.io/">Webpack</a>. Or even use Webpack with your task runner. Can you see where I’m going with this?</p><p><strong>But why does this happen?</strong></p><p>Well, partly because the web is pretty new and people are still figuring shit out. Everyone were just doing basic static HTML pages and then some crazy guy appeared with the ajax magic. Out of the blue dynamic pages were a thing. Now we have to deal with the mobile web, responsive shenanigans, single page applications, web sockets, a bunch of API’s AND I CAN’T TAKE IT ANYMORE!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*06Dqv1UAGrGp6RHPwLMJnA.jpeg" /><figcaption>source: <a href="http://www.commitstrip.com/en/2013/10/23/et-si-on-venait-de-trouver-le-meilleur-framework-js-ever/">CommitStrip</a></figcaption></figure><p><strong>This is really funny. tell me more about this insanity</strong></p><p>It’s not just a matter of workflow. Just like this post states my opinion, frameworks are opinionated as fuck, and with MVwhathever frameworks, the situation is hilarious. We actually need a <a href="http://todomvc.com/">website</a> to keep track of every combination available, and there are currently 64 applications with different frameworks and/or languages that compile to Javascript.<br><br>But even CSS can’t run away from this madness. There are <a href="http://sass-lang.com/">pre-processors</a>; <a href="https://github.com/postcss/postcss">post-processors</a>; <a href="https://html5boilerplate.com/">boilerplates</a>; <a href="http://bourbon.io/">libraries</a>; <a href="http://getbootstrap.com/">frameworks</a>; mostly because CSS is stupid and everything most pre-processors do CSS should do by default.<br><br><strong>I&#39;m new to front-end and am now crying in a corner</strong></p><p>Good. Don’t go out there trying to learn the flavor of the month. Focus on technologies. Did you learn rails without having a solid knowledge of how ruby works? You did? Oh… well, sorry to hear that. Focus on JavaScript. Everyone knows the best JavaScript flavor out there is vanilla. if you know JavaScript you can pick up any framework your crazy project manager throws at you, even the most esoteric ones. The same goes for CSS. If you know your CSS you can ditch the bloated frameworks and develop your own that covers your necessities.<br><br>Then you can publish it so everyone can use your framework for that specific use case. Instead of 300 frameworks we’re now sitting at 301. And you&#39;re probably super proud of it. You piece of shi…</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e25a04082ff1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/sad-developer/these-arent-the-tools-you-re-looking-for-e25a04082ff1">These aren’t the tools you’re looking for</a> was originally published in <a href="https://medium.com/sad-developer">Sad developer</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Celebrating Average]]></title>
            <link>https://medium.com/f%C4%93l%C4%ABx-culpa/celebrating-average-558e00f161b6?source=rss-2832765b9a74------2</link>
            <guid isPermaLink="false">https://medium.com/p/558e00f161b6</guid>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[average]]></category>
            <category><![CDATA[self-improvement]]></category>
            <dc:creator><![CDATA[João Campinhos]]></dc:creator>
            <pubDate>Mon, 14 Dec 2015 00:00:00 GMT</pubDate>
            <atom:updated>2016-05-18T15:01:10.295Z</atom:updated>
            <cc:license>http://creativecommons.org/licenses/by/4.0/</cc:license>
            <content:encoded><![CDATA[<p>Mom always said to give it all and always try to best myself.</p><blockquote><em>“Why you’re good if you can be better?” — Mom</em></blockquote><p>That’s one quote that’ll never forget. And although it feels like something out of a self-improvement book, to me it was always a big burden.</p><p>What she was saying — willingly or not — was to never be happy with yourself. You’re not allowed to be happy of your achievements because tomorrow you need to do better; you need to <strong>BE</strong> better. And if you’re doing something where you get better with time, that makes a lot of sense.</p><p>If you’re into running, tomorrow you can run one more meter than today. You improved yourself, and that’s something to be proud of. Well, believe it or not, life doesn’t work that way. I tried to be the best in what I was doing, and since I was 7 or 8, that was school. And I was good at it. I felt the improvement every day and that worked for some years. Until It didn’t. I kept doing the same thing I was doing but didn’t improve. I couldn’t understand why that absolute truth suddenly wasn’t true anymore. A lot of kids were having way better grades than me and I felt really sad. Then it hit me: <strong>I was just an average guy</strong>.</p><p>When you’re 15 years old the sky is the limit. You not only think you’re always right, but you also know you’re going to have the most bad ass life ever. Imagine my head exploding while I was trying to cope with the fact that I was just and average guy. Ordinary people don’t make history. Extraordinary people do.</p><p>Now let me throw at you another baffling truth. The majority of people on earth are not extraordinary. I went ahead and did the math and it says right here that you are probably an average guy/girl as well.</p><p>As it turns out the best thing you can do is to accept your averageness. Now I’m not saying to quit your life and go live in the wilderness. But maybe there are some things you can do to adjust your lifestyle to who you are. Allow killer mike to flood you with his wisdom.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FNDQoMv4WBlc%3Ffeature%3Doembed&amp;url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DNDQoMv4WBlc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FNDQoMv4WBlc%2Fhqdefault.jpg&amp;key=d04bfffea46d4aeda930ec88cc64b87c&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/2c0425da666daef44ffde1b0d14b3458/href">https://medium.com/media/2c0425da666daef44ffde1b0d14b3458/href</a></iframe><h3>But how to celebrate it?</h3><p>The keyword here is happiness. You need to do what makes you happy. If that is pursuing something that you will never achieve, then so be it. But since I believe my average reader has a bit of sense inside their head, then allow me to tell you what I do, because if it works for me then chances are it works for you too.</p><h4>Lower your ambitions</h4><p>Like killer mike says, if you lower your ambitions, them chances are you are going to achieve things faster. Don’t fall for that “Shoot for the moon. Even if you miss, you’ll land among the stars.” shit. If you are going to shoot for the stars <em>ad æternum</em> even though you know you’ll never reach them, then shoot for the fucking moon in the first place.</p><h4>Know when to quit</h4><p>That’s a hard one. I took me years to accept that sometimes it is OK to quit. Sometimes you’re wasting energy in something that is just not worth it, or that you know it will never work. Quit now! Don’t waste time on something you know is never gonna happen. Focus your energy on what’s achievable and really important. I’m not saying that scientists that are involved in theories for decades are stupid, but <em>maybe</em> if they spend 20 years without any palpable progress, then <em>maybe</em> it’s best to accept the truth and move on.</p><h4>Little victories are victories too</h4><p>This might feel a bit sad, but I tend to celebrate a lot of meaningless things. Like when I start writing, I feel really good once I have the first paragraph done. It might seem stupid, but it really gives you the feeling of progress. Not only that but the fact that you’re happy and proud of what you did helps you feel that you’re doing the right thing.</p><h4>Be happy</h4><p>At the end of the day, the important thing is to be happy with what you did and know that you gave it your best. Trying to push harder every day is going to stress you. As that stress gets bigger it leads to sadness and unhappiness that eventually leads to a shitty life. So embrace your averageness and celebrate it, because it’s part of who you are.</p><p><em>Originally published at </em><a href="http://blog.campinhos.pt/2015/12/14/celebrating-average.html"><em>blog.campinhos.pt</em></a><em> on December 14, 2015.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=558e00f161b6" width="1" height="1" alt=""><hr><p><a href="https://medium.com/f%C4%93l%C4%ABx-culpa/celebrating-average-558e00f161b6">Celebrating Average</a> was originally published in <a href="https://medium.com/f%C4%93l%C4%ABx-culpa">Fēlīx Culpa ‎</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>