<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tito</title>
    <description>The latest articles on DEV Community by Tito (@hummingbird).</description>
    <link>https://dev.to/hummingbird</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F226726%2Fbcb1ec07-bf46-4f59-9bad-dcbd062c2970.jpeg</url>
      <title>DEV Community: Tito</title>
      <link>https://dev.to/hummingbird</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hummingbird"/>
    <language>en</language>
    <item>
      <title>Choose the same thing</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Thu, 17 Nov 2022 22:40:07 +0000</pubDate>
      <link>https://dev.to/hummingbird/choose-the-same-thing-56d0</link>
      <guid>https://dev.to/hummingbird/choose-the-same-thing-56d0</guid>
      <description>&lt;p&gt;Over and over again, and soon it will become your reality&lt;/p&gt;

</description>
      <category>books</category>
    </item>
    <item>
      <title>Become a novice</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Thu, 17 Nov 2022 22:35:36 +0000</pubDate>
      <link>https://dev.to/hummingbird/become-a-novice-378c</link>
      <guid>https://dev.to/hummingbird/become-a-novice-378c</guid>
      <description>&lt;p&gt;From Mastery by Robert Greene&lt;/p&gt;

&lt;p&gt;Become a novice in your field, view everything with fresh eyes, get into the mindset of the masters.&lt;br&gt;
Start checking dev.to &amp;amp; Linkedin more frequently. Maybe even get back on twitter?&lt;/p&gt;

&lt;p&gt;p.s. Do you remember why you quit twitter? I wasn't because you did not care anymore. Something happened in 2019 and you don't really see it yet. Get back on it&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>performance</category>
    </item>
    <item>
      <title>Day 3: Defining who I am</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Thu, 17 Nov 2022 22:27:32 +0000</pubDate>
      <link>https://dev.to/hummingbird/day-3-defining-who-i-am-api</link>
      <guid>https://dev.to/hummingbird/day-3-defining-who-i-am-api</guid>
      <description>&lt;p&gt;It has been two years since I made a post in this series. Two years! Some times I get sad at how lost I am in this programming journey. It feels like this is an area in my life that I can not get down but yet can not even entertain the idea of quitting.&lt;/p&gt;

&lt;p&gt;My life is completely different than it was when I began coding about 10 years ago. I have experience life in a way that I never imagined I would. I've achieved things I thought were impossible for someone like me. Yet for what at certain points was the love of my life, programming, I have not been able to make much progress. But it is the one thing I am naturally inclined towards. Such irony.&lt;/p&gt;

&lt;p&gt;Anyways, this the new me. I must continue as I know how the story ends and I'm just going along for the surprises.&lt;/p&gt;

&lt;p&gt;Who is Albert the creative?&lt;br&gt;
iOS developer&lt;br&gt;
Designer&lt;br&gt;
Videographer&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>identity</category>
      <category>frustration</category>
    </item>
    <item>
      <title>Finding order in disorder</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Sat, 10 Sep 2022 15:33:40 +0000</pubDate>
      <link>https://dev.to/hummingbird/finding-order-in-disorder-26no</link>
      <guid>https://dev.to/hummingbird/finding-order-in-disorder-26no</guid>
      <description>&lt;p&gt;I am going through a period of my life where everything seems to be showing signs of strain. Much as if you inspect a building and find potential points of failure. Sometimes it feels as if there are so many of these points that I could never get things back in order.&lt;/p&gt;

&lt;p&gt;But I am not bankrupt. I am not going to lie down and accept my fate. I was talking to a close childhood friend yesterday and he gave me a beautiful analogy.&lt;/p&gt;

&lt;p&gt;Life is like a wave on the shore. When caught off guard, most people will let life happen. They will stand there and let the wave engulf them. This is not a bad things. Sometimes you have to let the universe unfold how it will.&lt;/p&gt;

&lt;p&gt;But we have another choice. We can dive into that wave. We can take the reign.&lt;/p&gt;

&lt;p&gt;It's okay to experience life, but don't be afraid to make life and experience.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>life</category>
      <category>gtd</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Periodization for Programmers Part 0</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Fri, 17 Apr 2020 01:26:56 +0000</pubDate>
      <link>https://dev.to/hummingbird/periodization-for-programmers-part-0-28d0</link>
      <guid>https://dev.to/hummingbird/periodization-for-programmers-part-0-28d0</guid>
      <description>&lt;p&gt;First a bit about myself, I'll keep it brief as I only want to provide context.&lt;br&gt;
I'm have been both programming and cycling/lifting for about 10 years on and off.&lt;br&gt;
I also have been diagnosed with OCD and I use the tool described below to combat some of the inefficiency OCD introduces. I know that this is not required to succeed, but I both find it helpful and find it fun.&lt;/p&gt;

&lt;p&gt;Periodization is a way to organize long term training. It can be found in both the strength training world and cycling. For a while know, I've had an inkling that it could be applied to mental training or more generally it could be used by knowledge athletes (read knowledge workers). It was not until I read the book Elastic Habits by Stephen Guise that it occurred to me that it was not only possible but could possibly work very well.&lt;/p&gt;

&lt;p&gt;I'm going to drop some links that I will expand on in the next posts, because I know if I don't publish this it will not get done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jamesstuber.com/periodization/"&gt;https://jamesstuber.com/periodization/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/superintelligence/blocked-periodization-a-new-method-to-enhance-learning-4b73e501d672"&gt;https://medium.com/superintelligence/blocked-periodization-a-new-method-to-enhance-learning-4b73e501d672&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.strongerbyscience.com/in-defense-of-program-hoppers-dup-revisited/"&gt;https://www.strongerbyscience.com/in-defense-of-program-hoppers-dup-revisited/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.lesswrong.com/posts/Abfyno2jNpDomFvmr/success-and-fail-rates-of-monthly-policies"&gt;https://www.lesswrong.com/posts/Abfyno2jNpDomFvmr/success-and-fail-rates-of-monthly-policies&lt;/a&gt;&lt;br&gt;
&lt;a href="https://minihabits.com/"&gt;https://minihabits.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>learning</category>
      <category>motivation</category>
    </item>
    <item>
      <title>A simple data oriented validation function</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Sun, 12 Apr 2020 00:23:17 +0000</pubDate>
      <link>https://dev.to/hummingbird/a-simple-data-oriented-validation-function-194</link>
      <guid>https://dev.to/hummingbird/a-simple-data-oriented-validation-function-194</guid>
      <description>&lt;h1&gt;
  
  
  First Attempt
&lt;/h1&gt;

&lt;p&gt;I'm going through Clojure for the Brave and True and one of the exercises was to write a function that validates a map against requirements.&lt;/p&gt;

&lt;p&gt;I find this function quite beautiful because it declares the validations rules in a data oriented way.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="c1"&gt;; Define the requirements of each key in the record to be validated&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; Name must be a key and glitter-index must be integer&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;string?&lt;/span&gt;&lt;span class="w"&gt;
                   &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer?&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;; Validate a record (a map) against requirements&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; Returns a list of validations results '(true false)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;validate&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="c1"&gt;; map turns record {:a 1 :b 2} into a list of key-value pairs&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;val&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c1"&gt;; Usage:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Mr. Vampire"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"42"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; =&amp;gt; (true false)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Mr. Vampire"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; =&amp;gt; (true true)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function is essentially a one liner and may be hard to grasp on first pass but once understood it starts to show some of the beauty of Clojure.&lt;/p&gt;

&lt;h1&gt;
  
  
  Second Attempt
&lt;/h1&gt;

&lt;p&gt;I revisited this exercise after a couple of days and realized there was a simple but important bug.&lt;/p&gt;

&lt;p&gt;Let say you wanted to update the requirements to check for age. You would update the requirement map but the validation function will ignore that new requirement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;string?&lt;/span&gt;&lt;span class="w"&gt;
                   &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer?&lt;/span&gt;&lt;span class="w"&gt;
                   &lt;/span&gt;&lt;span class="c1"&gt;; New requirement&lt;/span&gt;&lt;span class="w"&gt;
                   &lt;/span&gt;&lt;span class="no"&gt;:age&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;integer?&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Edward Cullen"&lt;/span&gt;&lt;span class="n"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; Validate ignore the age requirement&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; =&amp;gt; (true, true)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The cause is that the validate function uses the record map to determine which keys to check. The fix is simple and again begins to show the power of Clojure and s-expressions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight clojure"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;old-validate&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="c1"&gt;; Note how record was the input to map&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;val&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;defn&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;validate&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="c1"&gt;; Note how requirements is now the input to map&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;#&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nb"&gt;val&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;get&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;record&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;%&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;:name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"Edward Cullen"&lt;/span&gt;&lt;span class="n"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="no"&gt;:glitter-index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; :age is missing from the record and validate now returns a false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c1"&gt;; =&amp;gt; (true, true, false)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>clojure</category>
    </item>
    <item>
      <title>Notes: How to Write Usefully</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Sat, 11 Apr 2020 06:20:30 +0000</pubDate>
      <link>https://dev.to/hummingbird/notes-how-to-write-usefully-oh3</link>
      <guid>https://dev.to/hummingbird/notes-how-to-write-usefully-oh3</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="http://www.paulgraham.com/useful.html"&gt;How to Write Usefully&lt;/a&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;For writing to be useful, claims have to be as strong as they can be without being becoming false.&lt;/li&gt;
&lt;li&gt;Useful writing tells people something they didn't already, or at least that they knew subconsciously but have not put into words.&lt;/li&gt;
&lt;li&gt;Lose then tight: write your draft fast, try all kinds of ideas. Then spend a lot of time rewriting it, Paul Graham spends days.&lt;/li&gt;
&lt;li&gt;When you are rewriting, reread many times fixing any clumsy sentences.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Mobile first web sites</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Thu, 02 Apr 2020 23:17:19 +0000</pubDate>
      <link>https://dev.to/hummingbird/mobile-first-web-sites-4jj2</link>
      <guid>https://dev.to/hummingbird/mobile-first-web-sites-4jj2</guid>
      <description>&lt;p&gt;Watched this video titled &lt;a href="https://www.youtube.com/watch?v=txZq7Laz7_4"&gt;CSS Grid Changes Everything&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;He recommends building mobile first layout. That is, build your website focusing on the mobile experience and then scale it out for desktop.&lt;/p&gt;

&lt;p&gt;He uses &lt;a href="https://en.m.wikipedia.org/wiki/Main_Page"&gt;mobile wikipedia&lt;/a&gt; as a great example.&lt;/p&gt;

&lt;p&gt;This allows you to focus on the core experience and not spend too much time focusing on layout and whitespace!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My shell</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Tue, 31 Mar 2020 00:29:10 +0000</pubDate>
      <link>https://dev.to/hummingbird/my-shell-4bkd</link>
      <guid>https://dev.to/hummingbird/my-shell-4bkd</guid>
      <description>&lt;p&gt;I use fish shell.&lt;/p&gt;

&lt;p&gt;I use the following plugins:&lt;br&gt;
b4b4r07/enhancd&lt;br&gt;
franciscolourenco/done&lt;br&gt;
jorgebucaran/fish-nvm&lt;br&gt;
joseluisq/gitnow&lt;br&gt;
jethrokuan/fzf&lt;br&gt;
rafaelrinaldi/pure&lt;/p&gt;

&lt;p&gt;For enhancd I use the fzy fuzzy finder over the other options because fzy does not take over the whole screen and it does not cause an annoying "awk" bug when I use it.&lt;/p&gt;

&lt;p&gt;Edit: The awk bug is caused by the default macOS awk. It is fixed by installing the GNU awk, using &lt;code&gt;brew install gawk&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Edit 2: I do also have fzf installed because with the jethrokuan/fzf plugin, I can fuzzy search through my command history!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tip: Remove Material UI's AppBar elevation</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Mon, 23 Mar 2020 04:54:15 +0000</pubDate>
      <link>https://dev.to/hummingbird/tip-remove-material-ui-s-appbar-elevation-54d3</link>
      <guid>https://dev.to/hummingbird/tip-remove-material-ui-s-appbar-elevation-54d3</guid>
      <description>&lt;p&gt;You can remove the elevation from Material UI's AppBar by setting the elevation prop to 0.&lt;/p&gt;

&lt;p&gt;This works because the Material UI API is design to composable see: &lt;a href="https://material-ui.com/guides/minimizing-bundle-size/"&gt;https://material-ui.com/guides/minimizing-bundle-size/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AppBar&lt;/span&gt; &lt;span class="na"&gt;elevation&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;AppBar&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>javascript</category>
      <category>design</category>
      <category>css</category>
    </item>
    <item>
      <title>Building a open source e-commerce platform</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Mon, 23 Mar 2020 01:22:12 +0000</pubDate>
      <link>https://dev.to/hummingbird/building-a-open-source-e-commerce-platform-4jgl</link>
      <guid>https://dev.to/hummingbird/building-a-open-source-e-commerce-platform-4jgl</guid>
      <description>&lt;p&gt;I'm going to build an open source e-commerce platform with TypeScript, Next.js, and GraphQL.&lt;/p&gt;

&lt;p&gt;This will be my first large open source project.&lt;/p&gt;

&lt;p&gt;I have a lot of ideas for the future of e-commerce.&lt;/p&gt;

&lt;p&gt;I also feel that an e-commerce platform has very interesting problems.&lt;/p&gt;

&lt;p&gt;I will use TypeScript because although it has an initial upfront investment it pays off in safer code and faster development.&lt;/p&gt;

&lt;p&gt;I also want to eventually use Clojure and ClojureScript.&lt;/p&gt;

&lt;p&gt;I am also looking for people who want to help.&lt;/p&gt;

&lt;p&gt;Follow my progress on Github!&lt;br&gt;
&lt;a href="https://github.com/albertstartup/indieshop-admin"&gt;https://github.com/albertstartup/indieshop-admin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>devjournal</category>
      <category>typescript</category>
      <category>graphql</category>
    </item>
    <item>
      <title>Day 2: Aim your energy at the right thing</title>
      <dc:creator>Tito</dc:creator>
      <pubDate>Sat, 07 Mar 2020 06:01:44 +0000</pubDate>
      <link>https://dev.to/hummingbird/day-2-aim-your-energy-at-the-right-thing-35md</link>
      <guid>https://dev.to/hummingbird/day-2-aim-your-energy-at-the-right-thing-35md</guid>
      <description>&lt;p&gt;Don’t view your perfectionism as a bad thing, view it as a special energy which you have to point at the right thing&lt;/p&gt;

&lt;p&gt;Ask your self these questions:&lt;br&gt;
Are you doing this for work or hobby? (I want to expand on this soon)&lt;br&gt;
Are you doing this because of your perfectionism?&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>devjournal</category>
      <category>life</category>
    </item>
  </channel>
</rss>
